{"version":3,"file":"255.chunk.js","mappings":"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","sources":["webpack://oritopareaapp/../../../src/constants/defaultTranslations.ts","webpack://oritopareaapp/../../src/constants-generated.ts","webpack://oritopareaapp/../../../src/models/PbsCookieNames.ts","webpack://oritopareaapp/../../../src/constants/app.ts","webpack://oritopareaapp/../../../src/utils/getCountryCode.ts","webpack://oritopareaapp/../../../src/utils/getHomeCountryUrl.ts","webpack://oritopareaapp/../../../src/utils/getGeolocationData.ts","webpack://oritopareaapp/../../../src/utils/localStorageUtils.ts","webpack://oritopareaapp/../../../../src/components/GeolocationDialog/styles.ts","webpack://oritopareaapp/../../../../src/components/GeolocationDialog/GeolocationDialog.tsx","webpack://oritopareaapp/../../../src/hooks/useTranslations.ts","webpack://oritopareaapp/../../../../src/components/GeolocationDialog/constants.ts","webpack://oritopareaapp/../../../../src/components/Geolocation/Geolocation.tsx","webpack://oritopareaapp/../../src/event.ts","webpack://oritopareaapp/../../src/constants.ts","webpack://oritopareaapp/../../../src/contexts/loginContext.ts","webpack://oritopareaapp/../../../src/utils/goToPage.ts","webpack://oritopareaapp/../../../../src/components/LoginProvider/LoginProvider.tsx","webpack://oritopareaapp/../../../src/constants/defaultTranslationsWithNamespaces.ts","webpack://oritopareaapp/../../../src/utils/getSearchTime.ts","webpack://oritopareaapp/../../../src/utils/analytics.ts","webpack://oritopareaapp/../../../../../src/components/SearchPreview/hooks/useSendNavigationSignal.ts","webpack://oritopareaapp/../../../src/models/ReferralType.ts","webpack://oritopareaapp/../../../../src/contexts/PersonalBeautyStoreProvider/useCookieStoreInfo.ts","webpack://oritopareaapp/../../../../../src/models/graphql-types/net/graphql.ts","webpack://oritopareaapp/../../../../../src/components/TopAreaBanner/utils/getTopAreaBannerType.ts","webpack://oritopareaapp/../../../src/constants/parameters.ts","webpack://oritopareaapp/../../../src/utils/mapTopAreaBanners.ts","webpack://oritopareaapp/../../../src/utils/sanitizeKey.ts","webpack://oritopareaapp/../../../src/hooks/useGetTopAreaBanners.ts","webpack://oritopareaapp/../../../src/utils/vipOrderUrls.ts","webpack://oritopareaapp/../../../src/context/consultantContext.tsx","webpack://oritopareaapp/../../../../src/context/topAreaBannerContext/utils.ts","webpack://oritopareaapp/../../../../src/context/topAreaBannerContext/topAreaBannerContext.tsx","webpack://oritopareaapp/../../../src/utils/getMobileCssVariable.ts","webpack://oritopareaapp/../../../../src/components/TopAreaBlock/styles.ts","webpack://oritopareaapp/../../../../src/components/TopAreaBlock/TopAreaBlock.tsx","webpack://oritopareaapp/../../../../src/components/TopAreaBlock/constants.ts","webpack://oritopareaapp/../../../src/hooks/useMobileOs.ts","webpack://oritopareaapp/../../../../src/context/appPromoContext/utils.ts","webpack://oritopareaapp/../../../../src/context/appPromoContext/appPromoContext.tsx","webpack://oritopareaapp/../../../../src/components/AppPromoBanner/constants.ts","webpack://oritopareaapp/../../../../../src/components/AppPromoBanner/components/styles.ts","webpack://oritopareaapp/../../../../../src/components/AppPromoBanner/components/AppInfo.tsx","webpack://oritopareaapp/../../../../src/components/AppPromoBanner/styles.ts","webpack://oritopareaapp/../../../../src/components/AppPromoBanner/AppPromoBanner.tsx","webpack://oritopareaapp/../../../../src/components/ShadePicker/ShadePicker.tsx","webpack://oritopareaapp/../../../src/hooks/useCustomerInitials.ts","webpack://oritopareaapp/../../../src/models/BurgerMenuTabNames.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuContent/LazyBurgerMenuContent.tsx","webpack://oritopareaapp/../../../../src/components/UserSection/styles.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuTab/styles.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuTab/BurgerMenuTab.tsx","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/Links/LazyLinks.tsx","webpack://oritopareaapp/../../../../src/components/BurgerMenu/BurgerMenu.tsx","webpack://oritopareaapp/../../../../../../src/components/Join/components/JoinTileImage/JoinTileImage.tsx","webpack://oritopareaapp/../../../../src/components/Join/styles.ts","webpack://oritopareaapp/../../../../src/components/Join/JoinMenu.tsx","webpack://oritopareaapp/../../../../src/components/Join/constants.ts","webpack://oritopareaapp/../../../src/utils/dispatchToggleMenu.ts","webpack://oritopareaapp/../../../src/hooks/useToggleMenu.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuIcon/styles.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuIcon/BurgerMenuIcon.tsx","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuToggle/styles.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/BurgerMenuToggle/BurgerMenuToggle.tsx","webpack://oritopareaapp/../../../../../src/components/OriflameLogo/components/styles.ts","webpack://oritopareaapp/../../../../../../src/components/OriflameLogo/components/ChineseLogo/styles.ts","webpack://oritopareaapp/../../../../../../src/components/OriflameLogo/components/ChineseLogo/ChineseLogo.tsx","webpack://oritopareaapp/../../../../../../src/components/OriflameLogo/components/ChineseLogo/constants.ts","webpack://oritopareaapp/../../../../../../src/components/OriflameLogo/components/CommonLogo/CommonLogo.tsx","webpack://oritopareaapp/../../../../../../src/components/OriflameLogo/components/CommonLogo/constants.ts","webpack://oritopareaapp/../../../../src/components/OriflameLogo/styles.ts","webpack://oritopareaapp/../../../../src/components/OriflameLogo/OriflameLogo.tsx","webpack://oritopareaapp/../../../src/hooks/useIsMarketCN.ts","webpack://oritopareaapp/../../../src/constants/tenants.ts","webpack://oritopareaapp/../../../../src/components/OriflameLogo/constants.ts","webpack://oritopareaapp/../../../../src/components/LeftActionsSection/styles.ts","webpack://oritopareaapp/../../../../src/components/LeftActionsSection/LeftActionsSection.tsx","webpack://oritopareaapp/../../../src/hooks/useHover.ts","webpack://oritopareaapp/../../../../src/components/FavoritesHeartIcon/constants.ts","webpack://oritopareaapp/../../../../src/components/FavoritesHeartIcon/styles.ts","webpack://oritopareaapp/../../../../src/components/FavoritesHeartIcon/FavoritesHeartIcon.tsx","webpack://oritopareaapp/../../../../src/context/navigation/labelsContext.tsx","webpack://oritopareaapp/../../../../../../src/components/Join/components/JoinIcon/styles.ts","webpack://oritopareaapp/../../../../../../src/components/Join/components/JoinIcon/JoinIcon.tsx","webpack://oritopareaapp/../../../../src/components/NotificationBellIcon/styles.ts","webpack://oritopareaapp/../../../../src/components/NotificationBellIcon/NotificationBellIcon.tsx","webpack://oritopareaapp/../../../../src/components/NotificationBellIcon/constants.ts","webpack://oritopareaapp/../../../src/hooks/useSearchInputPlaceholder.ts","webpack://oritopareaapp/../../../../src/components/SearchIcon/styles.ts","webpack://oritopareaapp/../../../../src/components/SearchIcon/SearchIcon.tsx","webpack://oritopareaapp/../../../../src/components/SearchIcon/constants.ts","webpack://oritopareaapp/../../../src/utils/mapSearchPreviewProductToShadePicker.ts","webpack://oritopareaapp/../../../src/utils/getQuickBuyButtonOnClickHandler.ts","webpack://oritopareaapp/../../../src/utils/openProductInfoDialog.ts","webpack://oritopareaapp/../../../src/utils/openShadePicker.ts","webpack://oritopareaapp/../../../src/utils/getSearchUrl.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/constants.ts","webpack://oritopareaapp/../../../src/utils/boldMatchedText.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewSuggestion/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewSuggestion/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewSuggestion/SearchPreviewSuggestion.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewHeader/SearchPreviewHeader.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewHeader/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewImage/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewImage/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewImage/SearchPreviewImage.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/ProductInfoLabel/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/ProductInfoLabel/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/ProductInfoLabel/ProductInfoLabel.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Shades/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Shades/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Shades/Shades.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/ProductInfo/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/ProductInfo/ProductInfo.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Prices/utils.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Prices/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/components/Prices/Prices.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreview/components/SearchPreviewProduct/SearchPreviewProduct.tsx","webpack://oritopareaapp/../../../../src/components/SearchPreview/styles.ts","webpack://oritopareaapp/../../../../src/components/SearchPreview/SearchPreview.tsx","webpack://oritopareaapp/../../../src/utils/getProductUrl.ts","webpack://oritopareaapp/../../../src/utils/addParamsToUrl.ts","webpack://oritopareaapp/../../../../src/components/SearchPreview/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreviewSkeleton/components/SearchPreviewProductSkeleton/constants.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreviewSkeleton/components/SearchPreviewProductSkeleton/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchPreviewSkeleton/components/SearchPreviewProductSkeleton/SearchPreviewProductSkeleton.tsx","webpack://oritopareaapp/../../../../src/components/SearchPreviewSkeleton/constants.ts","webpack://oritopareaapp/../../../../src/components/SearchPreviewSkeleton/styles.ts","webpack://oritopareaapp/../../../../src/components/SearchPreviewSkeleton/SearchPreviewSkeleton.tsx","webpack://oritopareaapp/../../../../../../src/components/SearchInput/components/SearchPreviewContainer/styles.ts","webpack://oritopareaapp/../../../../../../src/components/SearchInput/components/SearchPreviewContainer/SearchPreviewContainer.tsx","webpack://oritopareaapp/../../../../src/components/SearchInput/styles.ts","webpack://oritopareaapp/../../../../src/components/SearchInput/constants.ts","webpack://oritopareaapp/../../../../src/components/SearchInput/utils.ts","webpack://oritopareaapp/../../../../src/components/SearchInput/SearchInput.tsx","webpack://oritopareaapp/../../../../../../src/components/ShoppingBagIcon/components/ShoppingBagCounter/styles.ts","webpack://oritopareaapp/../../../../../../src/components/ShoppingBagIcon/components/ShoppingBagCounter/ShoppingBagCounter.tsx","webpack://oritopareaapp/../../../../../../src/components/ShoppingBagIcon/components/ShoppingBagCounter/constants.ts","webpack://oritopareaapp/../../../../src/components/ShoppingBagIcon/styles.ts","webpack://oritopareaapp/../../../../src/components/ShoppingBagIcon/utils.ts","webpack://oritopareaapp/../../../../src/components/ShoppingBagIcon/ShoppingBagIcon.tsx","webpack://oritopareaapp/../../../../../src/components/ShoppingBagIcon/hooks/useDeviceType.ts","webpack://oritopareaapp/../../../../../src/components/ShoppingBagIcon/hooks/useShoppingBag.ts","webpack://oritopareaapp/../../../../src/components/ShoppingBagIcon/constants.ts","webpack://oritopareaapp/../../../../src/components/UserSection/constants.ts","webpack://oritopareaapp/../../../../src/components/UserSection/UserSection.tsx","webpack://oritopareaapp/../../../../src/components/RightActionsSection/styles.ts","webpack://oritopareaapp/../../../../src/components/RightActionsSection/RightActionsSection.tsx","webpack://oritopareaapp/../../../src/hooks/useShouldRenderNotificationMenu.ts","webpack://oritopareaapp/../../../../src/components/TopAreaBanner/constants.ts","webpack://oritopareaapp/../../../../src/components/TopAreaBanner/styles.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerSkeleton/TopAreaBannerSkeleton.tsx","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerSkeleton/constants.ts","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/ChangeConsultantForm/constants.ts","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/ChangeConsultantForm/styles.ts","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/ChangeConsultantForm/ChangeConsultantForm.tsx","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/OrderOnBehalfDialog/styles.ts","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/OrderOnBehalfDialog/OrderOnBehalfDialog.tsx","webpack://oritopareaapp/../../../../../../src/components/OrderOnBehalf/components/OrderOnBehalfDialog/constants.ts","webpack://oritopareaapp/../../../../src/components/OrderOnBehalf/styles.ts","webpack://oritopareaapp/../../../../src/components/OrderOnBehalf/OrderOnBehalf.tsx","webpack://oritopareaapp/../../../../src/components/OrderOnBehalf/constants.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/components/Banner/constants.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/components/Banner/styles.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/components/Banner/Banner.tsx","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/constants.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/styles.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/BannersCarousel/BannersCarousel.tsx","webpack://oritopareaapp/../../../../src/contexts/PersonalBeautyStoreProvider/personalBeautyStoreContext.ts","webpack://oritopareaapp/../../../src/utils/getContactByType.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/Contact/styles.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/Contact/Contact.tsx","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerDialog/styles.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerDialog/TopAreaBannerDialog.tsx","webpack://oritopareaapp/../../../../src/contexts/PersonalBeautyStoreProvider/usePersonalBeautyStore.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerDialog/constants.ts","webpack://oritopareaapp/../../../../../../src/components/TopAreaBanner/components/TopAreaBannerContent/TopAreaBannerContent.tsx","webpack://oritopareaapp/../../../../src/components/TopAreaBanner/TopAreaBanner.tsx","webpack://oritopareaapp/../../../../src/components/TopArea/styles.ts","webpack://oritopareaapp/../../../../src/components/TopArea/TopArea.tsx","webpack://oritopareaapp/../../../../src/components/TopArea/constants.ts","webpack://oritopareaapp/../../../src/containers/ApiProvider.tsx","webpack://oritopareaapp/../../../src/containers/Context.ts","webpack://oritopareaapp/../../../src/utils/composeProviders.tsx","webpack://oritopareaapp/../../../src/context/headersContext.tsx","webpack://oritopareaapp/../../../src/contexts/ConfigurationProvider.ts","webpack://oritopareaapp/../../../src/hooks/useSponsorPersonalBeautyStoreInfo.ts","webpack://oritopareaapp/../../src/logger.ts","webpack://oritopareaapp/../../../src/queries-net/beautyStoreQuery.ts","webpack://oritopareaapp/../../../../src/contexts/PersonalBeautyStoreProvider/usePersonalBeautyStoreData.ts","webpack://oritopareaapp/../../../../src/contexts/PersonalBeautyStoreProvider/PersonalBeautyStoreProvider.tsx","webpack://oritopareaapp/../../../src/constants/index.ts","webpack://oritopareaapp/../../../src/utils/updateQueryParameters.ts","webpack://oritopareaapp/../../../src/utils/removeQueryParameter.ts","webpack://oritopareaapp/../../../src/utils/ensureQueryParameter.ts","webpack://oritopareaapp/../../../../src/hooks/useCookieToUrl/useCookieToUrl.ts","webpack://oritopareaapp/../../../src/containers/PbsApp.tsx","webpack://oritopareaapp/../../../src/containers/Pbs.tsx","webpack://oritopareaapp/../../../src/hooks/useLoadAbTastyScript.ts","webpack://oritopareaapp/../../../src/hooks/useManagedHeight.ts","webpack://oritopareaapp/../../src/TopArea.tsx","webpack://oritopareaapp/../../../src/hooks/useToggleMenuHandler.ts","webpack://oritopareaapp/../../../../../src/components/SearchPreview/hooks/useAddToBasketAnalytics.ts","webpack://oritopareaapp/../../packages/top-area/dist/esm/App.css?6f53","webpack://oritopareaapp/./src/BurgerPersonalMenuOutlet.tsx","webpack://oritopareaapp/./src/createSpaEntryfileUrl.ts","webpack://oritopareaapp/./src/getPersonalMenuScriptSrc.ts","webpack://oritopareaapp/./src/appRender.tsx","webpack://oritopareaapp/./src/logger.ts","webpack://oritopareaapp/./src/includePersonalMenuScript.ts","webpack://oritopareaapp/../../src/index.ts","webpack://oritopareaapp/../../../src/api/useGetNavigationType.ts","webpack://oritopareaapp/../../../../../src/components/Skeleton/Desktop/SkeletonCatalogueDesktop.tsx","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/Catalogues/CataloguesSkeleton.tsx","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/Catalogues/styles.ts","webpack://oritopareaapp/../../../src/utils/mapCategoryColors.ts","webpack://oritopareaapp/../../../../../src/components/BurgerMenu/Links/styles.ts","webpack://oritopareaapp/../../../../src/components/BurgerMenu/constants.ts","webpack://oritopareaapp/../../../../src/components/BurgerMenu/styles.ts","webpack://oritopareaapp/../../../../../src/components/Skeleton/Desktop/SkeletonMainCategoryDesktop.tsx","webpack://oritopareaapp/../../../../../src/components/Skeleton/Desktop/constants.ts","webpack://oritopareaapp/../../../../../src/components/Skeleton/Mobile/styles.ts","webpack://oritopareaapp/../../../../../src/components/Skeleton/Mobile/SkeletonCatalogueMobile.tsx","webpack://oritopareaapp/../../../../../src/components/Skeleton/Mobile/SkeletonMainCategoryMobile.tsx","webpack://oritopareaapp/../../../../../src/components/Skeleton/Mobile/constants.ts","webpack://oritopareaapp/../../../src/components/styles.ts","webpack://oritopareaapp/../../../src/constants/analytics.ts","webpack://oritopareaapp/../../../src/constants/settings.ts","webpack://oritopareaapp/../../../src/context/configurationContext.tsx","webpack://oritopareaapp/../../../../src/context/navigation/activeLinkContext.tsx","webpack://oritopareaapp/../../../../src/context/navigation/activeMenuContext.tsx","webpack://oritopareaapp/../../../../src/context/navigation/burgerMenuContext.tsx","webpack://oritopareaapp/../../../../src/queries-net/fragments/labels.ts","webpack://oritopareaapp/../../../../src/queries-net/fragments/shade.ts","webpack://oritopareaapp/../../../../src/queries-net/fragments/concept.ts","webpack://oritopareaapp/../../../../src/queries-net/fragments/searchPreviewProduct.ts","webpack://oritopareaapp/../../../src/queries-net/searchPreview.ts","webpack://oritopareaapp/../../../src/utils/mapEnableQuickBuyButton.ts","webpack://oritopareaapp/../../../src/utils/mapSearchPreviewQuery.ts","webpack://oritopareaapp/../../../src/hooks/useGetSearchPreviewData.ts","webpack://oritopareaapp/../../../src/api/getSearchPreviewData.ts","webpack://oritopareaapp/../../../../src/context/navigation/searchInputContext.tsx","webpack://oritopareaapp/../../../src/hooks/useIsMobile.ts","webpack://oritopareaapp/../../../src/models/Categories.ts","webpack://oritopareaapp/../../../src/models/FavoritesLink.ts","webpack://oritopareaapp/../../packages/top-area/dist/esm/App.css"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport type { TranslationKey } from '../models/TranslationKey';\n\nexport type DefaultTranslations = Record<keyof typeof TranslationKey, string>;\n\nexport const defaultTranslations: DefaultTranslations = {\n dialogMessage:\n \"It appears that the link you're attempting to access originates from a different country than your current location. Please choose location.\",\n dialogTitle: 'Looks like you are trying to access Oriflame {foreignCountry} from {homeCountry}.',\n foreignCountryButton: 'Go to Oriflame {foreignCountry}',\n homeCountryButton: 'Continue to {homeCountry}',\n};\n\nexport const translationsNamespace = 'geolocation-popup';\n","/* istanbul ignore file */\n//\n// DO NOT EDIT!\n// This file was autogenerated by Eddie.\n// Changes may cause incorrect behavior and will be lost when the file is regenerated.\n//\n// Run `npx eddie update workspace` to regenerate.\n//\n\nexport const LIBRARY_NAME = 'geolocation-popup';\nexport const PACKAGE_NAME = '@ori/geolocation-popup';\nexport const TEAM_NAME = 'Presentation';\n\nexport const EMOTION_CACHE_KEY = `${LIBRARY_NAME}-emotion-cache-key`;\n","export enum PbsCookieNames {\n ECREF_OWNER = 'ecref_owner',\n ECREF = 'ecref',\n /**\n * This cookie is only available when user is logged in and PBS is active (PBS_OWNER should be defined as well)\n */\n PBS_CODE = 'pbs_code',\n /**\n * This cookie will be available even on anonymous user and controls if PBS should be visible\n */\n PBS_OWNER = 'pbs_owner',\n PPL_CODE = 'ppl_code',\n}\n","export const COUNTRY_CODE_COOKIE_NAME = 'country-code';\nexport const GEOLOCATION_LOCAL_STORAGE_KEY = 'hideGeolocationUntil';\n","import Cookies from 'js-cookie';\n\nimport { COUNTRY_CODE_COOKIE_NAME } from '../constants';\n\n/**\n * Get country code from cookie and convert it to 'uk' if it is 'gb'.\n */\nexport const getCountryCode = () => {\n const countryCode = Cookies.get(COUNTRY_CODE_COOKIE_NAME)?.toLocaleLowerCase();\n\n return countryCode === 'gb' ? 'uk' : countryCode;\n};\n","import type { EnvironmentContext } from '@ori/environment';\n\nimport { getCountryCode } from './getCountryCode';\n\nexport const memberBenefitsPath = '/member-benefits';\nexport const vipCustomerBenefitsPath = '/vip-customer-benefits';\nexport const comparisonPagePath = '/comparison-page';\nexport const businessOpportunityPath = '/business-opportunity';\nconst oldRegistrationPaths = [memberBenefitsPath, vipCustomerBenefitsPath, comparisonPagePath, businessOpportunityPath];\nexport const ssoRegisterPath = '/ssoidentity/register';\n\nexport interface GetHomeCountryUrlParams extends Pick<EnvironmentContext, 'environment'> {\n store?: string | undefined;\n}\n\n/**\n * Returns URL to the home country Oriflame.\n */\nexport const getHomeCountryUrl = ({ environment = 'live', store }: GetHomeCountryUrlParams): string => {\n const countryCode = getCountryCode();\n const pathname = window.location.pathname\n // remove /[a-z]{2} from the pathname if it is on the first position\n .replace(/^\\/[a-z]{2}\\//, '/')\n // replace old registration paths with new registration path\n .replace(new RegExp(`^(${oldRegistrationPaths.join('|')})`), ssoRegisterPath);\n\n const homeCountryUrl = new URL(\n environment === 'live'\n ? `https://${countryCode}.oriflame.com${pathname}`\n : `https://${countryCode}-${environment}.oriflame.com${pathname}`,\n );\n homeCountryUrl.search = window.location.search;\n homeCountryUrl.hash = window.location.hash;\n if (store) {\n // set store query param in URL\n homeCountryUrl.searchParams.set('store', store);\n }\n\n return homeCountryUrl.toString();\n};\n","import type { TokenContext } from '@ori/auth';\nimport type { ClientServiceUrls } from '@ori/configuration-manager';\nimport type { EnvironmentContext } from '@ori/environment';\nimport { PbsCookieNames } from '@ori/personal-beauty-store';\nimport { ApiClient, getTenantCountry } from '@ori/static-api-client-react';\nimport Cookies from 'js-cookie';\nimport capitalize from 'lodash.capitalize';\n\nimport { getCountryCode } from './getCountryCode';\nimport { getHomeCountryUrl } from './getHomeCountryUrl';\nimport { getHiddenByUser } from './localStorageUtils';\n\nexport interface GetGeolocationDataParams\n extends Required<Pick<ClientServiceUrls, 'staticApiUrl'>>,\n EnvironmentContext,\n Pick<TokenContext, 'isAnonymousUser'> {\n /** When enabled is true other conditions are checked whether geolocation popup can be visible. */\n enabled: boolean;\n}\n\nconst formatCountryName = (name: string) => name.split(' ').map(capitalize).join(' ');\n\nexport interface GetGeolocationData {\n /** If true dialog will appear. */\n visible: boolean;\n /** Name of the home country (where user is according to countryCode). */\n homeCountry: string;\n /** Url to the home country Oriflame. */\n homeCountryUrl: string;\n /** Name of the foreign country (where user is NOT according to countryCode). */\n foreignCountry: string;\n}\n\n/**\n * Fetches data needed to decide visibility of geolocation popup and data for homeCountry\n * (where user is according to countryCode) and foreignCountry (where user is NOT according to countryCode).\n * @param params - Parameters needed to fetch geolocation data.\n * @returns Promise with visibility and data for homeCountry and foreignCountry.\n */\nexport const getGeolocationData = async ({\n enabled,\n isAnonymousUser,\n staticApiUrl,\n tenant,\n environment = 'live',\n}: GetGeolocationDataParams): Promise<GetGeolocationData> => {\n const countryCode = getCountryCode();\n if (!enabled || !isAnonymousUser || !countryCode || !tenant || countryCode === tenant) {\n return { foreignCountry: '', homeCountry: '', homeCountryUrl: '', visible: false };\n }\n const store = Cookies.get(PbsCookieNames.PBS_CODE) ?? Cookies.get(PbsCookieNames.PBS_OWNER);\n const hiddenByUser = getHiddenByUser();\n if (!store || hiddenByUser) {\n return { foreignCountry: '', homeCountry: '', homeCountryUrl: '', visible: false };\n }\n const { language } = navigator;\n const client = new ApiClient({ baseUrl: staticApiUrl, language, tenant });\n const [\n {\n data: { name: homeCountry = '' },\n },\n {\n data: { isForeignRegistrationAllowed: visible, name: foreignCountry = '' },\n },\n ] = await Promise.all([\n // We need to fetch translations with home country tenant (countryCode) to get correct translations.\n getTenantCountry(client, countryCode, countryCode, { lang: language }),\n getTenantCountry(client, countryCode, tenant, { lang: language }),\n ]);\n\n return {\n foreignCountry: formatCountryName(foreignCountry),\n homeCountry: formatCountryName(homeCountry),\n homeCountryUrl: getHomeCountryUrl({ environment, store }),\n visible,\n };\n};\n","import { GEOLOCATION_LOCAL_STORAGE_KEY } from '../constants';\n\n/**\n * Checks localStorage for information if user closed geolocation popup before.\n * If he closed it in the last month, it will return true.\n */\nexport const getHiddenByUser = (): boolean => {\n const hideGeolocationUntilFromLocalStorage = localStorage.getItem(GEOLOCATION_LOCAL_STORAGE_KEY);\n const hideGeolocationUntil = hideGeolocationUntilFromLocalStorage\n ? new Date(hideGeolocationUntilFromLocalStorage)\n : null;\n const dateNow = new Date();\n\n return (\n hideGeolocationUntil != null &&\n hideGeolocationUntil.toString() !== 'Invalid Date' &&\n hideGeolocationUntil >= dateNow\n );\n};\n\n/**\n * Sets date to localStorage to hide geolocation popup for a month.\n */\nexport const setHideGeolocationUntilDate = () => {\n const dateNow = new Date();\n dateNow.setMonth(dateNow.getMonth() + 1);\n localStorage.setItem(GEOLOCATION_LOCAL_STORAGE_KEY, dateNow.toISOString());\n};\n","import { Dialog as DialogBase } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\n\nexport const Content = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(6),\n textAlign: 'center',\n [theme.breakpoints.up('sm')]: {\n maxWidth: 390,\n },\n a: {\n '&:hover, &:focus, &:active': {\n color: theme.palette.common.white,\n },\n },\n}));\n\nexport const Dialog = styled(DialogBase)({\n // The Dialog must be above Terms & Conditions popup (The Kendo component #w-terms-and-conditions has its z-index set to 6005).\n // If this value won't be enough, get current z-index value of T&C Kendo popup during the page rendering,\n // increase it and set as the z-index value (something like this `window.getComputedStyle(document.querySelector('.k-window')).zIndex`).\n zIndex: 6050,\n});\n\nexport const Inner = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(3),\n}));\n","import { Button, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback, type FC } from 'react';\n\nimport { useTranslations } from '../../hooks';\nimport type { GetGeolocationData } from '../../utils';\nimport { setHideGeolocationUntilDate } from '../../utils/localStorageUtils';\nimport { DIALOG, FOREIGN_COUNTRY_BUTTON, HOME_COUNTRY_BUTTON } from './constants';\nimport { Content, Dialog, Inner } from './styles';\n\ninterface GeolocationDialogProps extends Pick<GetGeolocationData, 'foreignCountry' | 'homeCountry' | 'homeCountryUrl'> {\n /** If true dialog will be visible. */\n open: boolean;\n /** Function to close dialog. */\n onClose: () => void;\n}\n\n/**\n * Dialog that includes information for user that he is accessing foreign country tenant.\n */\nexport const GeolocationDialog: FC<GeolocationDialogProps> = ({\n foreignCountry,\n homeCountry,\n homeCountryUrl,\n open,\n onClose,\n}) => {\n const { translations, formatMessage } = useTranslations();\n const { getTestId } = useTestId();\n\n const onCloseAndHideUntilDate = useCallback(() => {\n onClose();\n setHideGeolocationUntilDate();\n }, [onClose]);\n\n return (\n <Dialog\n data-testid={getTestId(DIALOG)}\n open={open}\n onClose={onCloseAndHideUntilDate}\n >\n <Content>\n <Inner>\n <Typography\n variant=\"h4\"\n component=\"h4\"\n >\n {formatMessage('dialogTitle', { foreignCountry, homeCountry })}\n </Typography>\n <Typography>{translations.dialogMessage}</Typography>\n </Inner>\n <Inner>\n <Button\n data-testid={getTestId(HOME_COUNTRY_BUTTON)}\n variant=\"contained\"\n color=\"primary\"\n href={homeCountryUrl}\n onClick={onClose}\n >\n {formatMessage('homeCountryButton', { homeCountry })}\n </Button>\n <Button\n data-testid={getTestId(FOREIGN_COUNTRY_BUTTON)}\n variant=\"contained\"\n color=\"secondary\"\n onClick={onCloseAndHideUntilDate}\n >\n {formatMessage('foreignCountryButton', { foreignCountry })}\n </Button>\n </Inner>\n </Content>\n </Dialog>\n );\n};\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { useTranslationsFromNamespace, type UseTranslationsFromNamespaceResult } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * A hook for accessing translations within a specific namespace along with a formatting function.\n *\n * @returns The translations within the specified namespace and a formatting function.\n */\nexport const useTranslations: () => UseTranslationsFromNamespaceResult<DefaultTranslations> = () =>\n useTranslationsFromNamespace<DefaultTranslations>();\n","export const HOME_COUNTRY_BUTTON = 'home-country-button';\nexport const FOREIGN_COUNTRY_BUTTON = 'foreign-country-button';\nexport const DIALOG = 'dialog';\n","import { useToken } from '@ori/auth';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { useEnvironment } from '@ori/environment';\nimport { useSWR } from '@ori/fetching';\nimport { TranslationsNamespaceProvider, TranslationsProvider } from '@ori/i18n';\nimport { useDisclose } from '@ori/presentation-hooks';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useEffect } from 'react';\n\nimport type { DefaultTranslations } from '../../constants';\nimport { defaultTranslations, translationsNamespace } from '../../constants';\nimport { LIBRARY_NAME } from '../../constants-generated';\nimport { getCountryCode, getGeolocationData } from '../../utils';\nimport { GeolocationDialog } from '../GeolocationDialog';\n\nexport interface GeolocationProps {\n /** When enabled is true other conditions are checked whether geolocation popup can be visible. */\n enabled: boolean;\n /** If translations are not provided they are fetched on client. */\n translations?: DefaultTranslations;\n}\n\n/**\n * Geolocation component that fetches data needed to decide visibility of geolocatin popup. If conditions are met a dialog with information about home and foreign country is displayed.\n */\nexport const Geolocation: FC<GeolocationProps> = ({ enabled, translations }) => {\n const { staticApiUrl } = useServiceUrls(['staticApi']);\n const { environment, tenant } = useEnvironment();\n const { isAnonymousUser } = useToken();\n const { open, onClose, onOpen } = useDisclose();\n\n const {\n data: { foreignCountry, homeCountry, homeCountryUrl, visible } = {\n foreignCountry: '',\n homeCountry: '',\n homeCountryUrl: '',\n visible: false,\n },\n } = useSWR(\n [enabled, environment, isAnonymousUser, staticApiUrl, tenant],\n async () => getGeolocationData({ enabled, environment, isAnonymousUser, staticApiUrl, tenant }),\n {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n );\n useEffect(() => {\n if (visible) {\n onOpen();\n }\n }, [onOpen, visible]);\n\n // We need to fetch translations with home country tenant to get correct translations.\n const countryCode = getCountryCode() ?? 'uk';\n\n if (!open) {\n return null;\n }\n\n return (\n <TestIdProvider\n team={Team.Presentation}\n project={LIBRARY_NAME}\n >\n <TranslationsProvider\n defaultTranslationsWithNamespaces={{ [translationsNamespace]: defaultTranslations }}\n // eslint-disable-next-line no-console -- we want to log errors\n clientFetchConfiguration={{ onError: console.error, tenant: countryCode, baseUrl: staticApiUrl }}\n language={navigator.language}\n // istanbul ignore next -- We do not need to test fetching of translations when translations are undefined.\n translationsWithNamespaces={translations ? { [translationsNamespace]: translations } : undefined}\n >\n <TranslationsNamespaceProvider namespace={translationsNamespace}>\n <GeolocationDialog\n foreignCountry={foreignCountry}\n homeCountry={homeCountry}\n homeCountryUrl={homeCountryUrl}\n open={open}\n onClose={onClose}\n />\n </TranslationsNamespaceProvider>\n </TranslationsProvider>\n </TestIdProvider>\n );\n};\n","type EventName = typeof Name;\n\nexport const Name = 'open-login';\nexport const OpenLogin: EventName = Name;\n\nexport interface Data {}\n\nexport interface Event extends CustomEvent<Data> {\n /** Name of event */\n type: EventName;\n}\n\nexport default Event;\n","export const SSO_IDENTITY_LOGIN_PATH = '/ssoidentity/Login';\nexport const SSO_IDENTITY_AD_LOGIN_PATH = `${SSO_IDENTITY_LOGIN_PATH}?ssoLoginType=ActiveDirectory`;\n","import { createContext, useContext } from 'react';\nimport type { MouseEvent } from 'react';\n\nexport interface LoginContext {\n doLogin: (event?: MouseEvent) => void;\n}\n\nexport const loginContext = createContext<LoginContext | undefined>(undefined);\n\nexport const { Provider } = loginContext;\n\nexport const useLogin = () => {\n const context = useContext(loginContext);\n\n if (context === undefined) {\n throw new Error('Value for `loginContext` must be set.');\n }\n\n return context;\n};\n","/* istanbul ignore file */\nexport const goToPage = (page: string) => (window.location.href = page);\n","import { Name } from '@ori-events/open-login';\nimport type { FC, MouseEvent, PropsWithChildren } from 'react';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport { SSO_IDENTITY_AD_LOGIN_PATH, SSO_IDENTITY_LOGIN_PATH } from '../../constants';\nimport { Provider } from '../../contexts';\nimport { goToPage } from '../../utils';\n\nexport const LoginProvider: FC<PropsWithChildren> = ({ children }) => {\n const doLogin = useCallback((event?: MouseEvent) => {\n // Ctrl or Cmd key is pressed, redirect to AD login\n if (Boolean(event?.ctrlKey) || event?.metaKey) {\n goToPage(SSO_IDENTITY_AD_LOGIN_PATH);\n\n return;\n }\n\n goToPage(SSO_IDENTITY_LOGIN_PATH);\n }, []);\n const onLogin = useCallback(() => {\n doLogin();\n }, [doLogin]);\n\n useEffect(() => {\n window.addEventListener(Name, onLogin);\n\n return () => {\n window.removeEventListener(Name, onLogin);\n };\n }, [onLogin]);\n\n return <Provider value={useMemo(() => ({ doLogin }), [doLogin])}>{children}</Provider>;\n};\n","import { defaultTranslations, translationsNamespace } from './defaultTranslations';\n\n/**\n * Default translations with namespaces\n */\nexport const defaultTranslationsWithNamespaces = {\n [translationsNamespace]: defaultTranslations,\n};\n","const MAX_VALUE = 2147483647;\n\nexport const getSearchTime = (timestamp: number) => {\n const searchTime = Date.now() - timestamp;\n\n return searchTime > 0 && searchTime <= MAX_VALUE ? searchTime : 0;\n};\n","import type { ProductData } from '@ori/analytics-data';\nimport type { GlobalProductQuerySignalsDto } from '@ori/global-api-client-react';\n\nimport type { SearchProduct } from '../components/SearchPreview/types';\nimport { PACKAGE_NAME } from '../constants-generated';\nimport { getSearchTime } from './getSearchTime';\nimport type { SearchPreviewResult } from './mapSearchPreviewQuery';\n\nexport interface FormatProductParams extends SearchProduct {\n currencyCode?: string;\n}\nexport interface GetSignalsDataParams {\n customerId: number;\n position: number;\n results: SearchPreviewResult;\n timestamp: number;\n query: string;\n sessionId?: string;\n type?: string;\n code?: string;\n}\nexport const analytics = {\n formatProduct: ({ name, brand, code, image, price, category, currencyCode }: FormatProductParams): ProductData => ({\n currency: currencyCode,\n globalBrandName: '',\n globalCategoryName: '',\n globalName: '',\n itemCode: code,\n localBrandName: brand ?? '',\n localCategoryName: category ?? '',\n localName: name,\n media: image ? [image] : [],\n price: price?.price,\n }),\n getSignalsData: ({\n customerId,\n position,\n results,\n timestamp,\n query,\n sessionId,\n type = 'click',\n code,\n }: GetSignalsDataParams): GlobalProductQuerySignalsDto => ({\n params: {\n count: 1,\n docId: code ?? results.products[position]?.code,\n filterQueries: ['products'],\n position: position + 1,\n query,\n searchTime: getSearchTime(timestamp),\n source: PACKAGE_NAME,\n totalHits: results.numberOfProducts,\n userId: customerId.toString(),\n sessionId,\n },\n timeStamp: new Date(),\n type,\n }),\n};\n","/* istanbul ignore file -- api call */\nimport { useToken } from '@ori/auth';\nimport { useEnvironment } from '@ori/environment';\nimport { TENANT_CONTEXT } from '@ori/fetching';\nimport { createApplicationsNavigationSignal, useApiClient } from '@ori/global-api-client-react';\nimport { useLanguage } from '@ori/i18n';\nimport { useCallback } from 'react';\n\nimport { ACCEPT_LANGUAGE } from '../../../constants';\nimport { useAppConfig } from '../../../context';\nimport { useSearchInput } from '../../../context/navigation';\nimport { analytics } from '../../../utils';\n\ninterface UseSendNavigationSignalParams {\n query: string;\n type?: string;\n}\nexport const useSendNavigationSignal = ({ query, type }: UseSendNavigationSignalParams) => {\n const { customerId } = useToken();\n const { results, timestamp } = useSearchInput();\n const globalApiClient = useApiClient();\n const { tenant } = useEnvironment();\n const { language } = useLanguage();\n const { sessionId } = useAppConfig();\n\n const sendNavigationSignal = useCallback(\n async (position: number, code?: string) => {\n if (!results) {\n return;\n }\n const analyticsData = analytics.getSignalsData({\n customerId,\n position,\n results,\n timestamp,\n query,\n sessionId,\n code,\n type,\n });\n\n await createApplicationsNavigationSignal(globalApiClient, analyticsData, {\n [ACCEPT_LANGUAGE]: language,\n [TENANT_CONTEXT]: tenant,\n });\n },\n [results, customerId, timestamp, query, sessionId, type, globalApiClient, language, tenant],\n );\n\n return { sendNavigationSignal };\n};\n","export enum ReferralType {\n None = 'None',\n PBS = 'PBS',\n ECREF = 'ECREF',\n}\n","import Cookies from 'js-cookie';\nimport { useEffect, useState } from 'react';\n\nimport { PbsCookieNames, ReferralType } from '../../models';\nimport type { CookieStoreInfo } from '../../types';\n\nexport const useCookieStoreInfo = () => {\n const [cookieInfo, setCookieInfo] = useState<CookieStoreInfo>({\n type: ReferralType.None,\n productListType: 'Personal',\n });\n\n useEffect(() => {\n const pbsOwnerCookie = Cookies.get(PbsCookieNames.PBS_OWNER);\n const ecrefCookie = Cookies.get(PbsCookieNames.ECREF);\n\n if (pbsOwnerCookie) {\n setCookieInfo({\n owner: pbsOwnerCookie,\n productListType: 'Personal',\n type: ReferralType.PBS,\n });\n\n return;\n }\n\n if (ecrefCookie) {\n setCookieInfo({\n owner: ecrefCookie,\n productListType: 'Personal',\n type: ReferralType.ECREF,\n });\n }\n }, []);\n\n return cookieInfo;\n};\n","/* istanbul ignore file */\n\n/**\n * DO NOT EDIT!\n * This file was autogenerated by graphql-codegen.\n * Changes may cause incorrect behavior and will be lost when the code is regenerated.\n *\n * Run `npx run codegen` to regenerate.\n */\n\n\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n /** The `Date` scalar represents an ISO-8601 compliant date type. */\n Date: { input: string; output: string; }\n /** The `DateTime` scalar represents an ISO-8601 compliant date time type. */\n DateTime: { input: string; output: string; }\n /** The built-in `Decimal` scalar type. */\n Decimal: { input: unknown; output: unknown; }\n JSON: { input: Record<string, any>; output: Record<string, any>; }\n /** The `Long` scalar type represents non-fractional signed whole 64-bit numeric values. Long can represent values between -(2^63) and 2^63 - 1. */\n Long: { input: unknown; output: unknown; }\n Void: { input: void; output: void; }\n};\n\n/** addThis configuration */\nexport type AddThis = {\n readonly __typename?: 'AddThis';\n /** profile id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** services list */\n readonly services?: Maybe<ReadonlyArray<Maybe<AddThisService>>>;\n /** shared url */\n readonly sharedUrl?: Maybe<Scalars['String']['output']>;\n};\n\n/** add this service */\nexport type AddThisService = {\n readonly __typename?: 'AddThisService';\n /** service css class */\n readonly cssClassName?: Maybe<Scalars['String']['output']>;\n /** service js class */\n readonly jsClassName?: Maybe<Scalars['String']['output']>;\n /** service name */\n readonly name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Address = {\n readonly __typename?: 'Address';\n /** Address id */\n readonly addressId: Scalars['ID']['output'];\n /** Address type */\n readonly addressType?: Maybe<AddressType>;\n /** Area */\n readonly area?: Maybe<Scalars['String']['output']>;\n /** City */\n readonly city?: Maybe<Scalars['String']['output']>;\n /** Coordinates */\n readonly coordinates?: Maybe<Coordinates>;\n /** Country */\n readonly country?: Maybe<Scalars['String']['output']>;\n /** Delivery */\n readonly delivery?: Maybe<Scalars['String']['output']>;\n /** Delivery2 */\n readonly delivery2?: Maybe<Scalars['String']['output']>;\n /** Delivery3 */\n readonly delivery3?: Maybe<Scalars['String']['output']>;\n /** District */\n readonly district?: Maybe<Scalars['String']['output']>;\n /** Is address primary */\n readonly isPrimary?: Maybe<Scalars['Boolean']['output']>;\n /** Locality */\n readonly locality?: Maybe<Scalars['String']['output']>;\n /** Province */\n readonly province?: Maybe<Scalars['String']['output']>;\n /** Region */\n readonly region?: Maybe<Scalars['String']['output']>;\n /** Street address */\n readonly streetAddress?: Maybe<Scalars['String']['output']>;\n /** Zip code */\n readonly zipcode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AddressMetadata = {\n readonly __typename?: 'AddressMetadata';\n /** Address type */\n readonly addressType?: Maybe<AddressMetadataType>;\n /** Area */\n readonly area?: Maybe<AddressMetadataItem>;\n /** City */\n readonly city?: Maybe<AddressMetadataItem>;\n /** Country */\n readonly country?: Maybe<CountryMetadataItem>;\n /** Delivery */\n readonly delivery?: Maybe<AddressMetadataDelivery>;\n /** Delivery2 */\n readonly delivery2?: Maybe<AddressMetadataDelivery>;\n /** Delivery3 */\n readonly delivery3?: Maybe<AddressMetadataDelivery>;\n /** District */\n readonly district?: Maybe<AddressMetadataItem>;\n /** Is primary */\n readonly isPrimary?: Maybe<IsPrimaryMetadataItem>;\n /** KYC operations */\n readonly kycOperations?: Maybe<MetadataOperations>;\n /** Locality */\n readonly locality?: Maybe<AddressMetadataItem>;\n /** Operations */\n readonly operations?: Maybe<AddressMetadataOperations>;\n /** Province */\n readonly province?: Maybe<AddressMetadataItem>;\n /** Region */\n readonly region?: Maybe<AddressMetadataItem>;\n /** Search option */\n readonly searchOptions?: Maybe<AddressMetadataSearchOptions>;\n /** Street address */\n readonly streetAddress?: Maybe<AddressMetadataItem>;\n /** Subscription operations */\n readonly subscriptionOperations?: Maybe<MetadataOperations>;\n /** Zip code */\n readonly zipcode?: Maybe<AddressMetadataItem>;\n};\n\n/** Enum allowed search results */\nexport enum AddressMetadataAllowedSearchResults {\n Area = 'Area',\n City = 'City',\n Country = 'Country',\n District = 'District',\n Locality = 'Locality',\n Market = 'Market',\n Province = 'Province',\n Region = 'Region',\n Street = 'Street',\n ZipCode = 'ZipCode'\n}\n\nexport type AddressMetadataDelivery = {\n readonly __typename?: 'AddressMetadataDelivery';\n /** Available options */\n readonly availableOptions?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Order of property in which should be preferably displayed (e.g. field on edit form) */\n readonly displayOrder?: Maybe<Scalars['Int']['output']>;\n /** Is delivery available */\n readonly isAvailable?: Maybe<Scalars['Boolean']['output']>;\n /** Is delivery editable */\n readonly isEditable?: Maybe<Scalars['Boolean']['output']>;\n /** Delivery validation */\n readonly validation?: Maybe<AddressMetadataDeliveryValidation>;\n};\n\nexport type AddressMetadataDeliveryValidation = {\n readonly __typename?: 'AddressMetadataDeliveryValidation';\n /** Is delivery mandatory */\n readonly isMandatory?: Maybe<Scalars['Boolean']['output']>;\n /** Delivery maximal length */\n readonly maxLength?: Maybe<Scalars['Int']['output']>;\n /** Delivery minimal length */\n readonly minLength?: Maybe<Scalars['Int']['output']>;\n /** Regular expression */\n readonly regularExpression?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AddressMetadataItem = {\n readonly __typename?: 'AddressMetadataItem';\n /** Order of property in which should be preferably displayed (e.g. field on edit form) */\n readonly displayOrder?: Maybe<Scalars['Int']['output']>;\n /** Is item available */\n readonly isAvailable?: Maybe<Scalars['Boolean']['output']>;\n /** Is item editable */\n readonly isEditable?: Maybe<Scalars['Boolean']['output']>;\n /** Item validation */\n readonly validation?: Maybe<AddressMetadataValidation>;\n};\n\nexport type AddressMetadataOperation = {\n readonly __typename?: 'AddressMetadataOperation';\n /** Is operation enabled */\n readonly isEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** List of reasons */\n readonly reasons?: Maybe<ReadonlyArray<Maybe<AddressMetadataOperationReason>>>;\n};\n\nexport type AddressMetadataOperationReason = {\n readonly __typename?: 'AddressMetadataOperationReason';\n /** Code */\n readonly code?: Maybe<Scalars['String']['output']>;\n /** Message */\n readonly message?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AddressMetadataOperations = {\n readonly __typename?: 'AddressMetadataOperations';\n /** Create */\n readonly create?: Maybe<AddressMetadataOperation>;\n /** Delete */\n readonly delete?: Maybe<AddressMetadataOperation>;\n /** Delete primary */\n readonly deletePrimary?: Maybe<AddressMetadataOperation>;\n /** Read */\n readonly read?: Maybe<AddressMetadataOperation>;\n /** Update */\n readonly update?: Maybe<AddressMetadataOperation>;\n};\n\nexport type AddressMetadataSearchOptions = {\n readonly __typename?: 'AddressMetadataSearchOptions';\n /** Allowed search results */\n readonly allowedSearchResults?: Maybe<ReadonlyArray<AddressMetadataAllowedSearchResults>>;\n /** Order of property in which should be preferably displayed (e.g. field on edit form) */\n readonly displayOrder?: Maybe<Scalars['Int']['output']>;\n /** Is search options enabled */\n readonly isEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Maximum number of results offered during search */\n readonly maxResults?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type AddressMetadataType = {\n readonly __typename?: 'AddressMetadataType';\n /** Available options */\n readonly availableOptions?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Is address type available */\n readonly isAvailable?: Maybe<Scalars['Boolean']['output']>;\n /** Is address type editable */\n readonly isEditable?: Maybe<Scalars['Boolean']['output']>;\n /** Address type validation */\n readonly validation?: Maybe<AddressMetadataTypeValidation>;\n};\n\nexport type AddressMetadataTypeValidation = {\n readonly __typename?: 'AddressMetadataTypeValidation';\n /** Is field mandatory */\n readonly isMandatory?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type AddressMetadataValidation = {\n readonly __typename?: 'AddressMetadataValidation';\n /** Is address match required */\n readonly isAddressMatchRequired?: Maybe<Scalars['Boolean']['output']>;\n /** Is field mandatory */\n readonly isMandatory?: Maybe<Scalars['Boolean']['output']>;\n /** Field maximal length */\n readonly maxLength?: Maybe<Scalars['Int']['output']>;\n /** Field minimal length */\n readonly minLength?: Maybe<Scalars['Int']['output']>;\n /** Regular expression */\n readonly regularExpression?: Maybe<Scalars['String']['output']>;\n};\n\n/** Enum address type */\nexport enum AddressType {\n Channel = 'Channel',\n Delivery = 'Delivery',\n Foreign = 'Foreign',\n Home = 'Home',\n Kyc = 'Kyc',\n Other = 'Other'\n}\n\nexport enum AllowedClaimExchangeProducts {\n All = 'All',\n DifferentProductOnly = 'DifferentProductOnly',\n SameProductOnly = 'SameProductOnly'\n}\n\nexport type AppLink = {\n readonly __typename?: 'AppLink';\n /** Deep link */\n readonly deepLink?: Maybe<Scalars['String']['output']>;\n /** Link */\n readonly link?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Application = {\n readonly __typename?: 'Application';\n /** Bazaarvoice configuration */\n readonly bazaarvoiceConfiguration?: Maybe<BazaarvoiceConfiguration>;\n /** Breadcrumb links for a page URL */\n readonly breadcrumbLinks?: Maybe<BreadcrumbLinks>;\n readonly catalogueLandingPage?: Maybe<CatalogueLandingPage>;\n /** Editorial landing page */\n readonly editorialLandingPage?: Maybe<EditorialLandingPage>;\n /** Editorial landing pages */\n readonly editorialLandingPages?: Maybe<ReadonlyArray<Maybe<EditorialLandingPage>>>;\n /** Editorial page */\n readonly editorialPage?: Maybe<EditorialPage>;\n /** Editorial pages */\n readonly editorialPages?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Feedback benefit banners */\n readonly feedbackBenefitBanners?: Maybe<ReadonlyArray<Maybe<FeedbackBenefitBanner>>>;\n /** Footer */\n readonly footer?: Maybe<Footer>;\n /** Frontpage v3 content */\n readonly frontpage?: Maybe<Frontpage>;\n /** Ingredient library */\n readonly ingredientLibrary?: Maybe<IngredientLibrary>;\n /** Makeup Try On */\n readonly makeupTryOnConfiguration?: Maybe<MakeupTryOnConfiguration>;\n /**\n * The get navigation async.\n *\n *\n * **Returns:**\n * The result.\n */\n readonly navigation?: Maybe<NavigationCollection>;\n /**\n * The get navigation async.\n *\n *\n * **Returns:**\n * The result.\n */\n readonly navigations?: Maybe<ReadonlyArray<Maybe<NavigationCollection>>>;\n /** Olapic configuration */\n readonly olapic?: Maybe<OlapicConfiguration>;\n /** Navigation menu for a single page */\n readonly pageNavigation?: Maybe<PageNavigation>;\n /** Navigation menu for multiple pages */\n readonly pageNavigations?: Maybe<ReadonlyArray<Maybe<PageNavigation>>>;\n readonly permanentTopBanners?: Maybe<ReadonlyArray<Maybe<PermanentTopBanner>>>;\n readonly personalEditorialLandingPage?: Maybe<PersonalEditorialLandingPage>;\n readonly personalEditorialLandingPages?: Maybe<ReadonlyArray<Maybe<PersonalEditorialLandingPage>>>;\n readonly personalEditorialPage?: Maybe<EditorialPage>;\n readonly personalEditorialPages?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Personal product list configuration */\n readonly personalProductListConfiguration?: Maybe<PersonalProductListConfiguration>;\n /** Product detail page */\n readonly productDetailPage?: Maybe<ProductDetailPage>;\n /** Product listing page */\n readonly productListingPage?: Maybe<ProductListingPage>;\n /** Product Search Page */\n readonly productSearchPage?: Maybe<ProductSearchPage>;\n /** Preview of product search results */\n readonly productSearchPreview?: Maybe<ProductSearchPreview>;\n readonly ratingsAndReviewsConfiguration?: Maybe<RatingsAndReviewsConfiguration>;\n /** Share and earn page */\n readonly shareAndEarn?: Maybe<ShareAndEarn>;\n /** Links meant for user sharing */\n readonly sharingLinks?: Maybe<SharingLinks>;\n /** Wellness Club */\n readonly wellnessClub?: Maybe<WellnessClub>;\n};\n\n\nexport type ApplicationBreadcrumbLinksArgs = {\n pageUrl?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type ApplicationEditorialLandingPageArgs = {\n channelType?: EditorialChannelType;\n landingPageId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationEditorialLandingPagesArgs = {\n channelType?: EditorialChannelType;\n landingPageIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\n\nexport type ApplicationEditorialPageArgs = {\n channelType?: EditorialChannelType;\n pageId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationEditorialPagesArgs = {\n channelType?: EditorialChannelType;\n pageIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n};\n\n\nexport type ApplicationFeedbackBenefitBannersArgs = {\n bannerTypes?: InputMaybe<ReadonlyArray<FeedbackBenefitBannerType>>;\n};\n\n\nexport type ApplicationNavigationArgs = {\n customerTypeId?: InputMaybe<Scalars['Int']['input']>;\n navigationType: NavigationType;\n nodeId?: InputMaybe<Scalars['String']['input']>;\n visitorSegment?: InputMaybe<VisitorSegment>;\n};\n\n\nexport type ApplicationNavigationsArgs = {\n customerTypeId?: InputMaybe<Scalars['Int']['input']>;\n navigationTypes?: InputMaybe<ReadonlyArray<NavigationType>>;\n nodeId?: InputMaybe<Scalars['String']['input']>;\n visitorSegment?: InputMaybe<VisitorSegment>;\n};\n\n\nexport type ApplicationOlapicArgs = {\n categoryId?: InputMaybe<Scalars['String']['input']>;\n olapicType: OlapicTypeEnum;\n productCode?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationPageNavigationArgs = {\n pageId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type ApplicationPageNavigationsArgs = {\n pageIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['String']['input']>>>;\n};\n\n\nexport type ApplicationPermanentTopBannersArgs = {\n bannerType: PermanentTopBannerType;\n};\n\n\nexport type ApplicationPersonalEditorialLandingPageArgs = {\n landingPageId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationPersonalEditorialLandingPagesArgs = {\n landingPageIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n};\n\n\nexport type ApplicationPersonalEditorialPageArgs = {\n pageId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationPersonalEditorialPagesArgs = {\n pageIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n};\n\n\nexport type ApplicationProductDetailPageArgs = {\n productCode?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type ApplicationProductListingPageArgs = {\n pageId?: InputMaybe<Scalars['ID']['input']>;\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\nexport enum ApplyPolicy {\n AfterResolver = 'AFTER_RESOLVER',\n BeforeResolver = 'BEFORE_RESOLVER',\n Validation = 'VALIDATION'\n}\n\nexport type Approval = {\n readonly __typename?: 'Approval';\n /** Blocks the consultant's guarantee and SPO manager from ordering on their behalf */\n readonly blockGuaranteeOrdering?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for receiving info emails/SMS */\n readonly contact?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for receiving emails/SMS from beauty consultant */\n readonly marketingConsultant?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for receiving marketing information from external sources */\n readonly marketingExternal?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for receiving marketing information from Oriflame */\n readonly marketingOriflame?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for receiving newsletters */\n readonly newsletters?: Maybe<Scalars['Boolean']['output']>;\n /** Customer cannot be selected as sponsor by different subjects (upline consultant, self. registration, locator, ...) */\n readonly optedOutOfSponsorSelect?: Maybe<Scalars['Boolean']['output']>;\n /** Nova customer approval for share Order history with allocated beauty Consultant */\n readonly orderHistory?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for displaying personal data */\n readonly personalData?: Maybe<Scalars['Boolean']['output']>;\n /** Approval for publication in Oriflame materials */\n readonly publication?: Maybe<Scalars['Boolean']['output']>;\n /** Leader approval for upline Leader to browse leader downline members */\n readonly uplineLeaderBrowse?: Maybe<Scalars['Boolean']['output']>;\n /** Leader approval for upline Leader to display leader's data */\n readonly uplineLeaderData?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type Article = {\n readonly __typename?: 'Article';\n /** Type of a article */\n readonly articleType?: Maybe<ArticleType>;\n /** Title of the category of article */\n readonly categoryTitle?: Maybe<Scalars['String']['output']>;\n /** Article's image */\n readonly image?: Maybe<ArticleImage>;\n /** Introductory text from article */\n readonly introText?: Maybe<Scalars['String']['output']>;\n /** Flag indicating if article contains video */\n readonly isVideoArticle?: Maybe<Scalars['Boolean']['output']>;\n /** Link to the article */\n readonly link?: Maybe<Link>;\n /** The get products. */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** Date of article's publication */\n readonly published?: Maybe<Scalars['DateTime']['output']>;\n /** Title of the article */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ArticleImage = {\n readonly __typename?: 'ArticleImage';\n /** Alternative text of an image */\n readonly alt?: Maybe<Scalars['String']['output']>;\n /** Image's url */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ArticleType {\n /** Articles from Beauty Edit section */\n BeautyEdit = 'BeautyEdit',\n /** Articles related to products */\n RelatedToProduct = 'RelatedToProduct',\n /** Default value - not for use with API. Exists to detect errors in parsing values */\n Undefined = 'Undefined'\n}\n\nexport type Attribute = {\n readonly __typename?: 'Attribute';\n readonly name?: Maybe<Scalars['String']['output']>;\n readonly value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BackInStockAvailability = {\n readonly __typename?: 'BackInStockAvailability';\n /** Flag indicating that back in stock notification is available */\n readonly showBackInStockNotification?: Maybe<Scalars['Boolean']['output']>;\n};\n\n/** Channel to identify how we should notify user */\nexport enum BackInStockNotificationChannel {\n /** We will notify customer on provided email */\n Email = 'Email',\n /** We will notify customer on provided telephone */\n Sms = 'Sms'\n}\n\nexport type BackInStockNotificationSubscriptionInput = {\n /** Email value for notificationChannel.Email */\n readonly email?: InputMaybe<Scalars['String']['input']>;\n /** The product code to watch */\n readonly itemCode?: InputMaybe<Scalars['String']['input']>;\n /** Flag indicating the channel for notification */\n readonly notificationChannel: BackInStockNotificationChannel;\n /** Telephone value for notificationChannel.Telephone */\n readonly telephoneNumber?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Background types */\nexport enum BackgroundType {\n /** Color as a background */\n Color = 'Color',\n /** Image as a background */\n Image = 'Image',\n /** No background */\n None = 'None',\n /** Video as a background */\n Video = 'Video'\n}\n\nexport type Bank = {\n readonly __typename?: 'Bank';\n /** Id of the Bank */\n readonly bankId?: Maybe<Scalars['Int']['output']>;\n /** Bank code */\n readonly code?: Maybe<Scalars['String']['output']>;\n /** Name of the Bank */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** SWIFT/BIC code */\n readonly swiftBic?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BankAccount = {\n readonly __typename?: 'BankAccount';\n /** The Bank */\n readonly bank?: Maybe<Bank>;\n /** Bank Account ID */\n readonly bankAccountId: Scalars['ID']['output'];\n /** Branch of the Bank */\n readonly bankBranch?: Maybe<BankBranch>;\n /** Subbranch of the Bank */\n readonly bankSubBranch?: Maybe<Scalars['String']['output']>;\n /** Bank account number */\n readonly number?: Maybe<Scalars['String']['output']>;\n /** Bank account owner */\n readonly owner?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum BankBonusPaymentTransferState {\n NothingForTransfer = 'NothingForTransfer',\n Pending = 'Pending',\n Transferred = 'Transferred',\n Undefined = 'Undefined'\n}\n\nexport type BankBranch = {\n readonly __typename?: 'BankBranch';\n /** Id of the bank branch */\n readonly bankBranchId?: Maybe<Scalars['Int']['output']>;\n /** Bank branch code */\n readonly code?: Maybe<Scalars['String']['output']>;\n /** Bank branch name */\n readonly name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BazaarvoiceConfiguration = {\n readonly __typename?: 'BazaarvoiceConfiguration';\n /** Checks if Conversations Platform is enabled */\n readonly conversationsPlatformEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Checks if Dream Catcher is enabled */\n readonly dreamCatcherEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Dream Catcher Product Code */\n readonly dreamCatcherProductCode?: Maybe<Scalars['String']['output']>;\n /** Legal notice read-more link */\n readonly legalNoticeLink?: Maybe<Link>;\n /** Legal notice text */\n readonly legalNoticeText?: Maybe<Scalars['String']['output']>;\n /** Checks if Questions And Answers are enabled */\n readonly questionsAndAnswersEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Checks if Questions And Answers are Enabled For Segments */\n readonly questionsAndAnswersEnabledForSegments?: Maybe<Scalars['Boolean']['output']>;\n /** Checks if Ratings And Reviews are enabled */\n readonly ratingsAndReviewsEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Url for Submission Client Script */\n readonly submissionClientScriptUrl?: Maybe<Scalars['String']['output']>;\n /** Submission Page Id */\n readonly submissionPageId?: Maybe<Scalars['String']['output']>;\n /** Checks if Transaction Tracking is enabled */\n readonly transactionTrackingEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** General Url for bazaarvoice */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BeautyEdit = {\n readonly __typename?: 'BeautyEdit';\n readonly editorialArticles?: Maybe<ReadonlyArray<Maybe<Article>>>;\n /** Url of the main image of Beauty Edit section */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Main text of Beauty Edit section. */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type BeautyEditEditorialArticlesArgs = {\n skip?: InputMaybe<Scalars['Int']['input']>;\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type BeautyVideo = {\n readonly __typename?: 'BeautyVideo';\n /** Link to Beauty Edit section */\n readonly link?: Maybe<Link>;\n /** Video displayed in the section */\n readonly video?: Maybe<Video>;\n};\n\nexport type BenefitBanner = {\n readonly __typename?: 'BenefitBanner';\n /** Title */\n readonly messageTitle?: Maybe<Scalars['String']['output']>;\n /** URL */\n readonly messageUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BestOffersBanner = {\n readonly __typename?: 'BestOffersBanner';\n /** Background color */\n readonly backgroundColor?: Maybe<Scalars['String']['output']>;\n /** Font color -eg. red, grey */\n readonly fontColor?: Maybe<Scalars['String']['output']>;\n /** Headline of the banner */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image url of the banner */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link type, attributes and Id */\n readonly link?: Maybe<Link>;\n /** Mobile font color -eg. red, grey */\n readonly mobileFontColor?: Maybe<Scalars['String']['output']>;\n /** Banner Validity date from */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Banner validity date to */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type BestsellerProducts = {\n readonly __typename?: 'BestsellerProducts';\n /** Banner of the iconic products. */\n readonly banner?: Maybe<ProductsPromotionBanner>;\n /** Headline of the iconic products. */\n readonly headline?: Maybe<Scalars['String']['output']>;\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n};\n\nexport type Brand = {\n readonly __typename?: 'Brand';\n /** Brand id */\n readonly brandId: Scalars['ID']['output'];\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Background Image URL */\n readonly image?: Maybe<Scalars['String']['output']>;\n /** Collection of logo images with sizes */\n readonly logo?: Maybe<ReadonlyArray<Maybe<SizedImage>>>;\n /** Localized name of the brand */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Original name of the brand used for product/concept indexing */\n readonly originalName?: Maybe<Scalars['String']['output']>;\n /** Collection of sub-brands */\n readonly subBrands?: Maybe<ReadonlyArray<Maybe<Brand>>>;\n /** Taxonomy id */\n readonly taxonomyId: Scalars['ID']['output'];\n /** SEO headline text from product area */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Title image */\n readonly titleImage?: Maybe<Scalars['String']['output']>;\n /** Brand Page url */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BreadcrumbLinks = {\n readonly __typename?: 'BreadcrumbLinks';\n /** Collection of links for the breadcrumb navigation */\n readonly links?: Maybe<ReadonlyArray<Maybe<Link>>>;\n};\n\n/** The bundle component resolver. */\nexport type BundleComponent = {\n readonly __typename?: 'BundleComponent';\n /** The product bundle components . */\n readonly product?: Maybe<Product>;\n /** Quantity of a product in a bundle */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type CampaignBanner = {\n readonly __typename?: 'CampaignBanner';\n /** Background color -eg. red, grey */\n readonly backgroundColor?: Maybe<Scalars['String']['output']>;\n /** Font color -eg. red, grey */\n readonly fontColor?: Maybe<Scalars['String']['output']>;\n /** Headline of the banner */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image url of the banner */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link type, attributes and Id */\n readonly link?: Maybe<Link>;\n /** Mobile font color -eg. red, grey */\n readonly mobileFontColor?: Maybe<Scalars['String']['output']>;\n /** Short text of the banner */\n readonly shortText?: Maybe<Scalars['String']['output']>;\n /** Tagline of the banner */\n readonly tagline?: Maybe<Scalars['String']['output']>;\n /** Banner Validity date from */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Banner validity date to */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport enum CanCancelOrderResult {\n Allowed = 'Allowed',\n AlreadyCancelled = 'AlreadyCancelled',\n AlreadyRequested = 'AlreadyRequested',\n CancellationNotAllowedByOrderFlow = 'CancellationNotAllowedByOrderFlow',\n CancellationNotAllowedByOrisales = 'CancellationNotAllowedByOrisales',\n CancellationOfOrdersWithGiftCardsIsDisabled = 'CancellationOfOrdersWithGiftCardsIsDisabled',\n FinalizedNotSynchronized = 'FinalizedNotSynchronized',\n Hidden = 'Hidden',\n InsufficientPermissions = 'InsufficientPermissions',\n IsFromOrisales = 'IsFromOrisales',\n IsNotAllowedPeriodOrder = 'IsNotAllowedPeriodOrder',\n IsNotCurrentPeriodOrder = 'IsNotCurrentPeriodOrder',\n IsOrderOriginPharmacy = 'IsOrderOriginPharmacy',\n IsPaidOnline = 'IsPaidOnline',\n IsPrinted = 'IsPrinted',\n PendingOnlinePayment = 'PendingOnlinePayment',\n PeriodClosingMinutesOffset = 'PeriodClosingMinutesOffset',\n PlaceOrderMinutesOffset = 'PlaceOrderMinutesOffset',\n RedeemedGiftCard = 'RedeemedGiftCard'\n}\n\nexport type Catalogue = {\n readonly __typename?: 'Catalogue';\n /** catalogue code */\n readonly catalogueCode: Scalars['ID']['output'];\n};\n\n/** Represents the information of a catalogue. */\nexport type CatalogueInfo = {\n readonly __typename?: 'CatalogueInfo';\n /** The type of the catalogue. */\n readonly catalogueType: CatalogueType;\n /** The image URL of the catalogue. */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** The link associated with the catalogue. */\n readonly link?: Maybe<Link>;\n /** The title of the catalogue. */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** The valid from date of the catalogue. */\n readonly validFrom: Scalars['DateTime']['output'];\n /** The valid to date of the catalogue. */\n readonly validTo: Scalars['DateTime']['output'];\n};\n\nexport type CatalogueLandingPage = {\n readonly __typename?: 'CatalogueLandingPage';\n /** The collection of digital catalogues. */\n readonly digitalCatalogues?: Maybe<ReadonlyArray<Maybe<CatalogueInfo>>>;\n /** The collection of other catalogue types. */\n readonly otherCatalogues?: Maybe<ReadonlyArray<Maybe<CatalogueInfo>>>;\n};\n\nexport type CatalogueOffer = {\n readonly __typename?: 'CatalogueOffer';\n /** Benefit Product */\n readonly benefits?: Maybe<ReadonlyArray<Maybe<CatalogueOffersProductBenefit>>>;\n /** Quantity of benefit */\n readonly benefitsQuantity?: Maybe<Scalars['Int']['output']>;\n /** Concept linked to the offer */\n readonly concepts?: Maybe<ReadonlyArray<Maybe<CatalogueOffersConcept>>>;\n /** Benefit concepts */\n readonly conceptsBenefits?: Maybe<ReadonlyArray<Maybe<CatalogueOffersConceptBenefit>>>;\n /** Percent of the discount */\n readonly discountPercent?: Maybe<Scalars['Float']['output']>;\n /** Quantity of missing products */\n readonly missingQuantity?: Maybe<Scalars['Int']['output']>;\n /** Offer id */\n readonly offerId?: Maybe<Scalars['Int']['output']>;\n /** Product linked to the offer */\n readonly products?: Maybe<ReadonlyArray<Maybe<CatalogueOffersProduct>>>;\n /** Total price */\n readonly totalPrice?: Maybe<Scalars['Float']['output']>;\n /** Total price after discount */\n readonly totalPriceAfterDiscount?: Maybe<Scalars['Float']['output']>;\n /** Type of the offer */\n readonly type?: Maybe<CatalogueOfferType>;\n};\n\nexport enum CatalogueOfferType {\n /** Special offer for buying product */\n Buy = 'Buy',\n /** Choose from products */\n Choose = 'Choose',\n /** Choose a product and choose another */\n ChooseAndChoose = 'ChooseAndChoose',\n /** Choose a product and get another */\n ChooseAndGet = 'ChooseAndGet',\n /** Get a product */\n Get = 'Get',\n /** No type of catalogue offer was specified */\n None = 'None'\n}\n\nexport type CatalogueOffersConcept = {\n readonly __typename?: 'CatalogueOffersConcept';\n /** Buisness points */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Offer concept */\n readonly concept?: Maybe<Concept>;\n /** Price of the concept */\n readonly price?: Maybe<Scalars['Float']['output']>;\n /** Quantity of the product */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n /** Shades of the product */\n readonly shades?: Maybe<ReadonlyArray<Maybe<CatalogueOffersProduct>>>;\n};\n\nexport type CatalogueOffersConceptBenefit = {\n readonly __typename?: 'CatalogueOffersConceptBenefit';\n /** Buisness points */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Concept */\n readonly concept?: Maybe<Concept>;\n /** Price */\n readonly price?: Maybe<Scalars['Float']['output']>;\n /** Purchase price */\n readonly purchasePrice?: Maybe<Scalars['Float']['output']>;\n /** Quantity of the concept benefit */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n /** Shades of the concept benefit */\n readonly shades?: Maybe<ReadonlyArray<Maybe<CatalogueOffersProductBenefit>>>;\n};\n\nexport type CatalogueOffersProduct = {\n readonly __typename?: 'CatalogueOffersProduct';\n /** Buisness points */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Price of the product */\n readonly price?: Maybe<Scalars['Float']['output']>;\n /** Offer product */\n readonly product?: Maybe<Product>;\n /** Quantity of the product */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type CatalogueOffersProductBenefit = {\n readonly __typename?: 'CatalogueOffersProductBenefit';\n /** Buisness points */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Is purchased flag */\n readonly isPurchased?: Maybe<Scalars['Boolean']['output']>;\n /** Price */\n readonly price?: Maybe<Scalars['Float']['output']>;\n /** The get product. */\n readonly product?: Maybe<Product>;\n /** Purchase price of the product benefit */\n readonly purchasePrice?: Maybe<Scalars['Float']['output']>;\n /** Quantity of the product benefit */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n /** The get replaced product. */\n readonly replacedPoduct?: Maybe<Product>;\n};\n\nexport enum CatalogueType {\n /** DigitalCurrent catalogue type */\n DigitalCurrent = 'DigitalCurrent',\n /** DigitalNext catalogue type */\n DigitalNext = 'DigitalNext',\n /** LocalCustom catalogue type */\n LocalCustom = 'LocalCustom',\n /** Lookbook catalogue type */\n Lookbook = 'Lookbook',\n None = 'None'\n}\n\nexport type Category = {\n readonly __typename?: 'Category';\n /** Expiration date description used for category */\n readonly expirationDateDescription?: Maybe<Scalars['String']['output']>;\n /** Category Id */\n readonly id: Scalars['ID']['output'];\n /** Category image */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Localized category name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Gets the navigation tags for the category. */\n readonly navigationTags?: Maybe<ReadonlyArray<Maybe<NavigationTag>>>;\n /** Original name of the category used for product/concept indexing */\n readonly originalName?: Maybe<Scalars['String']['output']>;\n /** Collection of subcategories */\n readonly subCategories?: Maybe<ReadonlyArray<Maybe<Category>>>;\n /** Taxonomy ID of the category */\n readonly taxonomyId: Scalars['ID']['output'];\n};\n\nexport type CategoryBanner = {\n readonly __typename?: 'CategoryBanner';\n /** Background color */\n readonly backgroundColor?: Maybe<Scalars['String']['output']>;\n /** Font color -eg. red, grey */\n readonly fontColor?: Maybe<Scalars['String']['output']>;\n /** Headline of the banner */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image url of the banner */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link type, attributes and Id */\n readonly link?: Maybe<Link>;\n /** Mobile font color -eg. red, grey */\n readonly mobileFontColor?: Maybe<Scalars['String']['output']>;\n /** Short text of the banner */\n readonly shortText?: Maybe<Scalars['String']['output']>;\n /** Tagline of the banner */\n readonly tagline?: Maybe<Scalars['String']['output']>;\n /** Banner Validity date from */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Banner validity date to */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport enum ChannelType {\n Mv7 = 'MV7',\n Website = 'Website'\n}\n\nexport type ClaimAction = {\n readonly __typename?: 'ClaimAction';\n readonly actionId: ClaimActionType;\n readonly description?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ClaimActionType {\n CancelOrder = 'CancelOrder',\n CancelProduct = 'CancelProduct',\n ExchangeProduct = 'ExchangeProduct',\n None = 'None',\n ResendOrder = 'ResendOrder',\n ResendProduct = 'ResendProduct',\n ReturnProduct = 'ReturnProduct'\n}\n\nexport type ClaimActions = {\n readonly __typename?: 'ClaimActions';\n readonly collection?: Maybe<ReadonlyArray<Maybe<ClaimAction>>>;\n};\n\nexport type ClaimCategories = {\n readonly __typename?: 'ClaimCategories';\n readonly collection?: Maybe<ReadonlyArray<Maybe<ClaimCategory>>>;\n};\n\nexport type ClaimCategory = {\n readonly __typename?: 'ClaimCategory';\n /** The claim category actions. */\n readonly actions?: Maybe<ClaimActions>;\n readonly categoryId: ClaimCategoryType;\n /** The claim category causes. */\n readonly causes?: Maybe<ClaimCategoryCauses>;\n readonly description?: Maybe<Scalars['String']['output']>;\n /** The claim category scenarios. */\n readonly scenarios?: Maybe<ClaimScenarios>;\n /** The claim sub-categories. */\n readonly subCategories?: Maybe<ClaimCategories>;\n};\n\n\nexport type ClaimCategoryScenariosArgs = {\n actionId: ClaimActionType;\n causeId: ClaimCauseType;\n};\n\nexport type ClaimCategoryCause = {\n readonly __typename?: 'ClaimCategoryCause';\n readonly categoryId: ClaimCategoryType;\n readonly causeId: ClaimCauseType;\n readonly description?: Maybe<Scalars['String']['output']>;\n /** The claim causes. */\n readonly reasons?: Maybe<ClaimReasons>;\n};\n\nexport type ClaimCategoryCauses = {\n readonly __typename?: 'ClaimCategoryCauses';\n readonly collection?: Maybe<ReadonlyArray<Maybe<ClaimCategoryCause>>>;\n};\n\nexport enum ClaimCategoryType {\n DistributionIssue = 'DistributionIssue',\n Exchange = 'Exchange',\n InvoiceIssue = 'InvoiceIssue',\n Missing = 'Missing',\n ProductJustMissing = 'ProductJustMissing',\n Return = 'Return',\n ReturnExchangeMissing = 'ReturnExchangeMissing',\n Root = 'Root',\n WrongProductDelivered = 'WrongProductDelivered'\n}\n\nexport enum ClaimCauseType {\n AdverseReaction = 'AdverseReaction',\n CancelOrder = 'CancelOrder',\n DamagedOrDefectedProduct = 'DamagedOrDefectedProduct',\n ExtraProductReceivedMissingOnTheInvoice = 'ExtraProductReceivedMissingOnTheInvoice',\n ExtraProductReceivedWrongQuantity = 'ExtraProductReceivedWrongQuantity',\n InvoiceCampaignProductMissing = 'InvoiceCampaignProductMissing',\n InvoiceWrongPriceOrFee = 'InvoiceWrongPriceOrFee',\n MissingProduct = 'MissingProduct',\n ParcelDamaged = 'ParcelDamaged',\n ParcelNotDelivered = 'ParcelNotDelivered',\n ParcelRefused = 'ParcelRefused',\n RefundReturnCost = 'RefundReturnCost',\n SupplementaryProduct = 'SupplementaryProduct',\n UncollectedParcel = 'UncollectedParcel',\n UnwantedProduct = 'UnwantedProduct',\n WrongPriceFix = 'WrongPriceFix',\n WrongProductDelivered = 'WrongProductDelivered'\n}\n\nexport enum ClaimProductItemCategory {\n AddOns = 'AddOns',\n Cosmetics = 'Cosmetics',\n DemoProduct = 'DemoProduct',\n Fee = 'Fee',\n Jewellery = 'Jewellery',\n NonFinancial = 'NonFinancial',\n None = 'None',\n Other = 'Other',\n OtherSample = 'OtherSample',\n Packaging = 'Packaging',\n PrintingMaterial = 'PrintingMaterial',\n RecruitmentGifts = 'RecruitmentGifts',\n Training = 'Training',\n Unknown = 'Unknown',\n Wellness = 'Wellness'\n}\n\nexport type ClaimReason = {\n readonly __typename?: 'ClaimReason';\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly reasonId: ClaimReasonType;\n};\n\nexport enum ClaimReasonType {\n BatchNumberOrExpiryDateMissingNotReadable = 'BatchNumberOrExpiryDateMissingNotReadable',\n ColorVariation = 'ColorVariation',\n ConsistencyColorOrScentIssue = 'ConsistencyColorOrScentIssue',\n ConsistencyOrTextureVariation = 'ConsistencyOrTextureVariation',\n ContaminatedByForeignObject = 'ContaminatedByForeignObject',\n ContentDamagedByLeakageFromAnotherProduct = 'ContentDamagedByLeakageFromAnotherProduct',\n DamagedByAnotherProduct = 'DamagedByAnotherProduct',\n DamagedContainerJarTubeBottlePouch = 'DamagedContainerJarTubeBottlePouch',\n DamagedOrDeformed = 'DamagedOrDeformed',\n DamagedOrDeformed_22 = 'DamagedOrDeformed_22',\n DamagedPackagingExternalProductBoxTamperProofPolybagFoil = 'DamagedPackagingExternalProductBoxTamperProofPolybagFoil',\n DescriptionFoundInCatalogue = 'DescriptionFoundInCatalogue',\n DescriptionFoundInOtherCommunication = 'DescriptionFoundInOtherCommunication',\n DescriptionFoundOnline = 'DescriptionFoundOnline',\n DidntMatchTheProductDescription = 'DidntMatchTheProductDescription',\n DidntMeetExpectations = 'DidntMeetExpectations',\n DifferentProductThanStatedOnPackOrLabel = 'DifferentProductThanStatedOnPackOrLabel',\n ForeignMatter = 'ForeignMatter',\n Leakage = 'Leakage',\n Malfunction = 'Malfunction',\n MechanismProblems = 'MechanismProblems',\n MissingLabelOrLeaflet = 'MissingLabelOrLeaflet',\n MissingPart = 'MissingPart',\n MissingPartsOrUnderfilled = 'MissingPartsOrUnderfilled',\n NoReasonJustChangedMyMind = 'NoReasonJustChangedMyMind',\n NotUsedProduct = 'NotUsedProduct',\n NotUsedProductNoReason = 'NotUsedProductNoReason',\n NotUsedProductNotMeetExpectations = 'NotUsedProductNotMeetExpectations',\n NotWorkingAtAll = 'NotWorkingAtAll',\n PackagingDamagedByLeakageFromAnotherProduct = 'PackagingDamagedByLeakageFromAnotherProduct',\n PackagingQualityIssue = 'PackagingQualityIssue',\n ParcelDelayed = 'ParcelDelayed',\n ParcelIsLost = 'ParcelIsLost',\n PoorLabelling = 'PoorLabelling',\n ProductContentQualityIssue = 'ProductContentQualityIssue',\n ProductIsLeaking = 'ProductIsLeaking',\n SmellChangedOrUnpleasant = 'SmellChangedOrUnpleasant',\n TasteChangedOrUnpleasant = 'TasteChangedOrUnpleasant',\n UsedProduct = 'UsedProduct',\n UsedProductNoReason = 'UsedProductNoReason',\n UsedProductNotMeetExpectations = 'UsedProductNotMeetExpectations',\n WorkingPoorly = 'WorkingPoorly',\n WrongAddress = 'WrongAddress',\n WrongProductOrdered = 'WrongProductOrdered',\n WrongQuantity = 'WrongQuantity'\n}\n\nexport type ClaimReasons = {\n readonly __typename?: 'ClaimReasons';\n readonly collection?: Maybe<ReadonlyArray<Maybe<ClaimReason>>>;\n};\n\nexport type ClaimScenario = {\n readonly __typename?: 'ClaimScenario';\n readonly allowedExchangeProducts: AllowedClaimExchangeProducts;\n readonly batchIdProductCategory: ClaimProductItemCategory;\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly enabledForProductCategory: ClaimProductItemCategory;\n readonly isFileUploadAllowed: Scalars['Boolean']['output'];\n readonly scenarioId: Scalars['Int']['output'];\n};\n\nexport type ClaimScenarios = {\n readonly __typename?: 'ClaimScenarios';\n readonly collection?: Maybe<ReadonlyArray<Maybe<ClaimScenario>>>;\n};\n\nexport enum ClaimType {\n DistributionIssue = 'DistributionIssue',\n InvoiceIssue = 'InvoiceIssue',\n ReturnExchangeOrMissingProduct = 'ReturnExchangeOrMissingProduct'\n}\n\n/** Claiming query root */\nexport type Claiming = {\n readonly __typename?: 'Claiming';\n /** The claim categories. */\n readonly claimCategories?: Maybe<ClaimCategories>;\n};\n\n\n/** Claiming query root */\nexport type ClaimingClaimCategoriesArgs = {\n claimType: ClaimType;\n};\n\n/** Color type */\nexport enum ColorType {\n Brown = 'Brown',\n Green = 'Green',\n White = 'White'\n}\n\nexport type CommissionSheetDocument = {\n readonly __typename?: 'CommissionSheetDocument';\n /** Document id */\n readonly documentId?: Maybe<Scalars['String']['output']>;\n};\n\n/** The concept resolver. */\nexport type Concept = {\n readonly __typename?: 'Concept';\n /** About concept */\n readonly about?: Maybe<Scalars['String']['output']>;\n /** Localized ingredients text */\n readonly activeIngredients?: Maybe<Scalars['String']['output']>;\n /** The get concept availability. */\n readonly availability?: Maybe<ConceptAvailability>;\n /** Collection of localized benefits texts */\n readonly benefits?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** The get brand. */\n readonly brand?: Maybe<Brand>;\n /** The get concept categories. */\n readonly categories?: Maybe<ReadonlyArray<Maybe<Category>>>;\n /** Code that identifies the concept and the first product of the concept */\n readonly conceptCode: Scalars['ID']['output'];\n /** Localized description of main product (concept) */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Flavour of market concept data */\n readonly flavour?: Maybe<Scalars['String']['output']>;\n /** The get formatted price. */\n readonly formattedPrice?: Maybe<ConceptFormattedPrice>;\n /** Collection of product codes of the given concept */\n readonly hashCode?: Maybe<Scalars['Int']['output']>;\n /** Localized how to use text */\n readonly howToUse?: Maybe<Scalars['String']['output']>;\n /** Collection of how to use sections data (Novage+). */\n readonly howToUseSections?: Maybe<ReadonlyArray<Maybe<ConceptHowToUseSection>>>;\n /** Image url. Taken from the first (random) product. */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Localized info text */\n readonly info?: Maybe<Scalars['String']['output']>;\n /** Comma separated list of ingredients */\n readonly ingredients?: Maybe<Scalars['String']['output']>;\n /** Flag indicating whether the concept is discontinued. True - all the products from the concept are discontinued. False - at least one of the product from the concept is not discontinued */\n readonly isDiscontinued?: Maybe<Scalars['Boolean']['output']>;\n /** Flag indicating whether the concept contains more than one product */\n readonly isMultiProduct?: Maybe<Scalars['Boolean']['output']>;\n /** Flag indicating whether the concept is a outlet. True - outlet concept. False - concept is not a outlet. */\n readonly isOutlet?: Maybe<Scalars['Boolean']['output']>;\n /** Flag indicating whether the concept is a sample. True - sample concept. False - concept is not a sample */\n readonly isSample?: Maybe<Scalars['Boolean']['output']>;\n /** The get labels. */\n readonly labels?: Maybe<ReadonlyArray<Maybe<ProductLabel>>>;\n /** Localized name of main product (concept) */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Global product name */\n readonly originalName?: Maybe<Scalars['String']['output']>;\n /** The get concept permission. */\n readonly permission?: Maybe<ConceptPermission>;\n /** The get price. */\n readonly price?: Maybe<ConceptPrice>;\n /** The get primary product. */\n readonly primaryProduct?: Maybe<Product>;\n readonly productCode?: Maybe<Scalars['String']['output']>;\n readonly productCodes?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** @deprecated Use Product Name instead. */\n readonly productName?: Maybe<Scalars['String']['output']>;\n /** Localized product story. */\n readonly productStory?: Maybe<Scalars['String']['output']>;\n /** The get products. */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** Average Rating */\n readonly ratingAverage?: Maybe<Scalars['Float']['output']>;\n /** Count of Ratings */\n readonly ratingCount?: Maybe<Scalars['Int']['output']>;\n /** Count of Ratings with review text */\n readonly ratingsWithReviewCount?: Maybe<Scalars['Int']['output']>;\n /** Flag indicating if concept should be shown on site */\n readonly showOnSite?: Maybe<Scalars['Boolean']['output']>;\n /** The get sub brand. */\n readonly subBrand?: Maybe<Brand>;\n /** Thumbnail image url */\n readonly thumbnailImageUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ConceptAvailability = {\n readonly __typename?: 'ConceptAvailability';\n /** When item is out of stock, and can be backordered */\n readonly isBackorder?: Maybe<Scalars['Boolean']['output']>;\n /** Is bundle */\n readonly isBundle?: Maybe<Scalars['Boolean']['output']>;\n /** Introduction date of product is close */\n readonly isComingSoon?: Maybe<Scalars['Boolean']['output']>;\n /** Check if it is deleted */\n readonly isDeleted?: Maybe<Scalars['Boolean']['output']>;\n /** Specified by number of days (sitecore) before disco date */\n readonly isLastChance?: Maybe<Scalars['Boolean']['output']>;\n /** Current ATP is lower than 24hr sales history */\n readonly isLowStock?: Maybe<Scalars['Boolean']['output']>;\n /** Number of days (sitecore) after intro date */\n readonly isNew?: Maybe<Scalars['Boolean']['output']>;\n /** Concept is discontinued */\n readonly isNoLongerForSale?: Maybe<Scalars['Boolean']['output']>;\n /** Product cant be sold, price = 0, or is deleted */\n readonly isNotSoldOnline?: Maybe<Scalars['Boolean']['output']>;\n /** Is not standard item, catalogue offer for specific period */\n readonly isOffer?: Maybe<Scalars['Boolean']['output']>;\n /** Out of stock */\n readonly isOutOfStock?: Maybe<Scalars['Boolean']['output']>;\n /** Is sales limited */\n readonly isSalesLimited?: Maybe<Scalars['Boolean']['output']>;\n readonly isSoldOut?: Maybe<Scalars['Boolean']['output']>;\n /** Product is Super Deal */\n readonly isSuperDeal?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type ConceptFormattedPrice = {\n readonly __typename?: 'ConceptFormattedPrice';\n /** Timestamp of when price was calculated */\n readonly dateCalculated?: Maybe<Scalars['DateTime']['output']>;\n /** Object containing concept's prices */\n readonly price?: Maybe<FormattedPrice>;\n};\n\nexport type ConceptHowToUseSection = {\n readonly __typename?: 'ConceptHowToUseSection';\n /** Bullet List */\n readonly bulletList?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Icon URL */\n readonly iconUrl?: Maybe<Scalars['String']['output']>;\n /** Image URL */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ConceptPermission = {\n readonly __typename?: 'ConceptPermission';\n /** Concept can be displayed on web site or any other mobile application. Product display might not be available if the flag is set to false. */\n readonly canDisplay?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type ConceptPrice = {\n readonly __typename?: 'ConceptPrice';\n /** Currency symbol, for example: \"€\", \"$\" */\n readonly currency?: Maybe<Scalars['String']['output']>;\n /** Date calculated */\n readonly dateCalculated?: Maybe<Scalars['DateTime']['output']>;\n /** Prices */\n readonly price?: Maybe<Price>;\n};\n\nexport type ConsultantSetting = {\n readonly __typename?: 'ConsultantSetting';\n /** Format of setting */\n readonly format?: Maybe<SettingsFormatType>;\n /** Content of setting */\n readonly setting?: Maybe<Scalars['String']['output']>;\n /** Timestamp */\n readonly timestamp?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type Coordinates = {\n readonly __typename?: 'Coordinates';\n /** North–south position of a point on the Earth's surface */\n readonly latitude?: Maybe<Scalars['Float']['output']>;\n /** East–west position of a point on the Earth's surface */\n readonly longitude?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type CountryMetadataItem = {\n readonly __typename?: 'CountryMetadataItem';\n /** Available options */\n readonly availableOptions?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Order of property in which should be preferably displayed (e.g. field on edit form) */\n readonly displayOrder?: Maybe<Scalars['Int']['output']>;\n /** Is item available */\n readonly isAvailable?: Maybe<Scalars['Boolean']['output']>;\n /** Is item editable */\n readonly isEditable?: Maybe<Scalars['Boolean']['output']>;\n /** Item validation */\n readonly validation?: Maybe<AddressMetadataValidation>;\n};\n\nexport enum CurrentOrderStatus {\n Blocked = 'Blocked',\n CancelRequested = 'CancelRequested',\n Canceled = 'Canceled',\n CreditNote = 'CreditNote',\n Paid = 'Paid',\n PaidPartially = 'PaidPartially',\n Pending = 'Pending',\n Unknown = 'Unknown',\n Unpaid = 'Unpaid',\n Waiting = 'Waiting',\n WaitingForApproval = 'WaitingForApproval'\n}\n\nexport type Customer = {\n readonly __typename?: 'Customer';\n /** The get customer address metadata. */\n readonly addressMetadata?: Maybe<AddressMetadata>;\n /** The get customer addresses. */\n readonly addresses?: Maybe<ReadonlyArray<Maybe<Address>>>;\n /** Alias */\n readonly alias?: Maybe<Scalars['String']['output']>;\n /** The get customer approval. */\n readonly approval?: Maybe<Approval>;\n /** The get customer bank accounts. */\n readonly bankAccounts?: Maybe<ReadonlyArray<Maybe<BankAccount>>>;\n /** The get customer beauty store. */\n readonly beautyStore?: Maybe<PersonalBeautyStore>;\n readonly birthDate?: Maybe<Scalars['Date']['output']>;\n /** Career title */\n readonly careerTitle?: Maybe<Scalars['String']['output']>;\n /** Consultant number */\n readonly consultantNumber?: Maybe<Scalars['Int']['output']>;\n /** Customer ID */\n readonly customerId: Scalars['ID']['output'];\n /** Customer type */\n readonly customerType?: Maybe<CustomerType>;\n /** The get customer direct sponsor. */\n readonly directSponsor?: Maybe<Sponsor>;\n /** Display name */\n readonly displayName?: Maybe<Scalars['String']['output']>;\n /** The get customer emails. */\n readonly emails?: Maybe<ReadonlyArray<Maybe<Email>>>;\n /** The get customer ewallet accounts. */\n readonly ewalletAccounts?: Maybe<ReadonlyArray<Maybe<EWalletAccount>>>;\n /** Get financial set. */\n readonly financialSet?: Maybe<FinancialSet>;\n /** Customers first name */\n readonly firstName?: Maybe<Scalars['String']['output']>;\n /** Gender */\n readonly gender?: Maybe<Gender>;\n /** Last name */\n readonly lastName?: Maybe<Scalars['String']['output']>;\n /** Get customer manager summit qualification */\n readonly managerSummitQualification?: Maybe<ManagerSummitQualification>;\n /** Get customer benefits. */\n readonly myBenefitsSummary?: Maybe<MyBenefitsSummary>;\n /** Get customer program plus */\n readonly myProgramPlus?: Maybe<MyProgramPlus>;\n /** Passport number */\n readonly passportNumber?: Maybe<Scalars['String']['output']>;\n /** The get customer phones. */\n readonly phones?: Maybe<ReadonlyArray<Maybe<Phone>>>;\n /** Pin */\n readonly pin?: Maybe<Scalars['String']['output']>;\n /** Preferred language */\n readonly preferredLanguage?: Maybe<Scalars['String']['output']>;\n /** Product lists */\n readonly productLists?: Maybe<ReadonlyArray<Maybe<ProductList>>>;\n /** Get recruitment info. */\n readonly recruitmentInfo?: Maybe<RecruitmentInfo>;\n /** The get customer settings. */\n readonly settings?: Maybe<ConsultantSetting>;\n /** Get subscription profile. */\n readonly subscriptionProfile?: Maybe<SubscriptionProfile>;\n /** The get customer tax classification. */\n readonly taxClassification?: Maybe<TaxClassification>;\n /** Tax code */\n readonly taxCode?: Maybe<Scalars['String']['output']>;\n /** Tax code 2 */\n readonly taxCode2?: Maybe<Scalars['String']['output']>;\n /** Customers title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Customers unique id */\n readonly uniqueId?: Maybe<Scalars['String']['output']>;\n /** Live video shows */\n readonly videoShows?: Maybe<ReadonlyArray<Maybe<VideoShow>>>;\n /** The get customer visitor segment. */\n readonly visitorSegment: VisitorSegment;\n};\n\n\nexport type CustomerMyBenefitsSummaryArgs = {\n periodId: Scalars['Int']['input'];\n};\n\n\nexport type CustomerProductListsArgs = {\n productListType: ProductListType;\n};\n\n\nexport type CustomerSettingsArgs = {\n settingId?: InputMaybe<Scalars['String']['input']>;\n settingsClient: SettingsClientType;\n};\n\n/** Enum customer category */\nexport enum CustomerCategory {\n Anonymous = 'Anonymous',\n Consultant = 'Consultant',\n Employee = 'Employee',\n EndConsumer = 'EndConsumer',\n EndCustomer = 'EndCustomer',\n Invitation = 'Invitation',\n Other = 'Other'\n}\n\nexport type CustomerType = {\n readonly __typename?: 'CustomerType';\n /** Customer category */\n readonly customerCategory?: Maybe<CustomerCategory>;\n /** Customer type id */\n readonly customerTypeId?: Maybe<Scalars['Int']['output']>;\n /** Descriptions */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Is customer vip */\n readonly isVipCustomer?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type CutOffPeriod = {\n readonly __typename?: 'CutOffPeriod';\n readonly endDate: Scalars['Date']['output'];\n readonly isQualified: Scalars['Boolean']['output'];\n readonly periodId: Scalars['Int']['output'];\n readonly startDate: Scalars['Date']['output'];\n};\n\nexport type DeliveryAddress = {\n readonly __typename?: 'DeliveryAddress';\n readonly area?: Maybe<Scalars['String']['output']>;\n readonly city?: Maybe<Scalars['String']['output']>;\n readonly country?: Maybe<Scalars['String']['output']>;\n readonly delivery?: Maybe<Scalars['String']['output']>;\n readonly district?: Maybe<Scalars['String']['output']>;\n readonly firstName?: Maybe<Scalars['String']['output']>;\n readonly id: Scalars['ID']['output'];\n readonly lastName?: Maybe<Scalars['String']['output']>;\n readonly locality?: Maybe<Scalars['String']['output']>;\n readonly province?: Maybe<Scalars['String']['output']>;\n readonly region?: Maybe<Scalars['String']['output']>;\n readonly streetAddress?: Maybe<Scalars['String']['output']>;\n readonly zipcode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeliveryChannel = {\n readonly __typename?: 'DeliveryChannel';\n /** The get delivery channel addresses. */\n readonly address?: Maybe<SharedAddress>;\n /** The get delivery channel coordinates. */\n readonly coordinates?: Maybe<Coordinates>;\n readonly deliveryChannelId: Scalars['ID']['output'];\n readonly deliveryMethod: DeliveryMethodType;\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Courier logo */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Cash-on-delivery is allowed */\n readonly isCodAllowed: Scalars['Boolean']['output'];\n /** Luxury (branded) delivery channel - special usage for SPOs */\n readonly isLuxury: Scalars['Boolean']['output'];\n /** Identification of the channel in Orisales (well known identification) */\n readonly orisalesId: Scalars['Int']['output'];\n /** Phone contact to the delivery channel */\n readonly telephoneNumber?: Maybe<Scalars['String']['output']>;\n /** Working hours description (e.g. Mo-Fr: 10:00 - 16:00) */\n readonly workingHours?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeliveryFee = {\n readonly __typename?: 'DeliveryFee';\n /** Formatted Max fee amount */\n readonly maxFeeText?: Maybe<Scalars['String']['output']>;\n /** Formatted Min fee amount */\n readonly minFeeText?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum DeliveryMethodType {\n DepartmentStore = 'DepartmentStore',\n Home = 'Home',\n Lpo = 'Lpo',\n NearestPostOffice = 'NearestPostOffice',\n NextOrder = 'NextOrder',\n ParcelLocker = 'ParcelLocker',\n PickupPoint = 'PickupPoint',\n PostOffice = 'PostOffice',\n Spo = 'Spo'\n}\n\nexport type DeliveryOption = {\n readonly __typename?: 'DeliveryOption';\n /** The get delivery address details. */\n readonly deliveryAddress?: Maybe<DeliveryAddress>;\n /** Home delivery address */\n readonly deliveryAddressId?: Maybe<Scalars['Long']['output']>;\n /** The get delivery channel details. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n readonly deliveryChannelId?: Maybe<Scalars['Long']['output']>;\n /** Owner of the delivery address (brand partner or friend) */\n readonly deliveryCustomerId?: Maybe<Scalars['Long']['output']>;\n readonly estimatedDeliveryDate?: Maybe<Scalars['DateTime']['output']>;\n /** Delivery channel can be selected */\n readonly isAllowed: Scalars['Boolean']['output'];\n /** Shipping joker can replace the fee */\n readonly isShippingJoker: Scalars['Boolean']['output'];\n /** Shipping fee before joker is applied */\n readonly originalShippingFee?: Maybe<Scalars['Decimal']['output']>;\n readonly shippingFee: Scalars['Decimal']['output'];\n};\n\nexport type DeliveryOptions = {\n readonly __typename?: 'DeliveryOptions';\n readonly collection?: Maybe<ReadonlyArray<Maybe<DeliveryOption>>>;\n readonly totalRecords: Scalars['Int']['output'];\n};\n\nexport enum DeliverySearchFilter {\n AllAddresses = 'AllAddresses',\n DepartmentStore = 'DepartmentStore',\n History = 'History',\n Lpo = 'Lpo',\n MyAddresses = 'MyAddresses',\n MyFriends = 'MyFriends',\n MyHistoryAddresses = 'MyHistoryAddresses',\n MyHistoryFriends = 'MyHistoryFriends',\n MySpo = 'MySpo',\n PickUp = 'PickUp',\n PostOffice = 'PostOffice',\n PremiumSpo = 'PremiumSpo',\n Spo = 'Spo'\n}\n\nexport type DeliverySelectionSummary = {\n readonly __typename?: 'DeliverySelectionSummary';\n /** Selected delivery address */\n readonly addressId?: Maybe<Scalars['Long']['output']>;\n /** The get selected delivery channel and addresses. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n /** Selected delivery channel */\n readonly deliveryChannelId: Scalars['Long']['output'];\n /** Customer's delivery note */\n readonly deliveryComment?: Maybe<Scalars['String']['output']>;\n readonly estimatedDeliveryDate?: Maybe<Scalars['DateTime']['output']>;\n /** Delivery channel and address is operable */\n readonly isAllowed: Scalars['Boolean']['output'];\n /** Default delivery channel (pre-selected by system) */\n readonly isDefault: Scalars['Boolean']['output'];\n /** Delivery channel from the last order */\n readonly isLastUsed: Scalars['Boolean']['output'];\n /** Shipping joker can replace the fee */\n readonly isShippingJoker: Scalars['Boolean']['output'];\n /** Shipping fee before joker is applied */\n readonly originalShippingFee?: Maybe<Scalars['Decimal']['output']>;\n /** Not available products quantity */\n readonly outOfStockQuantity: Scalars['Int']['output'];\n readonly shippingFee: Scalars['Decimal']['output'];\n};\n\nexport type DigitalPromotions = {\n readonly __typename?: 'DigitalPromotions';\n /** Best offers banners */\n readonly bestOffersBanners?: Maybe<ReadonlyArray<Maybe<BestOffersBanner>>>;\n /** Best offers products */\n readonly bestOffersProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** Campaign banners */\n readonly campaignBanners?: Maybe<ReadonlyArray<Maybe<CampaignBanner>>>;\n /** Campaign products */\n readonly campaignProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** Category banners */\n readonly categoryBanners?: Maybe<ReadonlyArray<Maybe<CategoryBanner>>>;\n /** Category products */\n readonly categoryProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n readonly channel: ChannelType;\n /** Hero banners */\n readonly heroBanners?: Maybe<ReadonlyArray<Maybe<HeroBanner>>>;\n /** Hero products */\n readonly heroProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n readonly validityDate?: Maybe<Scalars['DateTime']['output']>;\n /** Whats new banners */\n readonly whatsNewBanners?: Maybe<ReadonlyArray<Maybe<WhatsNewBanner>>>;\n /** WhatsNew products */\n readonly whatsNewProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n};\n\n/** Discount applied to reduce price of the order */\nexport type Discount = {\n readonly __typename?: 'Discount';\n /** Applied discount amount */\n readonly amount: Scalars['Decimal']['output'];\n /** Applied discount % (10.0 in case 10%) */\n readonly percent: Scalars['Decimal']['output'];\n readonly type: DiscountType;\n};\n\nexport enum DiscountType {\n Direct = 'Direct',\n Employee = 'Employee',\n Extra = 'Extra',\n GiftCard = 'GiftCard',\n Immediate = 'Immediate',\n Invitation = 'Invitation',\n Merchandising = 'Merchandising',\n PromoCode = 'PromoCode',\n Staggered = 'Staggered',\n Voucher = 'Voucher',\n Welcome = 'Welcome'\n}\n\nexport type Discounts = {\n readonly __typename?: 'Discounts';\n readonly collection?: Maybe<ReadonlyArray<Maybe<Discount>>>;\n};\n\nexport type DocumentInfo = {\n readonly __typename?: 'DocumentInfo';\n /** Document id */\n readonly documentId?: Maybe<Scalars['Int']['output']>;\n /** Document file name */\n readonly fileName?: Maybe<Scalars['String']['output']>;\n /** Document file size. */\n readonly fileSize?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type EWalletAccount = {\n readonly __typename?: 'EWalletAccount';\n /** eWallet account name */\n readonly accountName?: Maybe<Scalars['String']['output']>;\n /** eWallet account ID */\n readonly eWalletAccountId: Scalars['ID']['output'];\n /** eWallet account owner */\n readonly owner?: Maybe<Scalars['String']['output']>;\n /** eWallet type */\n readonly type?: Maybe<EWalletType>;\n};\n\n/** eWallet type */\nexport enum EWalletType {\n Revolut = 'Revolut'\n}\n\n/** Editorial banner */\nexport type EditorialBanner = {\n readonly __typename?: 'EditorialBanner';\n /** Banner Id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Banner layout */\n readonly layout: EditorialBannerLayoutEnum;\n /** Banner modules */\n readonly modules?: Maybe<ReadonlyArray<Maybe<EditorialBannerModule>>>;\n};\n\n/** Editorial banner color */\nexport type EditorialBannerColor = {\n readonly __typename?: 'EditorialBannerColor';\n /** Color type */\n readonly type: ColorType;\n};\n\n/** Editorial banner content */\nexport type EditorialBannerContent = {\n readonly __typename?: 'EditorialBannerContent';\n /** Caption */\n readonly caption?: Maybe<Scalars['String']['output']>;\n /** Horizontal content alignment. */\n readonly horizontalAlignment: HorizontalContentAlignment;\n /** Make content collapsable and show ReadMore option */\n readonly showReadMoreOption: Scalars['Boolean']['output'];\n /** Banner text collection */\n readonly textCollection?: Maybe<ReadonlyArray<Maybe<EditorialBannerText>>>;\n /** Banner title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /**\n * Banner title color\n * @deprecated Use TitleStorybookColor instead\n */\n readonly titleColor: EditorialBannerTitleColorEnum;\n /** Banner title size */\n readonly titleSize: EditorialBannerTitleSizeEnum;\n /** Banner title color in storybook format. */\n readonly titleStorybookColor: StorybookColor;\n /** Content vertical alignment */\n readonly verticalAlignment: VerticalContentAlignment;\n};\n\n/** Banner background image */\nexport type EditorialBannerImage = {\n readonly __typename?: 'EditorialBannerImage';\n /** Image url */\n readonly url?: Maybe<Scalars['String']['output']>;\n /** Image for mobile devices */\n readonly urlMobile?: Maybe<Scalars['String']['output']>;\n};\n\n/** Editorial banner layout enumeration */\nexport enum EditorialBannerLayoutEnum {\n /** 50/50 banner */\n FiftyBanner = 'FiftyBanner',\n /** Banner with four media */\n FourMedia = 'FourMedia',\n /** Banner with headline */\n Headline = 'Headline',\n /** Banner with one media overlayed with text at the bottom */\n OneMediaCenterBottomText = 'OneMediaCenterBottomText',\n /** Banner with one media overlayed with text on the left */\n OneMediaOverlayLeftText = 'OneMediaOverlayLeftText',\n /** Banner with one media overlayed with text on the right */\n OneMediaOverlayRightText = 'OneMediaOverlayRightText',\n /** Banner with one media part and paragraph text */\n OneMediaParagraphText = 'OneMediaParagraphText',\n /** PLP banner with single media */\n OneMediaProductPromo = 'OneMediaProductPromo',\n /** Banner with paragraph text */\n ParagraphText = 'ParagraphText',\n /** Banner with quote */\n Quote = 'Quote',\n /** Banner with three media and right bottom text */\n ThreeMediaRightBottomText = 'ThreeMediaRightBottomText',\n /** Banner with two media parts */\n TwoMedia = 'TwoMedia',\n /** Banner with two media overlayed with text on the top */\n TwoMediaRightTopText = 'TwoMediaRightTopText',\n /** Banner with vertical video */\n VerticalVideo = 'VerticalVideo',\n /** Banner with video */\n Video = 'Video'\n}\n\n/** Banner modules */\nexport type EditorialBannerModule = {\n readonly __typename?: 'EditorialBannerModule';\n /**\n * Banner background color\n * @deprecated Use BackgroundStorybookColor instead\n */\n readonly backgroundColor?: Maybe<EditorialBannerColor>;\n /** Banner background image */\n readonly backgroundImage?: Maybe<EditorialBannerImage>;\n /** Banner background color in storybook format */\n readonly backgroundStorybookColor: StorybookColor;\n /** Banner background type */\n readonly backgroundType: BackgroundType;\n /** Banner background video */\n readonly backgroundVideo?: Maybe<Video>;\n /** Banner content */\n readonly content?: Maybe<EditorialBannerContent>;\n /** Banner link */\n readonly link?: Maybe<Link>;\n};\n\n/** Text wrapper */\nexport type EditorialBannerText = {\n readonly __typename?: 'EditorialBannerText';\n /** Text content */\n readonly text?: Maybe<Scalars['String']['output']>;\n /** Links represented in text by placeholders (\"{0}\", \"{1}\", ...). */\n readonly textLinks?: Maybe<ReadonlyArray<Maybe<Link>>>;\n};\n\n/** Editorial banner title color enumeration */\nexport enum EditorialBannerTitleColorEnum {\n /** The black */\n Black = 'Black',\n /** The dark grey */\n DarkGrey = 'DarkGrey',\n /** The white */\n White = 'White'\n}\n\n/** Editorial banner title size enumeration */\nexport enum EditorialBannerTitleSizeEnum {\n H5 = 'H5',\n H6 = 'H6'\n}\n\nexport type EditorialBenefit = {\n readonly __typename?: 'EditorialBenefit';\n /** Benefit caption / title */\n readonly caption?: Maybe<Scalars['String']['output']>;\n /** Content to be displayed */\n readonly content?: Maybe<ReadonlyArray<Maybe<EditorialBannerText>>>;\n /** Icon to be displayed */\n readonly icon: EditorialBenefitIcon;\n};\n\nexport enum EditorialBenefitIcon {\n BubbleHeart = 'BubbleHeart',\n Cashback = 'Cashback',\n Check = 'Check',\n Conference = 'Conference',\n DiscountTag = 'DiscountTag',\n Dollar = 'Dollar',\n Gift = 'Gift',\n Send = 'Send',\n Share = 'Share',\n Truck = 'Truck',\n Wallet = 'Wallet',\n WelcomeKit = 'WelcomeKit'\n}\n\nexport type EditorialBenefits = {\n readonly __typename?: 'EditorialBenefits';\n /** Collection of benefit items */\n readonly benefits?: Maybe<ReadonlyArray<Maybe<EditorialBenefit>>>;\n /** Content type */\n readonly editorialContentType: EditorialContentType;\n /** Sitecore item id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Benefit title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialCarousel = {\n readonly __typename?: 'EditorialCarousel';\n /** Collection of editorial pages shown in carousel */\n readonly editorials?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Carousel ID */\n readonly id: Scalars['ID']['output'];\n /** Products */\n readonly product?: Maybe<Product>;\n};\n\n/** Editorial channel type */\nexport enum EditorialChannelType {\n Mobile = 'Mobile',\n Web = 'Web'\n}\n\nexport enum EditorialContentType {\n Banner = 'Banner',\n Benefits = 'Benefits',\n EditorialBannerCarousel = 'EditorialBannerCarousel',\n EditorialCarousel = 'EditorialCarousel',\n FiftyBanner = 'FiftyBanner',\n FrequentlyAskedQuestions = 'FrequentlyAskedQuestions',\n Header = 'Header',\n LinkList = 'LinkList',\n MixedPlpContent = 'MixedPlpContent',\n Olapic = 'Olapic',\n ProductBoxCarousel = 'ProductBoxCarousel',\n TestimonialCarousel = 'TestimonialCarousel'\n}\n\nexport type EditorialFaqItem = {\n readonly __typename?: 'EditorialFaqItem';\n /** The content of the FAQ item. */\n readonly content: ReadonlyArray<EditorialBannerText>;\n /** The title of the FAQ item. */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialFiftyBanner = {\n readonly __typename?: 'EditorialFiftyBanner';\n /** Image details */\n readonly backgroundImage?: Maybe<EditorialBannerImage>;\n /** background color */\n readonly backgroundType: BackgroundType;\n /** Video details */\n readonly backgroundVideo?: Maybe<Video>;\n /** Content position left/right */\n readonly contentAlignment: HorizontalContentAlignment;\n /** Content type */\n readonly editorialContentType: EditorialContentType;\n /** Item id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Button link */\n readonly link?: Maybe<Link>;\n /** Collection of Steps */\n readonly steps?: Maybe<ReadonlyArray<Maybe<EditorialFiftyBannerStep>>>;\n /** Storybook color */\n readonly storybookColor: StorybookColor;\n /** Fifty banner title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialFiftyBannerStep = {\n readonly __typename?: 'EditorialFiftyBannerStep';\n /** The caption of banner step. */\n readonly caption?: Maybe<Scalars['String']['output']>;\n /** The content of the banner step. */\n readonly content?: Maybe<ReadonlyArray<Maybe<EditorialBannerText>>>;\n};\n\nexport type EditorialFrequentlyAskedQuestions = {\n readonly __typename?: 'EditorialFrequentlyAskedQuestions';\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Question collection */\n readonly questions: ReadonlyArray<EditorialFaqItem>;\n /** FAQ main title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n/** Editorial header */\nexport type EditorialHeader = {\n readonly __typename?: 'EditorialHeader';\n /** Name of author */\n readonly authorName?: Maybe<Scalars['String']['output']>;\n /** Background color */\n readonly backgroundStorybookColor: StorybookColor;\n /** Whether the headline is longer than usual */\n readonly extraLongHeadline?: Maybe<Scalars['Boolean']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Headline text color */\n readonly headlineStorybookColor: StorybookColor;\n /** Header Id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Image url */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Indicating if sharing is enabled */\n readonly isSharingEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Links */\n readonly links?: Maybe<ReadonlyArray<Maybe<Link>>>;\n /** Name of photographer */\n readonly photographerName?: Maybe<Scalars['String']['output']>;\n /** Published date */\n readonly publishedDate?: Maybe<Scalars['DateTime']['output']>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialLandingPage = {\n readonly __typename?: 'EditorialLandingPage';\n /** Background color */\n readonly backgroundStorybookColor?: Maybe<StorybookColor>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Editorial collection */\n readonly editorialItems?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Headline text color */\n readonly headlineStorybookColor?: Maybe<StorybookColor>;\n /** Image Url */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Page Id */\n readonly landingPageId: Scalars['ID']['output'];\n /** Link to the landing page */\n readonly link?: Maybe<Link>;\n /** Theme collection */\n readonly themeItems?: Maybe<ReadonlyArray<Maybe<EditorialLandingPage>>>;\n /** Theme Tag */\n readonly themeTag?: Maybe<Scalars['String']['output']>;\n /** Thumbnail Url */\n readonly thumbnailUrl?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type EditorialLandingPageEditorialItemsArgs = {\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\nexport type EditorialLinkList = {\n readonly __typename?: 'EditorialLinkList';\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Collection of link items */\n readonly linkItems: ReadonlyArray<EditorialLinkListItem>;\n /** Title of the link list */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialLinkListItem = {\n readonly __typename?: 'EditorialLinkListItem';\n /** Whether the link item is downloadable */\n readonly downloadable: Scalars['Boolean']['output'];\n /** Link of the link item */\n readonly link?: Maybe<Link>;\n /** Title of the link item */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n/** Editorial Olapic */\nexport type EditorialOlapic = {\n readonly __typename?: 'EditorialOlapic';\n /** Category Id */\n readonly categoryId?: Maybe<Scalars['String']['output']>;\n /** Olapic Id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** The get product. */\n readonly product?: Maybe<Product>;\n /** Olapic type */\n readonly type?: Maybe<OlapicTypeEnum>;\n};\n\nexport type EditorialPage = {\n readonly __typename?: 'EditorialPage';\n readonly contentItems: ReadonlyArray<EditorialPageContent>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Parent landing page */\n readonly landingPage?: Maybe<EditorialLandingPage>;\n /** Link to the editorial page */\n readonly link: Link;\n /** Page Id */\n readonly pageId: Scalars['ID']['output'];\n /** Theme tag */\n readonly themeTag?: Maybe<Scalars['String']['output']>;\n /** Thumbnail URL */\n readonly thumbnailUrl?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EditorialPageContent = EditorialBanner | EditorialBenefits | EditorialCarousel | EditorialFiftyBanner | EditorialFrequentlyAskedQuestions | EditorialHeader | EditorialLinkList | EditorialOlapic | EditorialPage | EditorialPlpRows | EditorialProductBoxCarousel | EditorialTestimonialCarousel;\n\n/** Editorial PLP Promo Banner */\nexport type EditorialPlpPromoBanner = {\n readonly __typename?: 'EditorialPlpPromoBanner';\n /** Banner content */\n readonly banner?: Maybe<EditorialBanner>;\n /** Banner size */\n readonly size: EditorialPlpPromoBannerSize;\n};\n\n/** Editorial PLP banner size */\nexport enum EditorialPlpPromoBannerSize {\n Size1 = 'Size1',\n Size2 = 'Size2'\n}\n\n/** Rows composing product listing page */\nexport type EditorialPlpRows = {\n readonly __typename?: 'EditorialPlpRows';\n readonly content: EditorialPlpRowsContent;\n readonly editorialContentType: EditorialContentType;\n /** Product listing pade id */\n readonly id: Scalars['String']['output'];\n};\n\n\n/** Rows composing product listing page */\nexport type EditorialPlpRowsContentArgs = {\n facetFiltering?: InputMaybe<ReadonlyArray<EditorialPlpRowsFacetFilterInput>>;\n orderBy?: PlpOrderBy;\n skip?: Scalars['Int']['input'];\n top: Scalars['Int']['input'];\n};\n\nexport type EditorialPlpRowsContent = {\n readonly __typename?: 'EditorialPlpRowsContent';\n /** Facet definitions */\n readonly facets: ReadonlyArray<PlpFacet>;\n /** Definition of available product ordering options */\n readonly orderByOptions: ReadonlyArray<PlpOrderingDefinition>;\n /** Page content organized into rows */\n readonly rows: ReadonlyArray<PlpRow>;\n /** Total count of banners */\n readonly totalBannersCount: Scalars['Int']['output'];\n /** Total count of products */\n readonly totalProductsCount: Scalars['Int']['output'];\n};\n\nexport type EditorialPlpRowsFacetFilterInput = {\n readonly keys: ReadonlyArray<Scalars['String']['input']>;\n readonly name: Scalars['String']['input'];\n};\n\n/** Editorial Product Box Carousel */\nexport type EditorialProductBoxCarousel = {\n readonly __typename?: 'EditorialProductBoxCarousel';\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n readonly id?: Maybe<Scalars['ID']['output']>;\n /** Popular product categories */\n readonly popularProductCategories?: Maybe<ReadonlyArray<Maybe<PopularProductCategory>>>;\n /** The get products. */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n};\n\n/** Single testimonial displayed on editorial */\nexport type EditorialTestimonial = {\n readonly __typename?: 'EditorialTestimonial';\n /** Testimonial author */\n readonly author?: Maybe<Scalars['String']['output']>;\n /** Testimonial image */\n readonly image?: Maybe<EditorialBannerImage>;\n /** Show star rating on testimonial */\n readonly showStarRating: Scalars['Boolean']['output'];\n /** Testimonial quote lines */\n readonly textCollection?: Maybe<ReadonlyArray<Maybe<EditorialBannerText>>>;\n /** Testimonial title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n/** Carousel with testimonials to be displayed on editorial */\nexport type EditorialTestimonialCarousel = {\n readonly __typename?: 'EditorialTestimonialCarousel';\n /** Testimonials collection */\n readonly collection: ReadonlyArray<EditorialTestimonial>;\n /** Carousel Id */\n readonly id?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Email = {\n readonly __typename?: 'Email';\n /** Email address */\n readonly emailAddress?: Maybe<Scalars['String']['output']>;\n /** Is address pending */\n readonly isPending?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type ErrorDialogNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'ErrorDialogNewsletterSubsciptionConfiguration';\n /** Button */\n readonly buttonText?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ExternalCampaign = {\n readonly __typename?: 'ExternalCampaign';\n /** Campaign */\n readonly campaignId?: Maybe<Scalars['String']['output']>;\n /** Campaign Url */\n readonly campaignUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type FeedbackBenefitBanner = {\n readonly __typename?: 'FeedbackBenefitBanner';\n /** Banner message */\n readonly message?: Maybe<Scalars['String']['output']>;\n /** Link to read more information on benefit */\n readonly readMoreLink?: Maybe<Link>;\n /** Link to register new customer */\n readonly registerLink?: Maybe<Link>;\n /** Link to sign in existing customer */\n readonly signInLink?: Maybe<Link>;\n /** Banner title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Welcome message */\n readonly welcomeMessage?: Maybe<Scalars['String']['output']>;\n};\n\n/** Feedback Benefit Banner type */\nexport enum FeedbackBenefitBannerType {\n Cashback = 'Cashback',\n ShareAndEarn = 'ShareAndEarn'\n}\n\nexport type FinancialSet = {\n readonly __typename?: 'FinancialSet';\n /**\n * Decimal places, how to round BVs\n * 0: round to integer;\n * > 0: round to n decimal places;\n * < 0: round to 10, 100, 1000 etc.\n */\n readonly bvRounding: Scalars['Int']['output'];\n /** Currency code (eg. EUR, CZK) */\n readonly currencyCode?: Maybe<Scalars['String']['output']>;\n /** Name of the currency (eg. Euro) */\n readonly currencyName?: Maybe<Scalars['String']['output']>;\n /** Financial Set ID */\n readonly financialSetId: Scalars['Int']['output'];\n /**\n * Decimal places, how to round price\n * 0: round to integer;\n * > 0: round to n decimal places;\n * < 0: round to 10, 100, 1000 etc.\n */\n readonly priceRounding: Scalars['Int']['output'];\n};\n\nexport type Footer = {\n readonly __typename?: 'Footer';\n /** Do not show language switcher pop-up */\n readonly disableLanguageSwitcherPopUp: Scalars['Boolean']['output'];\n /** Footer Language Configuration */\n readonly languageConfiguration?: Maybe<LanguageConfiguration>;\n};\n\nexport type FooterNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'FooterNewsletterSubsciptionConfiguration';\n /** Enabled */\n readonly enabled?: Maybe<Scalars['Boolean']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type FormattedPrice = {\n readonly __typename?: 'FormattedPrice';\n /** Basic cashback amount */\n readonly basicCashback?: Maybe<Scalars['String']['output']>;\n /** Consultant price from basic catalogue */\n readonly basicCatalogueConsultantPrice?: Maybe<Scalars['String']['output']>;\n /** Price from basic catalogue */\n readonly basicCataloguePrice?: Maybe<Scalars['String']['output']>;\n /** Current consultant price */\n readonly currentConsultantPrice?: Maybe<Scalars['String']['output']>;\n /** Current price */\n readonly currentPrice?: Maybe<Scalars['String']['output']>;\n /** Extra cashback amount */\n readonly extraCashback?: Maybe<Scalars['String']['output']>;\n /** Previous minimum price in last 30 days */\n readonly previousMinOfferPrice?: Maybe<Scalars['String']['output']>;\n /** Price after immediate discount */\n readonly priceAfterImmediateDiscount?: Maybe<Scalars['String']['output']>;\n /** Approximate Share & Earn bonus amount */\n readonly sharingBonus?: Maybe<Scalars['String']['output']>;\n};\n\nexport type FreeDelivery = {\n readonly __typename?: 'FreeDelivery';\n /** Threshold price text. */\n readonly thresholdPriceText?: Maybe<Scalars['String']['output']>;\n};\n\nexport type FrontPageImage = {\n readonly __typename?: 'FrontPageImage';\n /** Image's subtitle */\n readonly subTitle?: Maybe<Scalars['String']['output']>;\n /** Image's title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Image's url */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Frontpage = {\n readonly __typename?: 'Frontpage';\n /** Beauty Edit section */\n readonly beautyEdit?: Maybe<BeautyEdit>;\n /** Beauty by Sweden Video */\n readonly beautyVideo?: Maybe<BeautyVideo>;\n /** Benefit banner */\n readonly benefitBanner?: Maybe<BenefitBanner>;\n /** Bestseller products section */\n readonly bestsellerProducts?: Maybe<BestsellerProducts>;\n /** Navigation by categories */\n readonly categoryNavigation?: Maybe<ReadonlyArray<Maybe<Link>>>;\n /** Digital promotions */\n readonly digitalPromotions?: Maybe<DigitalPromotions>;\n /** Iconic products section */\n readonly iconicProducts?: Maybe<IconicProducts>;\n /** Motivation content */\n readonly motivationContent?: Maybe<MotivationContent>;\n /** Notification banner */\n readonly notificationBanner?: Maybe<NotificationBanner>;\n /** Product Standards section */\n readonly productStandards?: Maybe<ProductStandards>;\n /** Top Brands section */\n readonly topBrands?: Maybe<TopBrands>;\n /** VIP Benefits section */\n readonly vipBenefits?: Maybe<VipBenefits>;\n};\n\n\nexport type FrontpageDigitalPromotionsArgs = {\n channel: ChannelType;\n validityDate?: InputMaybe<Scalars['Date']['input']>;\n};\n\n/** Enum gender */\nexport enum Gender {\n Man = 'Man',\n Other = 'Other',\n Woman = 'Woman'\n}\n\nexport type GlobalBonusItemsByLocalPeriod = {\n readonly __typename?: 'GlobalBonusItemsByLocalPeriod';\n readonly globalBonusItems?: Maybe<ReadonlyArray<Maybe<MyBenefitsBonusItemV2>>>;\n readonly localPeriodCode: Scalars['Int']['output'];\n};\n\nexport type HeroBanner = {\n readonly __typename?: 'HeroBanner';\n /** Background color */\n readonly backgroundColor?: Maybe<Scalars['String']['output']>;\n /** Font color -eg. red, grey */\n readonly fontColor?: Maybe<Scalars['String']['output']>;\n /** Headline of the banner */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image url of the banner */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link type, attributes and Id */\n readonly link?: Maybe<Link>;\n /** Mobile font color -eg. red, grey */\n readonly mobileFontColor?: Maybe<Scalars['String']['output']>;\n /** Priority */\n readonly priority?: Maybe<Scalars['Int']['output']>;\n /** Small Image url of the banner */\n readonly smallImageUrl?: Maybe<Scalars['String']['output']>;\n /** Tagline of the banner */\n readonly tagline?: Maybe<Scalars['String']['output']>;\n /** Banner Validity date from */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Banner validity date to */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n /** Video url */\n readonly videoUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum HorizontalContentAlignment {\n Left = 'Left',\n Right = 'Right',\n Undefined = 'Undefined'\n}\n\nexport type IconicProducts = {\n readonly __typename?: 'IconicProducts';\n /** Banner of the iconic products. */\n readonly banner?: Maybe<ProductsPromotionBanner>;\n /** Description of the iconic products. */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Headline of the iconic products. */\n readonly headline?: Maybe<Scalars['String']['output']>;\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n};\n\n/** The concept resolver. */\nexport type Ingredient = {\n readonly __typename?: 'Ingredient';\n /** Summary of benefits */\n readonly benefitSummary?: Maybe<Scalars['String']['output']>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Did you know label */\n readonly didYouKnow?: Maybe<Scalars['String']['output']>;\n /** Url to the image */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Key benefit 1 */\n readonly keyBenefit1?: Maybe<Scalars['String']['output']>;\n /** Key benefit 2 */\n readonly keyBenefit2?: Maybe<Scalars['String']['output']>;\n /** Key benefit 3 */\n readonly keyBenefit3?: Maybe<Scalars['String']['output']>;\n /** Key benefits */\n readonly keyBenefits?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Latin name */\n readonly latinName?: Maybe<Scalars['String']['output']>;\n /** Link to ingredient detail */\n readonly link?: Maybe<Link>;\n /** Total number of products available */\n readonly numberOfProducts: Scalars['Int']['output'];\n /** Products containing the ingredient */\n readonly products: ReadonlyArray<Product>;\n /**\n * The get related articles for ingredient.\n *\n *\n * **Returns:**\n * The result.\n */\n readonly relatedArticles: ReadonlyArray<Article>;\n /** Short name */\n readonly shortName?: Maybe<Scalars['String']['output']>;\n};\n\n\n/** The concept resolver. */\nexport type IngredientProductsArgs = {\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\n\n/** The concept resolver. */\nexport type IngredientRelatedArticlesArgs = {\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\nexport type IngredientLibrary = {\n readonly __typename?: 'IngredientLibrary';\n /** Ingredient library inspiration */\n readonly inspiration?: Maybe<IngredientLibraryInspiration>;\n};\n\nexport type IngredientLibraryInspiration = {\n readonly __typename?: 'IngredientLibraryInspiration';\n /** Ingredient library inspiration text */\n readonly inspirationTexts?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n};\n\nexport type InviteFriendProfile = {\n readonly __typename?: 'InviteFriendProfile';\n /** Consultant number */\n readonly consultantNumber?: Maybe<Scalars['Int']['output']>;\n /** Consultant contacts */\n readonly contacts?: Maybe<ReadonlyArray<Maybe<SocialContact>>>;\n /** Consultant profile description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Consultant first name */\n readonly firstName?: Maybe<Scalars['String']['output']>;\n /** Consultant last name */\n readonly lastName?: Maybe<Scalars['String']['output']>;\n /** Consultant prfile photo url */\n readonly photoUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type IsPrimaryMetadataItem = {\n readonly __typename?: 'IsPrimaryMetadataItem';\n /** Order of property in which should be preferably displayed (e.g. field on edit form) */\n readonly displayOrder?: Maybe<Scalars['Int']['output']>;\n /** Is item available */\n readonly isAvailable?: Maybe<Scalars['Boolean']['output']>;\n /** Is item editable */\n readonly isEditable?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type Language = {\n readonly __typename?: 'Language';\n /** Language code */\n readonly code?: Maybe<Scalars['String']['output']>;\n /** Language name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Language type */\n readonly type?: Maybe<LanguageType>;\n};\n\nexport type LanguageConfiguration = {\n readonly __typename?: 'LanguageConfiguration';\n /** Country label */\n readonly countryLabel?: Maybe<Scalars['String']['output']>;\n /** Current Country */\n readonly currentCountry?: Maybe<Scalars['String']['output']>;\n /** Language label */\n readonly languageLabel?: Maybe<Scalars['String']['output']>;\n /** Select country label */\n readonly selectCountryLabel?: Maybe<Scalars['String']['output']>;\n /** Sekect country URL */\n readonly selectCountryUrl?: Maybe<Scalars['String']['output']>;\n};\n\n/** Enum language type */\nexport enum LanguageType {\n Alternative = 'Alternative',\n Default = 'Default'\n}\n\nexport type Link = {\n readonly __typename?: 'Link';\n /** AppLink */\n readonly appLink?: Maybe<AppLink>;\n readonly attributes?: Maybe<ReadonlyArray<Maybe<Attribute>>>;\n readonly data?: Maybe<LinkData>;\n /** Dynamic url for sharing */\n readonly dynamicSharingUrl?: Maybe<Scalars['String']['output']>;\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Relative url */\n readonly relativeUrl?: Maybe<Scalars['String']['output']>;\n /** Link's title */\n readonly title?: Maybe<Scalars['String']['output']>;\n readonly type: LinkType;\n};\n\n\nexport type LinkDynamicSharingUrlArgs = {\n storeName?: InputMaybe<Scalars['ID']['input']>;\n};\n\nexport type LinkData = Brand | Catalogue | Category | EditorialPage | ExternalCampaign | NovageSkincareAdvisor | Product | ProductListingPage;\n\nexport enum LinkType {\n Brand = 'Brand',\n Campaign = 'Campaign',\n Catalogue = 'Catalogue',\n Category = 'Category',\n CategoryNavigation = 'CategoryNavigation',\n Custom = 'Custom',\n DigitalCatalogueCurrentNavigation = 'DigitalCatalogueCurrentNavigation',\n EditorialArticle = 'EditorialArticle',\n EditorialCampaign = 'EditorialCampaign',\n Frontpage = 'Frontpage',\n Ingredient = 'Ingredient',\n InvitationOffer = 'InvitationOffer',\n Invite = 'Invite',\n NewProducts = 'NewProducts',\n NovageSkincareAdvisor = 'NovageSkincareAdvisor',\n PlPage = 'PlPage',\n Product = 'Product',\n RegistrationPage = 'RegistrationPage',\n SignIn = 'SignIn'\n}\n\nexport type MakeupTryOnConfiguration = {\n readonly __typename?: 'MakeupTryOnConfiguration';\n /** product Detail */\n readonly productDetail?: Maybe<ProductDetailMakeupTryOnConfiguration>;\n};\n\nexport type MakeupTryOnProductRelation = {\n readonly __typename?: 'MakeupTryOnProductRelation';\n /** Related Shi Shi Product Id */\n readonly shiShiProductId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ManagerSummitQualification = {\n readonly __typename?: 'ManagerSummitQualification';\n readonly cutOffPeriods?: Maybe<ReadonlyArray<Maybe<CutOffPeriod>>>;\n readonly discountRateLevelEvaluation?: Maybe<ReadonlyArray<Maybe<PeriodOrderEvaluationStatus>>>;\n readonly managerSummitStatus: ManagerSummitStatus;\n readonly managerSummitVersion: ManagerSummitVersion;\n readonly qualifiedInPeriods?: Maybe<Scalars['Int']['output']>;\n readonly qualifiedOfPeriods?: Maybe<Scalars['Int']['output']>;\n readonly remainingQualificationPeriodsCount?: Maybe<Scalars['Int']['output']>;\n readonly successfulQualificationPeriodsCount?: Maybe<Scalars['Int']['output']>;\n readonly targetDiscountRate?: Maybe<Scalars['Decimal']['output']>;\n readonly youtubeVideoId?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ManagerSummitStatus {\n NotAvailable = 'NotAvailable',\n QualificationInProgress = 'QualificationInProgress',\n QualifiedBeforeCutOff = 'QualifiedBeforeCutOff',\n QualifiedIncludingCutOff = 'QualifiedIncludingCutOff'\n}\n\nexport enum ManagerSummitVersion {\n Manager = 'Manager',\n NewComer = 'NewComer',\n NotAvailable = 'NotAvailable'\n}\n\nexport type Manufacturer = {\n readonly __typename?: 'Manufacturer';\n /** Manufacturer address */\n readonly address?: Maybe<ManufacturerAddress>;\n /** Manufacturer Id */\n readonly manufacturerId?: Maybe<Scalars['String']['output']>;\n /** Manufacturer name */\n readonly name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ManufacturerAddress = {\n readonly __typename?: 'ManufacturerAddress';\n /** Address 1 */\n readonly address1?: Maybe<Scalars['String']['output']>;\n /** Address 2 */\n readonly address2?: Maybe<Scalars['String']['output']>;\n /** City */\n readonly city?: Maybe<Scalars['String']['output']>;\n /** Country code */\n readonly countryCode?: Maybe<Scalars['String']['output']>;\n /** Country name */\n readonly countryName?: Maybe<Scalars['String']['output']>;\n /** State */\n readonly state?: Maybe<Scalars['String']['output']>;\n /** Zip code */\n readonly zipCode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MetadataOperations = {\n readonly __typename?: 'MetadataOperations';\n /** Create */\n readonly create?: Maybe<AddressMetadataOperation>;\n /** Delete */\n readonly delete?: Maybe<AddressMetadataOperation>;\n /** Read */\n readonly read?: Maybe<AddressMetadataOperation>;\n /** Update */\n readonly update?: Maybe<AddressMetadataOperation>;\n};\n\nexport type MixedPlpContent = EditorialPlpPromoBanner | Product;\n\nexport type MobileApp = {\n readonly __typename?: 'MobileApp';\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Urls of additional images */\n readonly images?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Links related to the mobile app */\n readonly links?: Maybe<MobileAppLinks>;\n /** Type of the mobile app */\n readonly mobileAppType?: Maybe<MobileAppTypeData>;\n /** Subtitle */\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Url of the main image */\n readonly titleImage?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MobileAppLinks = {\n readonly __typename?: 'MobileAppLinks';\n /** Link of the mobile app in Apple Store */\n readonly appleStoreLink?: Maybe<Scalars['String']['output']>;\n /** Link of the mobile app in Google Play Store */\n readonly googlePlayStoreLink?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum MobileAppType {\n None = 'None',\n ToSell = 'ToSell',\n ToShop = 'ToShop'\n}\n\nexport type MobileAppTypeData = {\n readonly __typename?: 'MobileAppTypeData';\n /** Title of the type */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Type of the mobile app */\n readonly type?: Maybe<MobileAppType>;\n};\n\nexport type MobileApps = {\n readonly __typename?: 'MobileApps';\n /** Mobile apps */\n readonly mobileAppCollection?: Maybe<ReadonlyArray<Maybe<MobileApp>>>;\n /** Header of mobile apps page */\n readonly pageHeader?: Maybe<MobileAppsPageHeader>;\n};\n\nexport type MobileAppsPageHeader = {\n readonly __typename?: 'MobileAppsPageHeader';\n /** Apple Store image */\n readonly appleStoreImage?: Maybe<Scalars['String']['output']>;\n /** Google Play image */\n readonly googlePlayImage?: Maybe<Scalars['String']['output']>;\n /** Subtitle */\n readonly subtitle?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MotivationContent = {\n readonly __typename?: 'MotivationContent';\n /** Section's headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Text displayed in the section */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Mutation = {\n readonly __typename?: 'Mutation';\n readonly backInStockNotificationSubscription?: Maybe<Scalars['Void']['output']>;\n readonly shareAndEarnPersonalCodeUpdate?: Maybe<MutationResult>;\n};\n\n\nexport type MutationBackInStockNotificationSubscriptionArgs = {\n input?: InputMaybe<BackInStockNotificationSubscriptionInput>;\n};\n\n\nexport type MutationShareAndEarnPersonalCodeUpdateArgs = {\n input?: InputMaybe<ShareAndEarnUpdatePersonalCodeInput>;\n};\n\nexport type MutationResult = {\n readonly __typename?: 'MutationResult';\n /** Error message */\n readonly message?: Maybe<Scalars['String']['output']>;\n /** Indicates whether the mutation was successful or not */\n readonly success: Scalars['Boolean']['output'];\n};\n\nexport type MyBenefitsBonusItem = {\n readonly __typename?: 'MyBenefitsBonusItem';\n readonly amount: Scalars['Decimal']['output'];\n readonly bonusTypeDescription?: Maybe<Scalars['String']['output']>;\n readonly paymentChannel: PaymentChannel;\n readonly paymentDescription?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MyBenefitsBonusItemV2 = {\n readonly __typename?: 'MyBenefitsBonusItemV2';\n readonly amount: Scalars['Decimal']['output'];\n readonly bonusTypeDescription?: Maybe<Scalars['String']['output']>;\n readonly globalPeriodCode: Scalars['Int']['output'];\n readonly paymentChannel: PaymentChannel;\n readonly paymentDescription?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MyBenefitsSummary = {\n readonly __typename?: 'MyBenefitsSummary';\n readonly bankTransferAmount: Scalars['Decimal']['output'];\n readonly bankTransferState: BankBonusPaymentTransferState;\n readonly bonusItems?: Maybe<ReadonlyArray<Maybe<MyBenefitsBonusItem>>>;\n readonly bonusesAndCashAwards: Scalars['Decimal']['output'];\n /** Get customer benefits. */\n readonly commissionSheet?: Maybe<CommissionSheetDocument>;\n readonly currencyIsoCode?: Maybe<Scalars['String']['output']>;\n /** @deprecated Use GlobalBonusItemsByLocalPeriod instead */\n readonly globalBonusItems?: Maybe<ReadonlyArray<Maybe<MyBenefitsBonusItem>>>;\n readonly globalBonusItemsByLocalPeriod?: Maybe<ReadonlyArray<Maybe<GlobalBonusItemsByLocalPeriod>>>;\n readonly immediateDiscounts: Scalars['Decimal']['output'];\n readonly oriflameWallet: Scalars['Decimal']['output'];\n readonly totalBenefits: Scalars['Decimal']['output'];\n};\n\nexport type MyProgramPlus = {\n readonly __typename?: 'MyProgramPlus';\n readonly oneTimeBonusAmount: Scalars['Decimal']['output'];\n readonly oneTimeBonusEndDate: Scalars['Date']['output'];\n readonly salesBoosterInfo?: Maybe<ReadonlyArray<Maybe<SalesBoosterQualificationInfo>>>;\n};\n\nexport type Navigation = {\n readonly __typename?: 'Navigation';\n /** Collection of subitems */\n readonly children?: Maybe<ReadonlyArray<Maybe<Navigation>>>;\n /** Description of the item */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Id of the navigation item */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Image of the item */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Type of the navigation link */\n readonly linkType?: Maybe<NavigationLinkType>;\n /** Specifies nodeId in tree structure */\n readonly nodeId?: Maybe<Scalars['String']['output']>;\n /** Title of the navigation item */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Url of the item */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type NavigationCollection = {\n readonly __typename?: 'NavigationCollection';\n /** Collection of Navigation items */\n readonly children?: Maybe<ReadonlyArray<Maybe<Navigation>>>;\n /** Navigation type */\n readonly navigationType?: Maybe<NavigationType>;\n};\n\n/** Possible types of Navigation items */\nexport enum NavigationLinkType {\n /** All category */\n AllCategory = 'AllCategory',\n /** Beauty Tips section */\n BeautyTips = 'BeautyTips',\n /** Bestseller products page */\n Bestsellers = 'Bestsellers',\n /** Bestseller products in category */\n BestsellersInCategory = 'BestsellersInCategory',\n /** Bottom part of the footer */\n Bottom = 'Bottom',\n /** Bottom part of the footer with copyright info */\n BottomCopyright = 'BottomCopyright',\n /** Links from the bottom part of the footer */\n BottomLinks = 'BottomLinks',\n /** Catalogue page */\n Catalogue = 'Catalogue',\n /** Catalogues page */\n Catalogues = 'Catalogues',\n /** Category */\n Category = 'Category',\n /** Catalogue for the current period */\n DigitalCatalogueCurrent = 'DigitalCatalogueCurrent',\n /** Catalogue for the next period */\n DigitalCatalogueNext = 'DigitalCatalogueNext',\n /** Focus page */\n FocusPage = 'FocusPage',\n /** Column of a footer */\n FooterColumn = 'FooterColumn',\n /** Item placed in footer's column */\n FooterColumnItem = 'FooterColumnItem',\n /** I Don't know yet link */\n IDontKnowYet = 'IDontKnowYet',\n /** Iconic products page */\n Icons = 'Icons',\n /** Iconic products in category */\n IconsInCategory = 'IconsInCategory',\n /** Inspiration section */\n Inspiration = 'Inspiration',\n /** Join rewards */\n JoinRewards = 'JoinRewards',\n /** Key ingredients page */\n KeyIngredients = 'KeyIngredients',\n /** Menu tiles */\n MenuTiles = 'MenuTiles',\n /** New products */\n New = 'New',\n /** No link type was specified for this item */\n None = 'None',\n /** Our applications */\n OurApps = 'OurApps',\n /** Outlet shop */\n OutletShop = 'OutletShop',\n /** Payment method */\n PaymentMethod = 'PaymentMethod',\n /** Available payment methods */\n PaymentMethods = 'PaymentMethods',\n /** Popular brand */\n PopularBrand = 'PopularBrand',\n /** Popular brands */\n PopularBrands = 'PopularBrands',\n /** Popular lookbook */\n PopularLookbook = 'PopularLookbook',\n Qrtr = 'Qrtr',\n /** Rewards shop page */\n RewardsShop = 'RewardsShop',\n /** Sample shop page */\n SampleShop = 'SampleShop',\n /** Segment of subcategory */\n Segment = 'Segment',\n /** Subcategory */\n SubCategory = 'SubCategory',\n /** Support center */\n SupportCenter = 'SupportCenter',\n /** Top navigation */\n TopNavigation = 'TopNavigation',\n /** What's new in the category */\n WhatsNewInCategory = 'WhatsNewInCategory'\n}\n\nexport type NavigationTag = {\n readonly __typename?: 'NavigationTag';\n /** NavigationTag title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** NavigationTag url */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\n/** Possible types of navigations */\nexport enum NavigationType {\n /** About tiles section content */\n AboutTiles = 'AboutTiles',\n /** Footer section */\n Footer = 'Footer',\n /** Inspiration tiles content */\n InspirationTiles = 'InspirationTiles',\n /** Join section content */\n JoinTiles = 'JoinTiles',\n /** Shop section content */\n ShopSection = 'ShopSection',\n /** Top navigation bar items */\n TopNavigation = 'TopNavigation'\n}\n\nexport type NewsletterSubsciptionConfiguration = {\n readonly __typename?: 'NewsletterSubsciptionConfiguration';\n /** Error Dialog */\n readonly errorDialog?: Maybe<ErrorDialogNewsletterSubsciptionConfiguration>;\n /** Footer */\n readonly footer?: Maybe<FooterNewsletterSubsciptionConfiguration>;\n /** Popup */\n readonly popup?: Maybe<PopupNewsletterSubsciptionConfiguration>;\n /** Response Messages */\n readonly responseMessages?: Maybe<ReadonlyArray<Maybe<ResponseMessageNewsletterSubsciptionConfiguration>>>;\n /** Submit Dialog */\n readonly submitDialog?: Maybe<SubmitDialogNewsletterSubsciptionConfiguration>;\n /** Subscribed Dialog */\n readonly subscribedDialog?: Maybe<SubscribedDialogNewsletterSubsciptionConfiguration>;\n};\n\nexport type NotificationBanner = {\n readonly __typename?: 'NotificationBanner';\n /** Link title */\n readonly messageLinkTitle?: Maybe<Scalars['String']['output']>;\n /** Link URL */\n readonly messageLinkUrl?: Maybe<Scalars['String']['output']>;\n /** Text */\n readonly messageText?: Maybe<Scalars['String']['output']>;\n /** Theme */\n readonly messageTheme?: Maybe<NotificationBannerThemeType>;\n};\n\nexport enum NotificationBannerThemeType {\n Black = 'Black',\n Grey = 'Grey'\n}\n\nexport type NovageSkincareAdvisor = {\n readonly __typename?: 'NovageSkincareAdvisor';\n readonly environment?: Maybe<Scalars['String']['output']>;\n readonly partnerId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OlapicConfiguration = {\n readonly __typename?: 'OlapicConfiguration';\n /** Olapic api key */\n readonly apiKey?: Maybe<Scalars['String']['output']>;\n /** The get category. */\n readonly category?: Maybe<Category>;\n /** Hide caption toggle */\n readonly hideCaption?: Maybe<Scalars['Boolean']['output']>;\n /** olapic id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Olapic instance */\n readonly instance?: Maybe<Scalars['String']['output']>;\n /** Olapic item name */\n readonly itemName?: Maybe<Scalars['String']['output']>;\n /** language code */\n readonly languageCode?: Maybe<Scalars['String']['output']>;\n /** The get product. */\n readonly product?: Maybe<Product>;\n /** Olapic script url */\n readonly scriptUrl?: Maybe<Scalars['String']['output']>;\n /** Olapic widget type */\n readonly type?: Maybe<OlapicTypeEnum>;\n};\n\n/** Olapic type enumeration */\nexport enum OlapicTypeEnum {\n /** Category widget */\n Category = 'Category',\n /** Front page widget */\n FrontPage = 'FrontPage',\n /** Gallery widget */\n Gallery = 'Gallery',\n /** Product detail page widget */\n ProductDetails = 'ProductDetails'\n}\n\nexport type OperationPrincipals = {\n readonly __typename?: 'OperationPrincipals';\n /** Name of the customer who cancelled the order or 'Customer Service'. Null if the order is not cancelled */\n readonly cancelledBy?: Maybe<Scalars['String']['output']>;\n /** Id of the customer who cancelled the order. Null if the order is not cancelled */\n readonly cancelledById?: Maybe<Scalars['Long']['output']>;\n /** Name of the customer who placed the order or 'Customer Service' */\n readonly placedBy?: Maybe<Scalars['String']['output']>;\n /** Id of the customer who placed the order */\n readonly placedById: Scalars['Long']['output'];\n};\n\nexport type Order = {\n readonly __typename?: 'Order';\n /** Provide availability of order cancel operation. */\n readonly cancellation?: Maybe<OrderCancel>;\n readonly currentOrderStatus: CurrentOrderStatus;\n /** The customer associated with the order. */\n readonly customer?: Maybe<Customer>;\n readonly debt: Scalars['Decimal']['output'];\n /** The delivery channel of the order. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n readonly deliveryChannelId: Scalars['Long']['output'];\n /** The discounts applied to the order. */\n readonly discounts?: Maybe<Discounts>;\n /** The documents linked with the order. */\n readonly documents?: Maybe<OrderDocuments>;\n readonly dueDateOffset?: Maybe<Scalars['DateTime']['output']>;\n readonly earnedCashback: Scalars['Decimal']['output'];\n readonly earnedPoints: Scalars['Decimal']['output'];\n readonly fee: Scalars['Decimal']['output'];\n readonly invoiceNumber?: Maybe<Scalars['String']['output']>;\n /** The order operation principals. */\n readonly operationPrincipals?: Maybe<OperationPrincipals>;\n readonly orderDateOffset: Scalars['DateTime']['output'];\n readonly orderId: Scalars['ID']['output'];\n /** The items of the order. */\n readonly orderItems?: Maybe<OrderItems>;\n readonly orderOrigin: OrderOrigin;\n readonly paymentProviderId: Scalars['Long']['output'];\n /** Returns result of evaluation if the order can be paid and number of pending payments. */\n readonly pendingPaymentsResult?: Maybe<PendingPaymentsResult>;\n readonly periodId?: Maybe<Scalars['Int']['output']>;\n /** The real time order tracking. */\n readonly realTimeOrderTracking?: Maybe<OrderTracking>;\n readonly redeemedPoints: Scalars['Decimal']['output'];\n readonly totalAmount: Scalars['Decimal']['output'];\n readonly totalBp: Scalars['Decimal']['output'];\n};\n\nexport type OrderCancel = {\n readonly __typename?: 'OrderCancel';\n readonly isAllowed: Scalars['Boolean']['output'];\n readonly status: CanCancelOrderResult;\n};\n\nexport type OrderDocument = {\n readonly __typename?: 'OrderDocument';\n readonly created: Scalars['DateTime']['output'];\n readonly documentId?: Maybe<Scalars['String']['output']>;\n readonly documentType: OrderDocumentType;\n};\n\nexport enum OrderDocumentType {\n FiscalReceipt = 'FiscalReceipt',\n InvoicePdf = 'InvoicePdf',\n InvoiceXml = 'InvoiceXml',\n ReturnFiscalReceipt = 'ReturnFiscalReceipt'\n}\n\nexport type OrderDocuments = {\n readonly __typename?: 'OrderDocuments';\n readonly collection?: Maybe<ReadonlyArray<Maybe<OrderDocument>>>;\n};\n\nexport enum OrderHistoryType {\n Full = 'Full',\n Last3Periods = 'Last3Periods'\n}\n\nexport type OrderItem = {\n readonly __typename?: 'OrderItem';\n readonly isHidden: Scalars['Boolean']['output'];\n readonly itemCode?: Maybe<Scalars['String']['output']>;\n readonly orderItemType: OrderItemType;\n readonly originalItemCode?: Maybe<Scalars['String']['output']>;\n readonly price: Scalars['Decimal']['output'];\n /** The get selected delivery channel and addresses. */\n readonly product?: Maybe<Product>;\n readonly quantity: Scalars['Int']['output'];\n readonly replacementType?: Maybe<ReplacementType>;\n readonly totalBp: Scalars['Decimal']['output'];\n readonly totalDiscount: Scalars['Decimal']['output'];\n readonly totalPrice: Scalars['Decimal']['output'];\n};\n\nexport enum OrderItemType {\n BackOrder = 'BackOrder',\n Bundle = 'Bundle',\n Donation = 'Donation',\n EndConsumerOrder = 'EndConsumerOrder',\n ExtraChange = 'ExtraChange',\n ExtraSold = 'ExtraSold',\n ExtraTax = 'ExtraTax',\n Fee = 'Fee',\n FreeSample = 'FreeSample',\n FreeShippingJoker = 'FreeShippingJoker',\n MerchandisingChange = 'MerchandisingChange',\n MerchandisingChangedGift = 'MerchandisingChangedGift',\n MerchandisingDiscount = 'MerchandisingDiscount',\n MerchandisingGift = 'MerchandisingGift',\n NextOrderDelivery = 'NextOrderDelivery',\n Offer = 'Offer',\n PaymentFee = 'PaymentFee',\n PersonalNutrition = 'PersonalNutrition',\n PersonalSubscription = 'PersonalSubscription',\n Product = 'Product',\n RegistrationFee = 'RegistrationFee',\n RenewalFee = 'RenewalFee',\n Replacement = 'Replacement',\n Reservation = 'Reservation',\n Section1 = 'Section1',\n Section2 = 'Section2',\n Section3 = 'Section3',\n Section4 = 'Section4',\n Service = 'Service',\n StarterKit = 'StarterKit',\n Subscription = 'Subscription',\n Target = 'Target',\n Unknown = 'Unknown',\n Voucher = 'Voucher'\n}\n\nexport type OrderItems = {\n readonly __typename?: 'OrderItems';\n readonly collection?: Maybe<ReadonlyArray<Maybe<OrderItem>>>;\n};\n\nexport enum OrderOrigin {\n Automatic = 'Automatic',\n Bambuser = 'Bambuser',\n Claim = 'Claim',\n Demo = 'Demo',\n Email = 'Email',\n Immediate = 'Immediate',\n NowApp = 'NowApp',\n OnBehalf = 'OnBehalf',\n Online = 'Online',\n Orisales = 'Orisales',\n Other = 'Other',\n Pbs = 'Pbs',\n Pharmacy = 'Pharmacy',\n Registration = 'Registration',\n Telephone = 'Telephone',\n Vip = 'Vip',\n WeChat = 'WeChat',\n WeChatApp = 'WeChatApp'\n}\n\nexport enum OrderStatus {\n All = 'All',\n Blocked = 'Blocked',\n CancelRequested = 'CancelRequested',\n Canceled = 'Canceled',\n CreditNote = 'CreditNote',\n Paid = 'Paid',\n Pending = 'Pending',\n Unpaid = 'Unpaid',\n Waiting = 'Waiting',\n WaitingForApproval = 'WaitingForApproval'\n}\n\nexport type OrderTracking = {\n readonly __typename?: 'OrderTracking';\n readonly currentStatus?: Maybe<TrackingStatus>;\n readonly isCourierApiEnabled: Scalars['Boolean']['output'];\n readonly isRealTimeOrderTrackingEnabled: Scalars['Boolean']['output'];\n readonly step1?: Maybe<OrderTrackingStep>;\n readonly step2?: Maybe<OrderTrackingStep>;\n readonly step3?: Maybe<OrderTrackingStep>;\n readonly step4?: Maybe<OrderTrackingStep>;\n readonly step5?: Maybe<OrderTrackingStep>;\n readonly url?: Maybe<Scalars['String']['output']>;\n readonly waybillNumber?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OrderTrackingStep = {\n readonly __typename?: 'OrderTrackingStep';\n readonly dateTime?: Maybe<Scalars['DateTime']['output']>;\n readonly status: TrackingStatus;\n};\n\nexport type Orders = {\n readonly __typename?: 'Orders';\n readonly collection?: Maybe<ReadonlyArray<Maybe<Order>>>;\n readonly skip?: Maybe<Scalars['Int']['output']>;\n readonly top?: Maybe<Scalars['Int']['output']>;\n readonly totalRecords: Scalars['Int']['output'];\n};\n\nexport type PageNavigation = {\n readonly __typename?: 'PageNavigation';\n /** Navigation menu item */\n readonly items?: Maybe<ReadonlyArray<Maybe<PageNavigationItem>>>;\n /** Page ID */\n readonly pageId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PageNavigationItem = {\n readonly __typename?: 'PageNavigationItem';\n /** Unique ID of navigation item */\n readonly itemId?: Maybe<Scalars['String']['output']>;\n /** Localized label */\n readonly label?: Maybe<Scalars['String']['output']>;\n /** Relative URL */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\n/** Payment Channel for bonus type */\nexport enum PaymentChannel {\n /** Commission payment channel (BonusType released to bank account) */\n Commission = 'Commission',\n /** Discount payment channel (BonusType released to discount) */\n Discount = 'Discount',\n /** Sales Action Discount (BonusType not released - used for virtual income i.e. immediate profit) */\n SalesActionDiscount = 'SalesActionDiscount'\n}\n\nexport type PaymentMethod = {\n readonly __typename?: 'PaymentMethod';\n /** ID of the payment method. */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** URL of the payment method's image. */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Title of the payment method. */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PendingPaymentsResult = {\n readonly __typename?: 'PendingPaymentsResult';\n readonly canPay: Scalars['Boolean']['output'];\n readonly maxPendingPayments: Scalars['Int']['output'];\n readonly pendingPaymentsCount: Scalars['Int']['output'];\n};\n\nexport type PeriodOrderEvaluationStatus = {\n readonly __typename?: 'PeriodOrderEvaluationStatus';\n readonly periodId: Scalars['Int']['output'];\n readonly periodOrderNumber: Scalars['Int']['output'];\n readonly periodStatus: PeriodStatus;\n};\n\nexport enum PeriodStatus {\n ActiveCompleted = 'ActiveCompleted',\n ActiveNotCompleted = 'ActiveNotCompleted',\n Completed = 'Completed',\n NotActive = 'NotActive',\n NotCompleted = 'NotCompleted'\n}\n\nexport type PermanentTopBanner = {\n readonly __typename?: 'PermanentTopBanner';\n readonly link?: Maybe<Link>;\n readonly message?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum PermanentTopBannerType {\n /** All pages behind Checkout */\n Checkout = 'Checkout',\n /** All pages behind my-pages */\n MyPages = 'MyPages',\n /** All other public pages */\n PublicPage = 'PublicPage',\n /** All public pages with provided referral parameter */\n PublicPageWithReferral = 'PublicPageWithReferral'\n}\n\nexport type PersonalBeautyStore = {\n readonly __typename?: 'PersonalBeautyStore';\n readonly customerId?: Maybe<Scalars['Long']['output']>;\n /** Text description of PBS / applicable for PBS lite */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Name of PBS */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Product lists */\n readonly productLists?: Maybe<ReadonlyArray<Maybe<ProductList>>>;\n /** Personal beauty store owner profile */\n readonly profile?: Maybe<PersonalBeautyStoreProfile>;\n /** Url to PBS */\n readonly url?: Maybe<Scalars['String']['output']>;\n /** Live video shows */\n readonly videoShows?: Maybe<ReadonlyArray<Maybe<VideoShow>>>;\n};\n\n\nexport type PersonalBeautyStoreProductListsArgs = {\n productListType: ProductListType;\n};\n\nexport type PersonalBeautyStoreProfile = {\n readonly __typename?: 'PersonalBeautyStoreProfile';\n /** Consultant number */\n readonly consultantNumber?: Maybe<Scalars['Int']['output']>;\n /** Pbs owner contacts */\n readonly contacts?: Maybe<ReadonlyArray<Maybe<SocialContact>>>;\n /** Description of PBS */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** First name */\n readonly firstName?: Maybe<Scalars['String']['output']>;\n /** Last name */\n readonly lastName?: Maybe<Scalars['String']['output']>;\n /** Name PBS store */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Pbs owner photo */\n readonly photoUrl?: Maybe<Scalars['String']['output']>;\n /** Referral program data */\n readonly referralProgram?: Maybe<ReferralProgram>;\n};\n\nexport type PersonalEditorialLandingPage = {\n readonly __typename?: 'PersonalEditorialLandingPage';\n /** Background color */\n readonly backgroundStorybookColor?: Maybe<StorybookColor>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Editorial collection */\n readonly editorialItems?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Headline text color */\n readonly headlineStorybookColor?: Maybe<StorybookColor>;\n /** Image Url */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Page Id */\n readonly landingPageId: Scalars['ID']['output'];\n /** Link to the landing page */\n readonly link?: Maybe<Link>;\n /** Theme collection */\n readonly themeItems?: Maybe<ReadonlyArray<Maybe<PersonalEditorialLandingPage>>>;\n /** Theme Tag */\n readonly themeTag?: Maybe<Scalars['String']['output']>;\n /** Thumbnail Url */\n readonly thumbnailUrl?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type PersonalEditorialLandingPageEditorialItemsArgs = {\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\nexport type PersonalProductListConfiguration = {\n readonly __typename?: 'PersonalProductListConfiguration';\n readonly addThis?: Maybe<AddThis>;\n /** Link to a home page */\n readonly homePageUrl?: Maybe<Scalars['String']['output']>;\n /** Is dynamic link enabled for PPL */\n readonly isDynamicLinkEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is PBS ownership is required for PPL */\n readonly isPbsRequired?: Maybe<Scalars['Boolean']['output']>;\n /** Is PPL enabled */\n readonly isPplEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Link to Personal Beauty Store management page */\n readonly pbsPageUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PersonalSubscription = {\n readonly __typename?: 'PersonalSubscription';\n /** Subscription cancel date */\n readonly cancelled?: Maybe<Scalars['DateTime']['output']>;\n /** Subscription type */\n readonly category: PersonalSubscriptionCategory;\n /** The customer associated with the subscription. */\n readonly customer?: Maybe<Customer>;\n /** Subscription owner */\n readonly customerId: Scalars['Long']['output'];\n /** Subscription frequency (days) */\n readonly frequency: Scalars['Int']['output'];\n readonly isActive: Scalars['Boolean']['output'];\n /** Subscription is temporary paused */\n readonly isPaused: Scalars['Boolean']['output'];\n /** Subscribed product */\n readonly itemCode?: Maybe<Scalars['String']['output']>;\n /** Last shipment date */\n readonly lastShipment: Scalars['DateTime']['output'];\n /** Next shipment date */\n readonly nextShipment: Scalars['DateTime']['output'];\n /** Unique identification */\n readonly personalSubscriptionId: Scalars['ID']['output'];\n /** The get selected delivery channel and addresses. */\n readonly product?: Maybe<Product>;\n /** Product quantity */\n readonly quantity: Scalars['Int']['output'];\n};\n\nexport enum PersonalSubscriptionCategory {\n PersonalNutrition = 'PersonalNutrition',\n Product = 'Product'\n}\n\nexport type PersonalSubscriptions = {\n readonly __typename?: 'PersonalSubscriptions';\n readonly collection?: Maybe<ReadonlyArray<Maybe<PersonalSubscription>>>;\n readonly skip?: Maybe<Scalars['Int']['output']>;\n readonly top?: Maybe<Scalars['Int']['output']>;\n readonly totalRecords: Scalars['Int']['output'];\n};\n\nexport type Phone = {\n readonly __typename?: 'Phone';\n /** Is telephone number primary */\n readonly isPrimary?: Maybe<Scalars['Boolean']['output']>;\n /** Is telephone number verified */\n readonly isVerified?: Maybe<Scalars['Boolean']['output']>;\n /** Telephone id */\n readonly telephoneId: Scalars['ID']['output'];\n /** Telephone number */\n readonly telephoneNumber?: Maybe<Scalars['String']['output']>;\n /** Telephone type */\n readonly telephoneType?: Maybe<TelephoneType>;\n};\n\nexport type PickupPoint = {\n readonly __typename?: 'PickupPoint';\n /** The get pick-up point details. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n readonly deliveryChannelId: Scalars['Long']['output'];\n readonly estimatedDeliveryDate?: Maybe<Scalars['DateTime']['output']>;\n /** Delivery channel can be selected */\n readonly isAllowed: Scalars['Boolean']['output'];\n /** Shipping joker can replace the fee */\n readonly isShippingJoker: Scalars['Boolean']['output'];\n /** Shipping fee before joker is applied */\n readonly originalShippingFee?: Maybe<Scalars['Decimal']['output']>;\n /** Not available products quantity */\n readonly outOfStockQuantity: Scalars['Int']['output'];\n readonly shippingFee: Scalars['Decimal']['output'];\n};\n\nexport type PickupPoints = {\n readonly __typename?: 'PickupPoints';\n readonly collection?: Maybe<ReadonlyArray<Maybe<PickupPoint>>>;\n readonly totalRecords: Scalars['Int']['output'];\n};\n\nexport enum PickupSearchFilter {\n All = 'All',\n DepartmentStore = 'DepartmentStore',\n Lpo = 'Lpo',\n MySpo = 'MySpo',\n PickupPoint = 'PickupPoint',\n PostOffice = 'PostOffice',\n PremiumSpo = 'PremiumSpo',\n Spo = 'Spo'\n}\n\nexport type PlpFacet = {\n readonly __typename?: 'PlpFacet';\n /** Facet is active for products filtering */\n readonly active: Scalars['Boolean']['output'];\n /** Facet display name */\n readonly displayName?: Maybe<Scalars['String']['output']>;\n /** Facet name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Available facet values */\n readonly values: ReadonlyArray<PlpFacetValue>;\n};\n\nexport type PlpFacetInfo = {\n readonly __typename?: 'PlpFacetInfo';\n /** Color hex code (for color-family facet field) */\n readonly color?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PlpFacetValue = {\n readonly __typename?: 'PlpFacetValue';\n /** Facet value is active for products filtering */\n readonly active: Scalars['Boolean']['output'];\n /** Count of products meeting facet condition */\n readonly count: Scalars['Int']['output'];\n /** Value display name */\n readonly displayName?: Maybe<Scalars['String']['output']>;\n /** Facet info */\n readonly facetInfo: PlpFacetInfo;\n /** Value key */\n readonly key?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum PlpOrderBy {\n HighestDiscount = 'HighestDiscount',\n HighestPrice = 'HighestPrice',\n HighestRating = 'HighestRating',\n Latest = 'Latest',\n LowestPrice = 'LowestPrice',\n Recommended = 'Recommended'\n}\n\nexport type PlpOrderingDefinition = {\n readonly __typename?: 'PlpOrderingDefinition';\n /** Display text */\n readonly displayText?: Maybe<Scalars['String']['output']>;\n /** Product ordering strategy */\n readonly orderBy: PlpOrderBy;\n};\n\nexport type PlpRow = {\n readonly __typename?: 'PlpRow';\n readonly content: ReadonlyArray<Maybe<MixedPlpContent>>;\n};\n\nexport type PlpRowsFacetFilterInput = {\n /** Gets or sets the active children keys. */\n readonly keys?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['String']['input']>>>;\n /** Gets or sets the facet name. */\n readonly name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type PopularProductCategory = {\n readonly __typename?: 'PopularProductCategory';\n /** Taxonomy Id */\n readonly taxonomyId: Scalars['Int']['output'];\n};\n\nexport type PopupNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'PopupNewsletterSubsciptionConfiguration';\n /** DelayInSeconds */\n readonly delayInSeconds?: Maybe<Scalars['Int']['output']>;\n /** DisplayFrequencyInDays */\n readonly displayFrequencyInDays?: Maybe<Scalars['Int']['output']>;\n /** Enabled */\n readonly enabled?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type Price = {\n readonly __typename?: 'Price';\n /** Basic cashback amount */\n readonly basicCashback?: Maybe<Scalars['Float']['output']>;\n /** Consultant price from basic catalogue */\n readonly basicCatalogueConsultantPrice?: Maybe<Scalars['Float']['output']>;\n /** Price from basic catalogue */\n readonly basicCataloguePrice?: Maybe<Scalars['Float']['output']>;\n /** Current consultant price */\n readonly currentConsultantPrice?: Maybe<Scalars['Float']['output']>;\n /** Current price */\n readonly currentPrice?: Maybe<Scalars['Float']['output']>;\n /** Extra cashback amount */\n readonly extraCashback?: Maybe<Scalars['String']['output']>;\n /** Previous minimum price in last 30 days */\n readonly previousMinOfferPrice?: Maybe<Scalars['Float']['output']>;\n /** Price after immediate discount */\n readonly priceAfterImmediateDiscount?: Maybe<Scalars['Float']['output']>;\n /** Approximate Share & Earn bonus amount */\n readonly sharingBonus?: Maybe<Scalars['Float']['output']>;\n};\n\n/** The product resolver. */\nexport type Product = {\n readonly __typename?: 'Product';\n /** Accord Dangereux Routier (Classification of Dangerous Goods). */\n readonly adr?: Maybe<Scalars['String']['output']>;\n /** Collection of alternative images */\n readonly alternativeImageUrls?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** The get product availability. */\n readonly availability?: Maybe<ProductAvailability>;\n /** The get back in stock availability. */\n readonly backInStockAvailability?: Maybe<BackInStockAvailability>;\n readonly barcode?: Maybe<Scalars['String']['output']>;\n /** The get benefit catalogue offers. */\n readonly benefitCatalogueOffers?: Maybe<ReadonlyArray<Maybe<CatalogueOffer>>>;\n /** Priority of Best Seller product. */\n readonly bestsellerPriority?: Maybe<Scalars['Int']['output']>;\n /** The product bundle components. */\n readonly bundleComponents?: Maybe<ReadonlyArray<Maybe<BundleComponent>>>;\n /** The get catalogue offers. */\n readonly catalogueOffers?: Maybe<ReadonlyArray<Maybe<CatalogueOffer>>>;\n /** @deprecated Use 'shadeName' field instead */\n readonly color?: Maybe<Scalars['String']['output']>;\n /** @deprecated Use 'hexColors' field instead */\n readonly colorHexCode?: Maybe<Scalars['String']['output']>;\n /** Color url */\n readonly colorImageUrl?: Maybe<Scalars['String']['output']>;\n /** The get concept. */\n readonly concept?: Maybe<Concept>;\n readonly conceptCode?: Maybe<Scalars['String']['output']>;\n readonly depth?: Maybe<Scalars['Int']['output']>;\n /** @deprecated Use 'dimensionsText' field instead */\n readonly dimension?: Maybe<Scalars['String']['output']>;\n /** Localized dimensions of product (including value and units). */\n readonly dimensionsText?: Maybe<Scalars['String']['output']>;\n /** Product discontinuation date (product no more manufactured). */\n readonly discoDate?: Maybe<Scalars['DateTime']['output']>;\n /** Euro monitor class ID. */\n readonly euroMonitorClassId?: Maybe<Scalars['String']['output']>;\n /** The get formatted price. */\n readonly formattedPrice?: Maybe<ProductFormattedPrice>;\n /** Global Commercial Intent (gcint). */\n readonly globalCommercialIntent?: Maybe<Scalars['String']['output']>;\n /** Hash code calculated form the relevant product information */\n readonly hashCode?: Maybe<Scalars['Int']['output']>;\n readonly height?: Maybe<Scalars['Int']['output']>;\n /** Collection of product color hexadecimal codes. */\n readonly hexColors?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Product Image url */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Comma separated list of product ingredients. */\n readonly inci?: Maybe<Scalars['String']['output']>;\n /** The product includeded in bundles. */\n readonly includedInBundles?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** The get ingredients. */\n readonly ingredients?: Maybe<ReadonlyArray<Maybe<Ingredient>>>;\n /** Product introduction date (before the date, the product is not available). */\n readonly introDate?: Maybe<Scalars['DateTime']['output']>;\n /** Flag indicating if product is Best Seller. */\n readonly isBestseller?: Maybe<Scalars['Boolean']['output']>;\n /** Flag indicating whether the product is discontinued */\n readonly isDiscontinued: Scalars['Boolean']['output'];\n /** Flag indicating whether the product is a outlet. True - outlet product. False - product is not a outlet */\n readonly isOutlet: Scalars['Boolean']['output'];\n /** Flag indicating if product is customized. */\n readonly isProductCustomized?: Maybe<Scalars['Boolean']['output']>;\n /** Flag indicating whether the product is a sample. True - sample product. False - product is not a sample */\n readonly isSample: Scalars['Boolean']['output'];\n /** The get labels. */\n readonly labels?: Maybe<ReadonlyArray<Maybe<ProductLabel>>>;\n readonly length?: Maybe<Scalars['Int']['output']>;\n /** Makeup Try On Product Relation */\n readonly makeupTryOn?: Maybe<MakeupTryOnProductRelation>;\n /** The product expected inbound. */\n readonly manufacturers?: Maybe<ReadonlyArray<Maybe<Manufacturer>>>;\n /** The get parent products. */\n readonly parentProducts?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** The get PDP Url. */\n readonly pdpUrl?: Maybe<Link>;\n /** The get product permission. */\n readonly permission?: Maybe<ProductPermission>;\n /** The get price. */\n readonly price?: Maybe<ProductPrice>;\n /** Code that identifies the resulting product */\n readonly productCode: Scalars['ID']['output'];\n /** Product detail page. */\n readonly productDetailPage?: Maybe<ProductDetailPage>;\n /** The product expected inbound. */\n readonly productExpectedInbound?: Maybe<ProductExpectedInbound>;\n /** Type of the product = ['Product', 'Bundle', 'Sample', 'Fee', 'Composite'] */\n readonly productType?: Maybe<ProductType>;\n /** The get purchase catalogue offers. */\n readonly purchaseCatalogueOffers?: Maybe<ReadonlyArray<Maybe<CatalogueOffer>>>;\n /** Recommended products */\n readonly recommendations?: Maybe<ReadonlyArray<Maybe<ProductRecommendation>>>;\n /** The get relations. */\n readonly relations?: Maybe<ReadonlyArray<Maybe<ProductRelation>>>;\n readonly replacedBy?: Maybe<Scalars['String']['output']>;\n /** The get replace by product. */\n readonly replacedByProduct?: Maybe<Product>;\n readonly replacementFor?: Maybe<Scalars['String']['output']>;\n /** The get replacement for product. */\n readonly replacementForProduct?: Maybe<Product>;\n /** The get replacements. */\n readonly replacements?: Maybe<ReadonlyArray<Maybe<ProductReplacement>>>;\n /** The get product sample. */\n readonly sample?: Maybe<Product>;\n /** Localized product shade/color name. */\n readonly shadeName?: Maybe<Scalars['String']['output']>;\n /** Flag indicating if product should be shown on site */\n readonly showOnSite: Scalars['Boolean']['output'];\n /** Product subscription information */\n readonly subscription?: Maybe<Subscription>;\n /** The get subscription benefit banner. */\n readonly subscriptionBenefitBanner?: Maybe<SubscriptionBenefitBanner>;\n /**\n * Collection of product tags\n * @deprecated Should have no use. If you are using the field, contact david.konecny@oriflame.com\n */\n readonly tags?: Maybe<ReadonlyArray<Maybe<Tag>>>;\n /** Thumbnail image url */\n readonly thumbnailUrl?: Maybe<Scalars['String']['output']>;\n readonly toolingBanners?: Maybe<ReadonlyArray<Maybe<ProductToolingBanner>>>;\n /** Product video url */\n readonly videoUrl?: Maybe<Scalars['String']['output']>;\n /** Product volume value. */\n readonly volume?: Maybe<Scalars['Float']['output']>;\n /** @deprecated Use 'volumeValue' field instead */\n readonly volumeText?: Maybe<Scalars['String']['output']>;\n /** @deprecated Use 'volumeUnitText' field instead */\n readonly volumeUnit?: Maybe<Scalars['String']['output']>;\n /** Localized unit of product volume. */\n readonly volumeUnitText?: Maybe<Scalars['String']['output']>;\n /** Localized value of product volume. */\n readonly volumeValue?: Maybe<Scalars['Float']['output']>;\n readonly weight?: Maybe<Scalars['Float']['output']>;\n};\n\n\n/** The product resolver. */\nexport type ProductBenefitCatalogueOffersArgs = {\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The product resolver. */\nexport type ProductCatalogueOffersArgs = {\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The product resolver. */\nexport type ProductPurchaseCatalogueOffersArgs = {\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The product resolver. */\nexport type ProductRelationsArgs = {\n relationTypes?: InputMaybe<ReadonlyArray<ProductRelationType>>;\n};\n\nexport type ProductAvailability = {\n readonly __typename?: 'ProductAvailability';\n /** Expected Inbound */\n readonly expectedInbound?: Maybe<Scalars['DateTime']['output']>;\n /** When item is out of stock, and can be backordered */\n readonly isBackorder?: Maybe<Scalars['Boolean']['output']>;\n /** Is bundle */\n readonly isBundle?: Maybe<Scalars['Boolean']['output']>;\n /** Introduction date of product is close */\n readonly isComingSoon?: Maybe<Scalars['Boolean']['output']>;\n /** Specified by number of days (sitecore) before disco date */\n readonly isLastChance?: Maybe<Scalars['Boolean']['output']>;\n /** Current ATP is lower than 24hr sales history */\n readonly isLowStock?: Maybe<Scalars['Boolean']['output']>;\n /** Number of days (sitecore) after intro date */\n readonly isNew?: Maybe<Scalars['Boolean']['output']>;\n /** Product is discontinued */\n readonly isNoLongerForSale?: Maybe<Scalars['Boolean']['output']>;\n /** Product cant be sold, price = 0, or is deleted */\n readonly isNotSoldOnline?: Maybe<Scalars['Boolean']['output']>;\n /** Is not standard item, catalogue offer for specific period */\n readonly isOffer?: Maybe<Scalars['Boolean']['output']>;\n /** Out of stock */\n readonly isOutOfStock?: Maybe<Scalars['Boolean']['output']>;\n /** Is sales limited */\n readonly isSalesLimited?: Maybe<Scalars['Boolean']['output']>;\n readonly isSoldOut?: Maybe<Scalars['Boolean']['output']>;\n /** Product is Super Deal */\n readonly isSuperDeal?: Maybe<Scalars['Boolean']['output']>;\n readonly replacements?: Maybe<ReadonlyArray<Maybe<ProductReplacement>>>;\n};\n\nexport type ProductDetailMakeupTryOnConfiguration = {\n readonly __typename?: 'ProductDetailMakeupTryOnConfiguration';\n /** allows Live Camera Label */\n readonly allowsLiveCameraLabel?: Maybe<Scalars['String']['output']>;\n /** Enabled */\n readonly enabled?: Maybe<Scalars['Boolean']['output']>;\n /** Shi Shi Component Url */\n readonly shiShiComponentUrl?: Maybe<Scalars['String']['output']>;\n /** try It On Label */\n readonly tryItOnLabel?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductDetailMetadata = {\n readonly __typename?: 'ProductDetailMetadata';\n readonly jsonLd?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type ProductDetailPage = {\n readonly __typename?: 'ProductDetailPage';\n /** Breadcrumb links */\n readonly breadcrumbLinks?: Maybe<BreadcrumbLinks>;\n /** PDP configuration */\n readonly configuration?: Maybe<ProductDetailPageConfiguration>;\n /** Editorial carousel */\n readonly editorialCarousel?: Maybe<EditorialCarousel>;\n readonly guarantees: ProductDetailPageGuarantees;\n readonly metadata: ProductDetailMetadata;\n /** Product */\n readonly product?: Maybe<Product>;\n readonly sections?: Maybe<ProductDetailPageSectionsContent>;\n /** Tooling banners */\n readonly toolingBanners: ReadonlyArray<ProductToolingBanner>;\n};\n\nexport type ProductDetailPageAboutSection = {\n readonly __typename?: 'ProductDetailPageAboutSection';\n readonly label?: Maybe<Scalars['String']['output']>;\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductDetailPageAdditionalInfoSection = {\n readonly __typename?: 'ProductDetailPageAdditionalInfoSection';\n readonly expiryDate?: Maybe<ProductDetailPageExpirationDate>;\n readonly isImporterInfoEnabled: Scalars['Boolean']['output'];\n readonly label?: Maybe<Scalars['String']['output']>;\n readonly manufacturers?: Maybe<ProductDetailPageManufacturers>;\n};\n\nexport type ProductDetailPageConfiguration = {\n readonly __typename?: 'ProductDetailPageConfiguration';\n /** Is MRP statement enabled */\n readonly isMrpStatementEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is sharing enabled */\n readonly isSharingEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Max quantity */\n readonly maxQuantity?: Maybe<Scalars['Int']['output']>;\n /** Product detail page sections */\n readonly sections?: Maybe<ProductDetailPageSections>;\n /** Shipping info */\n readonly shippingInfo?: Maybe<ProductDetailShippingInfo>;\n};\n\nexport type ProductDetailPageExpirationDate = {\n readonly __typename?: 'ProductDetailPageExpirationDate';\n readonly label?: Maybe<Scalars['String']['output']>;\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductDetailPageGuarantees = {\n readonly __typename?: 'ProductDetailPageGuarantees';\n /** Collection of payment methods */\n readonly deliveryFee?: Maybe<DeliveryFee>;\n /** Information about free delivery */\n readonly freeDelivery?: Maybe<FreeDelivery>;\n /** Collection of payment methods */\n readonly paymentMethods: ReadonlyArray<PaymentMethod>;\n /** Time guarantees for delivery */\n readonly timeGuarantees?: Maybe<TimeGuarantees>;\n};\n\nexport type ProductDetailPageIngredient = {\n readonly __typename?: 'ProductDetailPageIngredient';\n readonly label?: Maybe<Scalars['String']['output']>;\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductDetailPageManufacturer = {\n readonly __typename?: 'ProductDetailPageManufacturer';\n readonly address1?: Maybe<Scalars['String']['output']>;\n readonly address2?: Maybe<Scalars['String']['output']>;\n readonly city?: Maybe<Scalars['String']['output']>;\n readonly countryCode?: Maybe<Scalars['String']['output']>;\n readonly countryName?: Maybe<Scalars['String']['output']>;\n readonly manufacturerId?: Maybe<Scalars['String']['output']>;\n readonly name?: Maybe<Scalars['String']['output']>;\n readonly state?: Maybe<Scalars['String']['output']>;\n readonly zipCode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductDetailPageManufacturers = {\n readonly __typename?: 'ProductDetailPageManufacturers';\n readonly countryOfOriginLabel?: Maybe<Scalars['String']['output']>;\n readonly informationLabel?: Maybe<Scalars['String']['output']>;\n readonly label?: Maybe<Scalars['String']['output']>;\n readonly manufacturers?: Maybe<ReadonlyArray<Maybe<ProductDetailPageManufacturer>>>;\n};\n\nexport type ProductDetailPageSections = {\n readonly __typename?: 'ProductDetailPageSections';\n /** Indicates if the about section is disabled */\n readonly aboutDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates if the additional information section is disabled */\n readonly additionalInformationDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates if the beauty edit module is disabled */\n readonly beautyEditModuleDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates if the how to use section is disabled */\n readonly howToUseDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates if the ingredients section is disabled */\n readonly ingredientsDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Inducates if the rating and reviews section is disabled */\n readonly ratingAndReviewsDisabled?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates if the shipping info section is disabled */\n readonly shippingInfoDisabled?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type ProductDetailPageSectionsContent = {\n readonly __typename?: 'ProductDetailPageSectionsContent';\n readonly about?: Maybe<ProductDetailPageAboutSection>;\n readonly additionalInformation?: Maybe<ProductDetailPageAdditionalInfoSection>;\n readonly ingredients?: Maybe<ReadonlyArray<Maybe<ProductDetailPageIngredient>>>;\n};\n\nexport type ProductDetailShippingInfo = {\n readonly __typename?: 'ProductDetailShippingInfo';\n /** Shipping info content */\n readonly content?: Maybe<Scalars['String']['output']>;\n /** Shipping info title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductExpectedInbound = {\n readonly __typename?: 'ProductExpectedInbound';\n /** Expected Inbound Date */\n readonly expectedInboundDate?: Maybe<Scalars['DateTime']['output']>;\n /** Expected Inbound Label */\n readonly expectedInboundLabel?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductFormattedPrice = {\n readonly __typename?: 'ProductFormattedPrice';\n /** Business points assigned to the product */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Timestamp of when price was calculated */\n readonly dateCalculated?: Maybe<Scalars['DateTime']['output']>;\n /** Object containing concept's prices */\n readonly price?: Maybe<FormattedPrice>;\n};\n\nexport type ProductLabel = {\n readonly __typename?: 'ProductLabel';\n /** Help text */\n readonly helpText?: Maybe<Scalars['String']['output']>;\n /** Key of the label */\n readonly labelKey: Scalars['ID']['output'];\n /** Product label domain type */\n readonly productLabelDomain?: Maybe<ProductLabelDomainType>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n/** Product Label Domain Type */\nexport enum ProductLabelDomainType {\n /** Only Offer, New, SuperDeal */\n Deal = 'Deal',\n Ppa = 'PPA',\n /** Domain Type for AddToBasketVisible ProductLabelType */\n Shopping = 'Shopping'\n}\n\nexport type ProductList = {\n readonly __typename?: 'ProductList';\n /** Date of creation */\n readonly created?: Maybe<Scalars['DateTime']['output']>;\n /** Collection of product items */\n readonly items?: Maybe<ReadonlyArray<Maybe<ProductListItem>>>;\n /** Name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Id */\n readonly productListId: Scalars['ID']['output'];\n /** Type of product list */\n readonly productListType?: Maybe<ProductListType>;\n};\n\nexport type ProductListItem = {\n readonly __typename?: 'ProductListItem';\n /** Product code */\n readonly itemCode?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ProductListType {\n Favorite = 'Favorite',\n Personal = 'Personal',\n Private = 'Private',\n Wishlist = 'Wishlist'\n}\n\nexport type ProductListingBanner = {\n readonly __typename?: 'ProductListingBanner';\n readonly contentVerticalAlignment?: Maybe<Scalars['String']['output']>;\n readonly headline?: Maybe<Scalars['String']['output']>;\n readonly imageHoverUrl?: Maybe<Scalars['String']['output']>;\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n readonly isUpperCase: Scalars['Boolean']['output'];\n readonly link?: Maybe<Link>;\n readonly size: Scalars['Int']['output'];\n readonly textColour?: Maybe<Scalars['String']['output']>;\n};\n\n/** Enum ProductListingBannerVideoType */\nexport enum ProductListingBannerVideoType {\n Mp4 = 'Mp4',\n None = 'None',\n Youku = 'Youku',\n Youtube = 'Youtube'\n}\n\nexport type ProductListingPage = {\n readonly __typename?: 'ProductListingPage';\n readonly contentCollection?: Maybe<ReadonlyArray<Maybe<ProductListingPageContent>>>;\n /** Page's Description */\n readonly desription?: Maybe<Scalars['String']['output']>;\n /** Main image's url */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Page's Name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Page's ID */\n readonly pageId: Scalars['ID']['output'];\n /** Related editorial pages */\n readonly relatedEditorialPages?: Maybe<ReadonlyArray<Maybe<EditorialPage>>>;\n /** Page's Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type ProductListingPageRelatedEditorialPagesArgs = {\n channelType: EditorialChannelType;\n};\n\nexport type ProductListingPageContent = Product | ProductListingPromoBanner;\n\nexport type ProductListingProduct = {\n readonly __typename?: 'ProductListingProduct';\n readonly pricePosX: Scalars['Int']['output'];\n readonly pricePosY: Scalars['Int']['output'];\n /** The get product. */\n readonly product?: Maybe<Product>;\n};\n\nexport type ProductListingPromoBanner = {\n readonly __typename?: 'ProductListingPromoBanner';\n readonly productListingBanner?: Maybe<ProductListingBanner>;\n readonly productListingProduct?: Maybe<ProductListingProduct>;\n readonly productListingVideo?: Maybe<ProductListingVideo>;\n};\n\nexport type ProductListingVideo = {\n readonly __typename?: 'ProductListingVideo';\n readonly autoplayOnScroll: Scalars['Boolean']['output'];\n readonly id?: Maybe<Scalars['String']['output']>;\n readonly playInLoop: Scalars['Boolean']['output'];\n readonly type: ProductListingBannerVideoType;\n};\n\nexport type ProductPermission = {\n readonly __typename?: 'ProductPermission';\n /** Product can be put into the basket owned by specified category of the customer */\n readonly canBuy?: Maybe<Scalars['Boolean']['output']>;\n /** Product can be displayed on web site or any other mobile application. Product display might not be available if the flag is set to false. */\n readonly canDisplay?: Maybe<Scalars['Boolean']['output']>;\n /** Logged-in customer of specified category can put a product to current/active basket */\n readonly canSell?: Maybe<Scalars['Boolean']['output']>;\n /** Code that identifies the resulting product */\n readonly productCode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductPrice = {\n readonly __typename?: 'ProductPrice';\n /** Business points */\n readonly bp?: Maybe<Scalars['Float']['output']>;\n /** Currency symbol, for example: \"€\", \"$\" */\n readonly currency?: Maybe<Scalars['String']['output']>;\n /** Date calculated */\n readonly dateCalculated?: Maybe<Scalars['DateTime']['output']>;\n /** Prices */\n readonly price?: Maybe<Price>;\n};\n\n/** The product recommendation resolver. */\nexport type ProductRecommendation = {\n readonly __typename?: 'ProductRecommendation';\n /** Recommended product */\n readonly recommendedProduct?: Maybe<Product>;\n /** @deprecated Use ProductCode from RecommendedProduct instead. */\n readonly recommendedProductCode?: Maybe<Scalars['ID']['output']>;\n /** Recommended product similarity to the original product */\n readonly similarity?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type ProductRelation = {\n readonly __typename?: 'ProductRelation';\n /** Related products */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n readonly relationType?: Maybe<ProductRelationType>;\n};\n\nexport enum ProductRelationType {\n Favourite = 'Favourite',\n Popular = 'Popular',\n RecentlyViewed = 'RecentlyViewed',\n Related = 'Related',\n Samples = 'Samples'\n}\n\nexport type ProductReplacement = {\n readonly __typename?: 'ProductReplacement';\n /** Replacement product */\n readonly product?: Maybe<Product>;\n /** Replacement quantity */\n readonly quantity?: Maybe<Scalars['Int']['output']>;\n readonly replacementType?: Maybe<ProductReplacementType>;\n};\n\nexport enum ProductReplacementType {\n /** Alternative replacement. */\n Alternative = 'Alternative',\n /** Automatic replacement without interaction with user. */\n Automatic = 'Automatic',\n /** Manual replacement during shopping. */\n Manual = 'Manual',\n /** Taste replacement of subscribed product. */\n Subscription = 'Subscription',\n /** Automatic replacement of subscribed wellness product without interaction with user. */\n WellnessAutomatic = 'WellnessAutomatic',\n /** Manual replacement of subscribed wellness product during shopping. */\n WellnessManual = 'WellnessManual'\n}\n\nexport type ProductSearchPage = {\n readonly __typename?: 'ProductSearchPage';\n /**\n * Query products based on the specified parameters.\n *\n *\n * **Returns:**\n * The products matching the search criteria.\n */\n readonly products: ProductSearchPageProducts;\n};\n\n\nexport type ProductSearchPageProductsArgs = {\n facetFiltering?: InputMaybe<ReadonlyArray<PlpRowsFacetFilterInput>>;\n orderBy?: PlpOrderBy;\n query: Scalars['String']['input'];\n skipRows?: Scalars['Int']['input'];\n topRows?: Scalars['Int']['input'];\n};\n\nexport type ProductSearchPageProducts = {\n readonly __typename?: 'ProductSearchPageProducts';\n readonly facets: ReadonlyArray<PlpFacet>;\n readonly orderByOptions: ReadonlyArray<PlpOrderingDefinition>;\n readonly rows: ReadonlyArray<PlpRow>;\n readonly totalProductsCount: Scalars['Int']['output'];\n};\n\nexport type ProductSearchPreview = {\n readonly __typename?: 'ProductSearchPreview';\n /** Search results */\n readonly searchResults: ProductSearchResults;\n};\n\n\nexport type ProductSearchPreviewSearchResultsArgs = {\n query: Scalars['String']['input'];\n top?: Scalars['Int']['input'];\n};\n\n/** Represents the results of a product search. */\nexport type ProductSearchResults = {\n readonly __typename?: 'ProductSearchResults';\n /** List of products for the given search results. */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n /** Suggestions for subsequent search queries */\n readonly suggestions: ReadonlyArray<Scalars['String']['output']>;\n /** Total count of products. */\n readonly totalProductsCount: Scalars['Int']['output'];\n};\n\nexport type ProductStandards = {\n readonly __typename?: 'ProductStandards';\n /** Section's headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Product standards images */\n readonly images?: Maybe<ReadonlyArray<Maybe<FrontPageImage>>>;\n /** Section's main text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProductToolingBanner = {\n readonly __typename?: 'ProductToolingBanner';\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image URL */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link */\n readonly link?: Maybe<Link>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ProductType {\n Bundle = 'Bundle',\n Composite = 'Composite',\n Fee = 'Fee',\n Product = 'Product',\n Sample = 'Sample'\n}\n\nexport type ProductsPromotionBanner = {\n readonly __typename?: 'ProductsPromotionBanner';\n /** Font color of the iconic products banner. */\n readonly fontColor: StorybookColor;\n /** Headline of the iconic products banner. */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** URL of the image for the iconic products banner. */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link associated with the iconic products banner. */\n readonly link?: Maybe<Link>;\n};\n\n/** The query. */\nexport type Query = {\n readonly __typename?: 'Query';\n readonly application?: Maybe<Application>;\n /** The get personal beauty store. */\n readonly beautyStore?: Maybe<PersonalBeautyStore>;\n /** The get categories. */\n readonly categories?: Maybe<ReadonlyArray<Maybe<Category>>>;\n /** The get category. */\n readonly category?: Maybe<Category>;\n readonly claiming?: Maybe<Claiming>;\n /** Provides concepts. */\n readonly concept?: Maybe<Concept>;\n /** Provides concepts. */\n readonly concepts?: Maybe<ReadonlyArray<Maybe<Concept>>>;\n /** The get customer. */\n readonly customer?: Maybe<Customer>;\n /** Gets the ingredients. */\n readonly ingredients?: Maybe<ReadonlyArray<Maybe<Ingredient>>>;\n /** The get invite friend profile. */\n readonly inviteFriendProfile?: Maybe<InviteFriendProfile>;\n readonly languages?: Maybe<ReadonlyArray<Maybe<Language>>>;\n readonly mobileApps?: Maybe<MobileApps>;\n readonly newsletterSubsciptionConfiguration?: Maybe<NewsletterSubsciptionConfiguration>;\n /** The get order. */\n readonly order?: Maybe<Order>;\n /** Get order history. */\n readonly orders?: Maybe<Orders>;\n /** The get product. */\n readonly product?: Maybe<Product>;\n /** The get products. */\n readonly products?: Maybe<ReadonlyArray<Maybe<Product>>>;\n readonly shopping?: Maybe<Shopping>;\n readonly socialMediaLinks?: Maybe<ReadonlyArray<Maybe<SocialMediaLinks>>>;\n readonly subscribing?: Maybe<Subscribing>;\n readonly vipCustomerBanner?: Maybe<VipCustomerBanner>;\n};\n\n\n/** The query. */\nexport type QueryBeautyStoreArgs = {\n name?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\n/** The query. */\nexport type QueryCategoriesArgs = {\n taxonomyIds?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n};\n\n\n/** The query. */\nexport type QueryCategoryArgs = {\n taxonomyId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\n/** The query. */\nexport type QueryConceptArgs = {\n conceptCode?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\n/** The query. */\nexport type QueryConceptsArgs = {\n conceptCodes?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The query. */\nexport type QueryIngredientsArgs = {\n ingredientNames?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['String']['input']>>>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The query. */\nexport type QueryInviteFriendProfileArgs = {\n consultantNumber: Scalars['Int']['input'];\n};\n\n\n/** The query. */\nexport type QueryOrderArgs = {\n orderId: Scalars['ID']['input'];\n};\n\n\n/** The query. */\nexport type QueryOrdersArgs = {\n customerId?: InputMaybe<Scalars['Long']['input']>;\n excludeWeChatOrders?: Scalars['Boolean']['input'];\n historyType?: OrderHistoryType;\n searchPhase?: InputMaybe<Scalars['String']['input']>;\n skip?: Scalars['Int']['input'];\n status?: OrderStatus;\n top?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\n/** The query. */\nexport type QueryProductArgs = {\n productCode?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\n/** The query. */\nexport type QueryProductsArgs = {\n productCodes?: InputMaybe<ReadonlyArray<InputMaybe<Scalars['ID']['input']>>>;\n};\n\nexport type RatingsAndReviewsConfiguration = {\n readonly __typename?: 'RatingsAndReviewsConfiguration';\n readonly legalNoticeLink?: Maybe<Link>;\n readonly legalNoticeText?: Maybe<Scalars['String']['output']>;\n readonly testFreaksConfiguration?: Maybe<TestFreaksConfiguration>;\n};\n\nexport type RecruitmentInfo = {\n readonly __typename?: 'RecruitmentInfo';\n readonly recruitDate?: Maybe<Scalars['DateTime']['output']>;\n readonly signUpDate?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type ReferralProgram = {\n readonly __typename?: 'ReferralProgram';\n /** Allowed contacts */\n readonly allowedContacts?: Maybe<ReadonlyArray<SocialContactType>>;\n /** Referral link */\n readonly benefitsLink?: Maybe<Link>;\n /** Greetings message */\n readonly greetingMessage?: Maybe<Scalars['String']['output']>;\n /** Message */\n readonly message?: Maybe<Scalars['String']['output']>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum ReplacementType {\n Alternative = 'Alternative',\n Automatic = 'Automatic',\n Manual = 'Manual'\n}\n\nexport type ResponseMessageNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'ResponseMessageNewsletterSubsciptionConfiguration';\n /** text */\n readonly text?: Maybe<Scalars['String']['output']>;\n /** Type */\n readonly type?: Maybe<ResponseMessageNewsletterSubsciptionsType>;\n};\n\n/** ResponseMessageNewsletterSubsciptionsType */\nexport enum ResponseMessageNewsletterSubsciptionsType {\n /** Cleaned */\n Cleaned = 'Cleaned',\n /** New */\n New = 'New',\n /** Pending */\n Pending = 'Pending',\n /** Subscribed */\n Subscribed = 'Subscribed',\n /** Unsubscribed */\n Unsubscribed = 'Unsubscribed'\n}\n\nexport type SalesBoosterQualificationInfo = {\n readonly __typename?: 'SalesBoosterQualificationInfo';\n readonly actualBp: Scalars['Float']['output'];\n readonly bonusAmount: Scalars['Float']['output'];\n readonly bonusAmountDifference?: Maybe<Scalars['Float']['output']>;\n readonly bpConditionsFulfilled: Scalars['Boolean']['output'];\n readonly dashboardImage?: Maybe<Scalars['String']['output']>;\n readonly firstLevelBvRateReward: Scalars['Float']['output'];\n readonly firstLevelMemberSubtypeBvRateReward: Scalars['Float']['output'];\n readonly firstLineMemberBp: Scalars['Float']['output'];\n readonly firstLineMemberBpPercentage: Scalars['Float']['output'];\n readonly level?: Maybe<Scalars['Int']['output']>;\n readonly maxAmountCapPersonal: Scalars['Float']['output'];\n readonly maxAmountCapTotal: Scalars['Float']['output'];\n readonly maxBpFromFirstLineMembers: Scalars['Float']['output'];\n readonly pageTopImage?: Maybe<Scalars['String']['output']>;\n readonly personalBp: Scalars['Float']['output'];\n readonly personalBpPercentage: Scalars['Float']['output'];\n readonly personalBvRateReward: Scalars['Float']['output'];\n readonly personalBvRateRewardDifference?: Maybe<Scalars['Float']['output']>;\n readonly showPersonalBpAlert: Scalars['Boolean']['output'];\n readonly targetBp: Scalars['Float']['output'];\n readonly termsAndConditionsLink?: Maybe<Scalars['String']['output']>;\n readonly version?: Maybe<Scalars['Int']['output']>;\n readonly youtubeVideoId?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum SettingsClientType {\n OnlineReportingGrid = 'OnlineReportingGrid',\n WellnessClub = 'WellnessClub'\n}\n\nexport enum SettingsFormatType {\n Json = 'Json',\n String = 'String',\n Xml = 'Xml'\n}\n\nexport type ShareAndEarn = {\n readonly __typename?: 'ShareAndEarn';\n /** Frequently Asked Questions section */\n readonly faqSection?: Maybe<ShareAndEarnFaqSection>;\n /** How it works section */\n readonly howItWorksSection?: Maybe<ShareAndEarnHowItWorksSection>;\n /** Personal code edit page */\n readonly personalCodeEditPage?: Maybe<ShareAndEarnPersonalCodeEditPage>;\n /** Personal links content */\n readonly personalLinksContent?: Maybe<ShareAndEarnPersonalLinks>;\n /** Share and earn section */\n readonly shareAndEarnSection?: Maybe<ShareAndEarnShareSection>;\n /** Sharing conditions */\n readonly sharingConditions?: Maybe<ShareAndEarnConditions>;\n /** Top section */\n readonly topSection?: Maybe<ShareAndEarnTopSection>;\n};\n\nexport type ShareAndEarnConditionItem = {\n readonly __typename?: 'ShareAndEarnConditionItem';\n /** Condition text */\n readonly lines?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Condition title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnConditions = {\n readonly __typename?: 'ShareAndEarnConditions';\n /** Condition collection */\n readonly collection?: Maybe<ReadonlyArray<Maybe<ShareAndEarnConditionItem>>>;\n /** Conditions headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnFaqItem = {\n readonly __typename?: 'ShareAndEarnFaqItem';\n /** Content */\n readonly content?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnFaqSection = {\n readonly __typename?: 'ShareAndEarnFaqSection';\n /** Collection of FAQ items */\n readonly collection?: Maybe<ReadonlyArray<Maybe<ShareAndEarnFaqItem>>>;\n /** Headline of the section */\n readonly headline?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnHowItWorksSection = {\n readonly __typename?: 'ShareAndEarnHowItWorksSection';\n /** Conditions link title */\n readonly conditionsLinkTitle?: Maybe<Scalars['String']['output']>;\n /** Earn description */\n readonly earnDescription?: Maybe<Scalars['String']['output']>;\n /** Earn title */\n readonly earnTitle?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Invite description */\n readonly inviteDescription?: Maybe<Scalars['String']['output']>;\n /** Invite title */\n readonly inviteTitle?: Maybe<Scalars['String']['output']>;\n /** Share description */\n readonly shareDescription?: Maybe<Scalars['String']['output']>;\n /** Share title */\n readonly shareTitle?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnPersonalCodeEditPage = {\n readonly __typename?: 'ShareAndEarnPersonalCodeEditPage';\n /** Button applied label */\n readonly buttonAppliedLabel?: Maybe<Scalars['String']['output']>;\n /** Button cancel label */\n readonly buttonCancelLabel?: Maybe<Scalars['String']['output']>;\n /** Button change label */\n readonly buttonChangeLabel?: Maybe<Scalars['String']['output']>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Invalid code message */\n readonly invalidCodeMessage?: Maybe<Scalars['String']['output']>;\n /** Your code label */\n readonly yourCodeLabel?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnPersonalLinks = {\n readonly __typename?: 'ShareAndEarnPersonalLinks';\n /** Copy label */\n readonly copyLabel?: Maybe<Scalars['String']['output']>;\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Instructions */\n readonly instructions?: Maybe<Scalars['String']['output']>;\n /** Links */\n readonly links?: Maybe<ReadonlyArray<Maybe<SharingLink>>>;\n /** Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnShareSection = {\n readonly __typename?: 'ShareAndEarnShareSection';\n /** Description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Sharing card */\n readonly sharingCard?: Maybe<SharingCard>;\n};\n\nexport type ShareAndEarnTopSection = {\n readonly __typename?: 'ShareAndEarnTopSection';\n /** Top section description */\n readonly description?: Maybe<Scalars['String']['output']>;\n /** Top section headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ShareAndEarnUpdatePersonalCodeInput = {\n /** The customer ID of the customer who wants to update the personal code. */\n readonly customerId?: InputMaybe<Scalars['String']['input']>;\n /** The new personal code */\n readonly newPersonalCode?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type SharedAddress = {\n readonly __typename?: 'SharedAddress';\n readonly addressId: Scalars['ID']['output'];\n readonly area?: Maybe<Scalars['String']['output']>;\n readonly city?: Maybe<Scalars['String']['output']>;\n readonly country?: Maybe<Scalars['String']['output']>;\n readonly district?: Maybe<Scalars['String']['output']>;\n readonly locality?: Maybe<Scalars['String']['output']>;\n readonly province?: Maybe<Scalars['String']['output']>;\n readonly region?: Maybe<Scalars['String']['output']>;\n readonly streetAddress?: Maybe<Scalars['String']['output']>;\n readonly zipcode?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SharingCard = {\n readonly __typename?: 'SharingCard';\n /** From label */\n readonly fromLabel?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n /** Use code label */\n readonly useCodeLabel?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SharingLink = {\n readonly __typename?: 'SharingLink';\n /** Link definition */\n readonly link?: Maybe<Link>;\n /** Link tooltip */\n readonly tooltip?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SharingLinks = {\n readonly __typename?: 'SharingLinks';\n /** Link to the current digital catalogue */\n readonly currentCatalogue: Link;\n readonly otherCatalogue: Link;\n};\n\n\nexport type SharingLinksCurrentCatalogueArgs = {\n pageNumber?: InputMaybe<Scalars['Int']['input']>;\n title?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type SharingLinksOtherCatalogueArgs = {\n catalogueId: Scalars['String']['input'];\n pageNumber?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/** Shopping query root */\nexport type Shopping = {\n readonly __typename?: 'Shopping';\n /** The get delivery channel. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n /** The get shopping session. */\n readonly shoppingSession?: Maybe<ShoppingSession>;\n};\n\n\n/** Shopping query root */\nexport type ShoppingDeliveryChannelArgs = {\n deliveryChannelId: Scalars['Long']['input'];\n};\n\n\n/** Shopping query root */\nexport type ShoppingShoppingSessionArgs = {\n sessionId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ShoppingSession = {\n readonly __typename?: 'ShoppingSession';\n /** For who the order is going to be placed */\n readonly customerId: Scalars['Long']['output'];\n /** The get selected delivery channel and addresses. */\n readonly delivery?: Maybe<DeliverySelectionSummary>;\n /** Find available pick-up points based on search criteria. */\n readonly deliveryChannels?: Maybe<PickupPoints>;\n /** Find available delivery options. */\n readonly deliveryOptions?: Maybe<DeliveryOptions>;\n /** Shopping by not authorized person */\n readonly isAnonymous: Scalars['Boolean']['output'];\n readonly isShoppingBlocked: Scalars['Boolean']['output'];\n /** VIP shopping (guarantee order on behalf of consultant) */\n readonly isVip: Scalars['Boolean']['output'];\n /** Channel used for placing order */\n readonly origin: OrderOrigin;\n /** The shopping session id */\n readonly sessionId: Scalars['ID']['output'];\n};\n\n\nexport type ShoppingSessionDeliveryChannelsArgs = {\n deliveryMethod?: InputMaybe<DeliveryMethodType>;\n latitude?: InputMaybe<Scalars['Float']['input']>;\n longitude?: InputMaybe<Scalars['Float']['input']>;\n radius?: InputMaybe<Scalars['Float']['input']>;\n searchFilter?: InputMaybe<PickupSearchFilter>;\n searchTerm?: InputMaybe<Scalars['String']['input']>;\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\n\nexport type ShoppingSessionDeliveryOptionsArgs = {\n filter?: DeliverySearchFilter;\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\n/** Live video show type */\nexport enum ShowType {\n /** Show is recorded */\n Ended = 'Ended',\n /** Show is running now */\n Live = 'Live',\n /** Show not started yet */\n Scheduled = 'Scheduled'\n}\n\nexport type SizedImage = {\n readonly __typename?: 'SizedImage';\n /** Url of the image */\n readonly url?: Maybe<Scalars['String']['output']>;\n /** Width of the image */\n readonly width?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type SocialContact = {\n readonly __typename?: 'SocialContact';\n /** Type of contact, eg. phone, WhatsUp, Facebook ... */\n readonly type?: Maybe<SocialContactType>;\n /** Social contact value */\n readonly value?: Maybe<Scalars['String']['output']>;\n};\n\n/** Types of social contact */\nexport enum SocialContactType {\n /** Email */\n Email = 'Email',\n /** Facebook */\n Facebook = 'Facebook',\n /** Phone */\n PhoneNumber = 'PhoneNumber',\n /** VKontakte */\n VKontakte = 'VKontakte',\n /** WeChat */\n WeChat = 'WeChat',\n /** WhatsUp */\n WhatsUpNumber = 'WhatsUpNumber'\n}\n\nexport type SocialMediaLinks = {\n readonly __typename?: 'SocialMediaLinks';\n /** Social Media Link Title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Social Media type */\n readonly type?: Maybe<SocialMediaType>;\n /** Social Media Link url */\n readonly url?: Maybe<Scalars['String']['output']>;\n};\n\n/** Types of social media */\nexport enum SocialMediaType {\n /** Facebook */\n Facebook = 'Facebook',\n /** Instagram */\n Instagram = 'Instagram',\n /** Line */\n Line = 'Line',\n /** Odnoklassniki */\n Odnoklassniki = 'Odnoklassniki',\n /** Pinterest */\n Pinterest = 'Pinterest',\n Qq = 'Qq',\n /** Telegram */\n Telegram = 'Telegram',\n /** Twitter */\n Twitter = 'Twitter',\n /** VKontakte */\n VKontakte = 'VKontakte',\n /** WeChat */\n WeChat = 'WeChat',\n /** Weibo */\n Weibo = 'Weibo',\n /** YouTube */\n YouTube = 'YouTube',\n /** Youku */\n Youku = 'Youku'\n}\n\nexport type Sponsor = {\n readonly __typename?: 'Sponsor';\n /** Consultant number of sponsor */\n readonly consultantNumber?: Maybe<Scalars['Int']['output']>;\n /** Customer ID of sponsor */\n readonly customerId?: Maybe<Scalars['Int']['output']>;\n /** The get customer emails. */\n readonly emails?: Maybe<ReadonlyArray<Maybe<Email>>>;\n /** Full name (formatted) of sponsor */\n readonly fullName?: Maybe<Scalars['String']['output']>;\n /** The get customer phones. */\n readonly phones?: Maybe<ReadonlyArray<Maybe<Phone>>>;\n /** The get profile image. */\n readonly profileImage?: Maybe<DocumentInfo>;\n /** Type of sponsor (relation to customer). */\n readonly sponsorType?: Maybe<SponsorType>;\n};\n\n/** Sponsor type */\nexport enum SponsorType {\n DirectSponsor = 'DirectSponsor'\n}\n\n/** Colors enum referring to FE storybook */\nexport enum StorybookColor {\n /** Shades/palette.blue[100] */\n Blue100 = 'Blue100',\n /** Shades/palette.brown[50] */\n Brown50 = 'Brown50',\n /** Shades/palette.brown[300] */\n Brown300 = 'Brown300',\n /** Shades/palette.brown[400] */\n Brown400 = 'Brown400',\n /** Extra colors/palette.common.white */\n CommonWhite = 'CommonWhite',\n /** Palette - Main colors/palette.default.contrastText */\n DefaultContrastText = 'DefaultContrastText',\n /** Palette - Main colors/palette.default.main */\n DefaultMain = 'DefaultMain',\n /** Shades/palette.green[50] */\n Green50 = 'Green50',\n /** Shades/palette.green[200] */\n Green200 = 'Green200',\n /** Shades/palette.green[400] */\n Green400 = 'Green400',\n /** Shades/palette.grey[50] */\n Grey50 = 'Grey50',\n /** Shades/palette.grey[100] */\n Grey100 = 'Grey100',\n /** Shades/palette.grey[700] */\n Grey700 = 'Grey700',\n /** Shades/palette.grey[900] */\n Grey900 = 'Grey900',\n /** InfoDark */\n InfoDark = 'InfoDark',\n /** Shades/palette.pink[50] */\n Pink50 = 'Pink50',\n /** Shades/palette.pink[300] */\n Pink300 = 'Pink300',\n /** Palette - Main colors/palette.default.primarycontrastText */\n PrimaryContrastText = 'PrimaryContrastText',\n /** PrimaryLight */\n PrimaryLight = 'PrimaryLight',\n /** Palette - Main colors/palette.default.primarymain */\n PrimaryMain = 'PrimaryMain',\n /** Shades/palette.purple[50] */\n Purple50 = 'Purple50',\n /** Shades/palette.purple[200] */\n Purple200 = 'Purple200',\n /** Shades/palette.purple[400] */\n Purple400 = 'Purple400',\n /** Shades/palette.red[50] */\n Red50 = 'Red50',\n /** Palette - Main colors/palette.default.secondaryContrastText */\n SecondaryContrastText = 'SecondaryContrastText',\n /** Palette - Main colors/palette.secondary.main */\n SecondaryMain = 'SecondaryMain',\n /** Typography/palette.text.primary */\n TextPrimary = 'TextPrimary',\n /** Typography/palette.text.secondary */\n TextSecondary = 'TextSecondary',\n /** Undefined value, its an error when this occurs */\n Undefined = 'Undefined',\n /** Shades/palette.yellow[50] */\n Yellow50 = 'Yellow50',\n /** Shades/palette.yellow[400] */\n Yellow400 = 'Yellow400'\n}\n\nexport type SubmitDialogNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'SubmitDialogNewsletterSubsciptionConfiguration';\n /** EmailLabel */\n readonly emailLabel?: Maybe<Scalars['String']['output']>;\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** InvalidEmailLabel */\n readonly invalidEmailLabel?: Maybe<Scalars['String']['output']>;\n /** PrivacyPolicyText */\n readonly privacyPolicyText?: Maybe<Scalars['String']['output']>;\n /** PrivacyPolicyUrl */\n readonly privacyPolicyUrl?: Maybe<Scalars['String']['output']>;\n /** PrivacyPolicyUrlText */\n readonly privacyPolicyUrlText?: Maybe<Scalars['String']['output']>;\n /** SubscribeButtonText */\n readonly subscribeButtonText?: Maybe<Scalars['String']['output']>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SubscribedDialogNewsletterSubsciptionConfiguration = {\n readonly __typename?: 'SubscribedDialogNewsletterSubsciptionConfiguration';\n /** Headline */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Text */\n readonly text?: Maybe<Scalars['String']['output']>;\n};\n\n/** Subscription query root */\nexport type Subscribing = {\n readonly __typename?: 'Subscribing';\n /** The get personal subscriptions of customer. */\n readonly personalSubscriptions?: Maybe<PersonalSubscriptions>;\n};\n\n\n/** Subscription query root */\nexport type SubscribingPersonalSubscriptionsArgs = {\n customerId: Scalars['Long']['input'];\n isActive?: Scalars['Boolean']['input'];\n skip?: Scalars['Int']['input'];\n top?: Scalars['Int']['input'];\n};\n\nexport type Subscription = {\n readonly __typename?: 'Subscription';\n /** Allowed subscription frequency possibilities */\n readonly allowedFrequencies?: Maybe<ReadonlyArray<Scalars['Int']['output']>>;\n /** Indicator if subscription is available */\n readonly available: Scalars['Boolean']['output'];\n /** Default frequency of product subscription */\n readonly frequency: Scalars['Int']['output'];\n};\n\nexport type SubscriptionBenefitBanner = {\n readonly __typename?: 'SubscriptionBenefitBanner';\n /** Banner message */\n readonly message?: Maybe<Scalars['String']['output']>;\n /** Link to read more information on subscriptions */\n readonly readMoreLink?: Maybe<Link>;\n /** Link to register new customer */\n readonly registerLink?: Maybe<Link>;\n /** Link to sign in existing customer */\n readonly signInLink?: Maybe<Link>;\n /** Banner title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SubscriptionProfile = {\n readonly __typename?: 'SubscriptionProfile';\n /** Delivery channel assigned to the subscription. */\n readonly address?: Maybe<DeliveryAddress>;\n /** Home delivery address */\n readonly addressId?: Maybe<Scalars['Long']['output']>;\n /** Subscription owner */\n readonly customerId: Scalars['Long']['output'];\n /** Delivery channel assigned to the subscription. */\n readonly deliveryChannel?: Maybe<DeliveryChannel>;\n /** Delivery channel */\n readonly deliveryChannelId: Scalars['Long']['output'];\n /** Recurring payment provider */\n readonly paymentProviderId: Scalars['Long']['output'];\n};\n\nexport type Tag = {\n readonly __typename?: 'Tag';\n /** Tag group */\n readonly groupName?: Maybe<Scalars['String']['output']>;\n /** Taxonomy tag group name */\n readonly name?: Maybe<Scalars['String']['output']>;\n /** Collection of tags */\n readonly tags?: Maybe<ReadonlyArray<Maybe<TagValue>>>;\n /** Tag group translation */\n readonly translation?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TagValue = {\n readonly __typename?: 'TagValue';\n /** Value of a tag */\n readonly value?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TaxClassification = {\n readonly __typename?: 'TaxClassification';\n /** Entrepreneur tax related documents including historical */\n readonly entrepreneurDocuments?: Maybe<ReadonlyArray<Maybe<TaxClassificationDocument>>>;\n /** Indicates whether customer is entrepreneur */\n readonly isEntrepreneur?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates whether customer is physical person */\n readonly isPhysicalPerson?: Maybe<Scalars['Boolean']['output']>;\n /** Indicates whether customer is vat payer */\n readonly isVatPayer?: Maybe<Scalars['Boolean']['output']>;\n /** Physical person tax related documents including historical */\n readonly physicalPersonDocuments?: Maybe<ReadonlyArray<Maybe<TaxClassificationDocument>>>;\n /** Vat payer related documents including historical */\n readonly vatPayerDocuments?: Maybe<ReadonlyArray<Maybe<TaxClassificationDocument>>>;\n};\n\nexport type TaxClassificationDocument = {\n readonly __typename?: 'TaxClassificationDocument';\n /** Company name */\n readonly companyName?: Maybe<Scalars['String']['output']>;\n /** Document number */\n readonly documentNumber?: Maybe<Scalars['String']['output']>;\n /** Whether document is valid and used (e.g. not deleted by operator) */\n readonly isActive?: Maybe<Scalars['Boolean']['output']>;\n /** Issue Date */\n readonly issueDate?: Maybe<Scalars['DateTime']['output']>;\n /** ID of tax classification */\n readonly taxClassificationId: Scalars['ID']['output'];\n /** Validity of document - start */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Validity of document - end */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n};\n\n/** Enum telephone type */\nexport enum TelephoneType {\n Business = 'Business',\n Fax = 'Fax',\n Home = 'Home',\n Mobile = 'Mobile'\n}\n\nexport type TestFreaksConfiguration = {\n readonly __typename?: 'TestFreaksConfiguration';\n readonly scriptUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TimeGuarantees = {\n readonly __typename?: 'TimeGuarantees';\n /** Delivery duration text */\n readonly deliveryDurationText?: Maybe<Scalars['String']['output']>;\n /** More info link */\n readonly moreInfoLink?: Maybe<Link>;\n};\n\nexport type TopBrands = {\n readonly __typename?: 'TopBrands';\n /** Brands displayed in the section */\n readonly brands?: Maybe<ReadonlyArray<Maybe<Brand>>>;\n /** Section's title */\n readonly title?: Maybe<Scalars['String']['output']>;\n};\n\nexport enum TrackingStatus {\n Cancel = 'Cancel',\n CourierHandover = 'CourierHandover',\n CourierTakeover = 'CourierTakeover',\n Create = 'Create',\n Deliver = 'Deliver',\n EstimatedDelivery = 'EstimatedDelivery',\n HandoverFailed = 'HandoverFailed',\n OutForDelivery = 'OutForDelivery',\n Pick = 'Pick',\n PickedUpBy = 'PickedUpBy',\n Print = 'Print',\n ReadyForPickup = 'ReadyForPickup',\n ReturnedToSender = 'ReturnedToSender',\n Ship = 'Ship',\n TakenByCourier = 'TakenByCourier',\n ToBeReturnedToSender = 'ToBeReturnedToSender',\n Unknown = 'Unknown'\n}\n\n/** Content vertical alignment */\nexport enum VerticalContentAlignment {\n Bottom = 'Bottom',\n Middle = 'Middle',\n Top = 'Top',\n Undefined = 'Undefined'\n}\n\nexport type Video = {\n readonly __typename?: 'Video';\n /** Flag indicating if video should be automatcially played on scroll */\n readonly autoplayOnScroll?: Maybe<Scalars['Boolean']['output']>;\n /** Video's id */\n readonly id?: Maybe<Scalars['String']['output']>;\n /** Flag indicating if video should be played in a loop */\n readonly playInLoop?: Maybe<Scalars['Boolean']['output']>;\n /** Type of the video */\n readonly type?: Maybe<VideoType>;\n};\n\nexport type VideoShow = {\n readonly __typename?: 'VideoShow';\n /** Duration of show in sec. */\n readonly durationSeconds?: Maybe<Scalars['Int']['output']>;\n /** Time when show was ended */\n readonly endedAtUtc?: Maybe<Scalars['DateTime']['output']>;\n /** Identifying show which should be displayed in banner */\n readonly isCurrent?: Maybe<Scalars['Boolean']['output']>;\n /** Preview image of show */\n readonly previewImageUrl?: Maybe<Scalars['String']['output']>;\n /** Scheduled start of show */\n readonly scheduledStartAtUtc?: Maybe<Scalars['DateTime']['output']>;\n /** Id of show */\n readonly showId: Scalars['ID']['output'];\n /** Real time of show start */\n readonly startedAtUtc?: Maybe<Scalars['DateTime']['output']>;\n /** Show title */\n readonly title?: Maybe<Scalars['String']['output']>;\n /** Type of show */\n readonly typeOfShow?: Maybe<ShowType>;\n};\n\nexport enum VideoType {\n /** Video in MP4 file format */\n Mp4 = 'Mp4',\n /** Video hosted on Youku */\n Youku = 'Youku',\n /** Video hosted on YouTube */\n Youtube = 'Youtube'\n}\n\nexport type VipBenefits = {\n readonly __typename?: 'VipBenefits';\n /** Collection of images displayed in VIP Benefits section on the Frontpage */\n readonly images?: Maybe<ReadonlyArray<Maybe<FrontPageImage>>>;\n /** Link of VIP Benefits section */\n readonly link?: Maybe<Link>;\n};\n\nexport type VipCustomerBanner = {\n readonly __typename?: 'VipCustomerBanner';\n /** Vip Customer Banner link title */\n readonly linkTitle?: Maybe<Scalars['String']['output']>;\n /** Vip Customer Banner link url */\n readonly linkUrl?: Maybe<Scalars['String']['output']>;\n};\n\n/** Possible types of visitor segment */\nexport enum VisitorSegment {\n /** Anonymous */\n Anonymous = 'Anonymous',\n /** Consultant */\n Consultant = 'Consultant',\n /** Director and above */\n DirectorAndAbove = 'DirectorAndAbove',\n /** End customer */\n EndCustomer = 'EndCustomer',\n /** Manager */\n Manager = 'Manager',\n /** Member */\n Member = 'Member',\n /** New consultant */\n NewConsultant = 'NewConsultant',\n /** Not defined */\n NotDefined = 'NotDefined',\n /** Spo */\n Spo = 'Spo'\n}\n\nexport type WellnessClub = {\n readonly __typename?: 'WellnessClub';\n /** Wellness club banners */\n readonly banners?: Maybe<WellnessClubBanners>;\n /** Wellness Club configuration */\n readonly configuration?: Maybe<WellnessClubConfiguration>;\n /** Wellness Club localization */\n readonly localization?: Maybe<WellnessClubLocalization>;\n};\n\nexport type WellnessClubBanners = {\n readonly __typename?: 'WellnessClubBanners';\n /** Daily wellnessbeing banner */\n readonly dailyWellbeingBannerUrl?: Maybe<Scalars['String']['output']>;\n /** Wellness club main banner */\n readonly mainBannerUrl?: Maybe<Scalars['String']['output']>;\n /** Sport track banner */\n readonly sportBannerUrl?: Maybe<Scalars['String']['output']>;\n /** Weight management banner */\n readonly weightManagementBannerUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type WellnessClubConfiguration = {\n readonly __typename?: 'WellnessClubConfiguration';\n /** Get certification page url */\n readonly certifiedUrl?: Maybe<Scalars['String']['output']>;\n /** Is club members management enabled */\n readonly isClubMembersManagementEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is daily wellnessbeing track enabled */\n readonly isDailyWellbeingTrackEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is wellness club enabled */\n readonly isEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is sports track enabled */\n readonly isSportsTrackEnabled?: Maybe<Scalars['Boolean']['output']>;\n /** Is weight management track enabled */\n readonly isWeightManagementTrackEnabled?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type WellnessClubLocalization = {\n readonly __typename?: 'WellnessClubLocalization';\n readonly contents?: Maybe<Scalars['JSON']['output']>;\n readonly cultures?: Maybe<Scalars['JSON']['output']>;\n /** Default language */\n readonly defaultLanguage?: Maybe<Scalars['String']['output']>;\n readonly translations?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type WhatsNewBanner = {\n readonly __typename?: 'WhatsNewBanner';\n /** Background color */\n readonly backgroundColor?: Maybe<Scalars['String']['output']>;\n /** Font color -eg. red, grey */\n readonly fontColor?: Maybe<Scalars['String']['output']>;\n /** Headline of the banner */\n readonly headline?: Maybe<Scalars['String']['output']>;\n /** Image url of the banner */\n readonly imageUrl?: Maybe<Scalars['String']['output']>;\n /** Link type, attributes and Id */\n readonly link?: Maybe<Link>;\n /** Mobile font color -eg. red, grey */\n readonly mobileFontColor?: Maybe<Scalars['String']['output']>;\n /** Banner Validity date from */\n readonly validFrom?: Maybe<Scalars['DateTime']['output']>;\n /** Banner validity date to */\n readonly validTo?: Maybe<Scalars['DateTime']['output']>;\n};\n","import { PermanentTopBannerType } from '../../../models/graphql-types/net';\n\nexport const MY_PAGES_REGEX = /^\\/([A-Za-z]{2}\\/)?mypages(\\/.*|\\?.*)?$/;\nexport const CHECKOUT_REGEX = /^\\/([A-Za-z]{2}\\/)?shopping\\/basket(\\/.*|\\?.*)?$/;\n\nexport const getTopAreaBannerType = (\n pathname: string | null,\n isAnonymousWithStore?: boolean,\n): PermanentTopBannerType | null => {\n if (pathname === null) {\n return null;\n }\n if (MY_PAGES_REGEX.test(pathname)) {\n return PermanentTopBannerType.MyPages;\n }\n\n if (CHECKOUT_REGEX.test(pathname)) {\n return PermanentTopBannerType.Checkout;\n }\n\n if (isAnonymousWithStore) {\n return PermanentTopBannerType.PublicPageWithReferral;\n }\n\n return PermanentTopBannerType.PublicPage;\n};\n","/* istanbul ignore file -- constants file */\nexport const CONSULTANT_NUMBER_QUERY_PARAM_KEY = 'chPwdUsr';\n\nexport const RETURN_URL_QUERY_PARAM_KEY = 'returnUrl';\n\nexport const INVITATION_OFFER_HASH = '#open-invitation-offer';\n","import type { StaticApplicationsBannersBffPermanentTopAreaBannerPermanentTopAreaBannersGqlDto } from '@ori/static-api-client-react';\nimport { isNonNullable } from '@ori/ts-utils';\n\nimport type { BannersCarouselItem } from '../components/TopAreaBanner/components';\nimport { INVITATION_OFFER_HASH } from '../constants';\nimport { sanitizeKey } from './sanitizeKey';\n\ninterface MapTopAreaBannersParams {\n data: StaticApplicationsBannersBffPermanentTopAreaBannerPermanentTopAreaBannersGqlDto['data'];\n}\nexport const mapTopAreaBanners = ({ data }: MapTopAreaBannersParams): BannersCarouselItem[] | undefined => {\n if (!data?.application?.permanentTopBanners) {\n return undefined;\n }\n const { permanentTopBanners } = data.application;\n\n return permanentTopBanners\n .filter(isNonNullable)\n .filter((banner) => banner.message ?? banner.link?.relativeUrl)\n .map((banner) => ({\n title: banner.message ?? '',\n shouldOpenInvitationOffer: banner.link?.relativeUrl === INVITATION_OFFER_HASH,\n url: sanitizeKey(banner.link?.relativeUrl ?? ''),\n }));\n};\n","export const sanitizeKey = (key: string) => (key.startsWith('#') ? key.slice(1) : key);\n","/* istanbul ignore file -- api file */\nimport { useEnvironment } from '@ori/environment';\nimport { useLanguage } from '@ori/i18n';\nimport { useUserSegmentationData } from '@ori/presentation-http';\nimport { useGetTenantApplicationsBannerEnrichedPermanentTopAreaBanners } from '@ori/static-api-client-react';\n\nimport { useAppConfig } from '../context/configurationContext';\nimport { PermanentTopBannerType } from '../models/graphql-types/net';\nimport { mapTopAreaBanners } from '../utils/mapTopAreaBanners';\n\ninterface ShouldSkipTopAreaBannersFetchParams {\n enableTopAreaBanner?: boolean;\n loadingSegmentationData: boolean;\n orderOnBehalfVisible: boolean;\n bannerType: PermanentTopBannerType | null;\n}\n\nexport const shouldSkipTopAreaBannersFetch = ({\n enableTopAreaBanner,\n loadingSegmentationData,\n orderOnBehalfVisible,\n bannerType,\n}: ShouldSkipTopAreaBannersFetchParams): boolean =>\n loadingSegmentationData || orderOnBehalfVisible || !enableTopAreaBanner || bannerType === null;\n\ninterface UseGetTopAreaBannersParams {\n bannerType: PermanentTopBannerType | null;\n orderOnBehalfVisible: boolean;\n}\nexport const useGetTopAreaBanners = ({ bannerType, orderOnBehalfVisible }: UseGetTopAreaBannersParams) => {\n const { tenant } = useEnvironment();\n const { language } = useLanguage();\n const { loading: loadingSegmentationData, customerTypeId } = useUserSegmentationData();\n const { enableTopAreaBanner } = useAppConfig();\n\n const {\n isValidating: loading,\n error: apiError,\n data,\n } = useGetTenantApplicationsBannerEnrichedPermanentTopAreaBanners(\n tenant,\n {\n bannerType: bannerType ?? PermanentTopBannerType.PublicPage,\n customerTypeId: customerTypeId ?? undefined,\n lang: language,\n },\n {\n swr: {\n enabled: !shouldSkipTopAreaBannersFetch({\n enableTopAreaBanner,\n loadingSegmentationData,\n orderOnBehalfVisible,\n bannerType,\n }),\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n revalidateIfStale: false,\n },\n },\n );\n\n return {\n bannersData: data && bannerType !== null ? mapTopAreaBanners({ data: data.data }) : undefined,\n error: apiError,\n loading,\n };\n};\n","/* istanbul ignore file -- just a list of URLs */\nexport const vipOrderUrls = {\n access: '/system/ajax/stickybar/VipAccessJson',\n accessConsultant: (consultantNumber: string) =>\n `/system/ajax/VipShopping/AccessConsultant?consultantNumber=${consultantNumber}`,\n accessSwitch: (consultantNumber: number) =>\n `/system/ajax/StickyBar/VipAccessSwitch?ConsultantNumber=${consultantNumber}`,\n accessSwitchValidate: (consultantNumber: string) =>\n `/system/ajax/StickyBar/VipAccessSwitchValidate?ajaxId=69&related%5BConsultantNumber%5D=${consultantNumber}&activeInput=ConsultantNumber&ConsultantNumber=${consultantNumber}`,\n basket: '/shopping/basket',\n consultantNumbers: (hint: string) => `/system/ajax/VipShopping/GetConsultantNumbers?hint=${hint}`,\n};\n","// istanbul ignore file -- needs to be refactored with whole OOB\nimport { useToken } from '@ori/auth';\nimport { axios } from '@ori/axios';\nimport { useSWR } from '@ori/fetching';\nimport { useGetApplicationsNavigationCustomerInfo } from '@ori/global-api-client-react';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport type { VipAccessResponse } from '../models';\nimport { vipOrderUrls } from '../utils';\nimport { useAppConfig } from './configurationContext';\n\nexport interface ConsultantContext {\n consultantNumber?: string | undefined;\n consultantType?: number | undefined;\n isOrderOnBehalfVisible?: boolean;\n loadingVipAccess: boolean;\n vipAccess?: VipAccessResponse;\n}\n\nexport const consultantContext = createContext<ConsultantContext>({\n loadingVipAccess: true,\n});\n\nconst { Provider } = consultantContext;\n\nexport const ConsultantProvider: FC<PropsWithChildren> = ({ children }) => {\n const { consultantNumber, consultantType } = useAppConfig();\n const { customerId, isAnonymousUser, isUserVerified } = useToken();\n const { data } = useGetApplicationsNavigationCustomerInfo(customerId.toString(), undefined, {\n swr: {\n ...getRetryErrorSwrOptions(),\n enabled: isUserVerified && !isAnonymousUser,\n },\n });\n const { data: vipAccess, error } = useSWR<VipAccessResponse, Error>(\n vipOrderUrls.access,\n async () =>\n axios\n .get<VipAccessResponse>(vipOrderUrls.access, { baseURL: window.location.origin })\n .then((response) => response.data),\n { revalidateIfStale: false, revalidateOnFocus: false, revalidateOnReconnect: false },\n );\n const loadingVipAccess = vipAccess === undefined && error === undefined;\n const value = useMemo<ConsultantContext>(\n () => ({\n consultantNumber: data?.consultantNumber?.toString() ?? consultantNumber,\n consultantType,\n isOrderOnBehalfVisible: !!(vipAccess?.VipAccessData?.ConsultantName && vipAccess.VipAccessData.ConsultantNumber),\n loadingVipAccess,\n vipAccess,\n }),\n [consultantNumber, consultantType, data?.consultantNumber, loadingVipAccess, vipAccess],\n );\n\n return <Provider value={value}>{children}</Provider>;\n};\n\nexport const useConsultant = () => useContext(consultantContext);\n","import type { BannersCarouselItem } from '../../components/TopAreaBanner/components/BannersCarousel/types';\nimport type { VipAccessResponse } from '../../models';\n\ninterface IsLoadingParams {\n topBannerVisible: boolean;\n isAnonymousWithStore: boolean;\n loadingVipAccess: boolean;\n orderOnBehalfVisible: boolean;\n isLoadingTopBanner: boolean;\n}\n\nexport const isLoading = ({\n isAnonymousWithStore,\n loadingVipAccess,\n orderOnBehalfVisible,\n topBannerVisible,\n isLoadingTopBanner,\n}: IsLoadingParams): boolean =>\n loadingVipAccess ||\n (!isAnonymousWithStore && !orderOnBehalfVisible && !topBannerVisible) ||\n // isLoadingTopBanner could be deleted when all markets are migrated to the new banners\n (isAnonymousWithStore && isLoadingTopBanner && !topBannerVisible);\n\nexport const isOrderOnBehalfVisible = (orderOnBehalfData: VipAccessResponse | undefined): boolean =>\n !!orderOnBehalfData?.VipAccessData?.ConsultantName &&\n !!orderOnBehalfData.VipAccessData.ConsultantNumber &&\n !!orderOnBehalfData.VipAccessLabels?.ConsultantChangeConsultantNumber &&\n orderOnBehalfData.VipAccessData.Links.length > 0;\n\nexport const isTopAreaBannerVisible = (bannersData: BannersCarouselItem[] | undefined): boolean =>\n !!bannersData && bannersData.length > 0;\n\ninterface ShouldSkipBenefitBannerFetchParams {\n enableTopAreaBanner?: boolean;\n isAnonymousWithStore: boolean;\n loadingSegmentationData: boolean;\n orderOnBehalfVisible: boolean;\n}\n\nexport const shouldSkipBenefitBannerFetch = ({\n enableTopAreaBanner,\n isAnonymousWithStore,\n loadingSegmentationData,\n orderOnBehalfVisible,\n}: ShouldSkipBenefitBannerFetchParams): boolean =>\n loadingSegmentationData || orderOnBehalfVisible || !enableTopAreaBanner || isAnonymousWithStore;\n","import { useToken } from '@ori/auth';\nimport { useCookieStoreInfo } from '@ori/personal-beauty-store';\nimport { isSSR } from '@ori/presentation-utils';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport type { BannersCarouselItem } from '../../components/TopAreaBanner/components/BannersCarousel/types';\nimport { getTopAreaBannerType } from '../../components/TopAreaBanner/utils';\nimport { useGetTopAreaBanners } from '../../hooks/useGetTopAreaBanners';\nimport type { VipAccessResponse } from '../../models';\nimport { useAppConfig } from '../configurationContext';\nimport { useConsultant } from '../consultantContext';\nimport { isLoading, isOrderOnBehalfVisible, isTopAreaBannerVisible } from './utils';\n\nexport interface TopAreaBannerContext {\n bannersData: BannersCarouselItem[] | undefined;\n isAnonymousWithStore: boolean;\n isOrderOnBehalfVisible: boolean;\n loading: boolean;\n orderOnBehalfData: VipAccessResponse | undefined;\n visible: boolean;\n}\n\nconst defaultTopAreaBannerContextValue: TopAreaBannerContext = {\n bannersData: undefined,\n isAnonymousWithStore: false,\n isOrderOnBehalfVisible: false,\n loading: true,\n orderOnBehalfData: undefined,\n visible: false,\n};\n\nexport const topAreaBannerContext = createContext<TopAreaBannerContext>(defaultTopAreaBannerContextValue);\n\nconst { Provider } = topAreaBannerContext;\n\nexport const TopAreaBannerProvider: FC<PropsWithChildren> = ({ children }) => {\n const { owner: store } = useCookieStoreInfo();\n const { loadingVipAccess, vipAccess: orderOnBehalfData } = useConsultant();\n const { enableTopAreaBanner } = useAppConfig();\n const { isAnonymousUser } = useToken();\n const isAnonymousWithStore = useMemo(() => isAnonymousUser && !!store, [isAnonymousUser, store]);\n const shouldGetBannerType = !isSSR() && enableTopAreaBanner;\n const bannerType = useMemo(\n () => (shouldGetBannerType ? getTopAreaBannerType(window.location.pathname, isAnonymousWithStore) : null),\n [isAnonymousWithStore, shouldGetBannerType],\n );\n /**\n * VipAccessData can be defined but can arrive with empty key properties.\n */\n const orderOnBehalfVisible = useMemo(() => isOrderOnBehalfVisible(orderOnBehalfData), [orderOnBehalfData]);\n const { bannersData, loading: isLoadingTopBanner } = useGetTopAreaBanners({\n bannerType,\n orderOnBehalfVisible,\n });\n const topBannerVisible = useMemo(() => isTopAreaBannerVisible(bannersData), [bannersData]);\n\n const visible = orderOnBehalfVisible || Boolean(enableTopAreaBanner);\n\n return (\n <Provider\n value={useMemo<TopAreaBannerContext>(\n () => ({\n bannersData,\n isAnonymousWithStore,\n isOrderOnBehalfVisible: orderOnBehalfVisible,\n loading: isLoading({\n isLoadingTopBanner,\n topBannerVisible,\n isAnonymousWithStore,\n loadingVipAccess,\n orderOnBehalfVisible,\n }),\n orderOnBehalfData,\n visible,\n }),\n [\n bannersData,\n isAnonymousWithStore,\n isLoadingTopBanner,\n loadingVipAccess,\n orderOnBehalfData,\n orderOnBehalfVisible,\n topBannerVisible,\n visible,\n ],\n )}\n >\n {children}\n </Provider>\n );\n};\n\nexport const useTopAreaBanner = () => useContext(topAreaBannerContext);\n","import {\n CSS_MOBILE_HEIGHT,\n CSS_MOBILE_WITH_SEARCH_INPUT_HEIGHT,\n CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT,\n CSS_MOBILE_WITH_TOP_AREA_BANNER_HEIGHT,\n SEARCH_INPUT_HEIGHT,\n} from '../constants';\nimport type { AppConfig } from '../models';\n\nexport interface GetMobileCssVariableParams extends Pick<AppConfig, 'showSearchOnScroll'> {\n isTopBannerVisible: boolean;\n}\n\nexport const getMobileCssHeightVariable = ({ isTopBannerVisible, showSearchOnScroll }: GetMobileCssVariableParams) => {\n if (isTopBannerVisible && showSearchOnScroll) {\n return CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT;\n }\n if (isTopBannerVisible) {\n return CSS_MOBILE_WITH_TOP_AREA_BANNER_HEIGHT;\n }\n if (showSearchOnScroll) {\n return CSS_MOBILE_WITH_SEARCH_INPUT_HEIGHT;\n }\n\n return CSS_MOBILE_HEIGHT;\n};\n\nexport const getSearchInputTopAttribute = ({ isTopBannerVisible, showSearchOnScroll }: GetMobileCssVariableParams) => {\n if (isTopBannerVisible && showSearchOnScroll) {\n return `calc(${CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT} - ${SEARCH_INPUT_HEIGHT}px)`;\n }\n if (showSearchOnScroll) {\n return `calc(${CSS_MOBILE_WITH_SEARCH_INPUT_HEIGHT} - ${SEARCH_INPUT_HEIGHT}px)`;\n }\n if (isTopBannerVisible) {\n return CSS_MOBILE_WITH_TOP_AREA_BANNER_HEIGHT;\n }\n\n return CSS_MOBILE_HEIGHT;\n};\n","import { styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport { CSS_DESKTOP_HEIGHT, CSS_DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT } from '../../constants';\nimport { getMobileCssHeightVariable } from '../../utils/getMobileCssVariable';\nimport type { TopAreaReservedSpaceBlockProps } from './types';\n\nexport const TopAreaReservedSpaceBlock = styled('div', {\n shouldForwardProp: shouldForwardProp(),\n})<TopAreaReservedSpaceBlockProps>(({ isTopBannerVisible, showSearchOnScroll, theme }) => ({\n minHeight: getMobileCssHeightVariable({ isTopBannerVisible, showSearchOnScroll }),\n [theme.breakpoints.up('md')]: {\n minHeight: isTopBannerVisible ? CSS_DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT : CSS_DESKTOP_HEIGHT,\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { PropsWithChildren, FC } from 'react';\n\nimport { useAppConfig, useTopAreaBanner } from '../../context';\nimport { ROOT_WRAPPER } from './constants';\nimport { TopAreaReservedSpaceBlock } from './styles';\n\nexport const TopAreaBlock: FC<PropsWithChildren> = ({ children }) => {\n const { getTestId } = useTestId();\n const { visible: isTopBannerVisible } = useTopAreaBanner();\n const { showSearchOnScroll } = useAppConfig();\n\n return (\n <TopAreaReservedSpaceBlock\n data-testid={getTestId(ROOT_WRAPPER)}\n id=\"top-area\"\n isTopBannerVisible={isTopBannerVisible}\n showSearchOnScroll={showSearchOnScroll}\n >\n {children}\n </TopAreaReservedSpaceBlock>\n );\n};\n","export const ROOT_WRAPPER = 'root-wrapper';\n","import { useEffect, useState } from 'react';\nimport { UAParser } from 'ua-parser-js';\n\nexport interface UseMobileOs {\n userOs: 'Android' | 'Ios' | null;\n}\n\nexport const useMobileOs = (): UseMobileOs => {\n const [userOs, setUserOs] = useState<'Android' | 'Ios' | null>(null);\n useEffect(() => {\n const parse = new UAParser();\n const os = parse.getOS();\n if (os.name === 'Android') {\n setUserOs(os.name);\n } else if (os.name === 'iOS') {\n setUserOs('Ios');\n }\n }, []);\n\n return { userOs };\n};\n","import type { StaticMobileAppsSmartAppBannerDto } from '@ori/static-api-client-react';\n\nimport type { UseMobileOs } from '../../hooks/useMobileOs';\n\nexport const APP_PROMO_LOCAL_STORAGE_KEY = 'hideAppPromoBannerUntil';\n\nexport const getHideAppPromoBannerUntilDate = () => {\n const hideAppPromoBannerUntilFromLocalStorage = localStorage.getItem(APP_PROMO_LOCAL_STORAGE_KEY);\n const hideAppPromoBannerUntil = hideAppPromoBannerUntilFromLocalStorage\n ? new Date(hideAppPromoBannerUntilFromLocalStorage)\n : null;\n\n return hideAppPromoBannerUntil;\n};\n\nexport const setHideAppPromoBannerUntilDate = () => {\n const dateNow = new Date();\n dateNow.setMonth(dateNow.getMonth() + 1);\n localStorage.setItem(APP_PROMO_LOCAL_STORAGE_KEY, dateNow.toISOString());\n};\n\ninterface IsAppPromoBannerVisibleParams extends UseMobileOs {\n data: StaticMobileAppsSmartAppBannerDto | undefined;\n}\n\nexport const isAppPromoBannerVisible = ({ data, userOs }: IsAppPromoBannerVisibleParams) => {\n const hideAppPromoBannerUntil = getHideAppPromoBannerUntilDate();\n const dateNow = new Date();\n\n return Boolean(\n userOs &&\n (!hideAppPromoBannerUntil ||\n hideAppPromoBannerUntil.toString() === 'Invalid Date' ||\n hideAppPromoBannerUntil < dateNow) &&\n data?.appName &&\n data.bannerLink,\n );\n};\n","import { useCookieStoreInfo } from '@ori/personal-beauty-store';\nimport { useGetTenantMobileAppSmartAppBanner } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { useMobileOs } from '../../hooks/useMobileOs';\nimport { useAppConfig } from '../configurationContext';\nimport type { AppPromoContext } from './types';\nimport { isAppPromoBannerVisible, setHideAppPromoBannerUntilDate } from './utils';\n\nexport const appPromoContext = createContext<AppPromoContext>({});\n\nconst { Provider } = appPromoContext;\n\nexport const AppPromoProvider: FC<PropsWithChildren> = ({ children }) => {\n const [visible, setVisible] = useState<boolean>(false);\n const [pagePath, setPagePath] = useState<string>();\n const { currentLanguage, tenant } = useAppConfig();\n const { owner: store } = useCookieStoreInfo();\n const { userOs } = useMobileOs();\n useEffect(() => {\n setPagePath(window.location.pathname);\n }, []);\n const { data } = useGetTenantMobileAppSmartAppBanner(\n tenant,\n userOs ?? 'Android',\n {\n lang: currentLanguage,\n pagePath: pagePath ?? '',\n storeName: store ?? undefined,\n },\n {\n swr: {\n enabled: Boolean(userOs && pagePath),\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n shouldRetryOnError: false,\n },\n },\n );\n useEffect(() => {\n setVisible(isAppPromoBannerVisible({ data, userOs }));\n }, [data, userOs]);\n const onClose = useCallback(() => {\n setVisible(false);\n setHideAppPromoBannerUntilDate();\n }, []);\n const value = useMemo<AppPromoContext>(\n () => ({\n appDescription: data?.appDescription,\n appIcon: data?.appIcon,\n appName: data?.appName,\n bannerLink: data?.bannerLink,\n onClose,\n visible,\n }),\n [data?.appDescription, data?.appIcon, data?.appName, data?.bannerLink, onClose, visible],\n );\n\n return <Provider value={value}>{children}</Provider>;\n};\n\nexport const useAppPromo = () => useContext(appPromoContext);\n","export const APP_PROMO_BANNER = 'app-promo-banner';\nexport const APP_PROMO_BANNER_CLOSE = 'app-promo-banner-close';\nexport const APP_PROMO_BANNER_OPEN = 'app-promo-banner-open';\nexport const APP_PROMO_BANNER_ICON = 'app-promo-banner-icon';\nexport const APP_PROMO_BANNER_HEIGHT = 82;\n","import { Typography, styled } from '@ori-ui/mui';\n\nexport const AppInfoRoot = styled('div')(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n}));\n\nexport const AppIcon = styled('img')({\n height: 60,\n width: 60,\n});\n\nexport const AppNameAndDescription = styled('div')({\n alignItems: 'flex-start',\n alignSelf: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nexport const AppName = styled(Typography)({\n display: '-webkit-box',\n fontSize: '1.3rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 1,\n});\n\nexport const AppDescription = styled(Typography)({\n display: '-webkit-box',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n});\n","import { ImagePlaceholder } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { APP_PROMO_BANNER_ICON } from '../constants';\nimport type { AppInfoProps } from '../types';\nimport { AppDescription, AppIcon, AppInfoRoot, AppName, AppNameAndDescription } from './styles';\n\nexport const AppInfo: FC<AppInfoProps> = ({ appDescription, appIcon, appName }) => {\n const { getTestId } = useTestId();\n\n return (\n <AppInfoRoot>\n {appIcon ? (\n <AppIcon\n data-testid={getTestId(APP_PROMO_BANNER_ICON)}\n src={appIcon}\n alt={appName ?? appIcon}\n />\n ) : (\n <ImagePlaceholder\n height={60}\n width={60}\n />\n )}\n <AppNameAndDescription>\n <AppName\n color=\"textPrimary\"\n fontWeight=\"bold\"\n >\n {appName}\n </AppName>\n <AppDescription variant=\"caption\">{appDescription}</AppDescription>\n </AppNameAndDescription>\n </AppInfoRoot>\n );\n};\n","import { SHADOW_LEVEL1, SHADOW_LEVEL3, Typography, styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport { APP_PROMO_BANNER_HEIGHT } from './constants';\n\nexport const Root = styled('div')({\n bottom: 0,\n left: 0,\n position: 'fixed',\n width: '100%',\n // Web messenger has z-index 100, so we need to set higher z-index for app promo banner.\n zIndex: 101,\n});\n\nexport const Inner = styled('a', { shouldForwardProp: shouldForwardProp() })(({ theme }) => ({\n alignItems: 'center',\n backgroundColor: theme.palette.common.white,\n borderRadius: theme.spacing(2),\n boxShadow: SHADOW_LEVEL3,\n color: theme.palette.text.primary,\n display: 'flex',\n gap: theme.spacing(2),\n height: APP_PROMO_BANNER_HEIGHT,\n margin: theme.spacing(2),\n paddingRight: theme.spacing(1),\n textDecoration: 'none',\n '&:hover, &:active': {\n boxShadow: SHADOW_LEVEL1,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(['box-shadows'], {\n duration: theme.transitions.duration.short,\n }),\n },\n}));\n\nexport const CloseButton = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n padding: theme.spacing(2, 0),\n width: theme.spacing(7),\n}));\n\nexport const OpenButton = styled(Typography)(({ theme }) => ({\n marginLeft: 'auto',\n padding: theme.spacing(3, 6),\n}));\n","import { Clear } from '@ori-ui/icons';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback } from 'react';\nimport type { MouseEventHandler, FC } from 'react';\n\nimport { useAppPromo } from '../../context';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { AppInfo } from './components';\nimport { APP_PROMO_BANNER, APP_PROMO_BANNER_CLOSE, APP_PROMO_BANNER_OPEN } from './constants';\nimport { CloseButton, Inner, OpenButton, Root } from './styles';\n\nexport const AppPromoBanner: FC = () => {\n const { translations } = useTranslations();\n const { appDescription, appIcon, appName, bannerLink, className, visible, onClose } = useAppPromo();\n const { getTestId } = useTestId();\n\n const onCloseButtonClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n event.preventDefault();\n onClose?.();\n },\n [onClose],\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <Root>\n <Inner\n className={className}\n data-testid={getTestId(APP_PROMO_BANNER)}\n href={bannerLink ?? '#'}\n >\n <CloseButton\n data-testid={getTestId(APP_PROMO_BANNER_CLOSE)}\n onClick={onCloseButtonClick}\n >\n <Clear />\n </CloseButton>\n <AppInfo\n appDescription={appDescription}\n appIcon={appIcon}\n appName={appName}\n />\n <OpenButton\n data-testid={getTestId(APP_PROMO_BANNER_OPEN)}\n variant=\"button\"\n >\n {translations.open}\n </OpenButton>\n </Inner>\n </Root>\n );\n};\n","import { useUserSegmentationData } from '@ori/presentation-http';\nimport { ShadePickerController } from '@ori/shade-picker';\n\nexport const ShadePicker = () => {\n const { atpClusterId, customerTypeId } = useUserSegmentationData();\n\n return (\n <ShadePickerController\n atpClusterId={atpClusterId}\n customerTypeId={customerTypeId}\n />\n );\n};\n","import { useToken } from '@ori/auth';\nimport { useGetCustomerProfile } from '@ori/global-api-client-react';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\n\nexport const useCustomerInitials = () => {\n const { isAnonymousUser, isUserVerified, customerId } = useToken();\n const { data } = useGetCustomerProfile(customerId, undefined, {\n swr: {\n ...getRetryErrorSwrOptions(),\n enabled: isUserVerified && !isAnonymousUser,\n },\n });\n\n if (data) {\n const { firstName, lastName } = data;\n\n if (lastName) {\n return `${firstName ? firstName.charAt(0) : ''}${lastName.charAt(0)}`;\n }\n }\n\n return undefined;\n};\n","export enum BurgerMenuTabNames {\n ProductsTab = 'products-tab',\n AccountTab = 'account-tab',\n}\n","// istanbul ignore file -- lazy component render\nimport type { FC } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport { CataloguesSkeleton } from '../Catalogues/CataloguesSkeleton';\nimport type { BurgerMenuContentProps } from '../types';\n\nconst BurgerMenuContent = lazy<FC>(async () => ({\n default: (await import(/* webpackChunkName: \"TopArea_BurgerMenuContent\" */ './BurgerMenuContent')).BurgerMenuContent,\n}));\n\nexport const LazyBurgerMenuContent: FC<BurgerMenuContentProps> = () => (\n <Suspense fallback={<CataloguesSkeleton />}>\n <BurgerMenuContent />\n </Suspense>\n);\n","import { Avatar, Button, ButtonBase, styled } from '@ori-ui/mui';\n\nexport const SignInLabel = styled(ButtonBase)<{\n disableRipple?: boolean;\n}>(({ theme }) => ({\n display: 'none',\n [theme.breakpoints.up('md')]: {\n color: theme.palette.text.primary,\n display: 'block',\n fontSize: '1.4rem',\n fontWeight: theme.typography.fontWeightBold,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n textTransform: 'uppercase',\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n cursor: 'pointer',\n },\n },\n}));\n\nexport const DesktopUserIconButton = styled(Button)(({ theme }) => ({\n display: 'none',\n fontSize: '1.4rem',\n whiteSpace: 'nowrap',\n lineHeight: '2.1rem',\n minWidth: 'auto',\n fontWeight: theme.typography.fontWeightBold,\n svg: {\n marginLeft: theme.spacing(2),\n },\n [theme.breakpoints.up('md')]: {\n display: 'inline-flex',\n },\n}));\n\nexport const MobileUserIconButton = styled(ButtonBase)(({ theme }) => ({\n fontSize: '3rem',\n color: theme.palette.text.primary,\n whiteSpace: 'nowrap',\n textTransform: 'uppercase',\n [theme.breakpoints.up('md')]: {\n display: 'none',\n },\n}));\n\nexport const UserAvatar = styled(Avatar)(({ theme }) => ({\n fontSize: '1rem !important',\n width: 22,\n height: 22,\n backgroundColor: theme.palette.grey[700],\n}));\n","import { ButtonBase, styled } from '@ori-ui/mui';\n\nexport const BurgerMenuTabRoot = styled(ButtonBase)<{ ownerState: { isActive: boolean } }>(({ 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: '2.9rem',\n margin: theme.spacing(0, 3),\n },\n}));\n\nexport const BurgerMenuTabPrefixWrapper = styled('div')<{ ownerState: { isLoggedIn?: boolean } }>(\n ({ ownerState, theme }) => ({\n borderRadius: '50%',\n display: 'flex',\n fontSize: '2.9rem',\n\n margin: theme.spacing(3, 2),\n\n svg: {\n width: 24,\n height: 24,\n },\n\n ...(ownerState.isLoggedIn && {\n borderRadius: '50%',\n color: theme.palette.common.white,\n display: 'flex',\n fontSize: '2.6rem',\n height: 26,\n }),\n }),\n);\n\nexport const BurgerMenuTabLabelWrapper = styled('div')(({ theme }) => ({\n marginRight: theme.spacing(3),\n overflow: 'hidden',\n textAlign: 'left',\n textOverflow: 'ellipsis',\n width: '100%',\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { UserAvatar } from '../../UserSection';\nimport {\n BURGER_MENU_TAB_ICON_WRAPPER,\n BURGER_MENU_TAB_LABEL_WRAPPER,\n BURGER_MENU_TAB_ROOT,\n TAB_ICON,\n} from '../constants';\nimport { BurgerMenuTabLabelWrapper, BurgerMenuTabPrefixWrapper, BurgerMenuTabRoot } from './styles';\nimport type { BurgerMenuTabProps } from './types';\n\nexport const BurgerMenuTab: FC<BurgerMenuTabProps> = ({\n children,\n activeTab,\n tabPrefix,\n tabName,\n onTabClick,\n isLoggedIn,\n}) => {\n const clickHandler = useCallback(() => onTabClick(tabName), [onTabClick, tabName]);\n const TabIcon = tabPrefix;\n const ownerState = { isActive: activeTab === tabName, isLoggedIn };\n const { getTestId } = useTestId();\n\n return (\n <BurgerMenuTabRoot\n disableRipple\n ownerState={ownerState}\n data-testid={getTestId(BURGER_MENU_TAB_ROOT)}\n onClick={clickHandler}\n >\n <BurgerMenuTabPrefixWrapper\n ownerState={ownerState}\n data-testid={getTestId(BURGER_MENU_TAB_ICON_WRAPPER)}\n >\n {typeof tabPrefix === 'string' ? (\n <UserAvatar data-testid={getTestId(TAB_ICON)}>{tabPrefix}</UserAvatar>\n ) : (\n <TabIcon\n fontSize=\"inherit\"\n data-testid={getTestId(TAB_ICON)}\n />\n )}\n </BurgerMenuTabPrefixWrapper>\n <BurgerMenuTabLabelWrapper data-testid={getTestId(BURGER_MENU_TAB_LABEL_WRAPPER)}>\n {children}\n </BurgerMenuTabLabelWrapper>\n </BurgerMenuTabRoot>\n );\n};\n","// istanbul ignore file -- lazy loaded component not testable\nimport type { FC } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport { useIsMobile } from '../../../hooks';\nimport { SkeletonMainCategoriesDesktop, SkeletonMainCategoriesMobile } from '../../Skeleton';\n\nconst LazyGeneratedBurgerMainMenuLinks = lazy(async () => import(/* webpackChunkName: \"TopArea_Links\" */ './Links'));\n\nexport const LazyLinks: FC = () => {\n const isMobile = useIsMobile();\n\n return (\n <Suspense fallback={isMobile ? <SkeletonMainCategoriesMobile /> : <SkeletonMainCategoriesDesktop />}>\n <LazyGeneratedBurgerMainMenuLinks />\n </Suspense>\n );\n};\n\nexport default LazyLinks;\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport type { ModalOwnProps } from '@ori-ui/components';\nimport { BurgerMenu as BurgerMenuIcon } from '@ori-ui/icons';\nimport { Backdrop, Slide } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport useTestId from '@ori/testid-generator';\nimport type { FC, ReactNode } from 'react';\nimport { useMemo, useCallback } from 'react';\n\nimport { useActiveMenu } from '../../context/navigation';\nimport { useIsMobile, useCustomerInitials } from '../../hooks';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { BurgerMenuTabNames } from '../../models';\nimport { LazyBurgerMenuContent } from './BurgerMenuContent';\nimport { BurgerMenuTab } from './BurgerMenuTab';\nimport { LazyLinks } from './Links/LazyLinks';\nimport { BURGER_MENU_BACKDROP, BURGER_MENU_CONTAINER, BURGER_MENU_ROOT } from './constants';\nimport { BurgerMenuContainer, BurgerMenuInner, BurgerMenuRoot, ModalRoot } from './styles';\n\nexport const BurgerMenu: FC<{ mobilePersonalMenuOutlet?: ReactNode | undefined }> = ({ mobilePersonalMenuOutlet }) => {\n const { BurgerMenu: BurgerMenuType, AccountSideMenu: AccountSideMenuType } = ToggleMenuFlyout.MenuTypes;\n const { activeMenu, toggleActiveMenu } = useActiveMenu();\n const isMobile = useIsMobile();\n const ownerState = { isMobile };\n const handleTabClick = useCallback(\n (tabName: BurgerMenuTabNames) => {\n const menuType: ToggleMenuFlyout.MenuTypes =\n tabName === BurgerMenuTabNames.ProductsTab ? BurgerMenuType : AccountSideMenuType;\n toggleActiveMenu(menuType);\n },\n [AccountSideMenuType, BurgerMenuType, toggleActiveMenu],\n );\n const { translations } = useTranslations();\n const customerInitials = useCustomerInitials();\n const { isAnonymousUser } = useToken();\n const isLoggedIn = !isAnonymousUser;\n const isMenuActive = activeMenu === BurgerMenuType || (isMobile && activeMenu === AccountSideMenuType);\n const activeTab = activeMenu === BurgerMenuType ? BurgerMenuTabNames.ProductsTab : BurgerMenuTabNames.AccountTab;\n const { getTestId } = useTestId();\n\n const onClickOverlay = useCallback(() => {\n toggleActiveMenu(BurgerMenuType);\n }, [BurgerMenuType, toggleActiveMenu]);\n\n const slots: ModalOwnProps['slots'] = useMemo(\n () => ({\n backdrop: Backdrop,\n }),\n [],\n );\n\n if (isMobile) {\n return (\n <ModalRoot\n slots={slots}\n open={isMenuActive}\n onClose={onClickOverlay}\n >\n <Slide\n in={isMenuActive}\n direction=\"right\"\n >\n <BurgerMenuRoot\n ownerState={ownerState}\n data-testid={getTestId(BURGER_MENU_ROOT)}\n >\n <BurgerMenuContainer data-testid={getTestId(BURGER_MENU_CONTAINER)}>\n <BurgerMenuTab\n activeTab={activeTab}\n tabName={BurgerMenuTabNames.ProductsTab}\n tabPrefix={BurgerMenuIcon}\n onTabClick={handleTabClick}\n >\n {translations.menu}\n </BurgerMenuTab>\n {isLoggedIn ? (\n <BurgerMenuTab\n activeTab={activeTab}\n tabName={BurgerMenuTabNames.AccountTab}\n tabPrefix={customerInitials ?? ''}\n isLoggedIn={isLoggedIn}\n onTabClick={handleTabClick}\n >\n {translations.myAccount}\n </BurgerMenuTab>\n ) : null}\n </BurgerMenuContainer>\n {activeTab === BurgerMenuTabNames.ProductsTab && <LazyLinks />}\n {activeTab === BurgerMenuTabNames.AccountTab && !isAnonymousUser ? mobilePersonalMenuOutlet : null}\n </BurgerMenuRoot>\n </Slide>\n </ModalRoot>\n );\n }\n\n if (!isMenuActive) {\n return null;\n }\n\n return (\n <BurgerMenuRoot\n as=\"div\"\n ownerState={{ ...ownerState, isDesktop: true }}\n data-testid={getTestId(BURGER_MENU_ROOT)}\n >\n <BurgerMenuInner>\n <LazyLinks />\n <LazyBurgerMenuContent />\n <Backdrop\n open\n data-testid={getTestId(BURGER_MENU_BACKDROP)}\n sx={{ position: 'absolute', zIndex: '-1', width: '100vw', height: '100vh' }}\n onClick={onClickOverlay}\n />\n </BurgerMenuInner>\n </BurgerMenuRoot>\n );\n};\n","import type { ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { getImageVariants, generateSrcSet } from '@ori/image-sizes-helper';\nimport type { FC } from 'react';\n\ninterface TileProps {\n image: string;\n name?: string;\n}\n\nexport const JoinTileImage: FC<TileProps> = ({ image, name }) => {\n const imagesVariants: ImageSizesHelperParams = {\n url: image,\n imageFormat: 'WebP',\n imageSizeMultiplier: 2,\n params: [\n {\n width: 680,\n quality: 90,\n },\n ],\n };\n const images = getImageVariants(imagesVariants);\n\n return (\n <img\n src={image}\n alt={name}\n sizes=\"452px\"\n srcSet={generateSrcSet(images)}\n loading=\"lazy\"\n decoding=\"async\"\n />\n );\n};\n","import { alpha, Link, Typography, styled, SHADOW_LEVEL1, Button } from '@ori-ui/mui';\n\nimport { CSS_DESKTOP_INNER_HEIGHT, CSS_HEIGHT_ANIMATION } from '../../constants';\n\nexport const JoinMenuRoot = styled('div')<{ ownerState: { isVisible: boolean } }>(({ 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('md')]: {\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n flexDirection: 'column',\n left: 0,\n position: 'absolute',\n top: CSS_DESKTOP_INNER_HEIGHT,\n transition: `top ${CSS_HEIGHT_ANIMATION}`,\n width: '100%',\n },\n }),\n}));\n\nexport const JoinTilesWrapper = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\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\nexport const JoinTileLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\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: theme.palette.grey.A700,\n borderColor: 'transparent',\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\nexport const JoinTileDescription = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\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\nexport const JoinTileButton = styled(Button)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n display: '-webkit-box',\n left: '50%',\n maxWidth: 295,\n minWidth: 125,\n overflow: 'hidden',\n position: 'absolute',\n textAlign: 'center',\n textOverflow: 'ellipsis',\n bottom: 60,\n transform: 'translate(-50%, 50%)',\n whiteSpace: 'nowrap',\n },\n}));\n\nexport const JoinMenuIdkyLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n alignSelf: 'center',\n color: theme.palette.default.main,\n fontSize: '1.5rem',\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: '2.3rem',\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","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { Backdrop } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport { StaticNavigationNavigationItemDtoLinkType } from '@ori/static-api-client-react';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback, useMemo } from 'react';\n\nimport { useGetNavigationType } from '../../api';\nimport { useActiveMenu } from '../../context/navigation';\nimport { useIsMobile } from '../../hooks';\nimport { JoinTileImage } from './components/JoinTileImage/JoinTileImage';\nimport { JOIN_MENU_BACKDROP, JOIN_MENU_ROOT, JOIN_MENU_TILE_DESCRIPTION, JOIN_MENU_TILE_LINK } from './constants';\nimport {\n JoinMenuRoot,\n JoinTilesWrapper,\n JoinTileLink,\n JoinTileDescription,\n JoinTileButton,\n JoinMenuIdkyLink,\n} from './styles';\n\nexport const JoinMenu: FC = () => {\n const { isUserVerified, isAnonymousUser } = useToken();\n const { activeMenu, toggleActiveMenu } = useActiveMenu();\n const isMobile = useIsMobile();\n const { data: items } = useGetNavigationType({\n type: 'JoinTiles',\n enabled: isAnonymousUser && isUserVerified && !isMobile,\n });\n const exitMenu = useCallback(() => toggleActiveMenu(''), [toggleActiveMenu]);\n const iDontKnowYetLink = useMemo(\n () => items.find(({ linkType }) => linkType === StaticNavigationNavigationItemDtoLinkType.IDontKnowYet),\n [items],\n );\n const joinTiles = useMemo(\n () => items.filter(({ linkType }) => linkType === StaticNavigationNavigationItemDtoLinkType.MenuTiles),\n [items],\n );\n const { getTestId } = useTestId();\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.JoinMenu;\n const ownerState = { isVisible: isMenuActive };\n\n if (joinTiles.length === 0 || isMobile) {\n return null;\n }\n\n return (\n <JoinMenuRoot\n data-testid={getTestId(JOIN_MENU_ROOT)}\n ownerState={ownerState}\n >\n <JoinTilesWrapper>\n {joinTiles.map(({ url, imageUrl, title, description }) => (\n <JoinTileLink\n key={url}\n data-testid={getTestId(JOIN_MENU_TILE_LINK)}\n href={url}\n >\n {imageUrl ? (\n <JoinTileImage\n image={imageUrl}\n name={title}\n />\n ) : null}\n <JoinTileDescription\n data-testid={getTestId(JOIN_MENU_TILE_DESCRIPTION)}\n variant=\"h4\"\n >\n {description}\n </JoinTileDescription>\n <JoinTileButton\n className=\"joinTileTitle\"\n variant=\"contained\"\n color=\"primary\"\n >\n {title}\n </JoinTileButton>\n </JoinTileLink>\n ))}\n </JoinTilesWrapper>\n {iDontKnowYetLink?.url ? (\n <JoinMenuIdkyLink href={iDontKnowYetLink.url}>{iDontKnowYetLink.title}</JoinMenuIdkyLink>\n ) : null}\n <Backdrop\n open\n data-testid={getTestId(JOIN_MENU_BACKDROP)}\n sx={{ position: 'absolute', zIndex: '-1', width: '100vw', height: '100vh' }}\n onClick={exitMenu}\n />\n </JoinMenuRoot>\n );\n};\n","export const JOIN_SKELETON = 'join-skeleton';\nexport const JOIN_LABEL = 'join-label';\nexport const JOIN_MENU_ROOT = 'join-menu-root';\nexport const JOIN_MENU_TILE_LINK = 'join-menu-tile-link';\nexport const JOIN_MENU_TILE_DESCRIPTION = 'join-menu-tile-description';\nexport const JOIN_MENU_BACKDROP = 'join-menu-backdrop';\n","import type { Data, MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport { Name } from '@ori-events/toggle-menu-flyout';\n\nimport type { ActiveMenu } from '../context/navigation';\n\nconst event = (menuType: MenuTypes) => new CustomEvent<Data>(Name, { detail: { menuType } });\n\nexport const dispatchToggleMenu = (menuToggle: MenuTypes, activeMenu?: ActiveMenu) => {\n if (activeMenu && menuToggle !== activeMenu) {\n window.dispatchEvent(event(activeMenu));\n }\n\n requestAnimationFrame(() => {\n window.dispatchEvent(event(menuToggle));\n });\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 { useActiveMenu } from '../context/navigation/activeMenuContext';\nimport { dispatchToggleMenu } from '../utils';\n\nconst toggleMenu = (menuIsOpen: boolean) => () => {\n if (!menuIsOpen) {\n UserAction.dispatch(CLICK_BURGER_MENU);\n }\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.BurgerMenu);\n};\n\nexport const useToggleMenu = () => {\n const { activeMenu } = useActiveMenu();\n const menuIsOpen = activeMenu === ToggleMenuFlyout.MenuTypes.BurgerMenu;\n\n return [menuIsOpen, toggleMenu(menuIsOpen)] as const;\n};\n","import { ButtonBase, SHADOW_LEVEL1, styled } from '@ori-ui/mui';\n\nexport const BurgerMenuIconRoot = styled(ButtonBase)<{ ownerState?: { isOpen?: boolean } }>(\n ({ ownerState, theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '2.8rem',\n height: 24,\n width: 24,\n\n [theme.breakpoints.up('md')]: {\n height: 32,\n width: 32,\n '&:hover': {\n '.burgerMenuIconLine': {\n boxShadow: SHADOW_LEVEL1,\n },\n },\n\n ...(ownerState?.isOpen && {\n '&:hover': {\n '.burgerMenuIconLine': {\n boxShadow: SHADOW_LEVEL1,\n },\n },\n }),\n },\n }),\n);\n\nexport const 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('md')]: {\n display: 'block',\n\n ...(ownerState?.isMobile && {\n display: 'none',\n }),\n },\n}));\n\nexport const BurgerMenuIconLine = styled('div')<{\n ownerState?: { isOpen?: boolean; isMobile?: boolean };\n}>(({ ownerState, theme }) => ({\n backgroundColor: theme.palette.text.primary,\n height: 1,\n marginBottom: 6,\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: 15,\n\n ...(ownerState?.isMobile && {\n display: 'block',\n }),\n\n [theme.breakpoints.up('md')]: {\n marginBottom: 8,\n width: 20,\n ...(ownerState?.isOpen && {\n '&:nth-of-type(1)': {\n transform: 'rotate(45deg) translateY(9px) translateX(4px)',\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(4px);',\n },\n }),\n },\n '&:nth-of-type(3)': {\n marginBottom: 0,\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useToggleMenu } from '../../../hooks';\nimport { useTranslations } from '../../../hooks/useTranslations';\nimport { BURGER_MENU } from '../constants';\nimport { BurgerMenuIconLine, BurgerMenuIconRoot, BurgerMenuIconWrapper } from './styles';\n\nexport const BurgerMenuIcon: FC = () => {\n const [menuIsOpen, toggleMenu] = useToggleMenu();\n const { formatMessage } = useTranslations();\n const ownerState = { isOpen: menuIsOpen };\n const { getTestId } = useTestId();\n\n return (\n <BurgerMenuIconRoot\n disableRipple\n aria-label={formatMessage('menu')}\n ownerState={ownerState}\n data-testid={getTestId(BURGER_MENU)}\n onClick={toggleMenu}\n >\n <BurgerMenuIconWrapper ownerState={{ ...ownerState, isMobile: true }}>\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n </BurgerMenuIconWrapper>\n <BurgerMenuIconWrapper>\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n <BurgerMenuIconLine\n ownerState={ownerState}\n className=\"burgerMenuIconLine\"\n />\n </BurgerMenuIconWrapper>\n </BurgerMenuIconRoot>\n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const BurgerMenuToggleRoot = styled('div')({\n position: 'relative',\n});\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { BurgerMenuIcon } from '../BurgerMenuIcon';\nimport { BURGER_MENU_TOGGLE_ROOT } from '../constants';\nimport { BurgerMenuToggleRoot } from './styles';\n\nexport const BurgerMenuToggle: FC = () => {\n const { getTestId } = useTestId();\n\n return (\n <BurgerMenuToggleRoot data-testid={getTestId(BURGER_MENU_TOGGLE_ROOT)}>\n <BurgerMenuIcon />\n </BurgerMenuToggleRoot>\n );\n};\n","import { styled } from '@ori-ui/mui';\n\nimport { CSS_HEIGHT_ANIMATION } from '../../../constants';\n\nexport const OriflameLogoSvg = styled('svg')(({ theme }) => ({\n width: 90,\n transition: `width ${CSS_HEIGHT_ANIMATION}`,\n\n [theme.breakpoints.up('md')]: {\n width: 118,\n },\n}));\n","import { styled } from '@ori-ui/mui';\n\nimport { OriflameLogoSvg } from '../styles';\n\nexport const Logo = styled(OriflameLogoSvg)(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n width: 160,\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { CHINESE_LOGO } from './constants';\nimport { Logo } from './styles';\n\nexport const ChineseLogo: FC = () => {\n const { getTestId } = useTestId();\n\n return (\n <Logo\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 151 45\"\n data-testid={getTestId(CHINESE_LOGO)}\n >\n <path d=\"M1.598 26.036h36.047v-.32H1.598v.32zm115.862 0h33.492v-.32H117.46v.32zm-69.645-.32c1.012.214 1.49.587 1.49 1.33 0 .8-.638 1.333-1.543 1.333-.745 0-1.33-.27-1.864-.75l.32-.37c.478.42.957.64 1.596.64s1.012-.32 1.012-.8c0-.43-.213-.69-1.17-.91-1.066-.22-1.545-.59-1.545-1.33s.64-1.28 1.5-1.28c.69 0 1.17.21 1.6.58l-.32.42c-.42-.38-.85-.48-1.33-.48-.58 0-.96.32-.96.74 0 .37.22.64 1.23.85zm11.13-2.076h.425l1.278 3.834 1.278-3.78h.586l-1.65 4.58h-.427l-1.278-3.72-1.278 3.73h-.43l-1.65-4.58h.58l1.27 3.78zm13.842.48h-2.822v1.543h2.502v.48h-2.502v1.65h2.822v.425h-3.354v-4.58h3.354zm9.743-.48h-1.596v4.58h1.597c1.44 0 2.45-1.013 2.45-2.29s-1.01-2.29-2.45-2.29zm0 4.1h-1.064v-3.62h1.065c1.18 0 1.92.798 1.92 1.81 0 1.064-.74 1.81-1.91 1.81zm13.74-3.62h-2.823v1.543h2.502v.48h-2.51v1.65h2.82v.425h-3.35v-4.58h3.35zm11.873-.48h.532v4.58h-.426l-2.99-3.728v3.72h-.48v-4.58h.48l2.87 3.67zM46.483 2.023h2.397V17.89h-2.396zM60.275 17.89h-2.343V2.023H69.54V4.26h-9.265v4.79h8.253v2.237h-8.253zm27.687 0h-10.97V2.023h2.397v13.63h8.57zm34.663-4.153l-5.058-7.56V17.89h-2.29V2.023h2.236l5.378 8.04 5.38-8.04h2.24V17.89h-2.39V6.123l-5.27 7.934zm28.38 4.153h-11.767V2.023h11.66V4.26h-9.318v4.525h8.306v2.236h-8.306v4.69h9.425zM34.078 11.553c2.45-.638 3.94-2.342 3.94-4.685 0-2.982-2.343-4.9-5.857-4.9h-6.92v15.868h2.4V11.98h3.89l4.32 5.91h3.04l-4.8-6.337zm-6.443-1.756V4.26H32c2.29 0 3.568.958 3.568 2.716 0 1.704-1.384 2.822-3.567 2.822h-4.36zm74.278-7.88H99.89L92.64 17.89h2.5l1.81-4.1h7.77l1.81 4.1h2.61L101.9 1.916zM97.92 11.66l2.98-6.815 2.98 6.815h-5.96zM18.31 8.998c0 5.058-4.1 9.158-9.16 9.158S0 14.056 0 8.998C0 4.472 3.302.692 7.615 0v.053c-3.355 1.33-5.378 4.473-5.378 8.2 0 4.74 3.354 7.454 6.922 7.454 3.72 0 6.7-3.035 6.7-6.71 0-3.194-2.5-5.856-5.81-5.856-3.78 0-5.59 3.46-5.59 3.46h-.05s1.71-4.94 6.66-4.94c3.09 0 7.24 2.5 7.24 7.35zm33.53 34.645c-.28-.06-1.147-.093-2.6-.093s-2.382.03-2.79.094c.02-.87.03-1.62.03-2.25v-5.28c0-.76-.01-1.5-.03-2.22.336.06 1.264.08 2.785.08s2.44-.03 2.757-.08v.87c-.318-.07-.865-.11-1.643-.11h-3.08v8.19h3.08c.72 0 1.22-.04 1.49-.12v.93zm-1.968-5.552c.534-1.04.86-1.9.978-2.59.262.16.497.28.7.34.203.06.306.13.306.19s-.07.13-.22.21c-.143.07-.35.4-.608.99-.262.59-.493 1.08-.693 1.49.564.73 1.16 1.57 1.795 2.53l-.76.45c-.27-.58-.736-1.34-1.398-2.28-.462.82-1.028 1.62-1.696 2.42-.16-.21-.404-.33-.732-.38.76-.75 1.42-1.64 1.98-2.66-.737-1.05-1.37-1.85-1.9-2.41l.513-.39c.506.57 1.084 1.28 1.736 2.13zm5.022 2.47c-.263 1.73-1.275 3.31-3.04 4.74-.156-.31-.42-.53-.8-.66 1.187-.64 2.03-1.49 2.54-2.53.505-1.05.767-2.64.786-4.78.28.08.515.12.706.12l.283-.01c.1 0 .15.03.15.1s-.06.14-.17.23c-.11.09-.22.51-.31 1.26.38 1.41.82 2.49 1.33 3.27s1.24 1.46 2.19 2.05c-.26.21-.46.47-.61.79-1.64-1.3-2.67-2.82-3.07-4.54zm-1.238-4.58c-.326 1.07-.738 2.09-1.235 3.07-.23-.23-.5-.36-.79-.39.46-.58.86-1.4 1.21-2.47s.59-2.18.7-3.3c.33.15.61.24.84.27s.35.07.35.14-.05.13-.16.21c-.16.11-.39.7-.69 1.77h1.72c.96 0 1.81-.05 2.55-.14l-1.07 2.96-.71-.26.67-1.88h-3.37zm20.12-1.23c-.736 0-1.3.04-1.698.11v-.84c.444.07 1.127.11 2.05.11s1.604-.04 2.048-.11v.85c-.38-.07-.914-.11-1.6-.11V38c.625 0 1.106-.038 1.44-.11v.882c-.38-.08-.86-.123-1.44-.123v3.46c.625-.18 1.146-.37 1.56-.58-.036.13-.05.25-.05.38s.02.28.07.46c-1.62.36-3.02.78-4.197 1.27-.08-.37-.22-.71-.41-1.02.55 0 1.29-.1 2.22-.32v-3.68c-.64 0-1.15.04-1.56.12v-.88c.35.08.87.12 1.56.12v-3.25zm5.62 3.65c-1.42.01-2.448.05-3.083.11v-.84c.774.07 2.06.11 3.866.11s3.09-.03 3.87-.11v.84c-.77-.07-2.04-.11-3.82-.11l-.49 1.4c1.4 0 2.68-.05 3.85-.15-.05.49-.07 1.01-.07 1.58v2.73c0 .36-.05.61-.14.76-.09.15-.27.26-.54.31-.27.06-.72.1-1.35.12 0-.08.01-.16.01-.23 0-.26-.1-.5-.3-.7.39.09.7.14.92.14.38 0 .58-.16.58-.47V40.4h-1.35v2.256c0 .552.02.99.06 1.314h-.87c.03-.325.05-.762.05-1.315v-2.26h-1.25v2.32c0 .55.02.99.07 1.32h-.87c.03-.36.05-.79.05-1.32v-2.32h-1.27v4.71h-.87c.05-.43.08-.86.08-1.31v-2.59c0-.59-.03-1.11-.08-1.56.7.06 1.51.1 2.43.12.21-.5.37-.96.47-1.39zm1.043-2.33h2.12v-1.39c0-.44-.02-.77-.07-.99.37.05.64.07.8.07.16 0 .24.04.24.12s-.03.16-.1.23c-.1.11-.13.98-.11 2.61-.76-.04-1.86-.07-3.29-.07s-2.52.03-3.25.07c.05-.31.08-.63.08-.98V34.5c0-.352-.03-.624-.08-.814.22.072.44.11.66.11l.35-.016c.11 0 .16.04.16.115 0 .078-.06.175-.18.294-.12.12-.17.74-.14 1.87h2.01v-1.68c0-.54-.03-.95-.1-1.24.22.06.39.09.53.09.13 0 .24-.01.33-.02s.13-.02.14-.02c.08 0 .12.03.12.09s-.03.12-.08.16c-.12.08-.18.34-.18.79v1.81zm24.98-1.68c1.26 0 2.32-.03 3.19-.11v.89c-.87-.07-1.93-.11-3.19-.11v1.04h-.8v-1.05h-3.36v1.14h-.79v-1.14c-1.46 0-2.62.04-3.49.11v-.88c.86.07 2.02.11 3.49.11-.02-.73-.05-1.25-.08-1.56.35.06.67.08.96.08.09 0 .13.03.13.09s-.03.11-.08.15c-.1.06-.15.2-.15.42v.83h3.35c0-.69-.03-1.21-.08-1.57.35.06.68.08.97.08.09 0 .13.03.13.07 0 .05-.03.09-.08.13-.1.06-.15.21-.15.42v.88zm-6.27 8.57v-3.17c-.9 0-1.5.02-1.81.06v-.87c.42.06.86.1 1.32.1s.9-.03 1.33-.09c-.07.31-.11.85-.11 1.62v2.47c.83.47 1.55.78 2.16.95s1.42.26 2.43.26c1.01 0 2.58-.08 4.7-.23-.23.25-.35.56-.36.95-.83.01-1.76.01-2.78.01s-1.91-.03-2.67-.08c-.76-.06-1.36-.15-1.8-.28-.44-.13-.9-.33-1.39-.62-.3-.17-.54-.25-.74-.25-.19 0-.4.11-.61.31s-.47.54-.77.99c-.22-.27-.47-.46-.76-.57 1-.97 1.62-1.48 1.83-1.51zm1.23-5.45l-.64.54c-.5-.71-1.05-1.34-1.65-1.89l.56-.51c.59.6 1.16 1.22 1.71 1.84zm2.59.41c-.83 0-1.56.04-2.22.11v-.83c.63.06 1.48.09 2.55.09.26-.51.43-.98.5-1.43.36.19.63.3.79.34.17.04.25.09.25.16s-.04.12-.12.17c-.21.1-.43.35-.66.74h1.63c1 0 1.86-.03 2.6-.09V38c-.74-.07-1.61-.11-2.61-.11h-1.98c-.33.59-.68 1.17-1.06 1.74h1.73c-.02-.57-.04-.99-.06-1.26.24.04.45.07.62.07l.35-.02c.13 0 .19.03.19.1 0 .06-.05.13-.16.21s-.17.38-.17.9c1.2 0 2.08-.038 2.63-.1v.8c-.5-.07-1.37-.11-2.63-.12v1.3c1.49 0 2.59-.03 3.3-.09v.79c-.7-.06-1.8-.094-3.3-.094 0 .67.03 1.31.08 1.915h-.94c.05-.49.08-1.13.08-1.91-1.73 0-2.96.03-3.69.1v-.79c.92.06 2.15.1 3.69.1v-1.3c-1.31.01-2.29.09-2.95.256-.01-.32-.12-.57-.31-.75.42-.14.75-.34.99-.62.24-.27.52-.68.83-1.23z\" />\n </Logo>\n );\n};\n","export const CHINESE_LOGO = 'cn';\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { OriflameLogoSvg } from '../styles';\nimport { COMMON_LOGO } from './constants';\n\nexport const CommonLogo: FC = () => {\n const { getTestId } = useTestId();\n\n return (\n <OriflameLogoSvg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 139 31\"\n data-testid={getTestId(COMMON_LOGO)}\n >\n <path d=\"M57.98 28.94l-1.595-4.904h-.98L53.81 28.94l-1.593-4.91h-1.23l2.206 6.62h.98l1.716-4.66 1.59 4.66h.98l2.2-6.62h-1.22zM1.334 26.857h33.35v.98H1.334v-.98zm41.318-24.89h2.207v14.59h-2.21V1.967zm10.544 14.59h2.207v-6.13h7.602V8.343h-7.61V3.93h8.46V1.966h-10.66zM8.324 16.8c4.66 0 8.46-3.8 8.46-8.46 0-4.534-3.8-6.62-6.62-6.62-5.518 0-5.886 5.396-5.886 5.396h.13s.98-3.923 4.78-3.923c3.07 0 5.4 2.084 5.4 5.027 0 3.43-2.82 6.25-6.25 6.25-3.31 0-6.372-2.45-6.372-6.87 0-3.44 1.84-6.26 5.027-7.48V0C2.947.61.003 4.17.003 8.33c-.122 4.66 3.68 8.46 8.338 8.46zm36.78 10.056c-1.225-.245-1.593-.49-1.593-.98s.37-.737 1.11-.737c.62 0 1.23.24 1.72.61l.617-.85c-.613-.49-1.47-.86-2.33-.86-1.35 0-2.207.74-2.207 1.96s.73 1.6 2.2 1.96c1.22.25 1.47.49 1.47.98s-.49.86-1.1.86c-.86 0-1.47-.37-2.09-.86l-.74.86c.735.74 1.716 1.11 2.696 1.11 1.35 0 2.33-.73 2.33-1.96 0-1.35-.738-1.84-2.086-2.08zm-9.317-10.3l-4.414-5.884c2.207-.61 3.678-2.2 3.678-4.29 0-2.69-2.2-4.53-5.39-4.53h-6.38v14.59h2.2v-5.4h3.55l4.05 5.4 2.7.126zm-10.3-7.48V3.93h4.047c2.084 0 3.31.86 3.31 2.453s-1.35 2.575-3.31 2.575h-4.047zm40.706 18.76h3.31v-1.102h-3.31V25.14h3.678v-1.103h-4.78v6.498h4.78v-.98H66.2zM91.817 1.844l-6.62 14.713h2.33l1.715-3.8h7.11l1.595 3.8h2.452L93.78 1.844h-1.964zm-1.838 8.95l2.69-6.252 2.69 6.26h-5.4zm18.14-5.026l4.66 6.866.24.368.24-.36 4.536-6.86v10.79h2.207v-14.6h-2.084l-4.904 7.356-4.906-7.356h-2.08v14.59h2.085zm0 21.088h30.89v.98h-30.89v-.98zm22.19-12.383v-4.29h7.6V8.098h-7.6v-4.17h8.58v-1.96h-10.78v14.59h10.79V14.47zM98.93 28.57l-3.557-4.534H94.27v6.498h1.226v-4.536l3.55 4.536h.98v-6.498h-1.1zM72.936 1.968h-2.084v14.59h10.054v-2.084h-7.97zm13.12 25.87h3.31v-1.103h-3.31V25.14h3.677v-1.103H84.95v6.498h4.905v-.98h-3.81zm-9.197-3.8H74.4v6.497h2.453c2.083 0 3.432-1.47 3.432-3.31.122-1.717-1.35-3.188-3.434-3.188zm0 5.516h-1.35V25.14h1.35c1.35 0 2.2.98 2.2 2.206.12 1.226-.86 2.207-2.21 2.207z\" />\n </OriflameLogoSvg>\n );\n};\n","export const COMMON_LOGO = 'common';\n","import { Link, styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')({\n textAlign: 'center',\n});\n\nexport const StyledLink = styled(Link)(({ theme }) => ({\n lineHeight: 0,\n display: 'block',\n svg: {\n fill: theme.palette.text.primary,\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useIsMarketCN } from '../../hooks/useIsMarketCN';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { ChineseLogo, CommonLogo } from './components';\nimport { ORIFLAME_LOGO_ROOT } from './constants';\nimport { Root, StyledLink } from './styles';\n\nexport const OriflameLogo: FC = () => {\n const { getTestId } = useTestId();\n const isMarketCN = useIsMarketCN();\n const { translations } = useTranslations();\n\n return (\n <Root data-testid={getTestId(ORIFLAME_LOGO_ROOT)}>\n <StyledLink\n href=\"/\"\n aria-label={translations.oriflameSweden}\n >\n {isMarketCN ? <ChineseLogo /> : <CommonLogo />}\n </StyledLink>\n </Root>\n );\n};\n","import { CN_MARKET } from '../constants';\nimport { useAppConfig } from '../context';\n\nexport const useIsMarketCN = () => {\n const { tenant } = useAppConfig();\n\n return tenant === CN_MARKET;\n};\n","export const CN_MARKET = 'cn';\n","export const ORIFLAME_LOGO_ROOT = 'oriflame-logo';\n","import { styled } from '@ori-ui/mui';\n\nexport const LeftActionsSectionRoot = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n gap: theme.spacing(3),\n\n [theme.breakpoints.up('sm')]: {\n maxWidth: 'none',\n },\n [theme.breakpoints.up('md')]: {\n gap: theme.spacing(4),\n },\n [theme.breakpoints.up('lg')]: {\n gap: theme.spacing(8),\n },\n}));\n","import type { FC } from 'react';\n\nimport { BurgerMenuToggle } from '../BurgerMenu/BurgerMenuToggle';\nimport { OriflameLogo } from '../OriflameLogo';\nimport { LeftActionsSectionRoot } from './styles';\n\nexport const LeftActionsSection: FC = () => (\n <LeftActionsSectionRoot>\n <BurgerMenuToggle />\n <OriflameLogo />\n </LeftActionsSectionRoot>\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 = <Ref extends HTMLElement = HTMLAnchorElement & HTMLButtonElement>(\n iconOnHover: ElementType,\n icon: ElementType,\n hidden?: boolean,\n): [RefObject<Ref>, ElementType] => {\n const [isHover, setIsHover] = useState(false);\n const ref = useRef<Ref>(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 && !hidden) {\n element?.addEventListener('mouseover', handleMouseOver);\n element?.addEventListener('mouseleave', handleMouseLeave);\n }\n\n return () => {\n if (isHoverAvailable && !hidden) {\n element?.removeEventListener('mouseover', handleMouseOver);\n element?.removeEventListener('mouseleave', handleMouseLeave);\n }\n };\n }, [isHoverAvailable, handleMouseOver, handleMouseLeave, hidden]);\n\n return [ref, getIcon];\n};\n","export const FAVORITE_HEART_ROOT = 'favorite-heart-root';\n","import { HeartFilled as HeartFilledIcon } from '@ori-ui/icons';\nimport { Link, styled } from '@ori-ui/mui';\n\nexport const FavoritesHeartRoot = styled(Link)(({ theme }) => ({\n display: 'none',\n [theme.breakpoints.up('md')]: {\n color: theme.palette.text.primary,\n display: 'inline-flex',\n fontSize: '3rem',\n height: 'fit-content',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.primary,\n cursor: 'pointer',\n },\n\n '& div:first-of-type': {\n alignItems: 'center',\n display: 'flex',\n },\n },\n}));\n\nexport const HeartFilled = styled(HeartFilledIcon)(({ theme }) => ({\n color: theme.palette.pink[300],\n}));\n","import * as UserAction from '@ori-events/user-action';\nimport { Heart, HeartFilled } from '@ori-ui/icons';\nimport { useToken } from '@ori/auth';\nimport { useAreFavoritesEnabled } from '@ori/presentation-hooks';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { CLICK_FAVORITE_ICON } from '../../constants';\nimport { useHover } from '../../hooks';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { FavoritesLink } from '../../models';\nimport { FAVORITE_HEART_ROOT } from './constants';\nimport { FavoritesHeartRoot } from './styles';\n\nexport const FavoritesHeartIcon: FC = () => {\n const { customerId } = useToken();\n const shouldFavoritesRender = useAreFavoritesEnabled({ customerId });\n const [ref, Icon] = useHover(HeartFilled, Heart, !shouldFavoritesRender);\n const { getTestId } = useTestId();\n const { translations } = useTranslations();\n const isOnFavorites = window.location.pathname.includes(FavoritesLink);\n\n const handleClick = useCallback(() => {\n UserAction.dispatch(CLICK_FAVORITE_ICON);\n }, []);\n\n if (!shouldFavoritesRender) {\n return null;\n }\n\n return (\n <FavoritesHeartRoot\n ref={ref}\n aria-label={translations.myFavoriteProducts}\n data-testid={getTestId(FAVORITE_HEART_ROOT)}\n href={isOnFavorites ? undefined : FavoritesLink}\n onClick={handleClick}\n >\n <Icon fontSize=\"inherit\" />\n </FavoritesHeartRoot>\n );\n};\n","import { StaticNavigationNavigationItemDtoType } from '@ori/static-api-client-react';\nimport type { StaticNavigationNavigationItemDto } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport { useGetNavigationType } from '../../api';\n\nexport interface LabelsContext {\n aboutLabel: string;\n joinLabel: string;\n joinUrl: string;\n loading: boolean;\n}\n\nexport const labelsContextDefaultValue: LabelsContext = {\n aboutLabel: '',\n joinLabel: '',\n joinUrl: '',\n loading: true,\n};\n\nexport const labelsContext = createContext(labelsContextDefaultValue);\n\nconst { Provider } = labelsContext;\n\nconst findLabel = (\n item: StaticNavigationNavigationItemDtoType,\n fallback: string,\n collection?: StaticNavigationNavigationItemDto[] | null,\n) => collection?.find(({ type }) => type === item)?.title ?? fallback;\n\nconst findUrl = (\n item: StaticNavigationNavigationItemDtoType,\n fallback: string,\n collection?: StaticNavigationNavigationItemDto[] | null,\n) => collection?.find(({ type }) => type === item)?.url ?? fallback;\n\nexport const LabelsProvider: FC<PropsWithChildren> = ({ children }) => {\n const { data: items, loading } = useGetNavigationType({ type: 'TopNavigation' });\n const value = useMemo(\n () => ({\n aboutLabel: findLabel(\n StaticNavigationNavigationItemDtoType.AboutTiles,\n labelsContextDefaultValue.aboutLabel,\n items,\n ),\n joinLabel: findLabel(StaticNavigationNavigationItemDtoType.JoinTiles, labelsContextDefaultValue.joinLabel, items),\n joinUrl: findUrl(StaticNavigationNavigationItemDtoType.JoinTiles, labelsContextDefaultValue.joinUrl, items),\n loading,\n }),\n [items, loading],\n );\n\n return <Provider value={value}>{children}</Provider>;\n};\n\nexport const useLabels = () => useContext(labelsContext);\n","import { Link, Skeleton, styled } from '@ori-ui/mui';\nimport { shouldNotForwardProp } from '@ori/presentation-utils';\n\nexport const JoinLabel = styled(Link, { shouldForwardProp: shouldNotForwardProp(['disableRipple']) })<{\n disableRipple?: boolean;\n}>(({ theme }) => ({\n display: 'none',\n [theme.breakpoints.up('md')]: {\n color: theme.palette.text.primary,\n display: 'block',\n fontSize: '1.4rem',\n fontWeight: theme.typography.fontWeightBold,\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n textTransform: 'uppercase',\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n cursor: 'pointer',\n },\n },\n}));\n\nexport const JoinSkeleton = styled(Skeleton)(({ theme }) => ({\n display: 'none',\n [theme.breakpoints.up('md')]: {\n display: 'block',\n },\n}));\n","import * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport { ButtonBase } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback, type FC } from 'react';\n\nimport { useGetNavigationType } from '../../../../api';\nimport { useLabels } from '../../../../context/navigation';\nimport { useIsMobile } from '../../../../hooks';\nimport { dispatchToggleMenu } from '../../../../utils';\nimport { JOIN_LABEL, JOIN_SKELETON } from '../../constants';\nimport { JoinLabel, JoinSkeleton } from './styles';\n\nexport const JoinIcon: FC = () => {\n const { isUserVerified, isAnonymousUser } = useToken();\n const { joinLabel, joinUrl, loading } = useLabels();\n const isMobile = useIsMobile();\n const { data: items } = useGetNavigationType({\n type: 'JoinTiles',\n enabled: isAnonymousUser && isUserVerified && !isMobile,\n });\n const { getTestId } = useTestId();\n const handleClick = useCallback(() => dispatchToggleMenu(ToggleMenuFlyoutEvent.MenuTypes.JoinMenu), []);\n\n if (loading || !isUserVerified) {\n return (\n <JoinSkeleton\n data-testid={getTestId(JOIN_SKELETON)}\n variant=\"rectangular\"\n height={21}\n width={120}\n />\n );\n }\n\n if (items.length > 0) {\n return (\n <JoinLabel\n disableRipple\n as={ButtonBase}\n data-testid={getTestId(JOIN_LABEL)}\n onClick={handleClick}\n >\n {joinLabel}\n </JoinLabel>\n );\n }\n\n if (joinUrl) {\n return <JoinLabel href={joinUrl}>{joinLabel}</JoinLabel>;\n }\n\n return null;\n};\n","import { IconButton } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\n\nexport const NotificationBellIconButton = styled(IconButton)(({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '3rem',\n padding: 0,\n\n '&:hover, &:focus, &:active': {\n background: 'none',\n color: theme.palette.text.primary,\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 } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport { CLIENT_APPLICATION } from '@ori/fetching';\nimport { useGetCustomerUnseenNotificationsCount } from '@ori/global-api-client-react';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback, useState } from 'react';\n\nimport { CLICK_NOTIFICATION_ICON } from '../../constants';\nimport { useHover } from '../../hooks';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { dispatchToggleMenu } from '../../utils';\nimport { NOTIFICATION_BELL_ICON_BELL, NOTIFICATION_BELL_ICON_BUTTON } from './constants';\nimport { NotificationBellIconButton } from './styles';\n\nexport const NotificationBellIcon: FC = () => {\n const [ref, Icon] = useHover(NotificationFilled, Notification);\n const [isClicked, setIsClicked] = useState(false);\n const { customerId } = useToken();\n const { getTestId } = useTestId();\n const { translations } = useTranslations();\n const { data } = useGetCustomerUnseenNotificationsCount(\n customerId,\n {\n [CLIENT_APPLICATION]: 'Web' /* notifications API requires value `Web` */,\n },\n {\n swr: getRetryErrorSwrOptions(),\n },\n );\n const { count } = data ?? { count: 0 };\n\n const handleClick = useCallback(() => {\n UserAction.dispatch(CLICK_NOTIFICATION_ICON);\n setIsClicked(true);\n dispatchToggleMenu(ToggleMenuFlyoutEvent.MenuTypes.Notifications);\n }, []);\n\n return (\n <NotificationBellIconButton\n ref={ref}\n variant=\"text\"\n aria-label={translations.notifications}\n data-testid={getTestId(NOTIFICATION_BELL_ICON_BUTTON)}\n onClick={handleClick}\n >\n <Badge\n color=\"error\"\n badgeContent={count}\n max={99}\n data-testid={getTestId(NOTIFICATION_BELL_ICON_BELL)}\n invisible={isClicked || count === 0}\n >\n <Icon fontSize=\"inherit\" />\n </Badge>\n </NotificationBellIconButton>\n );\n};\n","export const NOTIFICATION_BELL_ICON_BUTTON = 'notification-bell-icon-button';\nexport const NOTIFICATION_BELL_ICON_BELL = 'notification-bell-icon-bell';\n","import { useIsMobile } from './useIsMobile';\nimport { useTranslations } from './useTranslations';\n\nexport const useSearchInputPlaceholder = () => {\n const isMobile = useIsMobile();\n const { translations } = useTranslations();\n\n return isMobile ? translations.search : translations.searchDesktop;\n};\n","import { ButtonBase, styled } from '@ori-ui/mui';\n\nexport const SearchIconRoot = styled(ButtonBase)(({ theme }) => ({\n color: theme.palette.text.primary,\n display: 'none',\n fontSize: '3rem',\n\n [theme.breakpoints.down('md')]: {\n display: 'inline-flex',\n },\n}));\n","import { Search } from '@ori-ui/icons';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback } from 'react';\n\nimport { useActiveMenu, useSearchInput } from '../../context/navigation';\nimport { useSearchInputPlaceholder } from '../../hooks/useSearchInputPlaceholder';\nimport { SEARCH_ICON } from './constants';\nimport { SearchIconRoot } from './styles';\n\nexport const SearchIcon = () => {\n const { hideSearchResultsTab } = useActiveMenu();\n const { isVisible, hide, show, manualShow, manualHide } = useSearchInput();\n const { getTestId } = useTestId();\n const searchPlaceholder = useSearchInputPlaceholder();\n\n const handleClick = useCallback(() => {\n if (isVisible) {\n manualHide();\n hide();\n hideSearchResultsTab();\n } else {\n show();\n manualShow();\n }\n }, [hide, hideSearchResultsTab, isVisible, manualHide, manualShow, show]);\n\n return (\n <SearchIconRoot\n disableRipple\n aria-label={searchPlaceholder}\n data-testid={getTestId(SEARCH_ICON)}\n onClick={handleClick}\n >\n {isVisible ? null : <Search fontSize=\"inherit\" />}\n </SearchIconRoot>\n );\n};\n","export const SEARCH_ICON = 'search-icon';\n","import type { SearchProduct } from '../components/SearchPreview/types';\n\nexport const mapSearchPreviewProductToShadePicker = (product: SearchProduct) =>\n product.shades?.map((shade) => ({\n code: shade.productCode,\n name: shade.name ?? '',\n price: {\n currentFormatted: shade.price.currentFormatted,\n oldFormatted: shade.price.oldFormatted,\n },\n shade,\n })) ?? [];\n","import { DialogMode } from '@ori-events/open-product-info-dialog';\n\nimport type { SearchProduct } from '../components/SearchPreview/types';\nimport { openProductInfoDialog } from './openProductInfoDialog';\nimport { openShadePicker } from './openShadePicker';\n\nexport const getQuickBuyButtonOnClickHandler = (product: SearchProduct, position: number) => {\n if (product.hasAutosubscribe) {\n return openProductInfoDialog(DialogMode.StandardBuy, product.code, position);\n } else if (product.isMultishade) {\n return openShadePicker(product);\n }\n\n return undefined;\n};\n","import * as OpenProductInfoDialog from '@ori-events/open-product-info-dialog';\nimport type { DialogMode } from '@ori-events/open-product-info-dialog';\nimport { Placement } from '@ori/analytics-data';\n\nexport const openProductInfoDialog =\n (mode: DialogMode, productCode: string, position = 0) =>\n () =>\n window.dispatchEvent(\n new CustomEvent<OpenProductInfoDialog.Data>(OpenProductInfoDialog.Name, {\n detail: {\n mode,\n placement: Placement.TopNavigationSearchSuggestions,\n productCodes: [productCode],\n position,\n },\n }),\n );\n","import * as OpenShadePicker from '@ori-events/open-shade-picker';\nimport { Placement } from '@ori/analytics-data';\n\nimport type { SearchProduct } from '../components';\nimport { mapSearchPreviewProductToShadePicker } from './mapSearchPreviewProductToShadePicker';\n\nexport const openShadePicker = (product: SearchProduct) => () => {\n window.dispatchEvent(\n new CustomEvent<OpenShadePicker.Data>(OpenShadePicker.Name, {\n detail: {\n productName: product.name,\n products: mapSearchPreviewProductToShadePicker(product),\n placement: Placement.TopNavigationSearchSuggestions,\n productCode: product.code,\n },\n }),\n );\n};\n","export const getSearchUrl = (name: string) => `/search?query=${encodeURIComponent(name)}`;\n","export const SEARCH_PREVIEW_PRODUCT = 'search-preview-product';\nexport const QUERY_NAME = 'query';\n","export interface BoldMatchedTextParams {\n text: string | null;\n searchPhrase: string;\n}\nexport const boldMatchedText = ({ text, searchPhrase }: BoldMatchedTextParams) => {\n if (!text) {\n return null;\n }\n if (!searchPhrase) {\n return text;\n }\n\n const escapedSearchPhrase = searchPhrase.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&').trim();\n const regExpPattern = new RegExp(escapedSearchPhrase, 'igu');\n const splitText = text.split(regExpPattern);\n const matches = text.match(regExpPattern);\n\n if (!matches) {\n return text;\n }\n\n return splitText.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 <span key={`${el}-${text}-${index}`}>\n {el}\n <strong>{matches[index]}</strong>\n </span>\n );\n });\n};\n","import { Search } from '@ori-ui/icons';\nimport type { TypographyProps, ChipProps } from '@ori-ui/mui';\nimport { Chip, Typography, chipClasses, styled } from '@ori-ui/mui';\n\nimport { CHIP_HEIGHT } from './constants';\n\nexport const Label = styled(Typography)<Pick<TypographyProps, 'component'>>({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n textTransform: 'none',\n verticalAlign: 'baseline',\n});\n\nexport const StyledChip = styled(Chip)<Pick<ChipProps, 'component'>>(({ theme }) => ({\n height: CHIP_HEIGHT,\n padding: theme.spacing(1, 3),\n gap: theme.spacing(1),\n borderRadius: theme.spacing(2),\n [`.${chipClasses.icon}`]: {\n margin: 0,\n },\n [`.${chipClasses.label}`]: {\n padding: 0,\n },\n}));\n\nexport const SearchIcon = styled(Search)({\n height: '24px',\n width: '24px',\n});\n","export const SEARCH_PREVIEW_SUGGESTION = 'search-preview-suggestion';\nexport const CHIP_HEIGHT = 35;\n","import useTestId from '@ori/testid-generator';\nimport { useMemo, type FC } from 'react';\n\nimport { boldMatchedText } from '../../../../utils';\nimport { SEARCH_PREVIEW_SUGGESTION } from './constants';\nimport { Label, SearchIcon, StyledChip } from './styles';\nimport type { SearchPreviewSuggestionProps } from './types';\n\nexport const SearchPreviewSuggestion: FC<SearchPreviewSuggestionProps> = ({ searchPhrase, text, onClick }) => {\n const { getTestId } = useTestId();\n\n const label = useMemo(() => {\n const textWithBoldPhrase = boldMatchedText({ searchPhrase, text });\n\n return <Label color=\"textPrimary\">{textWithBoldPhrase}</Label>;\n }, [searchPhrase, text]);\n\n const icon = useMemo(() => <SearchIcon />, []);\n\n return (\n <StyledChip\n variant=\"rounded\"\n data-testid={getTestId(SEARCH_PREVIEW_SUGGESTION)}\n label={label}\n icon={icon}\n onClick={onClick}\n />\n );\n};\n","import { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useTranslations } from '../../../../hooks/useTranslations';\nimport { SEARCH_PREVIEW_HEADER } from './constants';\nimport type { SearchPreviewHeaderProps } from './types';\n\n/**\n * Search Preview header component. This component is used to display the search query.\n */\nexport const SearchPreviewHeader: FC<SearchPreviewHeaderProps> = ({ query }) => {\n const { getTestId } = useTestId();\n const { translations } = useTranslations();\n\n return (\n <Typography\n data-testid={getTestId(SEARCH_PREVIEW_HEADER)}\n fontWeight=\"bold\"\n variant=\"h6\"\n component=\"h6\"\n color=\"textPrimary\"\n >\n {`${translations.popularSearchQueries} ”${(query ?? '').trim()}”`}\n </Typography>\n );\n};\n","export const SEARCH_PREVIEW_HEADER = 'search-preview-header';\n","export const SEARCH_PREVIEW_IMAGE = 'search-preview-image';\nexport const SEARCH_PREVIEW_IMAGE_PLACEHOLDER = 'search-preview-image-placeholder';\nexport const SEARCH_PREVIEW_IMAGE_SIZE = 80;\nexport const SEARCH_PREVIEW_IMAGE_WRAPPER_HEIGHT = 110;\n","import { styled } from '@ori-ui/mui';\n\nimport { SEARCH_PREVIEW_IMAGE_SIZE, SEARCH_PREVIEW_IMAGE_WRAPPER_HEIGHT } from './constants';\n\nexport const Root = styled('img')({\n height: SEARCH_PREVIEW_IMAGE_SIZE,\n width: SEARCH_PREVIEW_IMAGE_SIZE,\n minWidth: SEARCH_PREVIEW_IMAGE_SIZE,\n});\n\nexport const ImageWrapper = styled('div')(({ theme }) => ({\n background: theme.palette.grey[100],\n borderRadius: theme.shape.borderRadius,\n height: SEARCH_PREVIEW_IMAGE_WRAPPER_HEIGHT,\n width: SEARCH_PREVIEW_IMAGE_SIZE,\n padding: theme.spacing(3, 0),\n boxSizing: 'border-box',\n}));\n","import { useTheme } from '@ori-ui/mui';\nimport { generateSrcSet, getImageVariants, type ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { ImagePlaceholder } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\nimport { type FC } from 'react';\n\nimport { SEARCH_PREVIEW_IMAGE, SEARCH_PREVIEW_IMAGE_PLACEHOLDER, SEARCH_PREVIEW_IMAGE_SIZE } from './constants';\nimport { ImageWrapper, Root } from './styles';\nimport type { SearchPreviewImageProps } from './types';\n\nexport const SearchPreviewImage: FC<SearchPreviewImageProps> = ({ imageUrl, name }) => {\n const { getTestId } = useTestId();\n const theme = useTheme();\n\n if (!imageUrl) {\n return (\n <ImageWrapper>\n <ImagePlaceholder\n testId={getTestId(SEARCH_PREVIEW_IMAGE_PLACEHOLDER)}\n height={SEARCH_PREVIEW_IMAGE_SIZE}\n width={SEARCH_PREVIEW_IMAGE_SIZE}\n />\n </ImageWrapper>\n );\n }\n\n const imagesVariants: ImageSizesHelperParams = {\n url: imageUrl,\n imageFormat: 'WebP',\n backgroundColor: theme.palette.grey[100],\n imageSizeMultiplier: 2,\n params: [\n {\n width: SEARCH_PREVIEW_IMAGE_SIZE,\n height: SEARCH_PREVIEW_IMAGE_SIZE,\n quality: 90,\n },\n ],\n };\n\n return (\n <ImageWrapper>\n <Root\n data-testid={getTestId(SEARCH_PREVIEW_IMAGE)}\n alt={name ?? ''}\n src={imageUrl}\n srcSet={generateSrcSet(getImageVariants(imagesVariants))}\n sizes={`${SEARCH_PREVIEW_IMAGE_SIZE}px`}\n />\n </ImageWrapper>\n );\n};\n","import { NEW_EDITION } from '@ori/presentation-components';\n\nexport const SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO_LABEL = 'search-preview-product-product-info-label';\n\nexport const allowedDealLabels = [NEW_EDITION];\n","import { styled } from '@ori-ui/mui';\n\nexport const LabelContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n [theme.breakpoints.up('md')]: {\n marginBottom: 0,\n },\n}));\n","import { Chip } from '@ori-ui/mui';\nimport { isPpaLabel } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\nimport { useMemo, type FC } from 'react';\n\nimport { type SearchPreviewProductProps } from '../../types';\nimport { allowedDealLabels, SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO_LABEL } from './constants';\nimport { LabelContainer } from './styles';\n\nexport type ProductInfoLabelProps = Pick<SearchPreviewProductProps, 'ppa' | 'deal' | 'code'>;\n\nexport const ProductInfoLabel: FC<ProductInfoLabelProps> = ({ ppa, deal, code }) => {\n const { getTestId } = useTestId();\n const shouldDisplayPpaLabel = useMemo(() => isPpaLabel(ppa?.labelKey) && !!ppa.title, [ppa]);\n const shouldDisplayDealLabel = useMemo(\n () => !shouldDisplayPpaLabel && allowedDealLabels.includes(deal?.labelKey ?? '') && !!deal?.title,\n [deal, shouldDisplayPpaLabel],\n );\n\n if (!shouldDisplayPpaLabel && !shouldDisplayDealLabel) {\n return null;\n }\n\n if (shouldDisplayPpaLabel) {\n return (\n <LabelContainer>\n <Chip\n data-testid={getTestId(`${SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO_LABEL}-${code}`)}\n label={ppa?.title}\n variant=\"tag\"\n color=\"default\"\n />\n </LabelContainer>\n );\n }\n\n return (\n <LabelContainer>\n <Chip\n data-testid={getTestId(`${SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO_LABEL}-${code}`)}\n label={deal?.title}\n variant=\"filled\"\n color=\"default\"\n size=\"small\"\n />\n </LabelContainer>\n );\n};\n","export const MAX_VISIBLE_SHADES_COUNT = 5;\nexport const SEARCH_SHADE = 'search-shade';\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n gap: theme.spacing(1),\n height: 14,\n overflow: 'hidden',\n}));\n","import { Typography } from '@ori-ui/mui';\nimport { Shade, ShadeSize } from '@ori/presentation-components';\nimport { useMemo, type FC } from 'react';\n\nimport { SEARCH_SHADE } from './constants';\nimport { Root } from './styles';\nimport { type ShadesProps } from './types';\n\nexport const Shades: FC<ShadesProps> = ({ shades, maxVisible }) => {\n const shadesToRender = useMemo(\n () =>\n shades.slice(0, maxVisible).map((shade) => (\n <Shade\n key={shade.productCode}\n shade={shade}\n size={ShadeSize.Small}\n testId={SEARCH_SHADE}\n />\n )),\n [shades, maxVisible],\n );\n\n if (shades.length < 2) {\n return null;\n }\n\n return (\n <Root>\n {shadesToRender}\n {shades.length > maxVisible ? (\n <Typography\n color=\"textPrimary\"\n variant=\"overline\"\n fontWeight=\"bold\"\n lineHeight=\"normal\"\n >\n +{shades.length - maxVisible}\n </Typography>\n ) : null}\n </Root>\n );\n};\n","import { Typography, styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n}));\n\nexport const Brand = styled(Typography)({\n display: '-webkit-box',\n letterSpacing: 2,\n lineHeight: 'normal',\n overflow: 'hidden',\n textAlign: 'left',\n textTransform: 'uppercase',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 1,\n width: '100%',\n '&:empty': { display: 'none' },\n});\n\nexport const Name = styled(Typography)(({ theme }) => ({\n display: '-webkit-box',\n lineHeight: theme.spacing(4),\n overflow: 'hidden',\n textAlign: 'left',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n width: '100%',\n}));\n\nexport const Bottom = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'row',\n gap: theme.spacing(2),\n alignItems: 'center',\n flexWrap: 'wrap',\n}));\n","import { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { useMemo, type FC } from 'react';\n\nimport { boldMatchedText } from '../../../../../../utils';\nimport { type SearchPreviewProductProps } from '../../types';\nimport { ProductInfoLabel } from '../ProductInfoLabel';\nimport { MAX_VISIBLE_SHADES_COUNT, Shades } from '../Shades';\nimport { SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO } from './constants';\nimport { Bottom, Brand, Name, Root } from './styles';\n\nexport type ProductInfoProps = Pick<\n SearchPreviewProductProps,\n 'name' | 'brand' | 'searchPhrase' | 'shades' | 'code' | 'deal' | 'ppa'\n>;\n\nexport const ProductInfo: FC<ProductInfoProps> = ({ shades, name, brand, searchPhrase, code, deal, ppa }) => {\n const { getTestId } = useTestId();\n\n const nameWithSearchPhrase = useMemo(() => boldMatchedText({ searchPhrase, text: name }), [searchPhrase, name]);\n\n return (\n <Root data-testid={getTestId(`${SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO}-${code}`)}>\n <ProductInfoLabel\n ppa={ppa}\n deal={deal}\n code={code}\n />\n <Brand\n variant=\"overline\"\n color=\"textSecondary\"\n data-testid={`${getTestId('brand')}-${code}`}\n >\n {brand ?? ''}\n </Brand>\n <Name\n color=\"textPrimary\"\n data-testid={`${getTestId('name')}-${code}`}\n >\n {nameWithSearchPhrase}\n </Name>\n <Bottom>\n <Typography\n variant=\"caption\"\n color=\"textSecondary\"\n >\n {code}\n </Typography>\n {shades ? (\n <Shades\n shades={shades}\n maxVisible={MAX_VISIBLE_SHADES_COUNT}\n />\n ) : null}\n </Bottom>\n </Root>\n );\n};\n","import type { Theme } from '@ori-ui/mui';\n\nexport const getCurrentPriceColor = (theme: Theme, oldPriceVisible?: boolean) =>\n oldPriceVisible ? theme.palette.offer.main : theme.palette.text.primary;\n","import { Typography, styled } from '@ori-ui/mui';\nimport { shouldNotForwardProp } from '@ori/presentation-utils';\n\nimport { getCurrentPriceColor } from './utils';\n\nexport const Root = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n});\n\ninterface CurrentPriceProps {\n oldPriceVisible?: boolean;\n}\nexport const CurrentPrice = styled(Typography, {\n shouldForwardProp: shouldNotForwardProp(['oldPriceVisible']),\n})<CurrentPriceProps>(({ oldPriceVisible, theme }) => ({\n color: getCurrentPriceColor(theme, oldPriceVisible),\n}));\n\nexport const OldPrice = styled(Typography)(({ theme }) => ({\n color: theme.palette.grey.A700,\n textDecoration: 'line-through',\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { type SearchPreviewProductProps } from '../../types';\nimport { SEARCH_PREVIEW_PRODUCT_PRICES } from './constants';\nimport { Root, CurrentPrice, OldPrice } from './styles';\n\nexport type PricesProps = Pick<SearchPreviewProductProps, 'price' | 'code'>;\nexport const Prices: FC<PricesProps> = ({ price, code }) => {\n const { getTestId } = useTestId();\n\n if (!price?.currentFormatted) {\n return null;\n }\n\n const { currentFormatted, oldFormatted } = price;\n const oldPriceVisible = Boolean(oldFormatted);\n\n return (\n <Root data-testid={getTestId(`${SEARCH_PREVIEW_PRODUCT_PRICES}-${code}`)}>\n <CurrentPrice\n fontWeight=\"bold\"\n oldPriceVisible={oldPriceVisible}\n >\n {currentFormatted}\n </CurrentPrice>\n {oldPriceVisible ? <OldPrice>{oldFormatted}</OldPrice> : null}\n </Root>\n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n display: 'flex',\n padding: theme.spacing(2, 0),\n gap: theme.spacing(3),\n cursor: 'pointer',\n}));\n\nexport const Inner = styled('div')(({ theme }) => ({\n display: 'flex',\n width: '100%',\n flexDirection: 'column',\n gap: theme.spacing(2),\n [theme.breakpoints.up('lg')]: {\n flexDirection: 'row',\n height: 'min-content',\n alignItems: 'center',\n },\n}));\n\nexport const Info = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('md')]: {\n flex: 3,\n },\n}));\n\nexport const PriceAndButton = styled('div')(({ theme }) => ({\n width: '100%',\n display: 'flex',\n gap: theme.spacing(2),\n [theme.breakpoints.up('md')]: {\n flex: 2,\n },\n}));\n\nexport const Price = styled('div')(({ theme }) => ({\n flex: '1 1 0',\n [theme.breakpoints.up('lg')]: {\n display: 'flex',\n alignItems: 'center',\n },\n}));\n","import { Placement } from '@ori/analytics-data';\nimport { useEnvironment } from '@ori/environment';\nimport { QuickBuyButton } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\nimport { type FC } from 'react';\n\nimport { SearchPreviewImage } from '../SearchPreviewImage';\nimport { Prices, ProductInfo } from './components';\nimport { SEARCH_PREVIEW_PRODUCT } from './constants';\nimport { Info, Inner, Price, PriceAndButton, Root } from './styles';\nimport { type SearchPreviewProductProps } from './types';\n\nexport const SearchPreviewProduct: FC<SearchPreviewProductProps> = ({\n index,\n code,\n name,\n brand,\n image,\n deal,\n ppa,\n onProductClick,\n onQuickBuyButtonClick,\n price,\n searchPhrase,\n canBeSold = true,\n shades,\n}) => {\n const { getTestId } = useTestId();\n const { tenant } = useEnvironment();\n\n return (\n <Root\n data-testid={getTestId(SEARCH_PREVIEW_PRODUCT)}\n onClick={onProductClick}\n >\n <SearchPreviewImage\n name={name}\n imageUrl={image}\n />\n <Inner>\n <Info>\n <ProductInfo\n brand={brand}\n name={name}\n searchPhrase={searchPhrase}\n shades={shades}\n code={code}\n deal={deal}\n ppa={ppa}\n />\n </Info>\n <PriceAndButton>\n <Price>\n <Prices\n price={price}\n code={code}\n />\n </Price>\n {canBeSold ? (\n <div>\n <QuickBuyButton\n tenant={tenant}\n currentProductCode={code}\n name={name}\n placement={Placement.TopNavigationSearchSuggestions}\n currentPrice={price?.currentFormatted ?? ''}\n position={index}\n onQuickBuyButtonClick={onQuickBuyButtonClick}\n />\n </div>\n ) : null}\n </PriceAndButton>\n </Inner>\n </Root>\n );\n};\n","import { Divider, styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n position: 'relative',\n height: '100%',\n padding: theme.spacing(0, 3),\n boxSizing: 'border-box',\n [theme.breakpoints.up('md')]: {\n borderRadius: theme.spacing(3),\n overflow: 'hidden',\n padding: theme.spacing(0, 3, 10, 3),\n },\n}));\n\nexport const Inner = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: theme.spacing(3),\n boxSizing: 'border-box',\n padding: theme.spacing(0, 0, 3, 0),\n overflowY: 'auto',\n [theme.breakpoints.up('md')]: {\n maxHeight: '100%',\n padding: theme.spacing(6, 3, 0, 3),\n },\n [theme.breakpoints.up('lg')]: {\n gap: theme.spacing(6),\n padding: theme.spacing(6, 7, 0, 7),\n },\n}));\n\nexport const Suggestions = styled('div')(({ theme }) => ({\n display: 'flex',\n overflowX: 'auto',\n flexWrap: 'nowrap',\n scrollbarWidth: 'none',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n gap: theme.spacing(3),\n maxWidth: '100%',\n [theme.breakpoints.up('md')]: {\n flexWrap: 'wrap',\n overflowX: 'visible',\n },\n}));\n\nexport const Products = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n}));\n\nexport const SeeAllResults = styled('div')(({ theme }) => ({\n position: 'fixed',\n bottom: '0',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n backgroundColor: theme.palette.grey[100],\n padding: theme.spacing(3, 0),\n left: 0,\n [theme.breakpoints.up('md')]: {\n position: 'absolute',\n },\n}));\n\nexport const StyledDivider = styled(Divider)(({ theme }) => ({\n backgroundColor: theme.palette.grey[200],\n margin: theme.spacing(3, 0),\n [theme.breakpoints.up('md')]: {\n margin: theme.spacing(1, 0),\n },\n}));\n","import * as SearchSuggestionClick from '@ori-events/search-suggestion-click';\nimport { Link } from '@ori-ui/mui';\nimport { ContentType, Placement } from '@ori/analytics-data';\nimport { useCulture } from '@ori/culture';\nimport useTestId from '@ori/testid-generator';\nimport { useCallback, type FC } from 'react';\nimport { Fragment } from 'react';\n\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { addParamsToUrl, analytics, getProductUrl, getQuickBuyButtonOnClickHandler, goToPage } from '../../utils';\nimport { getSearchUrl } from '../../utils/getSearchUrl';\nimport { QUERY_NAME, SearchPreviewHeader, SearchPreviewProduct, SearchPreviewSuggestion } from './components';\nimport { SEARCH_PREVIEW, SEARCH_PREVIEW_SEE_ALL_RESULTS } from './constants';\nimport { useSendNavigationSignal } from './hooks';\nimport { Inner, Products, Root, SeeAllResults, StyledDivider, Suggestions } from './styles';\nimport type { SearchProduct, SearchPreviewProps } from './types';\n\nexport const SearchPreview: FC<SearchPreviewProps> = ({ numberOfProducts, products, suggestions, query }) => {\n const { getTestId } = useTestId();\n const { formatMessage } = useTranslations();\n const { financialSet } = useCulture();\n const { sendNavigationSignal } = useSendNavigationSignal({ query });\n\n const onSuggestionsClick = useCallback(\n (suggestion: string, position: number) => () => {\n window.dispatchEvent(\n new CustomEvent<SearchSuggestionClick.Data>(SearchSuggestionClick.Name, {\n detail: {\n itemData: {\n target: getSearchUrl(suggestion),\n localBannerTitle: suggestion,\n media: [],\n },\n itemType: ContentType.PopularQuery,\n searchQuery: query,\n placement: Placement.TopNavigationSearchSuggestions,\n position,\n },\n }),\n );\n goToPage(getSearchUrl(suggestion));\n },\n [query],\n );\n\n const onProductLick = useCallback(\n (product: SearchProduct, position: number) => async () => {\n const searchSuggestionClickData: SearchSuggestionClick.Data = {\n itemData: analytics.formatProduct({\n ...product,\n currencyCode: financialSet?.currencyCode,\n }),\n itemType: ContentType.Product,\n searchQuery: query,\n placement: Placement.TopNavigationSearchSuggestions,\n position,\n };\n window.dispatchEvent(\n new CustomEvent<SearchSuggestionClick.Data>(SearchSuggestionClick.Name, {\n detail: searchSuggestionClickData,\n }),\n );\n await sendNavigationSignal(position);\n goToPage(\n addParamsToUrl({\n url: getProductUrl(product.code),\n params: query\n ? {\n [QUERY_NAME]: query,\n }\n : undefined,\n }),\n );\n },\n [financialSet?.currencyCode, query, sendNavigationSignal],\n );\n\n return (\n <Root data-testid={getTestId(SEARCH_PREVIEW)}>\n <Inner>\n {suggestions.length ? (\n <Suggestions>\n {suggestions.map(({ text }, index) => (\n <SearchPreviewSuggestion\n key={text}\n text={text}\n searchPhrase={query}\n onClick={onSuggestionsClick(text, index)}\n />\n ))}\n </Suggestions>\n ) : null}\n <SearchPreviewHeader query={query} />\n {products.length ? (\n <Products>\n {products.map((product, index) => (\n <Fragment key={product.code}>\n <SearchPreviewProduct\n key={product.code}\n index={index}\n {...product}\n searchPhrase={query}\n onProductClick={onProductLick(product, index)}\n onQuickBuyButtonClick={getQuickBuyButtonOnClickHandler(product, index)}\n />\n {products.length - 1 === index ? null : <StyledDivider />}\n </Fragment>\n ))}\n </Products>\n ) : null}\n </Inner>\n <SeeAllResults>\n <Link\n fontWeight=\"bold\"\n textTransform=\"uppercase\"\n color=\"textPrimary\"\n data-testid={getTestId(SEARCH_PREVIEW_SEE_ALL_RESULTS)}\n href={getSearchUrl(query)}\n >\n {formatMessage('seeAllResultsFor', { count: numberOfProducts })}\n </Link>\n </SeeAllResults>\n </Root>\n );\n};\n","export const PRODUCTS_URL = '/products/product?code=';\n\nexport const getProductUrl = (code: string) => `${PRODUCTS_URL}${code}`;\n","interface AddParamsToUrl {\n url: string;\n params?: Record<string, string>;\n}\nexport const addParamsToUrl = ({ url: path, params = {} }: AddParamsToUrl) => {\n const [baseUrl, queryString = ''] = path.split('?');\n const urlParams = new URLSearchParams(queryString);\n\n Object.entries(params).forEach(([key, value]) => {\n urlParams.set(key, encodeURIComponent(value));\n });\n\n return `${baseUrl}?${urlParams.toString()}`;\n};\n","export const SEARCH_PREVIEW = 'search-preview';\nexport const SEARCH_PREVIEW_SEE_ALL_RESULTS = 'search-preview-see-all-results';\nexport const MAX_SEARCH_HEIGHT = 630;\n","export const SEARCH_PREVIEW_PRODUCT_SKELETON = 'search-preview-product-skeleton';\n","import { styled } from '@ori-ui/mui';\n\nimport { SEARCH_PREVIEW_IMAGE_SIZE, SEARCH_PREVIEW_IMAGE_WRAPPER_HEIGHT } from '../../../SearchPreview/components';\nimport { Root as ProductRoot } from '../../../SearchPreview/components/SearchPreviewProduct/styles';\nimport { UnifiedSkeleton } from '../../../styles';\n\nexport const Root = styled(ProductRoot)(({ theme }) => ({\n cursor: 'unset',\n}));\n\nexport const ImageSkeleton = styled(UnifiedSkeleton)(({ theme }) => ({\n width: SEARCH_PREVIEW_IMAGE_SIZE,\n height: SEARCH_PREVIEW_IMAGE_WRAPPER_HEIGHT,\n minWidth: SEARCH_PREVIEW_IMAGE_SIZE,\n}));\n\nexport const QuickBuyButtonSkeleton = styled(UnifiedSkeleton)(({ theme }) => ({\n width: 35,\n height: 35,\n [theme.breakpoints.up('sm')]: {\n width: 45,\n height: 45,\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport { type FC } from 'react';\n\nimport { Root as ProductInfoRoot } from '../../../SearchPreview/components/SearchPreviewProduct/components/ProductInfo/styles';\nimport { Info, Inner, Price, PriceAndButton } from '../../../SearchPreview/components/SearchPreviewProduct/styles';\nimport { UnifiedSkeleton } from '../../../styles';\nimport { SEARCH_PREVIEW_PRODUCT_SKELETON } from './constants';\nimport { ImageSkeleton, QuickBuyButtonSkeleton, Root } from './styles';\nimport { type SearchPreviewProductSkeletonProps } from './types';\n\nexport const SearchPreviewProductSkeleton: FC<SearchPreviewProductSkeletonProps> = ({ animation, className }) => {\n const { getTestId } = useTestId();\n\n return (\n <Root\n className={className}\n data-testid={getTestId(SEARCH_PREVIEW_PRODUCT_SKELETON)}\n >\n <ImageSkeleton animation={animation} />\n <Inner>\n <Info>\n <ProductInfoRoot>\n <UnifiedSkeleton\n variant=\"text\"\n height={15}\n width={60}\n animation={animation}\n />\n <UnifiedSkeleton\n variant=\"text\"\n height={19}\n width=\"40%\"\n animation={animation}\n />\n <UnifiedSkeleton\n variant=\"text\"\n height={19}\n width={35}\n animation={animation}\n />\n </ProductInfoRoot>\n </Info>\n <PriceAndButton>\n <Price>\n <UnifiedSkeleton\n variant=\"text\"\n height={19}\n width={40}\n animation={animation}\n />\n </Price>\n <QuickBuyButtonSkeleton\n variant=\"circular\"\n animation={animation}\n />\n </PriceAndButton>\n </Inner>\n </Root>\n );\n};\n","export const SEARCH_PREVIEW_SKELETON = 'search-preview-skeleton';\nexport const SEARCH_PREVIEW_SKELETON_SUGGESTION = 'search-preview-skeleton-suggestion';\nexport const SEARCH_PREVIEW_SKELETON_HEADER = 'search-preview-skeleton-header';\nexport const PRODUCTS_COUNT = 12;\nexport const SUGGESTIONS_COUNT = 5;\n","import { styled } from '@ori-ui/mui';\n\nimport { SEARCH_PREVIEW_SEE_ALL_HEIGHT } from '../../constants';\nimport { SeeAllResults } from '../SearchPreview/styles';\nimport { UnifiedSkeleton } from '../styles';\n\nexport const HeaderSkeleton = styled(UnifiedSkeleton)(({ theme }) => ({\n width: 150,\n minHeight: 28,\n [theme.breakpoints.up('md')]: {\n minHeight: 33,\n width: 200,\n },\n}));\n\nexport const SeeAllSkeleton = styled(SeeAllResults)(({ theme }) => ({\n height: SEARCH_PREVIEW_SEE_ALL_HEIGHT,\n}));\n","import useTestId from '@ori/testid-generator';\nimport times from 'lodash.times';\nimport { Fragment, type FC } from 'react';\n\nimport { CHIP_HEIGHT } from '../SearchPreview/components';\nimport { Root, Inner, Products, StyledDivider, Suggestions } from '../SearchPreview/styles';\nimport { UnifiedSkeleton } from '../styles';\nimport { SEARCH_PREVIEW_PRODUCT_SKELETON, SearchPreviewProductSkeleton } from './components';\nimport {\n PRODUCTS_COUNT,\n SEARCH_PREVIEW_SKELETON,\n SEARCH_PREVIEW_SKELETON_HEADER,\n SEARCH_PREVIEW_SKELETON_SUGGESTION,\n SUGGESTIONS_COUNT,\n} from './constants';\nimport { HeaderSkeleton, SeeAllSkeleton } from './styles';\nimport { type SearchPreviewSkeletonProps } from './types';\n\nexport const SearchPreviewSkeleton: FC<SearchPreviewSkeletonProps> = ({ animation = 'pulse', className }) => {\n const { getTestId } = useTestId();\n\n return (\n <Root\n data-testid={getTestId(SEARCH_PREVIEW_SKELETON)}\n className={className}\n >\n <Inner>\n <Suggestions>\n {times(SUGGESTIONS_COUNT, (index) => (\n <UnifiedSkeleton\n key={`${SEARCH_PREVIEW_SKELETON_SUGGESTION}-${index}`}\n data-testid={getTestId(SEARCH_PREVIEW_SKELETON_SUGGESTION)}\n animation={animation}\n width={100}\n height={CHIP_HEIGHT}\n />\n ))}\n </Suggestions>\n <HeaderSkeleton\n data-testid={getTestId(SEARCH_PREVIEW_SKELETON_HEADER)}\n animation={animation}\n variant=\"text\"\n />\n <Products>\n {times(PRODUCTS_COUNT, (index) => (\n <Fragment key={`${SEARCH_PREVIEW_PRODUCT_SKELETON}-${index}`}>\n <SearchPreviewProductSkeleton animation={animation} />\n {PRODUCTS_COUNT - 1 === index ? null : <StyledDivider />}\n </Fragment>\n ))}\n </Products>\n </Inner>\n <SeeAllSkeleton />\n </Root>\n );\n};\n","import { styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport {\n CSS_HEIGHT_ANIMATION,\n CSS_DESKTOP_HEIGHT,\n SEARCH_INPUT_HEIGHT,\n SEARCH_PREVIEW_SEE_ALL_HEIGHT,\n} from '../../../../constants';\nimport type { GetMobileCssVariableParams } from '../../../../utils/getMobileCssVariable';\nimport { getSearchInputTopAttribute } from '../../../../utils/getMobileCssVariable';\nimport { MAX_SEARCH_HEIGHT } from '../../../SearchPreview/constants';\nimport { SEARCH_INPUT_BOX_HEIGHT } from '../../constants';\n\nexport const SearchPreviewRoot = styled('div')(({ theme }) => ({\n background: theme.palette.common.white,\n boxSizing: 'border-box',\n color: theme.palette.text.primary,\n display: 'flex',\n flexDirection: 'column',\n left: 0,\n padding: theme.spacing(3, 0),\n position: 'absolute',\n top: SEARCH_INPUT_HEIGHT,\n transition: `top ${CSS_HEIGHT_ANIMATION}`,\n width: '100%',\n [theme.breakpoints.up('md')]: {\n position: 'static',\n padding: 0,\n borderRadius: theme.spacing(0, 0, 3, 3),\n },\n}));\n\ninterface SearchPreviewContentProps extends GetMobileCssVariableParams {\n innerHeight: number;\n}\nexport const SearchPreviewContent = styled('div', {\n shouldForwardProp: shouldForwardProp(),\n})<SearchPreviewContentProps>(({ innerHeight, isTopBannerVisible, showSearchOnScroll, theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n height: `calc(${innerHeight}px - ${SEARCH_PREVIEW_SEE_ALL_HEIGHT}px - ${getSearchInputTopAttribute({ isTopBannerVisible, showSearchOnScroll })} - ${SEARCH_INPUT_HEIGHT}px)`,\n position: 'relative',\n width: '100%',\n overscrollBehaviorY: 'contain',\n overflowY: 'scroll',\n\n [theme.breakpoints.up('md')]: {\n height: `min(${MAX_SEARCH_HEIGHT - SEARCH_INPUT_BOX_HEIGHT}px, calc(${innerHeight}px - ${CSS_DESKTOP_HEIGHT}))`,\n overflowY: 'visible',\n },\n}));\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { useWindowSize } from '@ori/presentation-hooks';\nimport type { FC } from 'react';\n\nimport { useAppConfig } from '../../../../context/configurationContext';\nimport { useActiveMenu, useSearchInput } from '../../../../context/navigation';\nimport { useTopAreaBanner } from '../../../../context/topAreaBannerContext';\nimport { SearchPreview } from '../../../SearchPreview';\nimport { SearchPreviewSkeleton } from '../../../SearchPreviewSkeleton';\nimport { SearchPreviewRoot, SearchPreviewContent } from './styles';\n\nexport interface SearchPreviewContainerProps {\n query: string;\n}\n\nexport const SearchPreviewContainer: FC<SearchPreviewContainerProps> = ({ query }) => {\n const { activeMenu } = useActiveMenu();\n const { height } = useWindowSize();\n const { results, isLoading } = useSearchInput();\n const isActive = activeMenu === ToggleMenuFlyout.MenuTypes.SearchResults;\n const { visible: isTopBannerVisible } = useTopAreaBanner();\n const { showSearchOnScroll } = useAppConfig();\n\n if (!isActive || !query) {\n return null;\n }\n\n return (\n <SearchPreviewRoot>\n <SearchPreviewContent\n innerHeight={height}\n isTopBannerVisible={isTopBannerVisible}\n showSearchOnScroll={showSearchOnScroll}\n >\n {isLoading ? (\n <SearchPreviewSkeleton />\n ) : (\n <SearchPreview\n query={query}\n numberOfProducts={results?.numberOfProducts ?? 0}\n products={results?.products ?? []}\n suggestions={results?.suggestions ?? []}\n />\n )}\n </SearchPreviewContent>\n </SearchPreviewRoot>\n );\n};\n","import { Backdrop, ButtonBase, styled } from '@ori-ui/mui';\nimport { shouldForwardProp, shouldNotForwardProp } from '@ori/presentation-utils';\n\nimport { SEARCH_INPUT_HEIGHT } from '../../constants';\nimport type { AppConfig } from '../../models';\nimport { getSearchInputTopAttribute } from '../../utils/getMobileCssVariable';\nimport { SEARCH_INPUT_BOX_HEIGHT } from './constants';\n\nexport interface SearchInputRootProps extends Pick<AppConfig, 'showSearchOnScroll'> {\n isTopBannerVisible: boolean;\n isVisibleOnMobile: boolean;\n isFocused: boolean;\n showOnlyOn: 'desktop' | 'mobile';\n}\n\nexport const Inner = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n background: theme.palette.common.white,\n width: '100%',\n borderRadius: 100,\n [theme.breakpoints.up('md')]: {\n borderRadius: theme.spacing(5),\n margin: '0 auto',\n maxWidth: '900px',\n },\n}));\n\nexport const SearchInputRoot = styled('div', {\n shouldForwardProp: shouldForwardProp(),\n})<SearchInputRootProps>(\n ({ isTopBannerVisible, isVisibleOnMobile, showSearchOnScroll, showOnlyOn, isFocused, theme }) => ({\n background: theme.palette.common.white,\n boxSizing: 'border-box',\n display: isVisibleOnMobile ? 'flex' : 'none',\n height: SEARCH_INPUT_HEIGHT,\n justifySelf: 'center',\n left: 0,\n padding: theme.spacing(0, 3, 3, 3),\n position: 'fixed',\n top: getSearchInputTopAttribute({ isTopBannerVisible, showSearchOnScroll }),\n width: '100%',\n zIndex: isFocused ? theme.zIndex.appBar + 2 : theme.zIndex.speedDial,\n justifyContent: isVisibleOnMobile ? 'center' : undefined,\n\n [theme.breakpoints.up('md')]: {\n background: 'transparent',\n display: showOnlyOn === 'desktop' ? 'block' : 'none',\n height: SEARCH_INPUT_BOX_HEIGHT,\n padding: 0,\n position: 'static',\n },\n }),\n);\n\nexport const SearchInputBox = styled('div')(({ theme }) => ({\n alignItems: 'center',\n background: theme.palette.grey[100],\n borderRadius: 100,\n boxSizing: 'border-box',\n color: theme.palette.grey[600],\n display: 'flex',\n fontSize: '2.3rem',\n height: SEARCH_INPUT_BOX_HEIGHT,\n overflow: 'hidden',\n paddingLeft: theme.spacing(3),\n width: '100%',\n svg: {\n fill: theme.palette.text.primary,\n },\n\n [theme.breakpoints.up('md')]: {\n height: SEARCH_INPUT_BOX_HEIGHT,\n visibility: 'visible',\n },\n}));\n\nexport const SearchInputInput = styled('input')(({ theme }) => ({\n background: theme.palette.grey[100],\n border: 'none',\n color: theme.palette.text.primary,\n fontSize: '1.6rem',\n height: 'auto',\n lineHeight: 1.5,\n marginLeft: 8,\n width: '100%',\n textOverflow: 'ellipsis',\n\n '&:focus': {\n outline: 'none',\n },\n\n '&::placeholder': {\n color: theme.palette.grey.A700,\n },\n}));\n\nexport const SearchInputClear = styled(ButtonBase, {\n shouldForwardProp: shouldNotForwardProp(['isFocused']),\n})<{\n isFocused: boolean;\n}>(({ isFocused, theme }) => ({\n height: 23,\n marginRight: theme.spacing(3),\n width: 23,\n\n [theme.breakpoints.up('md')]: {\n fontSize: '2rem',\n marginRight: theme.spacing(2),\n\n visibility: 'hidden',\n\n ...(isFocused && {\n visibility: 'visible',\n }),\n },\n}));\n\nexport const InputBackdrop = styled(Backdrop)({\n position: 'fixed',\n zIndex: '-1',\n width: '100vw',\n height: '100vh',\n});\n","export const SEARCH_INPUT_ROOT_DESKTOP = 'search-input-root-desktop';\nexport const SEARCH_INPUT_ROOT_MOBILE = 'search-input-root-mobile';\nexport const SEARCH_INPUT_BOX = 'search-input-box';\nexport const SEARCH_INPUT = 'search-input';\nexport const SEARCH = 'search';\nexport const SEARCH_INPUT_CLEAR = 'search-input-clear';\nexport const BACKDROP = 'backdrop';\nexport const SEARCH_INPUT_BOX_HEIGHT = 44;\n","import { useEffect, type KeyboardEvent } from 'react';\n\nimport { TOP_NAV_NO_SCROLL } from '../../constants';\nimport { goToPage } from '../../utils';\nimport { getSearchUrl } from '../../utils/getSearchUrl';\n\nexport const onEnterPressHandler = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n const { value: searchQuery } = e.currentTarget;\n goToPage(getSearchUrl(searchQuery));\n }\n};\n\nexport const useRemoveBodyScroll = (enabled: boolean) => {\n useEffect(() => {\n if (enabled) {\n document.body.classList.add(TOP_NAV_NO_SCROLL);\n } else {\n document.body.classList.remove(TOP_NAV_NO_SCROLL);\n }\n\n return () => {\n document.body.classList.remove(TOP_NAV_NO_SCROLL);\n };\n }, [enabled]);\n};\n\ninterface ShouldShowBackdropParams {\n isMobile: boolean;\n isFocused: boolean;\n isMenuActive: boolean;\n}\nexport const shouldShowBackdrop = ({ isMobile, isFocused, isMenuActive }: ShouldShowBackdropParams): boolean =>\n (isMobile && isFocused && !isMenuActive) || (!isMobile && (isFocused || isMenuActive));\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport * as UserAction from '@ori-events/user-action';\nimport { Clear, Search } from '@ori-ui/icons';\nimport { debounce } from '@ori-ui/mui';\nimport { useListenToKeyDown } from '@ori/presentation-hooks';\nimport useTestId from '@ori/testid-generator';\nimport type { ChangeEvent, FC } from 'react';\nimport { useEffect, useCallback, useState, useRef } from 'react';\nimport { useThrottledCallback } from 'use-debounce';\n\nimport { SEARCH_INPUT_HEIGHT, SEARCH_THROTTLE_TIME, START_SEARCH } from '../../constants';\nimport { useAppConfig, useTopAreaBanner } from '../../context';\nimport { useActiveMenu, useSearchInput } from '../../context/navigation';\nimport { useIsMobile } from '../../hooks';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { dispatchToggleMenu } from '../../utils';\nimport { SearchPreviewContainer } from './components/SearchPreviewContainer';\nimport {\n BACKDROP,\n SEARCH,\n SEARCH_INPUT,\n SEARCH_INPUT_BOX,\n SEARCH_INPUT_CLEAR,\n SEARCH_INPUT_ROOT_DESKTOP,\n SEARCH_INPUT_ROOT_MOBILE,\n} from './constants';\nimport type { SearchInputRootProps } from './styles';\nimport { Inner, InputBackdrop, SearchInputBox, SearchInputClear, SearchInputInput, SearchInputRoot } from './styles';\nimport { onEnterPressHandler, shouldShowBackdrop, useRemoveBodyScroll } from './utils';\n\nexport type SearchInputProps = Pick<SearchInputRootProps, 'showOnlyOn'>;\nconst SCROLL_THRESHOLD = SEARCH_INPUT_HEIGHT + 5;\n\nexport const SearchInput: FC<SearchInputProps> = ({ showOnlyOn }) => {\n const { showSearchOnScroll } = useAppConfig();\n const { visible: isTopBannerVisible } = useTopAreaBanner();\n const { activeMenu, hideSearchResultsTab, toggleActiveMenu } = useActiveMenu();\n const {\n hide,\n show,\n isVisible,\n focus,\n blur,\n clearResults,\n value,\n isManuallyOpened,\n setValue,\n manualHide,\n isFocused,\n debouncedValue,\n } = useSearchInput();\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.SearchResults;\n const isAccountSideMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.AccountSideMenu;\n const isMobile = useIsMobile();\n const inputRef = useRef<HTMLInputElement>(null);\n const { translations } = useTranslations();\n const [prevScrollY, setPrevScrollY] = useState(0);\n const { getTestId } = useTestId();\n useRemoveBodyScroll(isMenuActive && isMobile);\n const throttledAnalytics = useThrottledCallback(() => UserAction.dispatch(START_SEARCH), SEARCH_THROTTLE_TIME);\n const onFocusHandler = useCallback(() => {\n focus();\n }, [focus]);\n const showBackdrop = shouldShowBackdrop({\n isFocused,\n isMenuActive,\n isMobile,\n });\n\n const onChangeHandler = useCallback(\n ({ target }: ChangeEvent<HTMLInputElement>) => {\n const isValueEmpty = target.value.length === 0;\n if (isValueEmpty) {\n toggleActiveMenu('');\n clearResults();\n }\n setValue(target.value);\n throttledAnalytics();\n if (!isValueEmpty && !isMenuActive) {\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.SearchResults);\n }\n },\n [setValue, throttledAnalytics, isMenuActive, toggleActiveMenu, clearResults],\n );\n\n useEffect(() => {\n const showWithoutFocus = () => {\n show();\n blur();\n };\n\n const handleScroll = () => {\n const currentScrollY = window.scrollY;\n const difference = currentScrollY - prevScrollY;\n if (difference > SCROLL_THRESHOLD && isMobile && !isManuallyOpened && !isAccountSideMenuActive) {\n hide();\n hideSearchResultsTab();\n } else if (difference < -SCROLL_THRESHOLD && isMobile && !isAccountSideMenuActive) {\n showWithoutFocus();\n }\n setPrevScrollY(currentScrollY);\n };\n const handleScrollDebounced = debounce(handleScroll, 50);\n if (showSearchOnScroll) {\n window.addEventListener('scroll', handleScrollDebounced);\n }\n\n return () => window.removeEventListener('scroll', handleScrollDebounced);\n }, [\n isMobile,\n show,\n hide,\n blur,\n hideSearchResultsTab,\n isManuallyOpened,\n prevScrollY,\n showSearchOnScroll,\n isAccountSideMenuActive,\n ]);\n\n const closeSearch = useCallback(() => {\n manualHide();\n hide();\n hideSearchResultsTab();\n }, [hide, hideSearchResultsTab, manualHide]);\n\n const clearInput = useCallback(() => {\n setValue('');\n clearResults();\n toggleActiveMenu(MenuTypes.SearchInput);\n blur();\n }, [blur, clearResults, setValue, toggleActiveMenu]);\n\n const handleOnBlur = useCallback(() => {\n if (!value) {\n blur();\n }\n }, [blur, value]);\n\n useListenToKeyDown(['Escape'], () => {\n if (isFocused) {\n inputRef.current?.blur();\n handleOnBlur();\n closeSearch();\n }\n });\n\n const isVisibleOnMobile = showOnlyOn === 'mobile' && isVisible;\n\n return (\n <SearchInputRoot\n isTopBannerVisible={isTopBannerVisible}\n isVisibleOnMobile={isVisibleOnMobile}\n showSearchOnScroll={showSearchOnScroll}\n showOnlyOn={showOnlyOn}\n isFocused={isFocused}\n data-testid={getTestId(showOnlyOn === 'mobile' ? SEARCH_INPUT_ROOT_MOBILE : SEARCH_INPUT_ROOT_DESKTOP)}\n >\n <Inner>\n <SearchInputBox data-testid={getTestId(SEARCH_INPUT_BOX)}>\n <Search\n fontSize=\"medium\"\n data-testid={getTestId(SEARCH)}\n />\n <SearchInputInput\n ref={inputRef}\n autoFocus={isManuallyOpened}\n type=\"text\"\n placeholder={translations.searchDesktop}\n value={value}\n data-testid={getTestId(SEARCH_INPUT)}\n onFocus={onFocusHandler}\n onChange={onChangeHandler}\n onBlur={handleOnBlur}\n onKeyDown={onEnterPressHandler}\n />\n {value ? (\n <SearchInputClear\n disableRipple\n aria-label={translations.clearSearchInput}\n data-testid={getTestId(SEARCH_INPUT_CLEAR)}\n isFocused={isFocused}\n onClick={clearInput}\n >\n <Clear fontSize=\"inherit\" />\n </SearchInputClear>\n ) : null}\n </SearchInputBox>\n <SearchPreviewContainer query={debouncedValue} />\n </Inner>\n {showBackdrop ? (\n <InputBackdrop\n open\n data-testid={getTestId(BACKDROP)}\n onClick={closeSearch}\n />\n ) : null}\n </SearchInputRoot>\n );\n};\n","import { keyframes } from '@emotion/react';\nimport { Badge, badgeClasses, styled } from '@ori-ui/mui';\nimport { shouldNotForwardProp } from '@ori/presentation-utils';\n\nconst growShrinkAnimation = keyframes`\n0%, 100% {\n width: 22px;\n height: 22px;\n font-size: 1rem;\n}\n50% {\n width: 26px;\n height: 26px;\n font-size: 1.2rem;\n}\n`;\n\ninterface RootProps {\n isAnimationActive: boolean;\n}\n\nexport const Root = styled(Badge, {\n shouldForwardProp: shouldNotForwardProp(['isAnimationActive']),\n})<RootProps>(({ isAnimationActive }) => ({\n [`.${badgeClasses.badge}`]: {\n borderRadius: '50%',\n ...(isAnimationActive && {\n animationDuration: '1s',\n animationName: `${growShrinkAnimation}`,\n }),\n },\n}));\n","import useTestId from '@ori/testid-generator';\nimport type { FC, PropsWithChildren } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { SHOPPING_BAG_COUNTER_ROOT, MINIBAG_COUNTER_ANIMATION_TIMEOUT } from './constants';\nimport { Root } from './styles';\nimport type { ShoppingBagCounterProps } from './types';\n\nexport const ShoppingBagCounter: FC<PropsWithChildren<ShoppingBagCounterProps>> = ({\n shoppingBagQuantity,\n children,\n}) => {\n const [isAnimationActive, setIsAnimationActive] = useState(false);\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 <Root\n isAnimationActive={isAnimationActive}\n data-testid={getTestId(SHOPPING_BAG_COUNTER_ROOT)}\n badgeContent={shoppingBagQuantity}\n color=\"primary\"\n >\n {children}\n </Root>\n );\n};\n","export const SHOPPING_BAG_COUNTER_ROOT = 'shopping-bag-counter-root';\nexport const MINIBAG_COUNTER_ANIMATION_TIMEOUT = 1000;\n","import { IconButton } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\nimport { shouldNotForwardProp } from '@ori/presentation-utils';\n\ninterface RootProps {\n isCnMarket: boolean;\n}\nexport const Root = styled(IconButton, {\n shouldForwardProp: shouldNotForwardProp(['isCnMarket']),\n})<RootProps>(({ isCnMarket, theme }) => ({\n color: theme.palette.text.primary,\n fontSize: '3rem',\n ...(isCnMarket && {\n color: theme.palette.error.main,\n }),\n '&:hover, &:focus, &:active': {\n backgroundColor: 'transparent',\n color: theme.palette.text.primary,\n ...(isCnMarket && {\n color: theme.palette.error.main,\n }),\n },\n}));\n","import * as RequestShoppingContext from '@ori-events/request-shopping-context';\nimport * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\n\nexport const getMinibagFlyoutEvent = (shouldOpen?: boolean) =>\n new CustomEvent(ToggleMenuFlyoutEvent.Name, {\n detail: { menuType: ToggleMenuFlyoutEvent.MenuTypes.Minibag, shouldOpen },\n });\n\nexport const triggerRequestShoppingContext = () => {\n const requestShoppongContextEvent = new CustomEvent(RequestShoppingContext.Name);\n window.dispatchEvent(requestShoppongContextEvent);\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as ShoppingContextLoaded from '@ori-events/shopping-context-loaded';\nimport { EmptyBasket, AddToBag, AddToBagFilled, ShoppingBasketFilled } from '@ori-ui/icons';\nimport { useEnvironment } from '@ori/environment';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback, useEffect } from 'react';\n\nimport { CN_MARKET } from '../../constants';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { ShoppingBagCounter } from './components';\nimport { SHOPPING_BAG_ICON_ROOT } from './constants';\nimport { useDeviceType, useShoppingBag } from './hooks';\nimport { Root } from './styles';\nimport { getMinibagFlyoutEvent, triggerRequestShoppingContext } from './utils';\n\nexport const ShoppingBagIcon: FC = () => {\n const { translations } = useTranslations();\n const { tenant } = useEnvironment();\n const { getTestId } = useTestId();\n const { isECatalogue, isMobile } = useDeviceType();\n const isMobileOnECatalogue = isECatalogue && isMobile;\n const isCnMarket = tenant === CN_MARKET;\n const Icon = isCnMarket ? EmptyBasket : AddToBag;\n const IconOnHover = isCnMarket ? ShoppingBasketFilled : AddToBagFilled;\n const { onBasketUpdated, onShoppingContextLoaded, isReceivedShoppingContext, shoppingBagQuantity } = useShoppingBag();\n\n useEffect(() => {\n window.addEventListener(ShoppingContextLoaded.Name, onShoppingContextLoaded);\n window.addEventListener(BasketUpdated.Name, onBasketUpdated);\n\n triggerRequestShoppingContext();\n\n return () => {\n window.removeEventListener(ShoppingContextLoaded.Name, onShoppingContextLoaded);\n window.removeEventListener(BasketUpdated.Name, onBasketUpdated);\n };\n }, [onShoppingContextLoaded, onBasketUpdated]);\n\n useEffect(() => {\n if (isReceivedShoppingContext) {\n window.removeEventListener(ShoppingContextLoaded.Name, onShoppingContextLoaded);\n }\n }, [isReceivedShoppingContext, onShoppingContextLoaded]);\n\n const onMouseEnter = useCallback(() => {\n if (isECatalogue || isMobile) {\n return;\n }\n\n window.dispatchEvent(getMinibagFlyoutEvent(true));\n }, [isECatalogue, isMobile]);\n\n const onMouseLeave = useCallback(() => {\n if (isECatalogue || isMobile) {\n return;\n }\n\n window.dispatchEvent(getMinibagFlyoutEvent(false));\n }, [isECatalogue, isMobile]);\n\n const onMobileEcataloguePageClick = useCallback(() => {\n window.dispatchEvent(getMinibagFlyoutEvent());\n }, []);\n\n return (\n <ShoppingBagCounter shoppingBagQuantity={shoppingBagQuantity}>\n <Root\n disableRipple={isMobileOnECatalogue}\n aria-label={translations.shoppingBag}\n isCnMarket={isCnMarket}\n href={isMobileOnECatalogue ? undefined : '/shopping/basket'}\n data-testid={getTestId(SHOPPING_BAG_ICON_ROOT)}\n hoverIcon={<IconOnHover fontSize=\"inherit\" />}\n variant=\"text\"\n onClick={isMobileOnECatalogue ? onMobileEcataloguePageClick : undefined}\n onMouseEnter={isMobileOnECatalogue ? undefined : onMouseEnter}\n onMouseLeave={isMobileOnECatalogue ? undefined : onMouseLeave}\n >\n <Icon fontSize=\"inherit\" />\n </Root>\n </ShoppingBagCounter>\n );\n};\n","import type { Theme } from '@ori-ui/mui';\nimport { useMediaQuery } from '@ori-ui/mui';\nimport { useMemo, useState, useEffect } from 'react';\n\nexport const useDeviceType = () => {\n const [isECatalogue, setIsECatalogue] = useState(false);\n const mobileBreakpoint = useMediaQuery<Theme>((theme) => theme.breakpoints.down('sm'));\n const mobileBreakpointECatalogue = useMediaQuery<Theme>((theme) => theme.breakpoints.down('md'));\n\n useEffect(() => {\n setIsECatalogue(document.getElementById('catalogue-ipaper-root') !== null);\n }, []);\n\n const isMobile = useMemo(\n () => (isECatalogue ? mobileBreakpointECatalogue : mobileBreakpoint),\n [isECatalogue, mobileBreakpointECatalogue, mobileBreakpoint],\n );\n\n return { isECatalogue, isMobile };\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as ShoppingContextLoaded from '@ori-events/shopping-context-loaded';\nimport { useMemo, useState, useCallback } from 'react';\n\nimport { useAppConfig } from '../../../context';\n\nexport const useShoppingBag = () => {\n const { setSessionId } = useAppConfig();\n const [shoppingBagQuantity, setShoppingBagQuantity] = useState(0);\n const [isReceivedShoppingContext, setIsReceivedShoppingContext] = useState(false);\n\n const updateShoppingBagQuantity = useCallback((newQuantity: number) => {\n if (newQuantity >= 0) {\n setShoppingBagQuantity(newQuantity);\n }\n }, []);\n\n const onShoppingContextLoaded = useCallback(\n (event: ShoppingContextLoaded.Event) => {\n updateShoppingBagQuantity(event.detail.shoppingBag.shoppingBagQuantity);\n setIsReceivedShoppingContext(true);\n setSessionId(event.detail.sessionId ?? undefined);\n },\n [setSessionId, updateShoppingBagQuantity],\n );\n\n const onBasketUpdated = useCallback(\n (event: BasketUpdated.Event) => {\n updateShoppingBagQuantity(event.detail.shoppingBag.shoppingBagQuantity);\n },\n [updateShoppingBagQuantity],\n );\n\n return useMemo(\n () => ({\n shoppingBagQuantity,\n isReceivedShoppingContext,\n onShoppingContextLoaded,\n onBasketUpdated,\n }),\n [shoppingBagQuantity, isReceivedShoppingContext, onShoppingContextLoaded, onBasketUpdated],\n );\n};\n","export const SHOPPING_BAG_ICON_ROOT = 'shopping-bag-icon-root';\n","export const USER_ICON_MOBILE = 'user-icon-mobile';\nexport const USER_ICON_DESKTOP = 'user-icon-desktop';\nexport const MY_PAGES_URL = '/ssoidentity/mypages';\n","import { User, UserFilled } from '@ori-ui/icons';\nimport { useToken } from '@ori/auth';\nimport { useLogin } from '@ori/login';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { useHover, useCustomerInitials } from '../../hooks';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { MY_PAGES_URL, USER_ICON_DESKTOP, USER_ICON_MOBILE } from './constants';\nimport { DesktopUserIconButton, MobileUserIconButton, SignInLabel, UserAvatar } from './styles';\n\nexport const UserSection: FC = () => {\n const [ref, Icon] = useHover(UserFilled, User);\n const { getTestId } = useTestId();\n const { isAnonymousUser } = useToken();\n const { doLogin } = useLogin();\n const { translations } = useTranslations();\n const customerInitials = useCustomerInitials();\n\n if (!isAnonymousUser) {\n return (\n <>\n <MobileUserIconButton\n ref={ref}\n aria-label={translations.myAccount}\n data-testid={getTestId(USER_ICON_MOBILE)}\n >\n {customerInitials ? (\n <a href={MY_PAGES_URL}>\n <UserAvatar>{customerInitials}</UserAvatar>\n </a>\n ) : null}\n </MobileUserIconButton>\n <DesktopUserIconButton\n href={MY_PAGES_URL}\n startIcon={customerInitials ? <UserAvatar>{customerInitials}</UserAvatar> : null}\n variant=\"contained\"\n data-testid={getTestId(USER_ICON_DESKTOP)}\n color=\"secondary\"\n >\n <span>{translations.myAccount}</span>\n </DesktopUserIconButton>\n </>\n );\n }\n\n return (\n <>\n <MobileUserIconButton\n ref={ref}\n disableRipple\n aria-label={translations.signIn}\n data-testid={getTestId(USER_ICON_MOBILE)}\n onClick={doLogin}\n >\n <Icon fontSize=\"inherit\" />\n </MobileUserIconButton>\n <SignInLabel\n ref={ref}\n disableRipple\n data-testid={getTestId(USER_ICON_DESKTOP)}\n onClick={doLogin}\n >\n {translations.signIn}\n </SignInLabel>\n </>\n );\n};\n","import { styled } from '@ori-ui/mui';\n\nexport const RightActionsSectionRoot = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n gap: theme.spacing(3),\n justifySelf: 'end',\n justifyContent: 'flex-end',\n marginLeft: theme.spacing(3),\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n justifyContent: 'end',\n },\n [theme.breakpoints.up('md')]: {\n gap: theme.spacing(4),\n marginLeft: theme.spacing(4),\n maxWidth: 'none',\n },\n [theme.breakpoints.up('lg')]: {\n gap: theme.spacing(8),\n marginLeft: theme.spacing(8),\n },\n}));\n","import { useToken } from '@ori/auth';\nimport type { FC } from 'react';\n\nimport { useShouldRenderNotificationMenu } from '../../hooks/useShouldRenderNotificationMenu';\nimport { FavoritesHeartIcon } from '../FavoritesHeartIcon';\nimport { JoinIcon } from '../Join/components/JoinIcon/JoinIcon';\nimport { NotificationBellIcon } from '../NotificationBellIcon';\nimport { SearchIcon } from '../SearchIcon';\nimport { SearchInput } from '../SearchInput';\nimport { ShoppingBagIcon } from '../ShoppingBagIcon';\nimport { UserSection } from '../UserSection';\nimport { RightActionsSectionRoot } from './styles';\n\nexport const RightActionsSection: FC = () => {\n const { isAnonymousUser } = useToken();\n const showFavorites = !isAnonymousUser;\n const shouldShowNotificationMenu = useShouldRenderNotificationMenu();\n\n return (\n <RightActionsSectionRoot>\n <SearchInput showOnlyOn=\"desktop\" />\n <SearchIcon />\n {isAnonymousUser ? <JoinIcon /> : null}\n <UserSection />\n {shouldShowNotificationMenu ? <NotificationBellIcon /> : null}\n {showFavorites ? <FavoritesHeartIcon /> : null}\n <ShoppingBagIcon />\n </RightActionsSectionRoot>\n );\n};\n","import { useToken } from '@ori/auth';\n\nimport { useAppConfig } from '../context/configurationContext';\n\nexport const useShouldRenderNotificationMenu = (): boolean => {\n const { isAnonymousUser } = useToken();\n const { shouldDisplayNotificationIcon } = useAppConfig();\n\n return !isAnonymousUser && !!shouldDisplayNotificationIcon;\n};\n","export const TOP_AREA_BANNER_HEIGHT = 34;\nexport const TOP_AREA_BANNER_BENEFIT_BANNER = 'top-area-banner-benefit-banner';\n","import { styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport type { TopAreaBannerContext } from '../../context';\nimport { TOP_AREA_BANNER_HEIGHT } from './constants';\n\nexport const Root = styled('div', { shouldForwardProp: shouldForwardProp() })<\n Partial<Pick<TopAreaBannerContext, 'isOrderOnBehalfVisible'>>\n>(({ isOrderOnBehalfVisible, theme, onClick }) => ({\n background: isOrderOnBehalfVisible ? theme.palette.blue[300] : theme.palette.primary.light,\n color: isOrderOnBehalfVisible ? theme.palette.common.white : theme.palette.text.primary,\n cursor: onClick ? 'pointer' : 'default',\n display: 'flex',\n zIndex: theme.zIndex.appBar,\n height: TOP_AREA_BANNER_HEIGHT,\n width: '100vw',\n position: 'fixed',\n top: '0',\n left: '0',\n\n alignItems: 'center',\n justifyContent: 'center',\n}));\n","import { Skeleton } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\n\nimport { TOP_AREA_BANNER_HEIGHT } from '../../constants';\nimport { Root } from '../../styles';\nimport { TOP_AREA_BANNER_BENEFIT_BANNER_SKELETON } from './constants';\n\nexport const TopAreaBannerSkeleton: FC = () => {\n const { getTestId } = useTestId();\n\n return (\n <Root data-testid={getTestId(TOP_AREA_BANNER_BENEFIT_BANNER_SKELETON)}>\n <Skeleton\n animation=\"pulse\"\n height={TOP_AREA_BANNER_HEIGHT}\n variant=\"rectangular\"\n width=\"100%\"\n />\n </Root>\n );\n};\n","export const TOP_AREA_BANNER_BENEFIT_BANNER_SKELETON = 'top-area-banner-benefit-banner-skeleton';\n","export const ORDER_FORM_ROOT = 'order-form-root';\nexport const ORDER_ON_BEHALF_DIALOG_CHANGE_CONSULTANT_INPUT = 'order-on-behalf-dialog-change-consultant-input';\n","import { styled } from '@ori-ui/mui';\n\nexport const VipOrderFormRoot = styled('form')(({ theme }) => ({\n alignItems: 'center',\n columnGap: theme.spacing(4),\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n overflowX: 'hidden',\n gap: theme.spacing(3),\n}));\n","import type { AutocompleteRenderInputParams } from '@ori-ui/mui';\nimport { Autocomplete, Button, TextField } from '@ori-ui/mui';\nimport { axios } from '@ori/axios';\nimport { useLogger } from '@ori/logger';\nimport useTestId from '@ori/testid-generator';\nimport type { FC, ChangeEvent, SyntheticEvent } from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport { useTranslations } from '../../../../hooks/useTranslations';\nimport {\n type AccessConsultantResponse,\n type ConsultantNumberHint,\n type GetConsultantNumbersResponse,\n type VipAccessValidateResponse,\n} from '../../../../models';\nimport { vipOrderUrls } from '../../../../utils';\nimport { ORDER_FORM_ROOT, ORDER_ON_BEHALF_DIALOG_CHANGE_CONSULTANT_INPUT } from './constants';\nimport { VipOrderFormRoot } from './styles';\nimport type { VipOrderFormProps } from './types';\n\nexport const ChangeConsultantForm: FC<VipOrderFormProps> = ({\n vipAccessLabels: { ConsultantChangeConsultantNumber },\n}) => {\n const logger = useLogger('ChangeConsultantForm');\n const abortControllerRef = useRef(new AbortController());\n const formRef = useRef<HTMLFormElement>(null);\n const [areHintsLoading, setAreHintsLoading] = useState(false);\n const [consultantNumber, setConsultantNumber] = useState('');\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [hints, setHints] = useState<ConsultantNumberHint[]>([]);\n const [isSubmitLocked, setIsSubmitLocked] = useState(true);\n const { translations } = useTranslations();\n const { register, handleSubmit } = useForm();\n const { getTestId } = useTestId();\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target;\n setConsultantNumber(value);\n setErrorMessage(null);\n setAreHintsLoading(true);\n setIsSubmitLocked(true);\n\n if (value) {\n axios\n .get<GetConsultantNumbersResponse>(vipOrderUrls.consultantNumbers(value), {\n signal: abortControllerRef.current.signal,\n })\n .then(({ data }) => setHints(data.map((hint, index) => ({ index, hint }))))\n .catch((error: unknown) => {\n if (error instanceof Error && error.name !== 'AbortError') {\n logger.error(new Error('Cannot get consultant numbers', { cause: error }));\n }\n })\n .finally(() => {\n setAreHintsLoading(false);\n });\n }\n },\n [logger],\n );\n\n const handleSelect = useCallback(\n (event: SyntheticEvent) => {\n const { textContent: id } = event.target as HTMLElement;\n setConsultantNumber(id ?? '');\n setHints([]);\n\n if (id) {\n axios\n .post<VipAccessValidateResponse>(vipOrderUrls.accessSwitchValidate(id))\n .then(({ data: { message, result } }) => {\n setErrorMessage(message);\n setIsSubmitLocked(!result);\n })\n .catch((error: unknown) => logger.error(new Error('Cannot validate access switch', { cause: error })));\n }\n },\n [logger],\n );\n\n const onSubmit = useCallback(async () => {\n try {\n const { data } = await axios.get<AccessConsultantResponse>(vipOrderUrls.accessConsultant(consultantNumber));\n const { ConsultantNumber: consultant, ErrorMessage, IsAccessGranted } = data;\n\n if (IsAccessGranted) {\n try {\n await axios.post(vipOrderUrls.accessSwitch(consultant));\n formRef.current?.submit();\n } catch (error: unknown) {\n setErrorMessage(translations.failedToSubmit);\n logger.error(new Error('Cannot post VipAccessSwitch', { cause: error }));\n }\n } else {\n setErrorMessage(ErrorMessage);\n }\n } catch (error: unknown) {\n logger.error(new Error('Cannot get consultant info', { cause: error }));\n }\n }, [consultantNumber, translations.failedToSubmit, logger]);\n\n const renderInput = useCallback(\n (props: AutocompleteRenderInputParams) => (\n <TextField\n data-testid={getTestId(ORDER_ON_BEHALF_DIALOG_CHANGE_CONSULTANT_INPUT)}\n variant=\"standard\"\n error={Boolean(errorMessage)}\n helperText={errorMessage}\n label={ConsultantChangeConsultantNumber}\n {...register(props.id)}\n onChange={handleChange}\n {...props}\n fullWidth\n />\n ),\n [ConsultantChangeConsultantNumber, errorMessage, getTestId, handleChange, register],\n );\n const getOptionLabel = useCallback((hint: ConsultantNumberHint) => String(hint.hint), []);\n\n return (\n <VipOrderFormRoot\n ref={formRef}\n data-testid={getTestId(ORDER_FORM_ROOT)}\n action={vipOrderUrls.basket}\n autoComplete=\"off\"\n method=\"POST\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <Autocomplete\n fullWidth\n getOptionLabel={getOptionLabel}\n id=\"ConsultantNumber\"\n loading={areHintsLoading}\n loadingText={translations.loading}\n noOptionsText={translations.noOptions}\n options={hints}\n renderInput={renderInput}\n onChange={handleSelect}\n />\n <Button\n fullWidth\n disabled={isSubmitLocked}\n color=\"primary\"\n type=\"submit\"\n variant=\"contained\"\n >\n {translations.change}\n </Button>\n </VipOrderFormRoot>\n );\n};\n","import { Button, Link, styled, SvgIcon, Typography } from '@ori-ui/mui';\n\nimport { TOP_AREA_BANNER_HEIGHT } from '../../../TopAreaBanner/constants';\n\nexport const BackArrow = styled(SvgIcon)(({ theme }) => ({\n cursor: 'pointer',\n position: 'absolute',\n left: theme.spacing(3),\n top: theme.spacing(3),\n}));\n\nexport const OrderContent = styled('div')(({ theme }) => ({\n textAlign: 'center',\n margin: '0 auto',\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n span: {\n lineHeight: theme.typography.pxToRem(TOP_AREA_BANNER_HEIGHT),\n textTransform: 'uppercase',\n fontSize: '1rem',\n },\n\n svg: {\n height: '2rem',\n },\n\n 'svg:first-of-type': {\n marginRight: theme.spacing(1),\n },\n 'svg:last-of-type': {\n marginLeft: theme.spacing(1),\n },\n}));\n\nexport const Username = styled(Typography)(({ theme }) => ({\n textDecoration: 'underline',\n color: theme.palette.common.white,\n marginLeft: theme.spacing(1),\n cursor: 'pointer',\n}));\n\nexport const PopupContentGroup = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n marginTop: theme.spacing(3),\n}));\n\nexport const PopupButton = styled(Button)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\nexport const PopupLink = styled(Link)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n textAlign: 'center',\n color: theme.palette.common.black,\n}));\n","import { Dialog } from '@ori-ui/components';\nimport { ArrowLeftThin } from '@ori-ui/icons';\nimport { Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport { useState, useCallback, useMemo } from 'react';\n\nimport { ChangeConsultantForm } from '../ChangeConsultantForm';\nimport { ORDER_ON_BEHALF_DIALOG, ORDER_ON_BEHALF_DIALOG_BACK_ARROW } from './constants';\nimport { BackArrow, PopupButton, PopupContentGroup, PopupLink } from './styles';\nimport type { OrderOnBehalfDialogProps } from './types';\n\nexport const OrderOnBehalfDialog = ({ vipAccessData, vipAccessLabels, open, close }: OrderOnBehalfDialogProps) => {\n const [changeOpened, setChangeOpened] = useState(false);\n const { getTestId } = useTestId();\n\n const onChangeOpened = useCallback(\n (value: boolean) => () => {\n setChangeOpened(value);\n },\n [],\n );\n\n const header = useMemo(() => {\n if (changeOpened) {\n return (\n <>\n <BackArrow\n data-testid={getTestId(ORDER_ON_BEHALF_DIALOG_BACK_ARROW)}\n onClick={onChangeOpened(false)}\n >\n <ArrowLeftThin />\n </BackArrow>\n <Typography\n variant=\"h5\"\n component=\"h5\"\n >\n {vipAccessLabels.ConsultantChangeConsultantNumber}\n </Typography>\n </>\n );\n }\n\n return undefined;\n }, [changeOpened, getTestId, onChangeOpened, vipAccessLabels.ConsultantChangeConsultantNumber]);\n\n return (\n <Dialog\n data-testid={getTestId(ORDER_ON_BEHALF_DIALOG)}\n header={header}\n open={open}\n hideCloseButton={changeOpened}\n onClose={close}\n >\n <PopupContentGroup>\n {changeOpened ? (\n <ChangeConsultantForm vipAccessLabels={vipAccessLabels} />\n ) : (\n <>\n <PopupButton\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n href={vipAccessData.Links[0]?.Url}\n >\n {vipAccessData.Links[0]?.Text}\n </PopupButton>\n <PopupButton\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n onClick={onChangeOpened(true)}\n >\n {vipAccessLabels.ConsultantChangeConsultantNumber}\n </PopupButton>\n <PopupLink\n variant=\"button\"\n color=\"primary\"\n href={vipAccessData.Links[2]?.Url}\n >\n {vipAccessData.Links[2]?.Text}\n </PopupLink>\n </>\n )}\n </PopupContentGroup>\n </Dialog>\n );\n};\n","export const ORDER_ON_BEHALF_DIALOG = 'order-on-behalf-dialog';\nexport const ORDER_ON_BEHALF_DIALOG_BACK_ARROW = 'order-on-behalf-dialog-back-arrow';\n","import { styled, Typography } from '@ori-ui/mui';\n\nimport { TOP_AREA_BANNER_HEIGHT } from '../TopAreaBanner/constants';\n\nexport const OrderContent = styled('div')(({ theme }) => ({\n textAlign: 'center',\n margin: '0 auto',\n color: theme.palette.common.white,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n\n span: {\n lineHeight: theme.typography.pxToRem(TOP_AREA_BANNER_HEIGHT),\n textTransform: 'uppercase',\n fontSize: '1rem',\n },\n\n svg: {\n height: '2rem',\n },\n\n 'svg:first-of-type': {\n marginRight: theme.spacing(1),\n },\n 'svg:last-of-type': {\n marginLeft: theme.spacing(1),\n },\n}));\n\nexport const Username = styled(Typography)(({ theme }) => ({\n textDecoration: 'underline',\n color: theme.palette.common.white,\n marginLeft: theme.spacing(1),\n cursor: 'pointer',\n}));\n","import { NewUserFilled, ArrowRightThin } from '@ori-ui/icons';\nimport { Typography } from '@ori-ui/mui';\nimport { useDisclose } from '@ori/presentation-hooks';\nimport useTestId from '@ori/testid-generator';\n\nimport { useTopAreaBanner } from '../../context';\nimport { useTranslations } from '../../hooks/useTranslations';\nimport { OrderOnBehalfDialog } from './components/OrderOnBehalfDialog';\nimport { ORDER_ON_BEHALF } from './constants';\nimport { OrderContent, Username } from './styles';\n\nexport const OrderOnBehalf = () => {\n const { orderOnBehalfData } = useTopAreaBanner();\n const { VipAccessData: vipAccessData, VipAccessLabels: vipAccessLabels } = orderOnBehalfData ?? {};\n const { getTestId } = useTestId();\n const { open, onClose, onOpen } = useDisclose();\n const { translations } = useTranslations();\n\n if (!vipAccessData || !vipAccessLabels) {\n return null;\n }\n\n return (\n <OrderContent data-testid={getTestId(ORDER_ON_BEHALF)}>\n <NewUserFilled />\n <Typography>{translations.loggedInAs}</Typography>\n <Username onClick={onOpen}>{vipAccessData.ConsultantName}</Username>\n <OrderOnBehalfDialog\n open={open}\n close={onClose}\n vipAccessData={vipAccessData}\n vipAccessLabels={vipAccessLabels}\n />\n <ArrowRightThin />\n </OrderContent>\n );\n};\n","export const ORDER_ON_BEHALF = 'order-on-behalf-banner';\n","export const BANNER_CAROUSEL_BANNER = 'banner-carousel-banner';\n","import { styled, Typography } from '@ori-ui/mui';\n\nimport { TOP_AREA_BANNER_HEIGHT } from '../../../../constants';\n\nexport const Root = styled('a')(({ theme, onClick, href }) => {\n const isClickable = Boolean(onClick ?? href);\n\n return {\n color: theme.palette.text.primary,\n cursor: isClickable ? 'pointer' : 'default',\n display: 'flex',\n height: TOP_AREA_BANNER_HEIGHT,\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n '&:hover': {\n textDecoration: isClickable ? 'underline' : 'none',\n color: theme.palette.text.primary,\n },\n };\n});\nexport const Title = styled(Typography)(({ theme }) => ({\n overflow: 'hidden',\n padding: theme.spacing(1),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}));\n","import useTestId from '@ori/testid-generator';\nimport { type FC } from 'react';\n\nimport { BANNER_CAROUSEL_BANNER } from './constants';\nimport { Root, Title } from './styles';\nimport { type BannerProps } from './types';\n\nexport const Banner: FC<BannerProps> = ({ onClick, title, url }) => {\n const { getTestId } = useTestId();\n\n return (\n <Root\n data-testid={getTestId(BANNER_CAROUSEL_BANNER)}\n href={url}\n onClick={onClick}\n >\n <Title fontWeight=\"bold\">{title}</Title>\n </Root>\n );\n};\n","import type { CarouselNavigationProps, CarouselPaginationProps, CarouselProps } from '@ori/presentation-components';\n\nexport const BANNERS_CAROUSEL = 'top-area-banners-carousel';\nexport const navigation: CarouselNavigationProps = { showArrows: false };\nexport const pagination: CarouselPaginationProps = { show: false };\nexport const slider: CarouselProps['slider'] = { drag: false };\n","import { styled } from '@ori-ui/mui';\n\nimport { TOP_AREA_BANNER_HEIGHT } from '../../constants';\n\nexport const Root = styled('div')(({ theme }) => ({\n margin: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n zIndex: theme.zIndex.appBar,\n backgroundColor: theme.palette.primary.light,\n height: TOP_AREA_BANNER_HEIGHT,\n}));\n","import { Carousel, type CarouselAutoplayProps, CarouselSlide } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\nimport { useMemo, type FC } from 'react';\n\nimport { Banner } from './components/Banner';\nimport { BANNERS_CAROUSEL, navigation, pagination, slider } from './constants';\nimport { Root } from './styles';\nimport type { BannersCarouselProps } from './types';\n\nexport const BannersCarousel: FC<BannersCarouselProps> = ({ items, onOpen }) => {\n const { getTestId } = useTestId();\n const autoplay: CarouselAutoplayProps = useMemo(\n () => ({ enabled: items.length > 1, interval: 5000 }),\n [items.length],\n );\n\n return (\n <Root data-testid={getTestId(BANNERS_CAROUSEL)}>\n <Carousel\n autoplay={autoplay}\n navigation={navigation}\n pagination={pagination}\n slider={slider}\n propagateDragEvent={false}\n id=\"top-area-banner-carousel\"\n >\n {items.map(({ title, url, shouldOpenInvitationOffer }) => (\n <CarouselSlide\n key={[url, title].join('-')}\n minWidth=\"100%\"\n >\n <Banner\n title={title}\n url={url}\n onClick={shouldOpenInvitationOffer ? onOpen : undefined}\n />\n </CarouselSlide>\n ))}\n </Carousel>\n </Root>\n );\n};\n","import { createContext } from 'react';\n\nimport type { PersonalBeautyStoreContext } from '../../types';\n\nexport const personalBeautyStoreContext = createContext<PersonalBeautyStoreContext>({\n pbsData: null,\n storeInfo: null,\n});\n","import type { SocialContactType } from '../models';\n\nexport type Contacts =\n | ReadonlyArray<{\n readonly type?: SocialContactType | null;\n readonly value?: string | null;\n } | null>\n | null\n | undefined;\n\nexport const getContactByType = (\n allowedContacts: Readonly<Array<SocialContactType | null>> | null | undefined,\n contacts: Contacts,\n type: SocialContactType,\n) => (allowedContacts?.includes(type) ? contacts?.filter((contact) => contact?.type === type)[0]?.value : null);\n","import { styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n alignSelf: 'center',\n display: 'flex',\n gap: theme.spacing(1),\n}));\n","import { Email, Telephone } from '@ori-ui/icons';\nimport { Link } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { Root } from './styles';\n\nexport interface ContactProps {\n contact: string | null | undefined;\n type: 'email' | 'phone';\n}\n\nexport const Contact: FC<ContactProps> = ({ contact, type }) => {\n if (!contact) {\n return null;\n }\n\n return (\n <Root>\n {type === 'email' ? <Email /> : <Telephone />}\n <Link href={`${type === 'email' ? 'mailto' : 'tel'}:${contact}`}>{contact}</Link>\n </Root>\n );\n};\n","import { Dialog } from '@ori-ui/components';\nimport { Gift } from '@ori-ui/icons';\nimport { paperClasses, styled } from '@ori-ui/mui';\n\nexport const Root = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(3),\n textAlign: 'center',\n}));\n\nexport const GreetingMessageAndContact = styled('div')(({ theme }) => ({\n backgroundColor: theme.palette.grey[100],\n borderRadius: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n padding: theme.spacing(2),\n width: '100%',\n}));\n\nexport const Icon = styled(Gift)({\n height: 48,\n width: 48,\n});\n\nexport const BannerDialog = styled(Dialog)(({ theme }) => ({\n [`& .${paperClasses.root}`]: {\n [theme.breakpoints.up('sm')]: {\n width: 390,\n },\n },\n}));\n","import { Button, Typography } from '@ori-ui/mui';\nimport { DynamicFormattedMessage } from '@ori/i18n';\nimport { getContactByType, usePersonalBeautyStore } from '@ori/personal-beauty-store';\nimport useTestId from '@ori/testid-generator';\nimport type { ReactNode, FC } from 'react';\nimport { useMemo } from 'react';\n\nimport { useTranslations } from '../../../../hooks/useTranslations';\nimport { SocialContactType } from '../../../../models/graphql-types/net';\nimport { Contact } from '../Contact';\nimport {\n TOP_AREA_BANNER_DIALOG,\n TOP_AREA_BANNER_DIALOG_GREETING_MESSAGE,\n TOP_AREA_BANNER_DIALOG_MESSAGE,\n} from './constants';\nimport { BannerDialog, GreetingMessageAndContact, Icon, Root } from './styles';\n\ninterface TopAreaBannerProps {\n open: boolean;\n onClose: () => void;\n}\n\nconst emphasis = (testId: string) => (chunks: ReactNode[]) => <strong data-testid={testId}>{chunks}</strong>;\n\n/**\n * SharingConditionsDialog component is used to render Dialog in How it works module. This dialog contains the sharing conditions.\n */\nexport const TopAreaBannerDialog: FC<TopAreaBannerProps> = ({ open, onClose }) => {\n const { getTestId } = useTestId();\n const { pbsData } = usePersonalBeautyStore();\n const { translations } = useTranslations();\n\n const { contacts, referralProgram } = pbsData?.beautyStore?.profile ?? {};\n const { allowedContacts, benefitsLink, greetingMessage, message, title } = referralProgram ?? {};\n const { relativeUrl, title: linkTitle } = benefitsLink ?? {};\n const userEmail = useMemo(\n () => getContactByType(allowedContacts, contacts, SocialContactType.Email),\n [allowedContacts, contacts],\n );\n const userPhone = useMemo(\n () => getContactByType(allowedContacts, contacts, SocialContactType.PhoneNumber),\n [allowedContacts, contacts],\n );\n\n if (!title || !message) {\n return null;\n }\n\n return (\n <BannerDialog\n open={open}\n onClose={onClose}\n >\n <Root data-testid={getTestId(TOP_AREA_BANNER_DIALOG)}>\n <Icon />\n <Typography\n variant=\"h3\"\n component=\"h3\"\n >\n {title}\n </Typography>\n <Typography>\n <DynamicFormattedMessage\n translatedMessage={message}\n values={{\n emphasis: emphasis(getTestId(TOP_AREA_BANNER_DIALOG_MESSAGE)),\n }}\n />\n </Typography>\n <GreetingMessageAndContact>\n <Typography>\n {greetingMessage ? (\n <DynamicFormattedMessage\n translatedMessage={greetingMessage}\n values={{\n emphasis: emphasis(getTestId(TOP_AREA_BANNER_DIALOG_GREETING_MESSAGE)),\n }}\n />\n ) : null}\n </Typography>\n <Contact\n contact={userEmail}\n type=\"email\"\n />\n <Contact\n contact={userPhone}\n type=\"phone\"\n />\n </GreetingMessageAndContact>\n <Button\n fullWidth\n href={relativeUrl ?? undefined}\n variant=\"contained\"\n color=\"primary\"\n onClick={relativeUrl == null ? onClose : undefined}\n >\n {linkTitle ?? translations.gotIt}\n </Button>\n </Root>\n </BannerDialog>\n );\n};\n","/* istanbul ignore file */\nimport { useContext } from 'react';\n\nimport { personalBeautyStoreContext } from './personalBeautyStoreContext';\n\nexport const usePersonalBeautyStore = () => useContext(personalBeautyStoreContext);\n","export const TOP_AREA_BANNER_DIALOG = 'top-area-banner-dialog';\nexport const TOP_AREA_BANNER_DIALOG_GREETING_MESSAGE = 'top-area-banner-dialog-greeting-message';\nexport const TOP_AREA_BANNER_DIALOG_MESSAGE = 'top-area-banner-dialog-message';\n","import { ErrorBoundary } from '@ori/logger';\nimport { useDisclose } from '@ori/presentation-hooks';\nimport { type FC } from 'react';\n\nimport { useTopAreaBanner } from '../../../../context';\nimport { OrderOnBehalf } from '../../../OrderOnBehalf';\nimport { Root } from '../../styles';\nimport { BannersCarousel } from '../BannersCarousel';\nimport { TopAreaBannerDialog } from '../TopAreaBannerDialog';\n\nexport const TopAreaBannerContent: FC = () => {\n const { isOrderOnBehalfVisible, bannersData = [] } = useTopAreaBanner();\n const { open, onClose, onOpen } = useDisclose();\n\n if (isOrderOnBehalfVisible) {\n return (\n <Root isOrderOnBehalfVisible>\n <OrderOnBehalf />\n </Root>\n );\n }\n\n return (\n <>\n <BannersCarousel\n items={bannersData}\n onOpen={onOpen}\n />\n <ErrorBoundary areaName=\"TopAreaBannerContent\">\n <TopAreaBannerDialog\n open={open}\n onClose={onClose}\n />\n </ErrorBoundary>\n </>\n );\n};\n","import type { FC } from 'react';\n\nimport { useTopAreaBanner } from '../../context';\nimport { TopAreaBannerContent, TopAreaBannerSkeleton } from './components';\n\nexport const TopAreaBanner: FC = () => {\n const { loading, visible } = useTopAreaBanner();\n\n if (!visible) {\n return null;\n }\n\n return loading ? <TopAreaBannerSkeleton /> : <TopAreaBannerContent />;\n};\n","import { styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport {\n CSS_DESKTOP_INNER_HEIGHT,\n CSS_HEIGHT_ANIMATION,\n CSS_MOBILE_INNER_HEIGHT,\n TOP_AREA_BORDER_BOTTOM,\n} from '../../constants';\nimport { TOP_AREA_BANNER_HEIGHT } from '../TopAreaBanner';\n\ninterface RootProps {\n isSearchInputVisible?: boolean;\n isTopBannerVisible?: boolean;\n}\n\nexport const Root = styled('nav', {\n shouldForwardProp: shouldForwardProp(),\n})<RootProps>(({ theme, isSearchInputVisible, isTopBannerVisible }) => ({\n alignItems: 'center',\n backgroundColor: theme.palette.common.white,\n borderBottom: `${TOP_AREA_BORDER_BOTTOM}px solid ${isSearchInputVisible ? theme.palette.common.white : theme.palette.grey[100]}`,\n boxSizing: 'border-box',\n display: 'flex',\n height: CSS_MOBILE_INNER_HEIGHT,\n left: 0,\n padding: theme.spacing(0, 3),\n position: 'fixed',\n top: isTopBannerVisible ? TOP_AREA_BANNER_HEIGHT : 0,\n transition: `height ${CSS_HEIGHT_ANIMATION}, background-color 0.1s ease-in-out`,\n width: '100%',\n zIndex: theme.zIndex.appBar,\n\n [theme.breakpoints.up('md')]: {\n borderBottom: `${TOP_AREA_BORDER_BOTTOM}px solid ${theme.palette.grey[100]}`,\n height: CSS_DESKTOP_INNER_HEIGHT,\n padding: theme.spacing(0, 6),\n },\n}));\n","import { useToken } from '@ori/auth';\nimport useTestId from '@ori/testid-generator';\nimport type { FC, ReactNode } from 'react';\n\nimport { useSearchInput } from '../../context/navigation';\nimport type { VipAccessResponse } from '../../models';\nimport { BurgerMenu } from '../BurgerMenu';\nimport { JoinMenu } from '../Join/JoinMenu';\nimport { LeftActionsSection } from '../LeftActionsSection';\nimport { RightActionsSection } from '../RightActionsSection';\nimport { SearchInput } from '../SearchInput';\nimport { TopAreaBanner } from '../TopAreaBanner';\nimport { TOP_AREA_ROOT } from './constants';\nimport { Root } from './styles';\n\nexport interface TopAreaProps {\n isTopBannerVisible?: boolean | undefined;\n mobilePersonalMenuOutlet?: ReactNode | undefined;\n vipAccess?: VipAccessResponse | undefined;\n}\n\nexport const TopArea: FC<TopAreaProps> = ({ isTopBannerVisible, mobilePersonalMenuOutlet }) => {\n const { getTestId } = useTestId();\n const { isVisible: isSearchInputVisible } = useSearchInput();\n const { isAnonymousUser } = useToken();\n\n return (\n <Root\n isSearchInputVisible={isSearchInputVisible}\n isTopBannerVisible={isTopBannerVisible}\n data-testid={getTestId(TOP_AREA_ROOT)}\n >\n <LeftActionsSection />\n <RightActionsSection />\n <BurgerMenu mobilePersonalMenuOutlet={mobilePersonalMenuOutlet} />\n {isAnonymousUser ? <JoinMenu /> : null}\n <TopAreaBanner />\n <SearchInput showOnlyOn=\"mobile\" />\n </Root>\n );\n};\n","export const TOP_AREA_ROOT = 'root';\n","import { useToken } from '@ori/auth';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { ApiClientProvider as GlobalApiClientProvider } from '@ori/global-api-client-react';\nimport { ApiClientProvider as StaticApiClientProvider } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useAppConfig } from '../context';\n\nexport const ApiProvider: FC<PropsWithChildren> = ({ children }) => {\n const { currentLanguage, tenant } = useAppConfig();\n const { globalApiUrl, staticApiUrl } = useServiceUrls(['globalApi', 'staticApi']);\n const { formattedToken } = useToken();\n\n return (\n <GlobalApiClientProvider\n baseUrl={globalApiUrl}\n language={currentLanguage}\n token={formattedToken}\n tenant={tenant}\n >\n <StaticApiClientProvider\n baseUrl={staticApiUrl}\n language={currentLanguage}\n tenant={tenant}\n >\n {children}\n </StaticApiClientProvider>\n </GlobalApiClientProvider>\n );\n};\n","// istanbul ignore file -- constant file\nimport { UserSegmentationDataProvider } from '@ori/presentation-http';\n\nimport { AppPromoProvider, ConsultantProvider, HeadersProvider, TopAreaBannerProvider } from '../context';\nimport {\n ActiveLinkProvider,\n ActiveMenuProvider,\n BurgerMenuProvider,\n LabelsProvider,\n SearchInputProvider,\n} from '../context/navigation';\nimport { composeProviders } from '../utils';\nimport { ApiProvider } from './ApiProvider';\n\nexport const Context = composeProviders(\n ApiProvider,\n UserSegmentationDataProvider,\n HeadersProvider,\n AppPromoProvider,\n SearchInputProvider,\n ActiveLinkProvider,\n ActiveMenuProvider,\n ConsultantProvider,\n TopAreaBannerProvider,\n LabelsProvider,\n BurgerMenuProvider,\n);\n","import type { FC, PropsWithChildren } from 'react';\n\nexport const composeProviders = (...providers: Array<FC<PropsWithChildren>>) =>\n function Providers({ children }: PropsWithChildren) {\n return (\n <>\n {providers.reduceRight(\n (accumulated, Provider) => (\n <Provider>{accumulated}</Provider>\n ),\n children,\n )}\n </>\n );\n };\n","/* istanbul ignore file */\nimport { useToken } from '@ori/auth';\nimport { useEnvironment } from '@ori/environment';\nimport { useLanguage } from '@ori/i18n';\nimport { HeadersProvider as Provider } from '@ori/presentation-http';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { PACKAGE_NAME } from '../constants-generated';\n\nexport const HeadersProvider: FC<PropsWithChildren> = ({ children }) => {\n const { language } = useLanguage();\n const { tenant } = useEnvironment();\n const { customerId, token } = useToken();\n\n return (\n <Provider\n customerId={customerId}\n language={language}\n sourceAppName={PACKAGE_NAME}\n tenant={tenant}\n token={token}\n >\n {children}\n </Provider>\n );\n};\n","import { useContext, createContext } from 'react';\n\nexport interface ConfigurationContext {\n isEnabled: boolean;\n}\n\nexport const configurationContext = createContext<ConfigurationContext>({ isEnabled: false });\n\nexport const ConfigurationProvider = configurationContext.Provider;\n\nexport const useConfiguration = () => useContext(configurationContext);\n","/* istanbul ignore file */\nimport { useToken } from '@ori/auth';\nimport { useGetCustomerSponsorPersonalBeautyStore } from '@ori/global-api-client-react';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\n\nconst useSponsorPersonalBeautyStoreInfo = (): ReturnType<typeof useGetCustomerSponsorPersonalBeautyStore> => {\n const { customerId, isAnonymousUser, isUserVerified } = useToken();\n const result = useGetCustomerSponsorPersonalBeautyStore(customerId, undefined, {\n swr: {\n ...getRetryErrorSwrOptions(),\n enabled: isUserVerified && !isAnonymousUser,\n },\n });\n\n return result;\n};\n\nexport default useSponsorPersonalBeautyStoreInfo;\n","import { Logger } from '@ori/logger';\n\nimport { PACKAGE_NAME, TEAM_NAME } from './constants-generated';\n\nexport const mainLogger = new Logger(PACKAGE_NAME, { teamName: TEAM_NAME });\n","import { gql } from '@ori/fetching';\n\nexport const beautyStoreQuery = gql`\n query beautyStore($name: ID, $productListType: ProductListType!) {\n application {\n personalProductListConfiguration {\n isPplEnabled\n addThis {\n sharedUrl\n }\n }\n }\n beautyStore(name: $name) {\n profile {\n name\n firstName\n lastName\n photoUrl\n contacts {\n type\n value\n }\n referralProgram {\n title\n greetingMessage\n message\n benefitsLink {\n relativeUrl\n title\n }\n allowedContacts\n }\n }\n productLists(productListType: $productListType) {\n productListId\n items {\n itemCode\n }\n }\n }\n }\n`;\n","import { useToken } from '@ori/auth';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { useEnvironment } from '@ori/environment';\nimport { getHeaders, useGraphqlQuery } from '@ori/fetching';\nimport { useLanguage } from '@ori/i18n';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\nimport cloneDeep from 'lodash.clonedeep';\nimport { useMemo } from 'react';\n\nimport { PACKAGE_NAME } from '../../constants-generated';\nimport useSponsorPersonalBeautyStoreInfo from '../../hooks/useSponsorPersonalBeautyStoreInfo';\nimport { mainLogger } from '../../logger';\nimport { ReferralType } from '../../models';\nimport type { BeautyStoreQuery, BeautyStoreQueryVariables, ProductListType } from '../../models';\nimport { beautyStoreQuery } from '../../queries-net';\nimport { useConfiguration } from '../ConfigurationProvider';\nimport { useCookieStoreInfo } from './useCookieStoreInfo';\n\nconst logger = mainLogger.createChild('usePersonalBeautyStoreData');\n\nexport const usePersonalBeautyStoreData = () => {\n const { isEnabled } = useConfiguration();\n const { graphQlNetUrl } = useServiceUrls(['graphQlNet']);\n const { tenant } = useEnvironment();\n const { language } = useLanguage();\n const { isAnonymousUser, customerId, token } = useToken();\n const { type, owner, productListType } = useCookieStoreInfo();\n const { data: sponsorData } = useSponsorPersonalBeautyStoreInfo();\n const shouldCall = type === ReferralType.PBS && isEnabled && Boolean(owner);\n const { data: dataFromApi } = useGraphqlQuery<BeautyStoreQuery, BeautyStoreQueryVariables>({\n url: graphQlNetUrl,\n query: beautyStoreQuery,\n headers: getHeaders({\n tenant,\n language,\n customerId,\n token,\n sourceAppName: PACKAGE_NAME,\n }),\n variables: {\n name: isAnonymousUser ? owner : sponsorData?.name,\n productListType: productListType as ProductListType,\n },\n skip: isAnonymousUser ? !shouldCall : !sponsorData?.name,\n onError(error) {\n logger.error(error);\n },\n swrConfig: getRetryErrorSwrOptions(),\n });\n\n return useMemo(() => {\n if (!dataFromApi?.beautyStore || !dataFromApi.application) {\n return null;\n }\n\n const result = cloneDeep(dataFromApi);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line unicorn/no-lonely-if -- webpack dead code elimination\n if (result.beautyStore?.profile?.photoUrl) {\n const photoUrl = new URL(result.beautyStore.profile.photoUrl);\n\n // photoUrl is readOnly so it cannot be reassigned\n return {\n ...result,\n beautyStore: {\n ...result.beautyStore,\n profile: {\n ...result.beautyStore.profile,\n photoUrl: `${photoUrl.pathname}?${photoUrl.searchParams.toString()}`,\n },\n },\n };\n }\n }\n\n return result;\n }, [dataFromApi]);\n};\n","/* istanbul ignore file */\nimport type { FC, PropsWithChildren } from 'react';\nimport { useMemo } from 'react';\n\nimport type { PersonalBeautyStoreContext } from '../../types';\nimport { personalBeautyStoreContext } from './personalBeautyStoreContext';\nimport { useCookieStoreInfo } from './useCookieStoreInfo';\nimport { usePersonalBeautyStoreData } from './usePersonalBeautyStoreData';\n\nexport const PersonalBeautyStoreProvider: FC<PropsWithChildren> = ({ children }) => {\n const storeInfo = useCookieStoreInfo();\n const pbsData = usePersonalBeautyStoreData();\n\n const value = useMemo(\n (): PersonalBeautyStoreContext => ({\n pbsData,\n storeInfo,\n }),\n [pbsData, storeInfo],\n );\n\n return <personalBeautyStoreContext.Provider value={value}>{children}</personalBeautyStoreContext.Provider>;\n};\n","import { PbsCookieNames } from '../models';\nimport type { CookieToTransform } from '../types';\n\n// The cookies are processed in the order they appear in this array,\n// and processing stops at the first found cookie that has stopIfFound == true\nexport const cookiesToTransform: CookieToTransform[] = [\n {\n cookie: PbsCookieNames.PBS_CODE,\n queryParam: 'store',\n stopIfFound: true,\n },\n {\n cookie: PbsCookieNames.ECREF_OWNER,\n queryParam: 'invite',\n stopIfFound: true,\n },\n {\n cookie: PbsCookieNames.PBS_OWNER,\n queryParam: 'store',\n stopIfFound: false,\n },\n {\n cookie: PbsCookieNames.ECREF,\n queryParam: 'invite',\n stopIfFound: true,\n },\n];\n","/**\n * Updates current url query parameters without reloading page in browser\n */\nexport const updateQueryParameters = (newQueryParameters: URLSearchParams) => {\n const newUrl = new URL(window.location.toString());\n newUrl.search = newQueryParameters.toString();\n\n window.history.replaceState('', document.title, newUrl);\n};\n","import { updateQueryParameters } from './updateQueryParameters';\n\n/**\n * Removes query parameter from browser URL\n */\nexport const removeQueryParameter = (name: string) => {\n const queryParams = new URLSearchParams(window.location.search);\n\n if (!queryParams.has(name)) {\n return;\n }\n\n queryParams.delete(name);\n\n updateQueryParameters(queryParams);\n};\n","import { updateQueryParameters } from './updateQueryParameters';\n\n/**\n * Ensures that there is query parameter by provided name and value in browser URL\n */\nexport const ensureQueryParameter = (name: string, value: string) => {\n const queryParams = new URLSearchParams(window.location.search);\n\n // There is no need to update or add new parameter so skipping\n if (queryParams.has(name) && queryParams.get(name) === value) {\n return;\n }\n\n queryParams.set(name, value);\n\n updateQueryParameters(queryParams);\n};\n","import Cookies from 'js-cookie';\nimport { useEffect } from 'react';\n\nimport { cookiesToTransform } from '../../constants';\nimport { mainLogger } from '../../logger';\nimport type { RemoveQueryParameterCallback, SetQueryParameterCallback } from '../../types';\nimport {\n removeQueryParameter as removeQueryParameterHistoryApi,\n ensureQueryParameter as setQueryParameterHistoryApi,\n} from '../../utils';\n\nexport interface CookieToUrlParams {\n removeQueryParameter: RemoveQueryParameterCallback;\n\n setQueryParameter: SetQueryParameterCallback;\n}\n\nconst logger = mainLogger.createChild('useCookieToUrl');\n\n/**\n * Reads cookie and transforms them into url - if found\n */\nexport const useCookieToUrl = (parameters?: CookieToUrlParams) => {\n useEffect(() => {\n const removeQueryParameter = parameters?.removeQueryParameter ?? removeQueryParameterHistoryApi;\n const setQueryParameter = parameters?.setQueryParameter ?? setQueryParameterHistoryApi;\n\n let foundPrev = false;\n\n for (const cookieInfo of cookiesToTransform) {\n const {\n cookie: cookieName,\n queryParam: queryParamName,\n stopIfFound,\n stopIfFoundPrev,\n removeIfNotFound,\n } = cookieInfo;\n const cookieValue = Cookies.get(cookieName);\n const stop = stopIfFoundPrev && foundPrev;\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- eslint rule conflict - there is no way how to correctly satisfy eslint\n if (!cookieValue?.length) {\n if (removeIfNotFound) {\n removeQueryParameter(queryParamName);\n }\n\n logger.info(`Cookie value under the name of '${cookieName}' was not found!`);\n\n foundPrev = false;\n\n // stop if we should stop prematurely\n if (stop) {\n break;\n }\n continue;\n }\n\n // Ensure that query parameter is present and with correct value\n setQueryParameter(queryParamName, cookieValue);\n\n foundPrev = true;\n\n if (stopIfFound ?? stop) {\n break;\n }\n }\n }, [parameters?.removeQueryParameter, parameters?.setQueryParameter]);\n};\n","/* istanbul ignore file */\nimport { SWRConfig } from '@ori/fetching';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport type { ConfigurationContext } from '../contexts';\nimport { ConfigurationProvider, PersonalBeautyStoreProvider } from '../contexts';\nimport { useCookieToUrl } from '../hooks';\nimport type { RemoveQueryParameterCallback, SetQueryParameterCallback } from '../types';\n\nexport interface PbsAppProps {\n configuration: ConfigurationContext;\n removeQueryParameter?: RemoveQueryParameterCallback | undefined;\n setQueryParameter?: SetQueryParameterCallback | undefined;\n}\n\nexport const PbsApp: FC<PropsWithChildren<PbsAppProps>> = ({\n children,\n configuration,\n setQueryParameter,\n removeQueryParameter,\n}) => {\n useCookieToUrl(setQueryParameter && removeQueryParameter ? { setQueryParameter, removeQueryParameter } : undefined);\n\n return (\n <ConfigurationProvider value={configuration}>\n <SWRConfig\n value={{\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n shouldRetryOnError: false,\n errorRetryCount: 0,\n }}\n >\n <PersonalBeautyStoreProvider>{children}</PersonalBeautyStoreProvider>\n </SWRConfig>\n </ConfigurationProvider>\n );\n};\n","// istanbul ignore file -- just wrapper for contexts\nimport { PbsApp } from '@ori/personal-beauty-store';\nimport type { PbsAppProps } from '@ori/personal-beauty-store';\nimport type { FC, PropsWithChildren } from 'react';\nimport { useMemo } from 'react';\n\nimport type { TopAreaProps } from '../TopArea';\nimport { useAppConfig } from '../context';\n\nexport const Pbs: FC<PropsWithChildren<Pick<TopAreaProps, 'removeQueryParameter' | 'setQueryParameter'>>> = ({\n children,\n removeQueryParameter,\n setQueryParameter,\n}) => {\n const { enableTopAreaBanner } = useAppConfig();\n const configuration = useMemo(\n (): PbsAppProps['configuration'] => ({\n isEnabled: Boolean(enableTopAreaBanner),\n }),\n [enableTopAreaBanner],\n );\n\n return (\n <PbsApp\n configuration={configuration}\n removeQueryParameter={removeQueryParameter}\n setQueryParameter={setQueryParameter}\n >\n {children}\n </PbsApp>\n );\n};\n","import { useEnvironment } from '@ori/environment';\nimport { useEffect } from 'react';\n\nimport { AB_TASTY_SCRIPT_URL, AB_TASTY_SCRIPT_IDS, AB_TASTY_SCRIPT_ID } from '../constants';\nimport { useAppConfig } from '../context';\n\n/**\n * Returns the AB Tasty script id based on the tenant and environment.\n * Example of generated url - https://try.abtasty.com/d7969c131a7cd1e6eae1663545c12f7e.js\n * @param tenant\n * @param environment\n */\nexport const getScriptSrc = (tenant: string | undefined, environment: string | undefined) => {\n const key = tenant && environment ? `${tenant}_${environment}` : null;\n\n return key && AB_TASTY_SCRIPT_IDS[key] ? `${AB_TASTY_SCRIPT_URL}${AB_TASTY_SCRIPT_IDS[key]}.js` : null;\n};\n\n/**\n * Loads the AB Tasty script if the feature is enabled and have corresponding script with the current tenant and environment.\n */\nexport const useLoadAbTastyScript = () => {\n const { abTastyEnabled } = useAppConfig();\n const { environment, tenant } = useEnvironment();\n\n useEffect(() => {\n const scriptSrc = getScriptSrc(tenant, environment);\n\n if (abTastyEnabled && scriptSrc && !document.getElementById(AB_TASTY_SCRIPT_ID)) {\n const script = document.createElement('script');\n script.src = scriptSrc;\n script.async = true;\n script.id = AB_TASTY_SCRIPT_ID;\n document.body.append(script);\n\n return () => script.remove();\n }\n\n return undefined;\n }, [abTastyEnabled, environment, tenant]);\n};\n","import { useWindowSize } from '@ori/presentation-hooks';\nimport { useEffect } from 'react';\n\nimport { useAppConfig, useTopAreaBanner } from '../context';\nimport { useSearchInput } from '../context/navigation';\nimport { useIsMobile } from './useIsMobile';\n\nexport enum TopNavClassName {\n default = 'top-nav',\n mobile = 'top-nav--is-mobile',\n withTopAreaBanner = 'top-nav--with-top-area-banner',\n searchInputVisible = 'top-nav--search-input-visible',\n}\n\nconst getClassList = () => document.body.classList;\n\nconst addClassName = (className: TopNavClassName) => getClassList().add(className);\n\nconst removeClassName = (className: TopNavClassName) => getClassList().remove(className);\n\nexport const useManagedHeight = () => {\n const isMobile = useIsMobile();\n const { width } = useWindowSize();\n const { visible: bannerVisible } = useTopAreaBanner();\n const { isVisible: inputVisible } = useSearchInput();\n const { showSearchOnScroll } = useAppConfig();\n useEffect(() => {\n if (width) {\n addClassName(TopNavClassName.default);\n if (isMobile) {\n addClassName(TopNavClassName.mobile);\n if (showSearchOnScroll && inputVisible) {\n addClassName(TopNavClassName.searchInputVisible);\n } else {\n removeClassName(TopNavClassName.searchInputVisible);\n }\n } else {\n removeClassName(TopNavClassName.mobile);\n }\n if (bannerVisible) {\n addClassName(TopNavClassName.withTopAreaBanner);\n } else {\n removeClassName(TopNavClassName.withTopAreaBanner);\n }\n }\n }, [isMobile, bannerVisible, width, inputVisible, showSearchOnScroll]);\n};\n","// istanbul ignore file -- all submodules are tested\nimport { useToken } from '@ori/auth';\nimport { TranslationsNamespaceProvider } from '@ori/i18n';\nimport { LoggerProvider } from '@ori/logger';\nimport type { RemoveQueryParameterCallback, SetQueryParameterCallback } from '@ori/personal-beauty-store';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport { type FC, type ReactNode } from 'react';\n\nimport { AppPromoBanner, ShadePicker, TopAreaBlock, useAddToBasketAnalytics } from './components';\nimport { TopArea as TopAreaBlockContent } from './components/TopArea';\nimport { translationsNamespace } from './constants';\nimport { APP_NAME } from './constants-generated';\nimport { Context } from './containers/Context';\nimport { Pbs } from './containers/Pbs';\nimport { AppConfigProvider, useTopAreaBanner } from './context';\nimport { useLoadAbTastyScript, useManagedHeight, useToggleMenuHandler } from './hooks';\nimport { mainLogger } from './logger';\nimport type { AppConfig } from './models/AppConfig';\n\nexport interface TopAreaProps {\n configuration: AppConfig;\n removeQueryParameter?: RemoveQueryParameterCallback;\n setQueryParameter?: SetQueryParameterCallback;\n mobilePersonalMenuOutlet?: ReactNode | undefined;\n}\n\nconst Content = ({ mobilePersonalMenuOutlet }: { mobilePersonalMenuOutlet?: ReactNode | undefined }) => {\n const { visible: isTopBannerVisible } = useTopAreaBanner();\n\n useLoadAbTastyScript();\n useManagedHeight();\n useToggleMenuHandler();\n useAddToBasketAnalytics();\n\n return (\n <TopAreaBlock>\n <TopAreaBlockContent\n isTopBannerVisible={isTopBannerVisible}\n mobilePersonalMenuOutlet={mobilePersonalMenuOutlet}\n />\n </TopAreaBlock>\n );\n};\n\nexport const TopArea: FC<TopAreaProps> = ({ configuration, mobilePersonalMenuOutlet, ...pbs }) => {\n const { token } = useToken();\n\n if (!token) {\n return null;\n }\n\n return (\n <TranslationsNamespaceProvider namespace={translationsNamespace}>\n <AppConfigProvider value={configuration}>\n <TestIdProvider\n team={Team.Presentation}\n project={APP_NAME}\n >\n <LoggerProvider logger={mainLogger}>\n <Context>\n <AppPromoBanner />\n <Pbs {...pbs}>\n <Content mobilePersonalMenuOutlet={mobilePersonalMenuOutlet} />\n </Pbs>\n <ShadePicker />\n </Context>\n </LoggerProvider>\n </TestIdProvider>\n </AppConfigProvider>\n </TranslationsNamespaceProvider>\n );\n};\n","import type { Event } from '@ori-events/toggle-menu-flyout';\nimport { Name } from '@ori-events/toggle-menu-flyout';\nimport type { GlobalEvent } from '@ori/presentation-hooks';\nimport { useGlobalEvents } from '@ori/presentation-hooks';\nimport { useCallback, useMemo } from 'react';\n\nimport { useActiveMenu } from '../context/navigation/activeMenuContext';\n\ndeclare global {\n interface WindowEventMap {\n [Name]: Event;\n }\n}\n\nexport const useToggleMenuHandler = () => {\n const { toggleActiveMenu } = useActiveMenu();\n const onToggle = useCallback((event: Event) => toggleActiveMenu(event.detail.menuType), [toggleActiveMenu]);\n\n const events = useMemo<GlobalEvent[]>(() => [{ name: Name, listener: onToggle }], [onToggle]);\n useGlobalEvents(events);\n};\n","import * as AddToBasketEvent from '@ori-events/add-to-basket';\nimport { Placement } from '@ori/analytics-data';\nimport type { AddToBasketAnalyticsData } from '@ori/analytics-data';\nimport type { GlobalEvent } from '@ori/presentation-hooks';\nimport { useGlobalEvents } from '@ori/presentation-hooks';\nimport { useCallback, useMemo } from 'react';\n\nimport { useSearchInput } from '../../../context/navigation';\nimport { useSendNavigationSignal } from './useSendNavigationSignal';\n\nexport const useAddToBasketAnalytics = () => {\n const { value } = useSearchInput();\n\n const { sendNavigationSignal } = useSendNavigationSignal({\n query: value,\n type: 'cart',\n });\n\n const onAddToBasket = useCallback(\n (event: CustomEvent<AddToBasketEvent.Data & Partial<AddToBasketAnalyticsData>>) => {\n const { detail } = event;\n if (detail.placement !== Placement.TopNavigationSearchSuggestions) {\n return;\n }\n void sendNavigationSignal(detail.position ?? 0, detail.itemCode);\n },\n [sendNavigationSignal],\n );\n\n const events = useMemo<GlobalEvent[]>(\n () => [\n {\n name: AddToBasketEvent.Name,\n listener: onAddToBasket,\n },\n ],\n [onAddToBasket],\n );\n\n useGlobalEvents(events);\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;\noptions.insert = insertFn.bind(null, \"head\");\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 { Box, CircularProgress, styled } from '@ori-ui/mui';\nimport type { FC, HTMLProps } from 'react';\n\nconst Root = styled((props: HTMLProps<HTMLDivElement>) => (\n <div\n {...props}\n // This instructs personal menu to render here\n data-personal-menu-outlet\n />\n))({\n // Hide the placeholder loader when menu loads iin\n '& > div:not(:only-child):first-of-type': {\n display: 'none',\n },\n // This is so it fills the rest of burger menu\n height: '100%',\n});\n\nexport const BurgerPersonalMenuOutlet: FC = () => (\n <Root>\n {/* This is a just fallback, will be hidden with css once personal menu inserts itself */}\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n >\n <CircularProgress />\n {process.env.NODE_ENV === 'development' ? (\n <p>\n Development detected. Please make sure that you have included personal-menu-app CAP script in your index.html\n with script HTML tag\n </p>\n ) : null}\n </Box>\n </Root>\n);\n","// COPIED FROM @ori-appshell/config\nimport type { Environment } from '@ori/configuration-manager';\n\nexport function getEnvironmentClientAppFileUrlPostfix(environment: Environment) {\n switch (environment) {\n case 'stg':\n case 'uat':\n case 'dev':\n return `.${environment}`;\n default:\n return '';\n }\n}\n\n/**\n * Builds URL pointing to the entry file of the specified SPA\n * @param spaName Name (codename) of the SPA\n * @param environment Code of environment for which should the SPA be loaded\n * @param baseUrl Base url of the blob storage with SPAs\n * @returns Complete url of the SPA entry file\n */\nexport function createSpaEntryfileUrl(spaName: string, environment: Environment, baseUrl: string | undefined): string {\n const urlPrefix = baseUrl && !baseUrl.endsWith('/') ? `${baseUrl}/` : (baseUrl ?? '');\n\n return `${urlPrefix}${spaName}/index${getEnvironmentClientAppFileUrlPostfix(environment)}.js`;\n}\n","import type { Environment } from '@ori/configuration-manager';\nimport { getEnvironmentFromHost } from '@ori/environment';\n\nimport { createSpaEntryfileUrl, getEnvironmentClientAppFileUrlPostfix } from './createSpaEntryfileUrl';\n\nconst PERSONAL_MENU_BLOB_NAME = 'personal-menu';\n\nconst getClientAppScriptElement = (clientAppName: string, environment: Environment) =>\n document.querySelector(\n `script[src$=\"${clientAppName}/index${getEnvironmentClientAppFileUrlPostfix(environment)}.js\"`,\n );\n\n// TODO: remove this after online is released with its own personal menu loader\n/** Returns personal menu src, returns undefined if the script exists already */\nexport const getPersonalMenuScriptSrc = (): string | undefined => {\n const environment = getEnvironmentFromHost(window.location.host);\n const existingScript = getClientAppScriptElement(PERSONAL_MENU_BLOB_NAME, environment) as\n | HTMLScriptElement\n | undefined;\n\n // Skip for development, user should include the script tag themselves if not already present\n // 1. Start personal-menu-app webpack dev server on different port that top-area-app\n // 2. Create script tag in index.html and ensure that it is placed after the online-top-area-root element with id\n // 3. Add src argument to script tag that points to entrypoint of personal-menu-app: `http://localhost:<port>/index.js`\n // 4. Add defer argument\n // 5. Now it should load\n if (process.env.NODE_ENV === 'development') {\n return undefined;\n }\n\n // Skip if it exists\n if (existingScript) {\n return undefined;\n }\n\n const topAreaScript = getClientAppScriptElement('online-top-area', environment) as HTMLScriptElement;\n const clientAppFileBaseUrl = new URL(topAreaScript.src);\n\n return createSpaEntryfileUrl(PERSONAL_MENU_BLOB_NAME, environment, clientAppFileBaseUrl.origin);\n};\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { UniversalTokenProvider, doDevelopmentLogin } from '@ori/auth';\nimport { parseClientAppConfig, type PickClientAppDataConfigProps } from '@ori/client-app-config';\nimport { ServiceUrlsProvider } from '@ori/configuration-manager';\nimport { ClientCultureProvider } from '@ori/culture';\nimport { EnvironmentProvider, getEnvironmentFromHost } from '@ori/environment';\nimport { Geolocation } from '@ori/geolocation-popup';\nimport { TranslationsProvider } from '@ori/i18n';\nimport { ApplicationInsights, ErrorBoundary, getClientApplicationInsightsConfig } from '@ori/logger';\nimport { LoginProvider } from '@ori/login';\nimport { ApiClientProvider as StaticApiClientProvider } from '@ori/static-api-client-react';\nimport { type AppConfig, TopArea, defaultTranslationsWithNamespaces } from '@ori/top-area';\nimport '@ori/top-area/src/App.css';\nimport { createRoot } from 'react-dom/client';\n\nimport { BurgerPersonalMenuOutlet } from './BurgerPersonalMenuOutlet';\nimport { EMOTION_CACHE_KEY } from './constants-generated';\nimport { includePersonalMenuScript } from './includePersonalMenuScript';\nimport { mainLogger } from './logger';\n\nconst localLogger = mainLogger.createChild('appRender');\n\n/**\n * React app renderer that is used when app is used as a standalone app\n */\nexport const render = async (rootElement: HTMLElement) => {\n const { config = '' } = rootElement.dataset;\n const { customerId, identityUrl, ...clientAppConfig } = parseClientAppConfig<\n AppConfig &\n PickClientAppDataConfigProps<\n | 'currentLanguage'\n | 'customerId'\n | 'globalApiUrl'\n | 'graphqlUrl'\n | 'graphqlNetUrl'\n | 'identityUrl'\n | 'staticApiUrl'\n | 'tenant'\n >\n >(config, [\n 'currentLanguage',\n 'globalApiUrl',\n 'graphqlUrl',\n 'graphqlNetUrl',\n 'mobileOfficeApiUrl',\n 'staticApiUrl',\n 'tenant',\n ]);\n\n const {\n currentLanguage,\n globalApiUrl,\n mobileOfficeApiUrl,\n staticApiUrl,\n tenant,\n graphqlUrl,\n graphqlNetUrl,\n useInternationalShareAndEarn = false,\n } = clientAppConfig;\n\n if (process.env.NODE_ENV === 'production') {\n ApplicationInsights.initialize(getClientApplicationInsightsConfig());\n } else {\n // when using Requestly we do not want to load token\n // eslint-disable-next-line no-lonely-if -- thats okay\n if (process.env.REACT_APP_USE_REQUESTLY === '1') {\n localLogger.debug('USING REQUESTLY');\n } else {\n if (!identityUrl) {\n throw new Error('Missing Identity URL!');\n }\n\n // Get token for local development\n await doDevelopmentLogin({ identityUrl, tenant });\n }\n }\n\n const environment = getEnvironmentFromHost(window.location.host);\n\n createRoot(rootElement).render(\n <ErrorBoundary logger={localLogger}>\n <ServiceUrlsProvider\n serviceUrls={{\n globalApiUrl,\n graphQlUrl: graphqlUrl,\n identityUrl,\n mobileOfficeApiUrl,\n staticApiUrl,\n graphQlNetUrl: graphqlNetUrl,\n }}\n >\n <EnvironmentProvider\n environment={environment}\n tenant={tenant}\n >\n <UniversalTokenProvider\n customerId={customerId}\n initialToken=\"\"\n >\n <ThemeProvider\n enableCacheProvider\n cacheKey={EMOTION_CACHE_KEY}\n >\n <StaticApiClientProvider\n baseUrl={staticApiUrl}\n language={currentLanguage}\n tenant={tenant}\n >\n <ClientCultureProvider tenant={tenant}>\n <LoginProvider>\n <TranslationsProvider\n language={currentLanguage}\n defaultTranslationsWithNamespaces={defaultTranslationsWithNamespaces}\n // eslint-disable-next-line no-console -- we need to log errors\n clientFetchConfiguration={{ onError: console.error, tenant, baseUrl: staticApiUrl }}\n >\n <TopArea\n configuration={clientAppConfig}\n mobilePersonalMenuOutlet={<BurgerPersonalMenuOutlet />}\n />\n </TranslationsProvider>\n </LoginProvider>\n <Geolocation enabled={useInternationalShareAndEarn} />\n </ClientCultureProvider>\n </StaticApiClientProvider>\n </ThemeProvider>\n </UniversalTokenProvider>\n </EnvironmentProvider>\n </ServiceUrlsProvider>\n </ErrorBoundary>,\n );\n\n // Include personal menu entrypoint\n includePersonalMenuScript();\n};\n","import { Logger } from '@ori/logger';\n\nimport { PACKAGE_NAME, TEAM_NAME } from './constants-generated';\n\nexport const mainLogger = new Logger(PACKAGE_NAME, { teamName: TEAM_NAME });\n","import { getPersonalMenuScriptSrc } from './getPersonalMenuScriptSrc';\n\nexport const includePersonalMenuScript = () => {\n const personalMenuSrc = getPersonalMenuScriptSrc();\n // This is for the case where only does not include the script by its own\n if (personalMenuSrc) {\n const el = document.createElement('script');\n el.setAttribute('src', personalMenuSrc);\n document.head.append(el);\n }\n};\n","type EventName = typeof Name;\n\nexport enum MenuTypes {\n AboutMenu = 'about-mega-menu',\n AccountSideMenu = 'account-side-menu',\n BurgerMenu = 'burger-menu',\n JoinMenu = 'join-mega-menu',\n Minibag = 'mini-bag',\n Notifications = 'notifications',\n SearchInput = 'search-input',\n SearchResults = 'search-results',\n VipOrder = 'vip-order',\n}\n\nexport const Name = 'toggle-menu-flyout';\nexport const ToggleFavorite: EventName = Name;\n\nexport interface Data {\n menuType: MenuTypes;\n shouldOpen?: boolean;\n}\n\nexport interface Event extends CustomEvent<Data> {\n type: EventName;\n}\n\nexport default Event;\n","// istanbul ignore file -- api\nimport { useEnvironment } from '@ori/environment';\nimport { useLanguage } from '@ori/i18n';\nimport { useLogger } from '@ori/logger';\nimport { useUserSegmentationData } from '@ori/presentation-http';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\nimport type {\n GetTenantApplicationsNavigationNavigationParams,\n StaticNavigationNavigationItemDtoType,\n AxiosError,\n} from '@ori/static-api-client-react';\nimport { useGetTenantApplicationsNavigationNavigation } from '@ori/static-api-client-react';\nimport { useMemo } from 'react';\n\ninterface UseGetNavigationType {\n type: StaticNavigationNavigationItemDtoType;\n enabled?: boolean;\n}\n\nexport const useGetNavigationType = ({ type, enabled = true }: UseGetNavigationType) => {\n const logger = useLogger('useBurgerMenuData');\n const { tenant } = useEnvironment();\n const { language } = useLanguage();\n const { loading: loadingUserSegmentationData, customerTypeId, visitorSegment } = useUserSegmentationData();\n const requestParams = useMemo<GetTenantApplicationsNavigationNavigationParams>(\n () => ({\n customerTypeId: customerTypeId ?? undefined,\n excludeChildren: false,\n lang: language,\n visitorSegment: visitorSegment ?? undefined,\n }),\n [customerTypeId, language, visitorSegment],\n );\n const { data, error } = useGetTenantApplicationsNavigationNavigation(tenant, type, requestParams, {\n swr: {\n ...getRetryErrorSwrOptions(),\n enabled: !loadingUserSegmentationData && enabled,\n onError: (localError: AxiosError) =>\n logger.error(new Error('Cannot fetch navigation items', { cause: localError })),\n },\n });\n const loading = loadingUserSegmentationData || (data === undefined && error === undefined);\n\n return { data: data?.navigationCollection ?? [], error, loading };\n};\n","import { Skeleton, styled } from '@ori-ui/mui';\nimport { CATEGORY_BOX_DESKTOP_MEDIUM_WIDTH, CategoryBoxSkeleton } from '@ori/presentation-components';\nimport useTestId from '@ori/testid-generator';\n\nimport { CallToActionWrapper, CatalogueWrapper, Root } from '../../BurgerMenu/Catalogues/styles';\nimport { SKELETON_CATALOGUE_DESKTOP } from './constants';\n\nconst CatalogueSkeleton = styled(CategoryBoxSkeleton)({\n width: CATEGORY_BOX_DESKTOP_MEDIUM_WIDTH,\n});\n\nconst ButtonSkeleton = styled(Skeleton)(({ theme }) => ({\n borderRadius: theme.spacing(5),\n marginTop: theme.spacing(2),\n}));\n\nexport const SkeletonCatalogueDesktop = () => {\n const { getTestId } = useTestId();\n\n return (\n <Root data-testid={getTestId(SKELETON_CATALOGUE_DESKTOP)}>\n <CatalogueWrapper>\n <CatalogueSkeleton showDescription />\n </CatalogueWrapper>\n <CallToActionWrapper>\n <Skeleton\n variant=\"text\"\n height={30}\n width={330}\n />\n <Skeleton\n variant=\"text\"\n height={30}\n width={330}\n />\n <ButtonSkeleton\n variant=\"rectangular\"\n height={45}\n width={330}\n />\n </CallToActionWrapper>\n </Root>\n );\n};\n","import type { FC } from 'react';\n\nimport { useIsMobile } from '../../../hooks';\nimport { SkeletonCatalogueDesktop, SkeletonCatalogueMobile } from '../../Skeleton';\n\nexport const CataloguesSkeleton: FC = () => {\n const isMobile = useIsMobile();\n\n return isMobile ? <SkeletonCatalogueMobile /> : <SkeletonCatalogueDesktop />;\n};\n","import { Button, styled, Typography } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nexport const Root = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(6, 12),\n [theme.breakpoints.down('md')]: {\n a: {\n width: '100%',\n },\n },\n}));\n\nexport const CatalogueWrapper = styled('div', {\n shouldForwardProp: shouldForwardProp(),\n})(({ theme }) => ({\n margin: theme.spacing(3, 3, 10, 3),\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n gap: theme.spacing(6),\n\n [theme.breakpoints.up('md')]: {\n margin: theme.spacing(6, 12, 0, 12),\n },\n}));\n\nexport const Catalogue = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n\n a: {\n minWidth: 160,\n },\n}));\n\nexport const CatalogueDetailButton = styled(Button)<{ hoverEffect?: boolean }>(({ theme, hoverEffect = false }) => ({\n margin: theme.spacing(2, 'auto'),\n\n '&:hover': {\n background: hoverEffect ? theme.palette.grey : 'none',\n },\n}));\n\nexport const CatalogueLink = styled('a')<{ hoverEffect?: boolean }>(({ theme, hoverEffect = false }) => ({\n textDecoration: 'none',\n '&:hover': {\n color: hoverEffect ? theme.palette.default.light : 'none',\n },\n}));\n\nexport const CallToActionWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n margin: theme.spacing(0, 12),\n}));\n\nexport const CallToAction = styled('div')(({ theme }) => ({\n width: 330,\n marginBottom: theme.spacing(4),\n}));\n\nexport const CTAText = styled(Typography)(({ theme }) => ({\n fontSize: '1.2rem',\n textAlign: 'center',\n textDecoration: 'underline',\n textTransform: 'uppercase',\n textUnderlineOffset: theme.spacing(1),\n textDecorationThickness: 2,\n margin: theme.spacing(3, 0, 0),\n fontWeight: theme.typography.fontWeightBold,\n\n [theme.breakpoints.up('md')]: {\n color: theme.palette.text.primary,\n fontSize: theme.typography.subtitle1.fontSize,\n textAlign: 'left',\n textDecoration: 'none',\n textTransform: 'none',\n textUnderlineOffset: 'auto',\n textDecorationThickness: 'auto',\n margin: theme.spacing(0),\n },\n}));\n\nexport const MobileWrapper = styled('div')(() => ({\n height: 103,\n width: '100%',\n}));\n","import type { Theme } from '@ori-ui/mui';\n\nimport { Categories } from '../models';\n\nexport const mapCategoryColors = ({ palette }: Theme) => ({\n [Categories.ACCESSORIES]: palette.red[200],\n [Categories.BATH_BODY]: palette.blue[300],\n [Categories.ESSENTIAL_OILS]: palette.purple[50],\n [Categories.FRAGRANCE]: palette.brown[100],\n [Categories.HAIR]: palette.yellow[100],\n [Categories.KIDS_BABY]: palette.blue[100],\n [Categories.MAKEUP]: palette.pink[100],\n [Categories.MEN]: palette.green[400],\n [Categories.NUTRITION]: palette.purple[300],\n [Categories.SKINCARE]: palette.green[100],\n [Categories.WELLNESS]: palette.purple[300],\n});\n","import { alpha, Link, styled } from '@ori-ui/mui';\nimport { shouldForwardProp } from '@ori/presentation-utils';\n\nimport type { Categories } from '../../../models';\nimport { mapCategoryColors } from '../../../utils';\n\nexport const LinksRoot = styled('ul')(({ theme }) => ({\n color: theme.palette.text.primary,\n display: 'flex',\n flexDirection: 'column',\n fontSize: theme.typography.body1.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n listStyle: 'none',\n margin: theme.spacing(0),\n maxWidth: '100%',\n gap: theme.spacing(3, 0, 3, 0),\n overflow: 'scroll',\n padding: 0,\n width: 315,\n\n [theme.breakpoints.up('md')]: {\n borderRight: `2px solid ${theme.palette.grey[100]}`,\n fontSize: theme.typography.subtitle1.fontSize,\n margin: 0,\n minHeight: 570,\n overflow: 'unset',\n width: 280,\n flexShrink: 0,\n\n '&:first-of-type': {\n marginTop: 'unset',\n paddingTop: theme.spacing(2),\n },\n\n '&:last-of-type': {\n marginBottom: 'unset',\n paddingBottom: theme.spacing(2),\n },\n },\n}));\n\nexport const SpecialLinkWrapper = styled('ul')(({ theme }) => ({\n a: {\n '&:hover, &:focus, &:active': {\n background: theme.palette.common.white,\n },\n },\n}));\n\nexport const MenuSectionDivider = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\nexport const LinksSpecialLink = styled(Link)(({ theme }) => ({\n color: theme.palette.text.secondary,\n display: 'block',\n fontSize: '1.7rem',\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: 1.9,\n padding: theme.spacing(2, 3, 2, 6),\n textDecoration: 'none',\n background: theme.palette.grey[100],\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.secondary,\n WebkitTapHighlightColor: 'transparent',\n },\n\n [theme.breakpoints.up('md')]: {\n fontSize: '1.6rem',\n padding: theme.spacing(2, 3, 2, 3),\n },\n}));\n\nexport const BurgerMenuLinkListElement = styled('li')(({ theme }) => ({\n '&:active, &:focus': {\n WebkitTapHighlightColor: 'transparent',\n },\n}));\n\nexport const BurgerMenuLinkLink = styled(Link)(({ theme }) => ({\n color: theme.palette.text.primary,\n flex: 1,\n fontSize: theme.typography.h6.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: '3.7rem',\n margin: 0,\n textDecoration: 'none',\n\n [theme.breakpoints.up('md')]: {\n fontSize: theme.typography.subtitle1.fontSize,\n },\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.primary,\n WebkitTapHighlightColor: 'transparent',\n },\n}));\n\n/** Mobile only class */\nexport const BurgerMenuLinkIconWrapper = styled('span', {\n shouldForwardProp: shouldForwardProp(),\n})<{ isActiveLink?: boolean }>(({ isActiveLink }) => ({\n alignItems: 'center',\n display: 'flex',\n fontSize: '2.4rem',\n transition: '0.1s ease-in',\n transform: `rotate(${isActiveLink ? 180 : 0}deg)`,\n}));\n\nexport const BurgerMenuTopItemLink = styled(Link)(({ theme }) => ({\n cursor: 'pointer',\n display: 'flex',\n fontSize: theme.typography.h6.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n justifyContent: 'space-between',\n alignItems: 'center',\n lineHeight: '3.2rem',\n margin: 0,\n paddingLeft: theme.spacing(2),\n textDecoration: 'none',\n\n [theme.breakpoints.up('md')]: {\n padding: theme.spacing(2, 3, 2, 3),\n },\n\n svg: {\n padding: 0,\n },\n\n '&:hover, &:focus, &:active': {\n background: alpha(theme.palette.green[50], 0.5),\n\n color: theme.palette.text.primary,\n svg: {\n color: theme.palette.text.primary,\n },\n },\n}));\n\nexport const BurgerMenuLinkCategory = styled('div', { shouldForwardProp: shouldForwardProp() })<{\n category?: Categories | undefined;\n isActiveLink?: boolean;\n}>(({ category, isActiveLink, theme }) => {\n const colors = mapCategoryColors(theme);\n\n return {\n color: theme.palette.text.primary,\n cursor: 'pointer',\n display: 'flex',\n fontSize: theme.typography.body1.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: theme.spacing(2, 3),\n textDecoration: 'none',\n background: isActiveLink && category !== undefined ? alpha(colors[category], 0.15) : 'inherit',\n margin: 0,\n position: 'relative',\n\n [theme.breakpoints.up('md')]: {\n fontSize: '2rem',\n padding: theme.spacing(2, 3, 2, 3),\n },\n\n // Border left with the color of the category had to use before as it's not possible to use border radius on border\n '&:before': {\n content: '\"\"',\n height: '90%',\n width: theme.spacing(1),\n backgroundColor: category === undefined ? 'transparent' : colors[category],\n position: 'absolute',\n left: 0,\n top: 2,\n display: 'block',\n borderRadius: '0 2px 2px 0',\n },\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.primary,\n background: category === undefined ? 'inherit' : alpha(colors[category], 0.15),\n },\n\n span: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n };\n});\n\nexport const TitleIconRoot = styled('div')(({ theme }) => ({\n fontSize: '1.7rem',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 260,\n [theme.breakpoints.up('md')]: {\n fontSize: '2rem',\n },\n\n svg: {\n marginRight: theme.spacing(2),\n display: 'inline-block',\n verticalAlign: 'text-bottom',\n },\n}));\n","import { Catalogue, Sales } from '@ori-ui/icons';\nimport { StaticNavigationNavigationItemDtoLinkType } from '@ori/static-api-client-react';\n\nexport const BURGER_MENU = 'burger-menu';\nexport const BURGER_MENU_ROOT = 'burger-menu-root';\nexport const BURGER_MENU_CONTAINER = 'burger-menu-container';\nexport const BURGER_MENU_TAB_ROOT = 'burger-menu-tab-root';\nexport const BURGER_MENU_TAB_ICON_WRAPPER = 'burger-menu-tab-icon-wrapper';\nexport const TAB_ICON = 'tab-icon';\nexport const BURGER_MENU_TAB_LABEL_WRAPPER = 'burger-menu-tab-label-wrapper';\nexport const BURGER_MENU_LINK = 'burger-menu-link';\nexport const BURGER_MENU_LINK_ROOT_MOBILE = 'burger-menu-link-root-mobile';\nexport const BURGER_MENU_LINK_CATEGORY_MOBILE = 'burger-menu-link-category-mobile';\nexport const BURGER_MENU_LINK_ICON_WRAPPER = 'burger-menu-link-icon-wrapper';\nexport const BURGER_MENU_CONTENT = 'burger-menu-content';\nexport const BURGER_MENU_LINK_ROOT = 'burger-menu-link-root';\nexport const BURGER_MENU_LINK_CATEGORY = 'burger-menu-link-category';\nexport const BURGER_MENU_TOGGLE_ROOT = 'burger-menu-toggle-root';\nexport const BURGER_MENU_CONTENT_ROOT = 'burger-menu-content-root';\nexport const CATEGORY_WRAPPER = 'category-wrapper';\nexport const BURGER_MENU_BACKDROP = 'burger-menu-backdrop';\nexport const FAVORITE_LIST_ITEM = 'favorite-list-item';\nexport const LINKS_ROOT = 'links-root';\nexport const SPECIAL_LINK = 'special-link';\nexport const SPECIAL_LINKS_WRAPPER = 'special-links-wrapper';\nexport const OUR_STORY_SUPPORT_LINK = 'our-story-support-link';\nexport const OUR_STORY_LINK = 'our-story-link';\nexport const TITLE_WITH_ICON = 'title-with-icon';\nexport const ARROW_RIGHT_THIN_ICON = 'ArrowRightThinIcon';\nexport const BURGER_MENU_TOP_ITEM_LINK = 'burger-menu-top-item-link';\n\nexport const EQUAL_LINKS = 0;\nexport const LINK_A_FIRST = -1;\nexport const LINK_B_FIRST = 1;\n\nexport const TOP_LINKS: StaticNavigationNavigationItemDtoLinkType[] = [\n 'Catalogue',\n 'BeautyTips',\n 'FocusPage',\n 'Inspiration',\n];\n\nexport const LINK_PRIORITIES = [\n StaticNavigationNavigationItemDtoLinkType.Catalogue,\n StaticNavigationNavigationItemDtoLinkType.FocusPage,\n];\n\nexport const LinkTypeIconMapper = {\n [StaticNavigationNavigationItemDtoLinkType.Catalogue]: Catalogue,\n [StaticNavigationNavigationItemDtoLinkType.FocusPage]: Sales,\n};\n\nexport const HEIGHT_BUFFER = 20;\n","import { styled, Modal, SHADOW_LEVEL1 } from '@ori-ui/mui';\n\nimport { CSS_DESKTOP_INNER_HEIGHT, CSS_HEIGHT_ANIMATION, DESKTOP_HEIGHT } from '../../constants';\nimport { basePositionStyles } from '../styles';\nimport { HEIGHT_BUFFER } from './constants';\n\nexport const BurgerMenuContentRoot = styled('div')(() => ({}));\n\nexport const ModalRoot = styled(Modal)(({ theme }) => ({\n ...basePositionStyles,\n zIndex: theme.zIndex.drawer,\n display: 'block',\n}));\nexport const BurgerMenuRoot = styled('aside')<{\n ownerState: { isMobile?: boolean; isDesktop?: boolean };\n}>(({ ownerState, theme }) => ({\n backgroundColor: theme.palette.common.white,\n display: 'none',\n transition: `top ${CSS_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: 315,\n }),\n\n ...(ownerState.isDesktop && {\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n left: 0,\n minHeight: 590,\n position: 'absolute',\n top: CSS_DESKTOP_INNER_HEIGHT,\n }),\n}));\n\nexport const BurgerMenuInner = styled('div')(({ theme }) => ({\n [theme.breakpoints.up('sm')]: {\n display: 'flex',\n width: 'inherit',\n maxHeight: `calc(100vh - ${DESKTOP_HEIGHT}px - ${HEIGHT_BUFFER}px)`,\n overflowX: 'hidden',\n overflowY: 'auto',\n },\n}));\n\nexport const BurgerMenuContainer = styled('div')({\n display: 'flex',\n height: 54,\n width: '100%',\n});\n","import { Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport times from 'lodash.times';\n\nimport { LinksRoot } from '../../BurgerMenu/Links/styles';\nimport { MAIN_CATEGORY_DESKTOP } from './constants';\n\nconst SkeletonMenuLinks = styled(LinksRoot)(({ theme }) => ({\n display: 'grid',\n gap: theme.spacing(1),\n padding: theme.spacing(0, 2),\n}));\n\nconst CATEGORIES_LINKS = 20;\n\nexport const SkeletonMainCategoriesDesktop = () => {\n const { getTestId } = useTestId();\n\n return (\n <SkeletonMenuLinks data-testid={getTestId(MAIN_CATEGORY_DESKTOP)}>\n {times(CATEGORIES_LINKS, (index) => (\n <Skeleton\n key={`menu-main-links-${index}`}\n animation=\"wave\"\n height={45}\n variant=\"rectangular\"\n />\n ))}\n </SkeletonMenuLinks>\n );\n};\n","export const SKELETON_CATALOGUE_DESKTOP = 'skeleton-catalogue-desktop';\nexport const MAIN_CATEGORY_DESKTOP = 'main-category-desktop';\n","import { styled } from '@ori-ui/mui';\n\nexport const SkeletonCatalogueMobileRoot = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(3),\n margin: theme.spacing(3, 3, 1, 3),\n}));\n","import { Skeleton } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nimport { SKELETON_CATALOGUE_MOBILE } from './constants';\nimport { SkeletonCatalogueMobileRoot } from './styles';\n\nexport const SkeletonCatalogueMobile = () => {\n const { getTestId } = useTestId();\n\n return (\n <SkeletonCatalogueMobileRoot data-testid={getTestId(SKELETON_CATALOGUE_MOBILE)}>\n <Skeleton\n variant=\"rounded\"\n height={103}\n width=\"100%\"\n />\n <Skeleton\n variant=\"rounded\"\n height={30}\n width={50}\n />\n </SkeletonCatalogueMobileRoot>\n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nimport { SkeletonCatalogueMobile } from './SkeletonCatalogueMobile';\nimport { SKELETON_MAIN_CATEGORY_MOBILE } from './constants';\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 <SkeletonMainCategoriesMobileCategory\n key={`categories-mobile-${step}`}\n height={37}\n animation=\"wave\"\n variant=\"rectangular\"\n />\n ));\n\n return (\n <Box data-testid={getTestId(SKELETON_MAIN_CATEGORY_MOBILE)}>\n <SkeletonCatalogueMobile />\n <SkeletonMainCategoriesMobileCategory\n key=\"categories-mobile-medium\"\n height={54}\n animation=\"wave\"\n variant=\"rectangular\"\n />\n\n {skeletonElements}\n\n <SkeletonMainCategoriesMobileCategoryLarge\n key=\"categories-mobile-large\"\n height={109}\n animation=\"wave\"\n variant=\"rectangular\"\n />\n </Box>\n );\n};\n","export const SKELETON_CATALOGUE_MOBILE = 'skeleton-catalogue-mobile';\nexport const SKELETON_MAIN_CATEGORY_MOBILE = 'skeleton-main-category-mobile';\n","import { Skeleton, styled } from '@ori-ui/mui';\nimport type { CSSProperties } from 'react';\n\nexport const UnifiedSkeleton = styled(Skeleton)({ transform: 'none' });\n\nexport const basePositionStyles: CSSProperties = {\n bottom: 0,\n left: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n} as const;\n","export const CLICK_CATALGOUE = ['open_ecatalogue', 'Main menu sidebar'];\n\nexport const CLICK_CATALOGUE_DETAIL = ['open_ecatalogue', 'Main menu content'];\n\nexport const CLICK_BURGER_MENU = ['open_main_menu', 'Top navigation'];\n\nexport const CLICK_CATEGORY_BRAND = ['select_brand', 'Main menu content'];\n\nexport const START_SEARCH = ['search_start', 'Search 1'];\n\nexport const CLICK_FAVORITE_ICON = ['open_favorites', 'Top navigation'];\n\nexport const CLICK_NOTIFICATION_ICON = ['notifications', 'open_notification_overview'];\n\n// Cannot use the one from ori/fetching due to not capital A and L in accept-language\nexport const ACCEPT_LANGUAGE = 'Accept-Language';\n\nexport const CLICK_SUBCATEGORY_LINK = ['menu_side_select'];\n","/* istanbul ignore file */\nexport const SEARCH_THROTTLE_TIME = 1000 * 60 * 5;\nexport const SEARCH_INPUT_HEIGHT = 59;\nexport const TOP_AREA_BORDER_BOTTOM = 2;\n// Should correspond to the height of the \"See all results\" button in the search preview\nexport const SEARCH_PREVIEW_SEE_ALL_HEIGHT = 51;\n\nexport const TOP_AREA_BANNER_HEIGHT = 34;\nexport const TOP_NAV_HEIGHT_CSS_VARIABLE = '--top-nav-height';\nexport const TOP_NAV_INNER_HEIGHT_CSS_VARIABLE = '--top-nav-inner-height';\n// Must have the same value as `--top-nav-height-animation` in `.top-nav` in `packages/top-area/src/App.css`\nexport const CSS_HEIGHT_ANIMATION = 'var(--top-nav-height-animation, 0.3s ease-in-out)';\n\n// Must have the same value as `--top-nav-height` and `--top-nav-inner-height` in `.top-nav` in `packages/top-area/src/App.css`\nexport const DESKTOP_HEIGHT = 64;\nexport const CSS_DESKTOP_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${DESKTOP_HEIGHT}px)`;\nexport const CSS_DESKTOP_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${DESKTOP_HEIGHT}px)`;\n\n// Must have the same value as `--top-nav-height` in `.top-nav--with-top-area-banner` in `packages/top-area/src/App.css`\nexport const DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT = DESKTOP_HEIGHT + TOP_AREA_BANNER_HEIGHT;\nexport const CSS_DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT}px)`;\nexport const CSS_DESKTOP_WITH_TOP_AREA_BANNER_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${DESKTOP_HEIGHT}px)`;\n\n// Must have the same value as ` --top-nav-height` and `--top-nav-inner-height` in `.top-nav--is-mobile` in `packages/top-area/src/App.css`\nexport const MOBILE_HEIGHT = 60;\nexport const MOBILE_INNER_HEIGHT = 60;\nexport const CSS_MOBILE_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${MOBILE_HEIGHT}px)`;\nexport const CSS_MOBILE_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${MOBILE_INNER_HEIGHT}px)`;\n\n// Must have the same value as ` --top-nav-height` in `.top-nav--with-top-area-banner.top-nav--is-mobile` in `packages/top-area/src/App.css`\nexport const MOBILE_WITH_TOP_AREA_BANNER_HEIGHT = MOBILE_HEIGHT + TOP_AREA_BANNER_HEIGHT;\nexport const MOBILE_WITH_TOP_AREA_BANNER_INNER_HEIGHT = MOBILE_INNER_HEIGHT;\nexport const CSS_MOBILE_WITH_TOP_AREA_BANNER_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_TOP_AREA_BANNER_HEIGHT}px)`;\nexport const CSS_MOBILE_WITH_TOP_AREA_BANNER_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_TOP_AREA_BANNER_INNER_HEIGHT}px)`;\n\n// Must have the same value as ` --top-nav-height` in `.top-nav--search-input-visible.top-nav--is-mobile` in `packages/top-area/src/App.css`\nexport const MOBILE_WITH_SEARCH_INPUT_HEIGHT = MOBILE_HEIGHT + SEARCH_INPUT_HEIGHT;\nexport const MOBILE_WITH_SEARCH_INPUT_INNER_HEIGHT = MOBILE_INNER_HEIGHT;\nexport const CSS_MOBILE_WITH_SEARCH_INPUT_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_SEARCH_INPUT_HEIGHT}px)`;\nexport const CSS_MOBILE_WITH_SEARCH_INPUT_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_SEARCH_INPUT_INNER_HEIGHT}px)`;\n\n// Must have the same value as ` --top-nav-height` in `.top-nav--with-top-area-banner.top-nav--search-input-visible.top-nav--is-mobile` in `packages/top-area/src/App.css`\nexport const MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT =\n MOBILE_WITH_TOP_AREA_BANNER_HEIGHT + SEARCH_INPUT_HEIGHT;\nexport const MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_INNER_HEIGHT = MOBILE_WITH_TOP_AREA_BANNER_INNER_HEIGHT;\nexport const CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT = `var(${TOP_NAV_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT}px)`;\nexport const CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_INNER_HEIGHT = `var(${TOP_NAV_INNER_HEIGHT_CSS_VARIABLE}, ${MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_INNER_HEIGHT}px)`;\n\nexport const TOP_NAV_NO_SCROLL = 'top-nav--no-scroll';\n\n/** @deprecated use DESKTOP_HEIGHT */\nexport const TOP_NAV_HEIGHT = DESKTOP_HEIGHT;\n/** @deprecated use MOBILE_HEIGHT */\nexport const TOP_NAV_HEIGHT_MOBILE = MOBILE_HEIGHT;\n\nexport const AB_TASTY_SCRIPT_URL = 'https://try.abtasty.com/';\n/**\n * AbTasty configuration ids.\n */\nexport const AB_TASTY_SCRIPT_IDS: Record<string, string> = {\n pl_live: 'd7969c131a7cd1e6eae1663545c12f7e',\n pl_stg: '8e82c73eacd1c73ed013bf7f9456f94d',\n ro_live: 'b9b95b18b302849d29466a1d6a271bd3',\n ro_stg: '45b6a9a02035d85e692125e9237ebc42',\n uk_live: '880cd51afa2ebc420d661463a5c7e851',\n uk_stg: 'de2ac2e90695e0f6a42150be9515d496',\n};\n\nexport const AB_TASTY_SCRIPT_ID = 'abt';\n\n// Graphql query limit for search preview products\nexport const SEARCH_PREVIEW_PRODUCTS_LIMIT = 12;\n","import type { Dispatch, FC, PropsWithChildren, SetStateAction } from 'react';\nimport { createContext, useContext, useMemo, useState } from 'react';\n\nimport type { AppConfig } from '../models';\n\nexport interface AppConfigContext extends AppConfig {\n sessionId?: string;\n setSessionId: Dispatch<SetStateAction<string | undefined>>;\n}\n\nexport const appConfigContextDefaultValue: AppConfigContext = {\n currentLanguage: '',\n enableTopAreaBanner: false,\n graphqlUrl: '',\n mobileOfficeApiUrl: '',\n tenant: '',\n abTastyEnabled: false,\n onlyProductsTabInSearch: false,\n setSessionId: () => {},\n};\n\ninterface AppConfigProviderProps {\n value: AppConfig;\n}\n\nexport const appConfigContext = createContext<AppConfigContext>(appConfigContextDefaultValue);\n\nexport const AppConfigProvider: FC<PropsWithChildren<AppConfigProviderProps>> = ({ children, value: props }) => {\n const [sessionId, setSessionId] = useState<string>();\n\n const value = useMemo(\n () => ({\n ...props,\n sessionId,\n setSessionId,\n }),\n [props, sessionId, setSessionId],\n );\n\n return <appConfigContext.Provider value={value}>{children}</appConfigContext.Provider>;\n};\n\nexport const useAppConfig = () => useContext(appConfigContext);\n","import type { StaticNavigationNavigationItemDto } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useIsMobile } from '../../hooks/useIsMobile';\n\nexport type ActiveLink = StaticNavigationNavigationItemDto | null;\n\nexport interface ActiveLinkContext {\n activeLink: ActiveLink;\n toggleActiveLink: (link: ActiveLink) => void;\n}\n\nexport const activeLinkContext = createContext<ActiveLinkContext | undefined>(undefined);\n\nconst { Provider } = activeLinkContext;\n\nexport const ActiveLinkProvider: FC<PropsWithChildren> = ({ children }) => {\n const [activeLink, setActiveLink] = useState<ActiveLink>(null);\n const isMobile = useIsMobile();\n const toggleActiveLink = useCallback(\n (link: ActiveLink) => {\n if (isMobile && activeLink === link) {\n setActiveLink(null);\n } else {\n setActiveLink(link);\n }\n },\n [activeLink, isMobile],\n );\n const value = useMemo(() => ({ activeLink, toggleActiveLink }), [activeLink, toggleActiveLink]);\n\n return <Provider value={value}>{children}</Provider>;\n};\n\nexport const useActiveLink = () => {\n const context = useContext(activeLinkContext);\n if (context) {\n return context;\n }\n throw new Error('useActiveLinkContext must be used within a ActiveLinkProvider.');\n};\n","import { MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useSearchInput } from './searchInputContext';\n\nexport type ActiveMenu = MenuTypes | '';\n\nexport interface ActiveMenuContext {\n activeMenu: ActiveMenu;\n hideSearchResultsTab: () => void;\n toggleActiveMenu: (menu: ActiveMenu) => void;\n}\n\nconst activeMenuContext = createContext<ActiveMenuContext | undefined>(undefined);\n\nconst { Provider } = activeMenuContext;\n\nexport const ActiveMenuProvider: FC<PropsWithChildren> = ({ children }) => {\n const [activeMenu, setActiveMenu] = useState<ActiveMenu>('');\n const { blur, clearResults, hide, setValue, show } = useSearchInput();\n const toggleActiveMenu = useCallback(\n (menu: ActiveMenu) => {\n if (menu === MenuTypes.SearchInput || menu === MenuTypes.SearchResults) {\n show();\n setActiveMenu(menu);\n } else if (activeMenu === menu) {\n hide();\n setActiveMenu('');\n } else {\n hide();\n setActiveMenu(menu);\n }\n },\n [activeMenu, hide, show],\n );\n const hideSearchResultsTab = useCallback(() => {\n blur();\n clearResults();\n hide();\n setActiveMenu('');\n setValue('');\n }, [blur, clearResults, hide, setValue]);\n const value = useMemo(\n () => ({ activeMenu, hideSearchResultsTab, toggleActiveMenu }),\n [activeMenu, hideSearchResultsTab, toggleActiveMenu],\n );\n\n return <Provider value={value}>{children}</Provider>;\n};\n\nexport const useActiveMenu = () => {\n const context = useContext(activeMenuContext);\n if (context) {\n return context;\n }\n throw new Error('useActiveMenuContext must be used within a ActiveMenuProvider.');\n};\n","// istanbul ignore file -- api\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport type { StaticNavigationNavigationItemDto } from '@ori/static-api-client-react';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport { useGetNavigationType } from '../../api';\nimport { useIsMobile } from '../../hooks/useIsMobile';\nimport { useActiveMenu } from './activeMenuContext';\n\nexport interface BurgerMenuContext {\n aboutItems: StaticNavigationNavigationItemDto[];\n loadingAboutItems: boolean;\n inspirationItems: StaticNavigationNavigationItemDto[];\n loadingInspirationItems: boolean;\n shopSectionItems: StaticNavigationNavigationItemDto[];\n loadingShopSectionItems: boolean;\n}\n\nexport const burgerMenuContextDefaultValue: BurgerMenuContext = {\n aboutItems: [],\n loadingAboutItems: false,\n inspirationItems: [],\n loadingInspirationItems: false,\n shopSectionItems: [],\n loadingShopSectionItems: false,\n};\n\nexport const burgerMenuContext = createContext(burgerMenuContextDefaultValue);\n\nexport const BurgerMenuProvider: FC<PropsWithChildren> = ({ children }) => {\n const { activeMenu } = useActiveMenu();\n const isMobile = useIsMobile();\n const isMenuActive =\n activeMenu === ToggleMenuFlyout.MenuTypes.BurgerMenu ||\n (isMobile && activeMenu === ToggleMenuFlyout.MenuTypes.AccountSideMenu);\n\n const { data: aboutItems, loading: loadingAboutItems } = useGetNavigationType({\n type: 'AboutTiles',\n enabled: isMenuActive,\n });\n const { data: inspirationItems, loading: loadingInspirationItems } = useGetNavigationType({\n type: 'InspirationTiles',\n enabled: isMenuActive,\n });\n const { data: shopSectionItems, loading: loadingShopSectionItems } = useGetNavigationType({\n type: 'ShopSection',\n enabled: isMenuActive,\n });\n\n const contextValue = useMemo<BurgerMenuContext>(\n () => ({\n aboutItems,\n loadingAboutItems,\n inspirationItems,\n loadingInspirationItems,\n shopSectionItems,\n loadingShopSectionItems,\n }),\n [\n aboutItems,\n loadingAboutItems,\n inspirationItems,\n loadingInspirationItems,\n shopSectionItems,\n loadingShopSectionItems,\n ],\n );\n\n return <burgerMenuContext.Provider value={contextValue}>{children}</burgerMenuContext.Provider>;\n};\n\nexport const useBurgerMenu = () => useContext(burgerMenuContext);\n","import { gql } from '@ori/fetching';\n\nexport const labels = gql`\n fragment ProductLabels on ProductLabel {\n labelKey\n productLabelDomain\n title\n }\n`;\n","import { gql } from '@ori/fetching';\n\nimport { labels } from './labels';\n\nexport const searchPreviewShade = gql`\n ${labels}\n fragment SearchPreviewShade on Product {\n shadeName\n hexColors\n colorImageUrl\n productCode\n formattedPrice {\n price {\n basicCataloguePrice\n currentPrice\n priceAfterImmediateDiscount\n }\n }\n labels {\n ...ProductLabels\n }\n }\n`;\n","import { gql } from '@ori/fetching';\n\nimport { searchPreviewShade } from './shade';\n\nexport const conceptFragment = gql`\n ${searchPreviewShade}\n fragment BaseConcept on Concept {\n name\n brand {\n name\n }\n categories {\n name\n }\n products {\n ...SearchPreviewShade\n }\n labels {\n ...ProductLabels\n }\n }\n`;\n","import { gql } from '@ori/fetching';\n\nimport { conceptFragment } from './concept';\n\nexport const searchPreviewProduct = gql`\n ${conceptFragment}\n fragment SearchPreviewProduct on Product {\n productCode\n imageUrl\n conceptCode\n labels {\n ...ProductLabels\n }\n pdpUrl {\n relativeUrl\n }\n price {\n price {\n priceAfterImmediateDiscount\n currentPrice\n }\n }\n formattedPrice {\n price {\n basicCataloguePrice\n currentPrice\n priceAfterImmediateDiscount\n }\n }\n concept {\n ...BaseConcept\n }\n }\n`;\n","/* istanbul ignore file -- query */\nimport { gql } from '@ori/fetching';\n\nimport { searchPreviewProduct } from './fragments';\n\nexport const searchPreviewQuery = gql`\n query SearchPreview($query: String!, $limit: Int = 12) {\n application {\n productSearchPreview {\n searchResults(query: $query, top: $limit) {\n totalProductsCount\n suggestions\n products {\n ...SearchPreviewProduct\n }\n }\n }\n }\n }\n ${searchPreviewProduct}\n`;\n","import { mapCanBeSold, mapHasAutoSubscription, type ProductBoxLabelCollection } from '@ori/product-box';\n\nimport type { ShadeWithPrice } from '../components/SearchPreview/components/SearchPreviewProduct/types';\n\nexport const mapEnableQuickBuyButton = (labels: ProductBoxLabelCollection, shades: ShadeWithPrice[]): boolean =>\n mapCanBeSold(labels) ||\n (shades.length > 1 && shades.some((shade) => shade.canBeSold)) ||\n mapHasAutoSubscription(labels);\n","/* eslint-disable @typescript-eslint/prefer-nullish-coalescing -- it can come as empty string */\nimport { OFFER } from '@ori/presentation-components';\nimport {\n getCurrentFormattedPrice,\n getOldPrice,\n mapCanBeSold,\n mapHasAutoSubscription,\n mapLabels,\n mapShade,\n} from '@ori/product-box';\nimport { isNonNullable } from '@ori/ts-utils';\n\nimport type { ShadeWithPrice } from '../components';\nimport type { SearchPreviewProps } from '../components/SearchPreview/types';\nimport type { SearchPreviewQuery, SearchPreviewShadeFragment } from '../models/graphql-types/net';\nimport { mapEnableQuickBuyButton } from './mapEnableQuickBuyButton';\n\nconst mapShadeWithPrice = (shade: SearchPreviewShadeFragment): ShadeWithPrice => {\n const { productCode, hexColors, imageUrl } = mapShade({\n ...shade,\n productCode: shade.productCode,\n });\n\n return {\n name: shade.shadeName,\n productCode,\n hexColors,\n imageUrl,\n canBeSold: mapCanBeSold(shade.labels),\n price: {\n currentFormatted: getCurrentFormattedPrice({ formattedPrice: shade.formattedPrice }),\n oldFormatted: getOldPrice({ formattedPrice: shade.formattedPrice }),\n },\n };\n};\nexport const mapSearchPreviewShades = (\n shades?: ReadonlyArray<SearchPreviewShadeFragment | null> | null,\n): ShadeWithPrice[] => shades?.filter(isNonNullable).map(mapShadeWithPrice) || [];\n\ninterface GetPriceParams {\n priceAfterImmediateDiscount?: unknown;\n currentPrice?: unknown;\n}\nexport const getPrice = ({ priceAfterImmediateDiscount, currentPrice }: GetPriceParams): number =>\n Number.parseFloat((priceAfterImmediateDiscount ?? currentPrice ?? 0).toString());\n\nexport type SearchPreviewResult = Pick<SearchPreviewProps, 'products' | 'suggestions' | 'numberOfProducts'>;\nexport const mapSearchPreviewQuery = (query: SearchPreviewQuery): SearchPreviewResult => {\n const { totalProductsCount, products, suggestions } = query.application?.productSearchPreview?.searchResults ?? {};\n\n return {\n numberOfProducts: totalProductsCount ?? 0,\n products:\n products?.filter(isNonNullable).map((product) => {\n const shades = mapSearchPreviewShades(product.concept?.products);\n const labels = mapLabels(product.concept?.labels, { deal: [OFFER] });\n\n return {\n isMultishade: shades.length > 1,\n canBeSold: mapEnableQuickBuyButton(product.labels, shades),\n url: product.pdpUrl?.relativeUrl,\n code: product.productCode,\n name: product.concept?.name ?? '',\n brand: product.concept?.brand?.name,\n image: product.imageUrl,\n deal: labels?.deal,\n ppa: labels?.ppa,\n category: product.concept?.categories?.[0]?.name,\n hasAutosubscribe: mapHasAutoSubscription(product.labels),\n price: {\n currentFormatted: getCurrentFormattedPrice({ formattedPrice: product.formattedPrice }),\n oldFormatted: getOldPrice({ formattedPrice: product.formattedPrice }),\n price: getPrice({\n priceAfterImmediateDiscount: product.price?.price?.priceAfterImmediateDiscount,\n currentPrice: product.price?.price?.currentPrice,\n }),\n },\n shades,\n };\n }) ?? [],\n suggestions: suggestions?.filter(isNonNullable).map((text) => ({ text })) ?? [],\n };\n};\n","import type { AxiosError } from '@ori/axios';\nimport { useServiceUrls } from '@ori/configuration-manager';\nimport { useSWR } from '@ori/fetching';\nimport { useLogger } from '@ori/logger';\nimport { useHeaders } from '@ori/presentation-http';\nimport { getRetryErrorSwrOptions } from '@ori/presentation-utils';\nimport { useCallback, useState } from 'react';\n\nimport { getSearchPreviewData } from '../api';\nimport { SEARCH_PREVIEW_PRODUCTS_LIMIT } from '../constants';\nimport type { SearchPreviewResult } from '../utils';\nimport { mapSearchPreviewQuery } from '../utils';\n\ninterface FetchSearchPreviewDataParams {\n query: string;\n}\n\nexport const useGetSearchPreviewData = ({ query }: FetchSearchPreviewDataParams) => {\n const logger = useLogger('useGetSearchPreviewData');\n const { graphQlNetUrl } = useServiceUrls(['graphQlNet']);\n const { headers } = useHeaders();\n const [timestamp, setTimestamp] = useState(0);\n\n const { data, isLoading, mutate } = useSWR<SearchPreviewResult | undefined, AxiosError>(\n query ? ['search-preview-data', graphQlNetUrl, headers, query] : null,\n async () => {\n const response = await getSearchPreviewData({\n graphQlNetUrl,\n headers,\n query,\n limit: SEARCH_PREVIEW_PRODUCTS_LIMIT,\n });\n setTimestamp(Date.now());\n\n return mapSearchPreviewQuery(response);\n },\n {\n ...getRetryErrorSwrOptions(),\n onError: (error) => logger.error(new Error('Failed to fetch search preview data', { cause: error })),\n },\n );\n\n const clearResults = useCallback(async () => mutate(undefined, false), [mutate]);\n\n return {\n data,\n isLoading,\n timestamp,\n clearResults,\n };\n};\n","/* istanbul ignore file -- api file */\nimport { fetchGraphql } from '@ori/fetching';\n\nimport type { SearchPreviewQuery, SearchPreviewQueryVariables } from '../models/graphql-types/net';\nimport { searchPreviewQuery } from '../queries-net';\nimport type { GetSearchPreviewDataParams } from './types';\n\n/**\n * Fetch function that fetches search preview data\n */\nexport const getSearchPreviewData = async ({ graphQlNetUrl, query, limit, headers }: GetSearchPreviewDataParams) => {\n const data = await fetchGraphql<SearchPreviewQuery, SearchPreviewQueryVariables>({\n query: searchPreviewQuery,\n url: graphQlNetUrl,\n variables: {\n query,\n limit,\n },\n headers,\n timeout: 10000,\n });\n\n return data;\n};\n","import { useDisclose } from '@ori/presentation-hooks';\nimport type { Dispatch, FC, PropsWithChildren, SetStateAction } from 'react';\nimport { createContext, useContext, useMemo, useState } from 'react';\nimport { useDebounce } from 'use-debounce';\n\nimport { useGetSearchPreviewData } from '../../hooks/useGetSearchPreviewData';\nimport type { SearchPreviewResult } from '../../utils';\nimport { useAppConfig } from '../configurationContext';\n\nexport interface SearchInputContext {\n blur: () => void;\n clearResults: () => void;\n focus: () => void;\n hide: () => void;\n isFocused: boolean;\n isVisible: boolean;\n results?: SearchPreviewResult | undefined;\n setValue: Dispatch<SetStateAction<string>>;\n show: () => void;\n timestamp: number;\n value: string;\n debouncedValue: string;\n manualShow: () => void;\n manualHide: () => void;\n isManuallyOpened: boolean;\n isLoading: boolean;\n}\n\nexport const searchInputContext = createContext<SearchInputContext | undefined>(undefined);\n\nconst { Provider } = searchInputContext;\n\nexport const SearchInputProvider: FC<PropsWithChildren> = ({ children }) => {\n const { showSearchOnScroll } = useAppConfig();\n const [value, setValue] = useState('');\n const { open: isFocused, onClose: blur, onOpen: focus } = useDisclose();\n const {\n open: isVisible,\n onClose: hide,\n onOpen: show,\n } = useDisclose({\n defaultOpen: Boolean(showSearchOnScroll),\n });\n const { open: isManuallyOpened, onClose: manualHide, onOpen: manualShow } = useDisclose();\n const [debouncedValue] = useDebounce(value, 750);\n const {\n isLoading,\n data: results,\n timestamp,\n clearResults,\n } = useGetSearchPreviewData({\n query: debouncedValue,\n });\n\n const context = useMemo(\n () => ({\n blur,\n clearResults,\n focus,\n hide,\n isFocused,\n isManuallyOpened,\n isVisible,\n manualHide,\n manualShow,\n results,\n setValue,\n show,\n timestamp,\n value,\n isLoading,\n debouncedValue,\n }),\n [\n blur,\n clearResults,\n focus,\n hide,\n isFocused,\n isManuallyOpened,\n isVisible,\n manualHide,\n manualShow,\n results,\n show,\n timestamp,\n value,\n isLoading,\n debouncedValue,\n ],\n );\n\n return <Provider value={context}>{children}</Provider>;\n};\n\nexport const useSearchInput = () => {\n const context = useContext(searchInputContext);\n if (context) {\n return context;\n }\n throw new Error('useSearchInput must be used within a SearchInputProvider.');\n};\n","import { useTheme } from '@ori-ui/mui';\nimport { useWindowSize } from '@ori/presentation-hooks';\n\nexport const useIsMobile = () => {\n const { width } = useWindowSize();\n const { breakpoints } = useTheme();\n\n return width !== 0 && width < breakpoints.values.md;\n};\n","export enum Categories {\n ACCESSORIES = 'accessories',\n BATH_BODY = 'bath-body',\n ESSENTIAL_OILS = 'essential-oils',\n FRAGRANCE = 'fragrance',\n HAIR = 'hair',\n KIDS_BABY = 'kids-baby',\n MAKEUP = 'makeup',\n MEN = 'men',\n NUTRITION = 'nutrition',\n SKINCARE = 'skincare',\n WELLNESS = 'wellness', // TODO -- remove wellness replaced by nutrition\n}\n","export const FavoritesLink = '/favourite-products';\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: 64px;\n --top-nav-inner-height: 64px;\n}\n\n.top-nav--is-mobile {\n --top-nav-height: 60px;\n --top-nav-inner-height: 60px;\n}\n\n.top-nav--with-top-area-banner {\n --top-nav-height: 98px;\n --top-nav-inner-height: 64px;\n}\n\n.top-nav--search-input-visible.top-nav--is-mobile {\n --top-nav-height: 119px;\n --top-nav-inner-height: 60px;\n}\n\n.top-nav--with-top-area-banner.top-nav--search-input-visible.top-nav--is-mobile {\n --top-nav-height: 153px;\n --top-nav-inner-height: 60px;\n}\n\n.top-nav--with-top-area-banner.top-nav--is-mobile {\n --top-nav-height: 94px;\n --top-nav-inner-height: 60px;\n}\n\n.top-nav--no-scroll {\n overflow: hidden;\n}\n\n#online-top-area-root {\n height: auto;\n height: initial;\n}\n\n#top-area {\n height: var(--top-nav-height);\n transition: height var(--top-nav-height-animation);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./../../packages/top-area/dist/esm/App.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,4CAA4C;EAC5C,sBAAsB;EACtB,4BAA4B;AAC9B;;AAEA;EACE,sBAAsB;EACtB,4BAA4B;AAC9B;;AAEA;EACE,sBAAsB;EACtB,4BAA4B;AAC9B;;AAEA;EACE,uBAAuB;EACvB,4BAA4B;AAC9B;;AAEA;EACE,uBAAuB;EACvB,4BAA4B;AAC9B;;AAEA;EACE,sBAAsB;EACtB,4BAA4B;AAC9B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,YAAa;EAAb,eAAa;AACf;;AAEA;EACE,6BAA6B;EAC7B,kDAAkD;AACpD\",\"sourcesContent\":[\".top-nav {\\n --top-nav-height-animation: 0.3s ease-in-out;\\n --top-nav-height: 64px;\\n --top-nav-inner-height: 64px;\\n}\\n\\n.top-nav--is-mobile {\\n --top-nav-height: 60px;\\n --top-nav-inner-height: 60px;\\n}\\n\\n.top-nav--with-top-area-banner {\\n --top-nav-height: 98px;\\n --top-nav-inner-height: 64px;\\n}\\n\\n.top-nav--search-input-visible.top-nav--is-mobile {\\n --top-nav-height: 119px;\\n --top-nav-inner-height: 60px;\\n}\\n\\n.top-nav--with-top-area-banner.top-nav--search-input-visible.top-nav--is-mobile {\\n --top-nav-height: 153px;\\n --top-nav-inner-height: 60px;\\n}\\n\\n.top-nav--with-top-area-banner.top-nav--is-mobile {\\n --top-nav-height: 94px;\\n --top-nav-inner-height: 60px;\\n}\\n\\n.top-nav--no-scroll {\\n overflow: hidden;\\n}\\n\\n#online-top-area-root {\\n height: unset;\\n}\\n\\n#top-area {\\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":["defaultTranslations","dialogMessage","dialogTitle","foreignCountryButton","homeCountryButton","translationsNamespace","LIBRARY_NAME","PbsCookieNames","GEOLOCATION_LOCAL_STORAGE_KEY","getCountryCode","countryCode","Cookies","get","toLocaleLowerCase","oldRegistrationPaths","getHomeCountryUrl","environment","store","pathname","window","location","replace","RegExp","join","homeCountryUrl","URL","search","hash","searchParams","set","toString","formatCountryName","name","split","map","capitalize","getGeolocationData","async","enabled","isAnonymousUser","staticApiUrl","tenant","foreignCountry","homeCountry","visible","PBS_CODE","PBS_OWNER","hiddenByUser","getHiddenByUser","hideGeolocationUntilFromLocalStorage","localStorage","getItem","hideGeolocationUntil","Date","dateNow","language","navigator","client","ApiClient","baseUrl","data","isForeignRegistrationAllowed","Promise","all","getTenantCountry","lang","Content","styled","theme","display","flexDirection","gap","spacing","textAlign","breakpoints","up","maxWidth","a","color","palette","common","white","Dialog","DialogBase","zIndex","Inner","GeolocationDialog","open","onClose","translations","formatMessage","useTranslationsFromNamespace","getTestId","useTestId","onCloseAndHideUntilDate","useCallback","setHideGeolocationUntilDate","setMonth","getMonth","setItem","toISOString","_jsx","children","_jsxs","Typography","variant","component","Button","href","onClick","Geolocation","useServiceUrls","useEnvironment","useToken","onOpen","useDisclose","useSWR","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","useEffect","TestIdProvider","team","Team","Presentation","project","TranslationsProvider","defaultTranslationsWithNamespaces","clientFetchConfiguration","onError","console","error","translationsWithNamespaces","undefined","TranslationsNamespaceProvider","namespace","Name","SSO_IDENTITY_LOGIN_PATH","SSO_IDENTITY_AD_LOGIN_PATH","loginContext","createContext","Provider","goToPage","page","LoginProvider","doLogin","event","Boolean","ctrlKey","metaKey","onLogin","addEventListener","removeEventListener","value","useMemo","allBrands","articles","brands","callToActionCatalogueText","change","clearSearchInput","failedToSubmit","gotIt","loading","logIn","loggedInAs","menu","myAccount","myFavoriteProducts","nextCatalogue","noOptions","notifications","oriflameSweden","other","popularProducts","popularProductsInThisSearchQuery","popularSearchQueries","products","register","searchDesktop","seeAll","seeAllCatalogues","seeAllResultsFor","shopFor","shoppingBag","signIn","topAreaBannerReferralMessage","view","APP_NAME","PACKAGE_NAME","getSearchTime","timestamp","searchTime","now","analytics","formatProduct","brand","code","image","price","category","currencyCode","currency","globalBrandName","globalCategoryName","globalName","itemCode","localBrandName","localCategoryName","localName","media","getSignalsData","customerId","position","results","query","sessionId","type","params","count","docId","filterQueries","source","totalHits","numberOfProducts","userId","timeStamp","useSendNavigationSignal","useSearchInput","globalApiClient","useApiClient","useLanguage","useAppConfig","sendNavigationSignal","analyticsData","createApplicationsNavigationSignal","ACCEPT_LANGUAGE","TENANT_CONTEXT","ReferralType","useCookieStoreInfo","cookieInfo","setCookieInfo","useState","None","productListType","pbsOwnerCookie","ecrefCookie","ECREF","owner","PBS","PermanentTopBannerType","SocialContactType","MY_PAGES_REGEX","CHECKOUT_REGEX","mapTopAreaBanners","application","permanentTopBanners","filter","isNonNullable","banner","message","link","relativeUrl","title","shouldOpenInvitationOffer","url","key","startsWith","slice","shouldSkipTopAreaBannersFetch","enableTopAreaBanner","loadingSegmentationData","orderOnBehalfVisible","bannerType","vipOrderUrls","consultantNumber","hint","consultantContext","loadingVipAccess","isLoading","isAnonymousWithStore","topBannerVisible","isLoadingTopBanner","defaultTopAreaBannerContextValue","bannersData","isOrderOnBehalfVisible","orderOnBehalfData","topAreaBannerContext","useTopAreaBanner","useContext","getMobileCssHeightVariable","isTopBannerVisible","showSearchOnScroll","CSS_MOBILE_WITH_SEARCH_INPUT_WITH_TOP_AREA_BANNER_HEIGHT","CSS_MOBILE_WITH_TOP_AREA_BANNER_HEIGHT","CSS_MOBILE_WITH_SEARCH_INPUT_HEIGHT","CSS_MOBILE_HEIGHT","getSearchInputTopAttribute","SEARCH_INPUT_HEIGHT","TopAreaReservedSpaceBlock","shouldForwardProp","minHeight","CSS_DESKTOP_WITH_TOP_AREA_BANNER_HEIGHT","CSS_DESKTOP_HEIGHT","TopAreaBlock","id","APP_PROMO_LOCAL_STORAGE_KEY","isAppPromoBannerVisible","userOs","hideAppPromoBannerUntil","getHideAppPromoBannerUntilDate","hideAppPromoBannerUntilFromLocalStorage","appName","bannerLink","appPromoContext","AppInfoRoot","AppIcon","height","width","AppNameAndDescription","alignItems","alignSelf","AppName","fontSize","overflow","textOverflow","WebkitBoxOrient","WebkitLineClamp","AppDescription","AppInfo","appDescription","appIcon","src","alt","ImagePlaceholder","fontWeight","Root","bottom","left","backgroundColor","borderRadius","boxShadow","SHADOW_LEVEL3","text","primary","margin","paddingRight","textDecoration","SHADOW_LEVEL1","transition","transitions","create","duration","short","CloseButton","justifyContent","padding","OpenButton","marginLeft","AppPromoBanner","useTranslations","className","onCloseButtonClick","preventDefault","Clear","ShadePicker","atpClusterId","customerTypeId","useUserSegmentationData","ShadePickerController","useCustomerInitials","isUserVerified","useGetCustomerProfile","swr","getRetryErrorSwrOptions","firstName","lastName","charAt","BurgerMenuTabNames","BurgerMenuContent","lazy","default","LazyBurgerMenuContent","Suspense","fallback","CataloguesSkeleton","SignInLabel","ButtonBase","typography","fontWeightBold","whiteSpace","textTransform","grey","cursor","DesktopUserIconButton","lineHeight","minWidth","svg","MobileUserIconButton","UserAvatar","Avatar","BurgerMenuTabRoot","ownerState","overline","isActive","BurgerMenuTabPrefixWrapper","isLoggedIn","BurgerMenuTabLabelWrapper","marginRight","BurgerMenuTab","activeTab","tabPrefix","tabName","onTabClick","clickHandler","TabIcon","disableRipple","BURGER_MENU_TAB_ROOT","BURGER_MENU_TAB_ICON_WRAPPER","TAB_ICON","BURGER_MENU_TAB_LABEL_WRAPPER","LazyGeneratedBurgerMainMenuLinks","LazyLinks","isMobile","useIsMobile","SkeletonMainCategoriesMobile","SkeletonMainCategoriesDesktop","BurgerMenu","mobilePersonalMenuOutlet","BurgerMenuType","AccountSideMenu","AccountSideMenuType","ToggleMenuFlyout","activeMenu","toggleActiveMenu","useActiveMenu","handleTabClick","menuType","ProductsTab","customerInitials","isMenuActive","AccountTab","onClickOverlay","slots","backdrop","Backdrop","ModalRoot","Slide","in","direction","BurgerMenuRoot","BURGER_MENU_ROOT","BurgerMenuContainer","BURGER_MENU_CONTAINER","BurgerMenuIcon","as","isDesktop","BurgerMenuInner","BURGER_MENU_BACKDROP","sx","JoinTileImage","imagesVariants","imageFormat","imageSizeMultiplier","quality","images","getImageVariants","sizes","srcSet","generateSrcSet","decoding","JoinMenuRoot","border","isVisible","top","CSS_DESKTOP_INNER_HEIGHT","CSS_HEIGHT_ANIMATION","JoinTilesWrapper","borderBottom","columnGap","gridAutoColumns","gridAutoFlow","gridTemplateRows","JoinTileLink","Link","webkitTapHighlightColor","background","alpha","black","A700","borderColor","content","objectFit","JoinTileDescription","textShadow","shadows","transform","JoinTileButton","JoinMenuIdkyLink","main","light","JoinMenu","items","useGetNavigationType","exitMenu","iDontKnowYetLink","find","linkType","StaticNavigationNavigationItemDtoLinkType","IDontKnowYet","joinTiles","MenuTiles","length","imageUrl","description","CustomEvent","detail","dispatchToggleMenu","menuToggle","dispatchEvent","requestAnimationFrame","toggleMenu","menuIsOpen","UserAction","CLICK_BURGER_MENU","useToggleMenu","BurgerMenuIconRoot","isOpen","BurgerMenuIconWrapper","BurgerMenuIconLine","marginBottom","opacity","BURGER_MENU","BurgerMenuToggleRoot","BurgerMenuToggle","BURGER_MENU_TOGGLE_ROOT","OriflameLogoSvg","Logo","ChineseLogo","xmlns","viewBox","d","CommonLogo","StyledLink","fill","OriflameLogo","isMarketCN","useIsMarketCN","LeftActionsSectionRoot","LeftActionsSection","useHover","iconOnHover","icon","hidden","isHover","setIsHover","ref","useRef","isHoverAvailable","useMediaQuery","getIcon","handleMouseOver","handleMouseLeave","element","current","FavoritesHeartRoot","FavoritesHeartIcon","HeartFilledIcon","pink","shouldFavoritesRender","useAreFavoritesEnabled","Icon","HeartFilled","Heart","isOnFavorites","includes","FavoritesLink","handleClick","CLICK_FAVORITE_ICON","labelsContextDefaultValue","aboutLabel","joinLabel","joinUrl","labelsContext","findLabel","item","collection","JoinLabel","shouldNotForwardProp","JoinSkeleton","Skeleton","JoinIcon","ToggleMenuFlyoutEvent","NotificationBellIconButton","IconButton","NotificationBellIcon","NotificationFilled","Notification","isClicked","setIsClicked","useGetCustomerUnseenNotificationsCount","CLIENT_APPLICATION","CLICK_NOTIFICATION_ICON","Notifications","Badge","badgeContent","max","invisible","SearchIconRoot","down","SearchIcon","hideSearchResultsTab","hide","show","manualShow","manualHide","searchPlaceholder","useSearchInputPlaceholder","Search","mapSearchPreviewProductToShadePicker","product","shades","shade","productCode","currentFormatted","oldFormatted","getQuickBuyButtonOnClickHandler","hasAutosubscribe","openProductInfoDialog","mode","OpenProductInfoDialog","placement","Placement","TopNavigationSearchSuggestions","productCodes","DialogMode","StandardBuy","isMultishade","OpenShadePicker","productName","openShadePicker","getSearchUrl","encodeURIComponent","QUERY_NAME","boldMatchedText","searchPhrase","escapedSearchPhrase","replaceAll","trim","regExpPattern","splitText","matches","match","el","index","Label","verticalAlign","StyledChip","Chip","chipClasses","label","SearchPreviewSuggestion","textWithBoldPhrase","SearchPreviewHeader","SEARCH_PREVIEW_IMAGE_SIZE","ImageWrapper","shape","boxSizing","SearchPreviewImage","useTheme","testId","SEARCH_PREVIEW_PRODUCT_PRODUCT_INFO_LABEL","allowedDealLabels","NEW_EDITION","LabelContainer","ProductInfoLabel","ppa","deal","shouldDisplayPpaLabel","isPpaLabel","labelKey","shouldDisplayDealLabel","size","Shades","maxVisible","shadesToRender","Shade","ShadeSize","Small","Brand","letterSpacing","Bottom","flexWrap","ProductInfo","nameWithSearchPhrase","getCurrentPriceColor","oldPriceVisible","offer","CurrentPrice","OldPrice","Prices","Info","flex","PriceAndButton","Price","SearchPreviewProduct","onProductClick","onQuickBuyButtonClick","canBeSold","QuickBuyButton","currentProductCode","currentPrice","overflowY","maxHeight","Suggestions","overflowX","scrollbarWidth","Products","SeeAllResults","StyledDivider","Divider","SearchPreview","suggestions","financialSet","useCulture","onSuggestionsClick","suggestion","SearchSuggestionClick","itemData","target","localBannerTitle","itemType","ContentType","PopularQuery","searchQuery","onProductLick","searchSuggestionClickData","Product","addParamsToUrl","path","queryString","urlParams","URLSearchParams","Object","entries","forEach","Fragment","SEARCH_PREVIEW_PRODUCT_SKELETON","ProductRoot","ImageSkeleton","UnifiedSkeleton","QuickBuyButtonSkeleton","SearchPreviewProductSkeleton","animation","ProductInfoRoot","SEARCH_PREVIEW_SKELETON_SUGGESTION","HeaderSkeleton","SeeAllSkeleton","SEARCH_PREVIEW_SEE_ALL_HEIGHT","SearchPreviewSkeleton","times","PRODUCTS_COUNT","SearchPreviewRoot","SearchPreviewContent","innerHeight","overscrollBehaviorY","SearchPreviewContainer","useWindowSize","SearchResults","SearchInputRoot","isVisibleOnMobile","showOnlyOn","isFocused","justifySelf","appBar","speedDial","SearchInputBox","paddingLeft","visibility","SearchInputInput","outline","SearchInputClear","InputBackdrop","onEnterPressHandler","e","currentTarget","SCROLL_THRESHOLD","SearchInput","focus","blur","clearResults","isManuallyOpened","setValue","debouncedValue","isAccountSideMenuActive","inputRef","prevScrollY","setPrevScrollY","document","body","classList","add","TOP_NAV_NO_SCROLL","remove","throttledAnalytics","useThrottledCallback","START_SEARCH","SEARCH_THROTTLE_TIME","onFocusHandler","showBackdrop","shouldShowBackdrop","onChangeHandler","isValueEmpty","handleScrollDebounced","debounce","handleScroll","currentScrollY","scrollY","difference","closeSearch","clearInput","MenuTypes","handleOnBlur","useListenToKeyDown","autoFocus","placeholder","onFocus","onChange","onBlur","onKeyDown","growShrinkAnimation","keyframes","isAnimationActive","badgeClasses","badge","animationDuration","animationName","ShoppingBagCounter","shoppingBagQuantity","setIsAnimationActive","setTimeout","isCnMarket","getMinibagFlyoutEvent","shouldOpen","Minibag","ShoppingBagIcon","isECatalogue","useDeviceType","setIsECatalogue","mobileBreakpoint","mobileBreakpointECatalogue","getElementById","isMobileOnECatalogue","EmptyBasket","AddToBag","IconOnHover","ShoppingBasketFilled","AddToBagFilled","onBasketUpdated","onShoppingContextLoaded","isReceivedShoppingContext","useShoppingBag","setSessionId","setShoppingBagQuantity","setIsReceivedShoppingContext","updateShoppingBagQuantity","newQuantity","ShoppingContextLoaded","BasketUpdated","triggerRequestShoppingContext","requestShoppongContextEvent","RequestShoppingContext","onMouseEnter","onMouseLeave","onMobileEcataloguePageClick","hoverIcon","USER_ICON_MOBILE","USER_ICON_DESKTOP","MY_PAGES_URL","UserSection","UserFilled","User","useLogin","context","Error","_Fragment","startIcon","RightActionsSectionRoot","RightActionsSection","showFavorites","shouldShowNotificationMenu","useShouldRenderNotificationMenu","shouldDisplayNotificationIcon","TOP_AREA_BANNER_HEIGHT","blue","TopAreaBannerSkeleton","VipOrderFormRoot","ChangeConsultantForm","vipAccessLabels","ConsultantChangeConsultantNumber","logger","useLogger","abortControllerRef","AbortController","formRef","areHintsLoading","setAreHintsLoading","setConsultantNumber","errorMessage","setErrorMessage","hints","setHints","isSubmitLocked","setIsSubmitLocked","handleSubmit","useForm","handleChange","axios","signal","then","catch","cause","finally","handleSelect","textContent","post","result","onSubmit","ConsultantNumber","consultant","ErrorMessage","IsAccessGranted","submit","renderInput","props","TextField","helperText","fullWidth","getOptionLabel","String","action","autoComplete","method","Autocomplete","loadingText","noOptionsText","options","disabled","BackArrow","SvgIcon","PopupContentGroup","span","pxToRem","marginTop","PopupButton","PopupLink","OrderOnBehalfDialog","vipAccessData","close","changeOpened","setChangeOpened","onChangeOpened","header","ArrowLeftThin","hideCloseButton","Links","Url","Text","OrderContent","Username","OrderOnBehalf","VipAccessData","VipAccessLabels","NewUserFilled","ConsultantName","ArrowRightThin","isClickable","Title","Banner","navigation","showArrows","pagination","slider","drag","BannersCarousel","autoplay","interval","Carousel","propagateDragEvent","CarouselSlide","personalBeautyStoreContext","pbsData","storeInfo","getContactByType","allowedContacts","contacts","contact","Contact","Email","Telephone","GreetingMessageAndContact","Gift","BannerDialog","paperClasses","root","emphasis","chunks","TopAreaBannerDialog","referralProgram","beautyStore","profile","benefitsLink","greetingMessage","linkTitle","userEmail","userPhone","PhoneNumber","DynamicFormattedMessage","translatedMessage","values","TopAreaBannerContent","ErrorBoundary","areaName","TopAreaBanner","isSearchInputVisible","TOP_AREA_BORDER_BOTTOM","CSS_MOBILE_INNER_HEIGHT","TopArea","Context","composeProviders","providers","reduceRight","accumulated","ApiProvider","currentLanguage","globalApiUrl","formattedToken","GlobalApiClientProvider","token","StaticApiClientProvider","UserSegmentationDataProvider","HeadersProvider","sourceAppName","AppPromoProvider","setVisible","pagePath","setPagePath","useMobileOs","setUserOs","os","UAParser","getOS","useGetTenantMobileAppSmartAppBanner","storeName","shouldRetryOnError","setHideAppPromoBannerUntilDate","SearchInputProvider","ActiveLinkProvider","ActiveMenuProvider","ConsultantProvider","consultantType","useGetApplicationsNavigationCustomerInfo","vipAccess","baseURL","origin","response","TopAreaBannerProvider","shouldGetBannerType","isSSR","getTopAreaBannerType","test","MyPages","Checkout","PublicPageWithReferral","PublicPage","useGetTopAreaBanners","isValidating","apiError","useGetTenantApplicationsBannerEnrichedPermanentTopAreaBanners","isTopAreaBannerVisible","LabelsProvider","StaticNavigationNavigationItemDtoType","AboutTiles","JoinTiles","findUrl","BurgerMenuProvider","configurationContext","isEnabled","ConfigurationProvider","useSponsorPersonalBeautyStoreInfo","useGetCustomerSponsorPersonalBeautyStore","mainLogger","Logger","teamName","beautyStoreQuery","gql","createChild","usePersonalBeautyStoreData","graphQlNetUrl","sponsorData","shouldCall","dataFromApi","useGraphqlQuery","headers","getHeaders","variables","skip","swrConfig","cloneDeep","PersonalBeautyStoreProvider","cookiesToTransform","cookie","queryParam","stopIfFound","ECREF_OWNER","updateQueryParameters","newQueryParameters","newUrl","history","replaceState","removeQueryParameter","queryParams","has","delete","ensureQueryParameter","PbsApp","configuration","setQueryParameter","parameters","removeQueryParameterHistoryApi","setQueryParameterHistoryApi","foundPrev","cookieName","queryParamName","stopIfFoundPrev","removeIfNotFound","cookieValue","stop","info","SWRConfig","errorRetryCount","Pbs","useLoadAbTastyScript","abTastyEnabled","scriptSrc","getScriptSrc","AB_TASTY_SCRIPT_IDS","AB_TASTY_SCRIPT_URL","AB_TASTY_SCRIPT_ID","script","createElement","append","TopNavClassName","getClassList","addClassName","removeClassName","useManagedHeight","bannerVisible","inputVisible","mobile","searchInputVisible","withTopAreaBanner","useToggleMenuHandler","onToggle","events","listener","useGlobalEvents","useAddToBasketAnalytics","onAddToBasket","AddToBasketEvent","TopAreaBlockContent","pbs","AppConfigProvider","LoggerProvider","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","BurgerPersonalMenuOutlet","Box","CircularProgress","getEnvironmentClientAppFileUrlPostfix","PERSONAL_MENU_BLOB_NAME","getClientAppScriptElement","clientAppName","querySelector","getPersonalMenuScriptSrc","getEnvironmentFromHost","host","topAreaScript","clientAppFileBaseUrl","spaName","endsWith","createSpaEntryfileUrl","localLogger","TEAM_NAME","render","config","rootElement","dataset","identityUrl","clientAppConfig","parseClientAppConfig","mobileOfficeApiUrl","graphqlUrl","graphqlNetUrl","useInternationalShareAndEarn","ApplicationInsights","initialize","getClientApplicationInsightsConfig","createRoot","ServiceUrlsProvider","serviceUrls","graphQlUrl","EnvironmentProvider","UniversalTokenProvider","initialToken","ThemeProvider","enableCacheProvider","cacheKey","EMOTION_CACHE_KEY","ClientCultureProvider","includePersonalMenuScript","personalMenuSrc","setAttribute","head","loadingUserSegmentationData","visitorSegment","requestParams","excludeChildren","useGetTenantApplicationsNavigationNavigation","localError","navigationCollection","CatalogueSkeleton","CategoryBoxSkeleton","CATEGORY_BOX_DESKTOP_MEDIUM_WIDTH","ButtonSkeleton","SkeletonCatalogueDesktop","SKELETON_CATALOGUE_DESKTOP","CatalogueWrapper","showDescription","CallToActionWrapper","SkeletonCatalogueMobile","Catalogue","CatalogueDetailButton","hoverEffect","CatalogueLink","CallToAction","CTAText","textUnderlineOffset","textDecorationThickness","subtitle1","MobileWrapper","LinksRoot","body1","listStyle","borderRight","flexShrink","paddingTop","paddingBottom","SpecialLinkWrapper","MenuSectionDivider","LinksSpecialLink","secondary","WebkitTapHighlightColor","BurgerMenuLinkListElement","BurgerMenuLinkLink","h6","BurgerMenuLinkIconWrapper","isActiveLink","BurgerMenuTopItemLink","green","BurgerMenuLinkCategory","colors","mapCategoryColors","Categories","ACCESSORIES","red","BATH_BODY","ESSENTIAL_OILS","purple","FRAGRANCE","brown","HAIR","yellow","KIDS_BABY","MAKEUP","MEN","NUTRITION","SKINCARE","WELLNESS","TitleIconRoot","BURGER_MENU_LINK","BURGER_MENU_LINK_ROOT_MOBILE","BURGER_MENU_LINK_CATEGORY_MOBILE","BURGER_MENU_LINK_ICON_WRAPPER","BURGER_MENU_CONTENT","BURGER_MENU_LINK_ROOT","BURGER_MENU_LINK_CATEGORY","BURGER_MENU_CONTENT_ROOT","CATEGORY_WRAPPER","FAVORITE_LIST_ITEM","LINKS_ROOT","SPECIAL_LINK","SPECIAL_LINKS_WRAPPER","OUR_STORY_SUPPORT_LINK","OUR_STORY_LINK","TITLE_WITH_ICON","BURGER_MENU_TOP_ITEM_LINK","EQUAL_LINKS","LINK_A_FIRST","LINK_B_FIRST","TOP_LINKS","LINK_PRIORITIES","FocusPage","HEIGHT_BUFFER","Sales","BurgerMenuContentRoot","Modal","basePositionStyles","drawer","DESKTOP_HEIGHT","SkeletonMenuLinks","MAIN_CATEGORY_DESKTOP","SkeletonCatalogueMobileRoot","SKELETON_CATALOGUE_MOBILE","SkeletonMainCategoriesMobileCategory","SkeletonMainCategoriesMobileCategoryLarge","elements","Math","floor","steps","Array","from","skeletonElements","step","SKELETON_MAIN_CATEGORY_MOBILE","right","CLICK_CATALGOUE","CLICK_CATALOGUE_DETAIL","CLICK_CATEGORY_BRAND","CLICK_SUBCATEGORY_LINK","TOP_NAV_HEIGHT_CSS_VARIABLE","TOP_NAV_INNER_HEIGHT_CSS_VARIABLE","MOBILE_HEIGHT","pl_live","pl_stg","ro_live","ro_stg","uk_live","uk_stg","SEARCH_PREVIEW_PRODUCTS_LIMIT","appConfigContextDefaultValue","onlyProductsTabInSearch","appConfigContext","activeLinkContext","activeLink","setActiveLink","toggleActiveLink","useActiveLink","activeMenuContext","setActiveMenu","burgerMenuContextDefaultValue","aboutItems","loadingAboutItems","inspirationItems","loadingInspirationItems","shopSectionItems","loadingShopSectionItems","burgerMenuContext","contextValue","useBurgerMenu","labels","searchPreviewShade","conceptFragment","searchPreviewProduct","searchPreviewQuery","mapEnableQuickBuyButton","mapCanBeSold","some","mapHasAutoSubscription","mapShadeWithPrice","hexColors","mapShade","shadeName","getCurrentFormattedPrice","formattedPrice","getOldPrice","getPrice","priceAfterImmediateDiscount","Number","parseFloat","mapSearchPreviewQuery","totalProductsCount","productSearchPreview","searchResults","mapSearchPreviewShades","concept","mapLabels","OFFER","pdpUrl","categories","useGetSearchPreviewData","useHeaders","setTimestamp","mutate","limit","fetchGraphql","timeout","getSearchPreviewData","searchInputContext","defaultOpen","useDebounce","md","___CSS_LOADER_EXPORT___","push","module"],"sourceRoot":""}