{"version":3,"sources":["webpack:///./src/internal/views/SearchCloseActiveScreen.tsx","webpack:///./src/internal/utils/KeyPressHandler.ts","webpack:///./src/internal/views/SearchOverlayActiveScreen.tsx","webpack:///./src/exported/search/SearchGnavInputField.tsx","webpack:///./src/internal/utils/ConfigUtils.ts","webpack:///./src/internal/utils/FormatDataAttritube.ts","webpack:///./src/internal/views/search-suggestion/SearchSuggestionList.tsx","webpack:///./src/internal/views/search-suggestion/SearchSuggestionButton.tsx","webpack:///./src/internal/views/search-suggestion/SearchSuggestion.tsx","webpack:///./src/internal/configs/SearchConfigs.ts","webpack:///./src/internal/views/SearchGrid.tsx","webpack:///./src/internal/views/SearchResultsMessage.tsx","webpack:///./src/theme/default-theme.ts"],"names":["CloseSearchIconWrapper","button","space16","space24","searchIconCloseWrapperClassnames","classnames","searchIconCloseClassnames","toggleSearchOverlay","this","props","translations","closeLabel","searchButtonLabel","className","onClick","title","ACCEPTABLE_KEYS_PRESSED","SearchOverlayWrapper","div","space40","space44","space12","info","acceptedKeys","ENTER","SPACEBAR","isSearchOverlayOpen","searchPlaceholderLabel","searchInputGnavFieldClassnames","svgIconSearchClassnames","circleIconSearchClassnames","magnifierIconSearchClassnames","searchOverlayWrapperClassnames","tabIndex","onKeyPress","keyPressed","event","keys","func","params","preventDefault","includes","key","role","hideGnavInput","name","inputLabel","inputType","placeholder","customClassName","pathMagnifierClassName","pathCircleClassName","NO_RESULTS","RESULTS_FOUND_OVERLAY","RESULTS_ADJUSTMENT","SearchActiveScreenWrapper","InputGroup","ClearButton","space48","space28","InputSearchWrapper","InputFieldSearch","input","hideOverlay","inputRef","onKeyUp","searchGnavInputFieldViewController","data","inputValue","searchUrl","config","searchParam","value","currentTarget","redirect","siteUrl","endecaRedirectUrl","handleChange","body","document","gnavSearchTagsBlock","classList","remove","add","html","documentElement","getResultType","numRecs","adjustedTerm","totalNumRecs","onOverlayScroll","e","scrollTop","current","blur","diContainer","get","minSearchLength","setMinSearchLength","setSearchDisplayFormat","searchDisplayFormat","searchConfig","searchActiveScreenWrapper","searchInputGroupClassnames","searchInputWrapperClassnames","clearButtonClassnames","voiceSearchWrapperClassnames","clearInputValue","searchTermSelected","limitItems","resultsLoaded","disableInput","limiteTypeaheadResults","typeaheadResults","configSearch","searchClearLabel","enableVoiceSearch","phrases","silenceTimeout","stopTimeout","enableAutoReplenishment","autoReplenishOptions","autoReplenishToggleType","bestSellers","items","baseConfig","searchItems","bestSellerItems","voiceSearchConfig","searchInputFieldClassnames","onScroll","disabled","type","onChange","autoFocus","innerRef","showSearchResults","SearchGrid","isLoading","resultType","view","OVERLAY","voiceSearch","enabled","length","stateConfig","propsConfig","restOfStateConfig","formatDataAttribute","attribute","replace","SuggestionDimensionWrapper","li","space10","SuggestionLink","a","SearchIconSuggestion","span","SearchTermSuggestion","SearchInSuggestion","SearchTypeaheadValue","SearchTypeaheadCount","searchSuggestionsValue","searchIconSuggestionClassnames","searchIconclassnames","searchSuggestionLinkClassnames","searchSearchTermSuggestion","searchSearchInSuggestion","searchTypeaheadValue","searchTypeaheadCount","filterParam","inCategoryLabel","map","typeaheadValue","link","href","encodeURIComponent","label","count","SearchAllResultsButton","SearchAllResultsButtonWrapper","space8","space20","SeeAllResultsLink","resultsButtonSearchClassnames","viewAllResultsLabel","SearchSuggestionContainer","SearchSuggestionsWrapper","ul","SearchSuggestionHeading","searchSuggestionContainer","searchSuggestionsWrapper","searchTypeaheadTitle","suggestedTopFilters","SearchConfigs","hideSorting","filterData","filtersTitle","filtersDisplayType","generalKeys","filterSets","SearchResultsWrapper","SearchGridWrapper","searchresultsWrapper","searchresultsWrappersMessage","searchGridClassnames","content","searchProducts","productGridBreakpoints","hideProductPrice","hideProductBadge","showSubDisplayName","hideProductRating","enableNotifyMe","enableQuickView","enableMobileQuickView","ctaType","searchDrupalConfigs","searchViewConfig","bestSellerViewConfig","SearchResultsMessage","RESULTS_FOUND","NONE","ResultsMessageWrapper","SearchTermWrapper","SearchedTermWrapper","TitleWrapper","SearchTerm","p","getViewType","getMessageAndClasses","resultsFoundMessage","resultsFoundMessageOverlay","noResultsMessage","searchAdjustmentMessage","lastRecNum","searchResultMessageClassNames","message","dataTestId","replacements","regEx","RegExp","Object","join","searchedTermClassNames","split","part","toString","matched","searchTermClassNames","bestSellersProductsTitle","resultsMessageWrapperClassNames","anchorTheme","primary900","white","black","blackDisabledEmphasis","roboto","borderBottomTheme","primary700","primary400","inputBorderTheme","primary100","backgroundWhiteTheme","space4","blackLightEmphasis","backgroundOverlay","filterHeadingTheme","clearButtonTheme","robotoMedium","customInputTheme","primary800","inputBorderMobileTheme","primary500","clearButtonThemeMobile","blackMediumEmphasis","customInputThemeMobile","bestSellerTitle","bestSellerTitleMobile","fillSearchMagnifier","primary600","suggestionText","suggestionWrapper","allResultsButton","backgroundResultsButton","searchResultsHeader","fontBold","headerLabel","filtersTitleLabel","dropdownSortLabel","space32","mobileSortLabel","mobileOption","mobileOptionLabel","primary300","removeIconFilter","filterValue","clearFilterButtonMobile","clearFilterButtonDesktop","filtersCount","searchTab","transparentButton"],"mappings":"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","file":"SearchGnavInputField.ac297024cf3ae1f880fd.bundle.js","sourcesContent":["import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport { RemoveIcon } from 'elc-icons';\nimport { ContentSpacing, breakpoint } from 'elc-base-theme';\nimport { translate, ITranslationsCollection } from 'elc-service';\nimport { transparentButton } from '../../theme/default-theme';\n\nconst CloseSearchIconWrapper = styled.button`\n top: ${ContentSpacing.space16};\n right: ${ContentSpacing.space16};\n z-index: 1;\n position: relative;\n float: right;\n text-align: center;\n ${transparentButton}\n ${breakpoint('desktop')`\n top: ${ContentSpacing.space24};\n right: ${ContentSpacing.space24};\n [dir='rtl'] & {\n float: left;\n left: ${ContentSpacing.space16};\n right: auto;\n }\n `};\n`;\n\nexport interface IOverlayIconProps {\n toggleSearchOverlay(): void;\n translations?: ITranslationsCollection;\n}\n\nconst searchIconCloseWrapperClassnames = classnames(\n 'elc-search-close-icon-wrapper',\n 'js-search-close-icon-wrapper'\n);\n\nconst searchIconCloseClassnames = classnames('elc-search-close-icon', 'js-search-close-icon');\n\n@translate(['closeLabel', 'searchButtonLabel'])\n@observer\nexport class SearchCloseActiveScreen extends React.Component {\n public render() {\n const { toggleSearchOverlay } = this.props;\n const translations = this.props.translations as ITranslationsCollection;\n const { closeLabel, searchButtonLabel } = translations;\n\n return (\n \n \n \n );\n }\n}\n","export const handleKeyPress = (\n event: React.KeyboardEvent,\n keys: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n func: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params?: any\n) => {\n event.preventDefault();\n if (keys.includes(event.key)) {\n func(params);\n }\n};\n\nexport enum ACCEPTABLE_KEYS_PRESSED {\n ENTER = 'Enter',\n SPACEBAR = ' '\n}\n// TODO this should be in the fe-elc-frontend-components repo\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport { SearchIcon } from 'elc-icons';\nimport { ContentSpacing, Colors, breakpoint } from 'elc-base-theme';\nimport { InputField } from 'elc-inputs';\nimport { translate, ITranslationsCollection } from 'elc-service';\nimport { handleKeyPress, ACCEPTABLE_KEYS_PRESSED } from '../utils/KeyPressHandler';\n\nimport {\n inputBorderTheme,\n customInputThemeMobile,\n inputBorderMobileTheme\n} from '../../theme/default-theme';\n\nconst SearchOverlayWrapper = styled.div`\n cursor: pointer;\n width: 100%;\n .elc-input-search-gnav-field {\n cursor: pointer;\n pointer-events: none;\n width: 100%;\n left: 0;\n right: 0;\n padding: 0 ${ContentSpacing.space40};\n height: ${ContentSpacing.space44};\n ${customInputThemeMobile};\n ${inputBorderMobileTheme};\n ${breakpoint('desktop')`\n min-width: 292px;\n height: 41px;\n padding: 15px 38px;\n ${inputBorderTheme};\n &:focus {\n ${inputBorderTheme};\n }\n `};\n }\n\n .elc-icon-search {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: ${ContentSpacing.space12};\n [dir='rtl'] & {\n right: ${ContentSpacing.space12};\n }\n :focus {\n outline: ${Colors.info} auto 5px;\n }\n }\n\n &.elc-search-icon-wrapper-input-has-value {\n .elc-input-search-gnav-field {\n padding: 15px 38px 15px 11px;\n [dir='rtl'] & {\n padding: 15px 11px 15px 38px;\n }\n }\n .elc-icon-search {\n right: ${ContentSpacing.space12};\n left: auto;\n [dir='rtl'] & {\n left: ${ContentSpacing.space12};\n right: auto;\n }\n }\n }\n\n .elc-floating-label-string {\n display: none;\n }\n`;\n\nconst acceptedKeys = [ACCEPTABLE_KEYS_PRESSED.ENTER, ACCEPTABLE_KEYS_PRESSED.SPACEBAR];\n\nexport interface IOverlayIconProps {\n toggleSearchOverlay(): void;\n isSearchOverlayOpen: boolean;\n translations?: ITranslationsCollection;\n hideGnavInput?: boolean;\n}\n\n@translate(['searchPlaceholderLabel', 'searchButtonLabel'])\n@observer\nexport class SearchOverlayActiveScreen extends React.Component {\n constructor(props: IOverlayIconProps) {\n super(props);\n }\n\n public render() {\n const { toggleSearchOverlay, isSearchOverlayOpen } = this.props;\n const translations = this.props.translations as ITranslationsCollection;\n const { searchPlaceholderLabel, searchButtonLabel } = translations;\n const searchInputGnavFieldClassnames = classnames(\n 'elc-input-search-gnav-field',\n 'js-input-search-gnav-field'\n );\n const svgIconSearchClassnames = classnames('elc-icon-search', 'js-icon-search');\n const circleIconSearchClassnames = classnames(\n 'elc-icon-search-circle',\n 'js-icon-search-circle'\n );\n const magnifierIconSearchClassnames = classnames(\n 'elc-icon-search-magnifier',\n 'js-icon-search-magnifier'\n );\n\n const searchOverlayWrapperClassnames = classnames(\n 'elc-search-icon-wrapper',\n 'js-search-icon-wrapper'\n );\n\n return (\n {\n handleKeyPress(keyPressed, acceptedKeys, toggleSearchOverlay);\n }}\n role=\"button\"\n aria-expanded={isSearchOverlayOpen}\n aria-label={searchButtonLabel}\n data-test-id=\"SEA-Icon\"\n title={searchButtonLabel}\n >\n {this.props.hideGnavInput ? null : (\n \n )}\n \n \n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport { diContainer, serviceNames } from '../../service-setup/diContainer';\nimport * as classnames from 'classnames';\nimport { SearchGnavInputFieldViewController } from '../../internal/controllers/SearchGnavInputFieldViewController';\nimport { SearchCloseActiveScreen } from '../../internal/views/SearchCloseActiveScreen';\nimport { SearchOverlayActiveScreen } from '../../internal/views/SearchOverlayActiveScreen';\nimport { translate, ITranslationsCollection, ServiceView, config } from 'elc-service';\nimport { VOICE_SEARCH } from 'elc-service-view-names';\nimport { action } from 'mobx';\n\nimport {\n backgroundWhiteTheme,\n borderBottomTheme,\n filterHeadingTheme,\n clearButtonTheme,\n clearButtonThemeMobile,\n customInputTheme,\n customInputThemeMobile\n} from '../../theme/default-theme';\nimport { ContentSpacing, breakpoint } from 'elc-base-theme';\nimport { SearchGrid } from '../../internal/views/SearchGrid';\nimport { Spinner } from 'elc-spinner';\nimport {\n SEARCH_PARAM,\n RESULTS_MESSAGE,\n GNAV_SEARCH_TAG_BLOCKS,\n SEARCH_VIEW,\n TOGGLE_TYPE,\n PREDICTIVE_SEARCH_PARAM,\n SEARCH_TYPE_PARAM_EXTERN,\n SEARCH_REDIRECT_PARAM\n} from '../../internal/constants/Search';\nimport { IItem, IContentItem } from '../../internal/interfaces/ISearchInterfaces';\nimport { mergeConfigs } from '../../internal/utils/ConfigUtils';\n\nconst { NO_RESULTS, RESULTS_FOUND_OVERLAY, RESULTS_ADJUSTMENT } = RESULTS_MESSAGE;\n\nconst SearchActiveScreenWrapper = styled.div`\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n overflow: auto;\n ${backgroundWhiteTheme};\n`;\n\nconst InputGroup = styled.div`\n position: relative;\n width: 100%;\n display: table;\n border-collapse: collapse;\n ${borderBottomTheme};\n`;\n\nconst ClearButton = styled.button`\n cursor: pointer;\n display: table-cell;\n vertical-align: middle;\n padding: 0;\n outline: inherit;\n margin-right: ${ContentSpacing.space12};\n margin-top: ${ContentSpacing.space48};\n ${filterHeadingTheme};\n ${clearButtonThemeMobile};\n [dir='rtl'] & {\n margin-left: ${ContentSpacing.space28};\n }\n\n ${breakpoint('desktop')`\n line-height: 30px;\n margin-top: ${ContentSpacing.space48};\n margin-right: ${ContentSpacing.space24};\n ${clearButtonTheme} \n [dir='rtl'] & {\n margin-left: ${ContentSpacing.space24};\n }\n `};\n`;\n\nconst InputSearchWrapper = styled.div`\n display: table-cell;\n vertical-align: middle;\n width: 100%;\n padding: ${ContentSpacing.space48} ${ContentSpacing.space12} ${ContentSpacing.space12}\n ${ContentSpacing.space12};\n ${breakpoint('desktop')`\n padding: ${ContentSpacing.space48} ${ContentSpacing.space24} ${ContentSpacing.space24} ${ContentSpacing.space24};\n `};\n\n .elc-floating-label-string {\n display: none;\n }\n\n .elc-input-search-field {\n height: auto;\n width: 100%;\n padding: 0;\n ${customInputThemeMobile};\n ${breakpoint('desktop')`\n ${customInputTheme};\n `};\n }\n`;\n\nconst InputFieldSearch = styled.input`\n width: 100%;\n`;\n\nexport interface ISearchGnavInputField {\n config: {\n baseConfig?: {\n content?: IContentItem[];\n productTags?: string[];\n items: IItem[];\n filterData: {\n filtersTitle: string;\n filtersDisplayType: string;\n generalKeys: object[];\n filterSets: object[];\n };\n productGridBreakpoints: object;\n hideProductPrice: boolean;\n hideProductBadge: boolean;\n showSubDisplayName: boolean;\n hideProductRating: boolean;\n enableNotifyMe: boolean;\n enableQuickView: boolean;\n enableMobileQuickView?: boolean;\n ctaType?: string;\n };\n content?: IContentItem[];\n productTags?: string[];\n items: IItem[];\n filterData: {\n filtersTitle: string;\n filtersDisplayType: string;\n generalKeys: object[];\n filterSets: object[];\n };\n productGridBreakpoints: object;\n hideProductPrice: boolean;\n hideProductBadge: boolean;\n showSubDisplayName?: boolean;\n hideProductRating: boolean;\n enableNotifyMe?: boolean;\n enableQuickView: boolean;\n hideSorting: boolean;\n enableMobileQuickView?: boolean;\n ctaType?: string;\n searchUrl?: string;\n minSearchLength?: number;\n searchDisplayFormat: string;\n gnavSearchTagsBlock?: boolean;\n hideGnavInput?: boolean;\n enableVoiceSearch?: boolean;\n phrases?: string[];\n silenceTimeout?: number;\n stopTimeout?: number;\n enableAutoReplenishment?: boolean;\n autoReplenishOptions?: number[];\n autoReplenishToggleType?: TOGGLE_TYPE;\n };\n toggleSearchOverlay?(): void;\n translations?: ITranslationsCollection;\n}\n\n@config(['searchConfig'], mergeConfigs)\n@translate(['searchClearLabel', 'searchPlaceholderLabel', 'searchButtonLabel'])\n@observer\nexport class SearchGnavInputField extends React.Component {\n private searchGnavInputFieldViewController: SearchGnavInputFieldViewController;\n public static defaultProps: ISearchGnavInputField;\n private hideOverlay: boolean = true;\n private inputRef: React.RefObject = React.createRef();\n\n constructor(props: ISearchGnavInputField) {\n super(props);\n this.searchGnavInputFieldViewController = diContainer.get(\n serviceNames.searchGnavInputFieldViewController\n );\n\n if (props.config.minSearchLength) {\n this.searchGnavInputFieldViewController.setMinSearchLength(\n props.config.minSearchLength\n );\n }\n\n this.searchGnavInputFieldViewController.setSearchDisplayFormat(\n props.config.searchDisplayFormat\n );\n }\n\n public onKeyUp = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' && this.searchGnavInputFieldViewController.data.inputValue) {\n this.hideOverlay = false;\n const searchUrl = this.props.config.searchUrl;\n const searchParam = SEARCH_PARAM;\n const value = event.currentTarget.value;\n let redirect = false;\n let siteUrl = `${searchUrl}${searchParam}${value}`;\n\n if (!!this.searchGnavInputFieldViewController.endecaRedirectUrl) {\n siteUrl = `${this.searchGnavInputFieldViewController.endecaRedirectUrl}${SEARCH_TYPE_PARAM_EXTERN}${PREDICTIVE_SEARCH_PARAM}${SEARCH_REDIRECT_PARAM}`;\n redirect = true;\n }\n\n this.searchGnavInputFieldViewController.onKeyUp(\n { key: event.key, value },\n siteUrl,\n redirect\n );\n }\n };\n\n public handleChange = (event: React.FormEvent) => {\n const value = event.currentTarget.value;\n const body = document.body;\n if ((this.props.config.gnavSearchTagsBlock && value) || value !== '') {\n body.classList.remove(`${GNAV_SEARCH_TAG_BLOCKS}`);\n } else if (this.props.config.gnavSearchTagsBlock) {\n body.classList.add(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n this.searchGnavInputFieldViewController.handleChange({ value });\n };\n\n public get showSearchResults() {\n if (!!this.searchGnavInputFieldViewController.endecaRedirectUrl) {\n return false;\n }\n\n let items = [];\n\n if (this.props.config.baseConfig) {\n items = this.props.config.baseConfig.items;\n } else {\n items = this.props.config.items;\n }\n\n if (\n this.searchGnavInputFieldViewController.data.inputValue &&\n (items || this.searchGnavInputFieldViewController.data.items.length > 0)\n ) {\n return true;\n }\n\n return false;\n }\n\n public toggleSearchOverlay = () => {\n this.searchGnavInputFieldViewController.toggleSearchOverlay();\n const body = document.body;\n const html = document.documentElement;\n if (this.searchGnavInputFieldViewController.isSearchOverlayOpen) {\n html.classList.add('search-overlay-displayed');\n body.classList.add('search-overlay-displayed');\n if (this.props.config.gnavSearchTagsBlock) {\n body.classList.add(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n } else {\n html.classList.remove('search-overlay-displayed');\n body.classList.remove('search-overlay-displayed');\n if (this.props.config.gnavSearchTagsBlock) {\n body.classList.remove(`${GNAV_SEARCH_TAG_BLOCKS}`);\n }\n }\n };\n\n private getResultType = () => {\n const { numRecs, adjustedTerm } = this.searchGnavInputFieldViewController.data;\n\n if (numRecs.totalNumRecs === 0) {\n return NO_RESULTS;\n }\n if (adjustedTerm) {\n return RESULTS_ADJUSTMENT;\n }\n\n return RESULTS_FOUND_OVERLAY;\n };\n\n @action\n public onOverlayScroll = (e: React.SyntheticEvent) => {\n if (e.currentTarget.scrollTop > 10) {\n (this.inputRef.current as HTMLInputElement).blur();\n }\n };\n\n public render() {\n const searchActiveScreenWrapper = classnames(\n 'elc-search-active-screen-wrapper',\n 'js-search-active-screen-wrapper'\n );\n const searchInputGroupClassnames = classnames(\n 'elc-search-input-group',\n 'js-search-input-group'\n );\n const searchInputWrapperClassnames = classnames(\n 'elc-input-search-wrapper',\n 'js-input-search-wrapper'\n );\n const clearButtonClassnames = classnames(\n 'elc-search-clear-button',\n 'js-search-clear-button'\n );\n const voiceSearchWrapperClassnames = classnames(\n 'elc-voice-search-wrapper',\n 'js-voice-search-wrapper'\n );\n\n const {\n data,\n clearInputValue,\n searchTermSelected\n } = this.searchGnavInputFieldViewController;\n\n const {\n limitItems,\n inputValue,\n resultsLoaded,\n isSearchOverlayOpen,\n disableInput,\n limiteTypeaheadResults,\n typeaheadResults,\n numRecs,\n adjustedTerm,\n configSearch\n } = data;\n\n const { searchClearLabel, searchPlaceholderLabel, searchButtonLabel } = this.props\n .translations as ITranslationsCollection;\n const {\n searchUrl,\n enableVoiceSearch,\n phrases,\n silenceTimeout,\n stopTimeout,\n enableAutoReplenishment,\n autoReplenishOptions,\n autoReplenishToggleType,\n hideGnavInput,\n items: bestSellers\n } = this.props.config;\n\n let searchConfig;\n\n if (this.props.config.baseConfig) {\n searchConfig = {\n ...this.props.config.baseConfig,\n searchItems: limitItems,\n bestSellerItems: this.props.config.baseConfig.items,\n searchUrl,\n enableAutoReplenishment,\n autoReplenishOptions,\n autoReplenishToggleType\n };\n } else {\n searchConfig = {\n ...this.props.config,\n searchItems: limitItems,\n bestSellerItems: bestSellers,\n searchUrl\n };\n }\n\n const voiceSearchConfig = {\n searchUrl,\n phrases,\n silenceTimeout,\n stopTimeout\n };\n\n const searchInputFieldClassnames = classnames(\n 'elc-input-search-field',\n 'js-input-search-field',\n {\n 'voice-search-enabled': enableVoiceSearch\n }\n );\n\n return (\n <>\n \n {isSearchOverlayOpen && (\n \n \n \n \n \n \n {inputValue && (\n \n {searchClearLabel}\n \n )}\n \n {this.showSearchResults && this.hideOverlay && resultsLoaded ? (\n \n ) : (\n \n )}\n {!!(enableVoiceSearch && configSearch.voiceSearch.enabled) && (\n
\n \n
\n )}\n \n )}\n \n );\n }\n}\n\nexport default SearchGnavInputField;\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const mergeConfigs = (stateConfig: any, propsConfig: any) => {\n const { searchConfig = {}, ...restOfStateConfig } = stateConfig;\n\n return {\n ...searchConfig,\n ...restOfStateConfig,\n ...propsConfig\n };\n};\n","export const formatDataAttribute = (attribute: string): string => {\n return attribute.replace(/\\s/gi, '-');\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport {\n fillSearchMagnifier,\n suggestionText,\n suggestionWrapper\n} from '../../../theme/default-theme';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { SearchIcon } from 'elc-icons';\nimport { translate, ITranslationsCollection } from 'elc-service';\nimport { IItemTypeahead } from '../../../internal/interfaces/ISearchInterfaces';\nimport { formatDataAttribute } from '../../utils/FormatDataAttritube';\nimport {\n SEARCH_TYPE_PARAM,\n PREDICTIVE_SEARCH_PARAM,\n FILTERS_SEARCH_PARAM\n} from '../../constants/Search';\n\nconst SuggestionDimensionWrapper = styled.li`\n padding: ${ContentSpacing.space10} 0;\n ${suggestionWrapper};\n text-align: left;\n`;\n\nconst SuggestionLink = styled.a`\n margin: 0;\n display: inline-block;\n vertical-align: middle;\n max-width: 400px;\n overflow: hidden;\n ${suggestionText};\n`;\n\nconst SearchIconSuggestion = styled.span`\n display: inline-block;\n vertical-align: middle;\n padding: 0 ${ContentSpacing.space16} 0 ${ContentSpacing.space10};\n\n .elc-icon-search-suggestion {\n .elc-icon-search-magnifier {\n ${fillSearchMagnifier};\n }\n }\n`;\n\nconst SearchTermSuggestion = styled.span``;\n\nconst SearchInSuggestion = styled.span``;\n\nconst SearchTypeaheadValue = styled.span``;\n\nconst SearchTypeaheadCount = styled.span``;\n\nexport interface ISearchSuggestionListProps {\n inputValue: string;\n translations?: ITranslationsCollection;\n searchUrl?: string;\n limiteTypeaheadResults: IItemTypeahead[];\n typeaheadResults: IItemTypeahead[];\n filterParam: string;\n searchParam: string;\n searchTermSelected(searchTerm: string): () => void;\n}\n\n@translate(['inCategoryLabel'])\n@observer\nexport class SearchSuggestionList extends React.Component {\n public render() {\n const searchSuggestionsValue = classnames(\n 'elc-search-suggestion-value',\n 'js-search-suggestion-value'\n );\n\n const searchIconSuggestionClassnames = classnames(\n 'elc-search-suggestion-icon-wrapper',\n 'js-search-suggestion-icon-wrapper'\n );\n const searchIconclassnames = classnames(\n 'elc-search-suggestion-icon',\n 'js-search-suggestion-icon'\n );\n\n const circleIconSearchClassnames = classnames(\n 'elc-icon-search-circle',\n 'js-icon-search-circle'\n );\n const magnifierIconSearchClassnames = classnames(\n 'elc-icon-search-magnifier',\n 'js-icon-search-magnifier'\n );\n\n const searchSuggestionLinkClassnames = classnames(\n 'elc-search-suggestion-link',\n 'js-search-suggestion-link'\n );\n\n const searchSearchTermSuggestion = classnames(\n 'elc-search-term-suggestion',\n 'js-search-term-suggestion'\n );\n\n const searchSearchInSuggestion = classnames(\n 'elc-search-in-suggestion',\n 'js-search-in-suggestion'\n );\n\n const searchTypeaheadValue = classnames(\n 'elc-search-typeahead-value',\n 'js-search-typeahead-value'\n );\n\n const searchTypeaheadCount = classnames(\n 'elc-search-typeahead-count',\n 'js-search-typeahead-count'\n );\n\n const {\n inputValue,\n limiteTypeaheadResults,\n filterParam,\n searchParam,\n searchUrl,\n typeaheadResults,\n searchTermSelected\n } = this.props;\n const { inCategoryLabel } = this.props.translations as ITranslationsCollection;\n\n return (\n typeaheadResults.length > 0 &&\n limiteTypeaheadResults.map((typeaheadValue: IItemTypeahead) => (\n \n \n \n \n \n {inputValue}\n \n \n {inCategoryLabel}\n \n \n \n {typeaheadValue.label}\n \n \n {typeaheadValue.count ? (\n \n ({typeaheadValue.count})\n \n ) : null}\n \n ))\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport { allResultsButton, backgroundResultsButton } from '../../../theme/default-theme';\nimport { ContentSpacing, breakpoint } from 'elc-base-theme';\nimport { Button } from 'elc-buttons';\nimport { translate, ITranslationsCollection } from 'elc-service';\nimport { IItemTypeahead } from '../../../internal/interfaces/ISearchInterfaces';\nimport {\n SEARCH_TYPE_PARAM,\n PREDICTIVE_SEARCH_PARAM,\n SEARCH_TEXT_PARAM\n} from '../../constants/Search';\n\nconst SearchAllResultsButton = styled(Button)`\n width: 100%;\n height: ${ContentSpacing.space48};\n ${allResultsButton};\n`;\n\nconst SearchAllResultsButtonWrapper = styled.div`\n padding: ${ContentSpacing.space8} ${ContentSpacing.space20};\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n z-index: 1000;\n ${backgroundResultsButton};\n [dir='rtl'] & {\n left: auto;\n right: 0;\n }\n\n ${breakpoint('desktop')`\n box-shadow: none;\n background: none;\n position: relative;\n width: auto;\n padding: 0;\n margin-top: auto;\n width:100%;\n left: auto;\n `};\n`;\n\nconst SeeAllResultsLink = styled.a``;\n\nexport interface ISearchSuggestionButtonProps {\n inputValue: string;\n translations?: ITranslationsCollection;\n typeaheadResults: IItemTypeahead[];\n searchUrl?: string;\n searchParam: string;\n}\n\n@translate(['viewAllResultsLabel'])\n@observer\nexport class SearchSuggestionButton extends React.Component {\n public render() {\n const resultsButtonSearchClassnames = classnames(\n 'elc-results-search-button',\n 'js-results-search-button'\n );\n\n const { searchUrl, searchParam, inputValue } = this.props;\n const { viewAllResultsLabel } = this.props.translations as ITranslationsCollection;\n\n return (\n \n \n \n {viewAllResultsLabel}\n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport * as classnames from 'classnames';\nimport { ContentSpacing, breakpoint } from 'elc-base-theme';\nimport { translate, ITranslationsCollection } from 'elc-service';\nimport { IItemTypeahead } from '../../../internal/interfaces/ISearchInterfaces';\nimport { Heading5 } from 'elc-typography';\nimport { SearchSuggestionList } from './SearchSuggestionList';\nimport { SearchSuggestionButton } from './SearchSuggestionButton';\nimport { SEARCH_PARAM, STATE_PARAM, SEARCH_VIEW } from '../../constants/Search';\n\nconst SearchSuggestionContainer = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n ${breakpoint('desktop')`\n width: 25%;\n justify-content: space-between;\n `};\n`;\n\nconst SearchSuggestionsWrapper = styled.ul`\n width: auto;\n height: 100%;\n padding: ${ContentSpacing.space10} 0;\n display: flex;\n flex-direction: column;\n ${breakpoint('desktop')`\n padding: ${ContentSpacing.space20} ${ContentSpacing.space24} 0;\n `};\n`;\n\nconst SearchSuggestionHeading = styled(Heading5)`\n padding-bottom: ${ContentSpacing.space20};\n`;\n\nexport interface ISearchSuggestionProps {\n inputValue: string;\n translations?: ITranslationsCollection;\n searchUrl?: string;\n resultsLoaded: boolean;\n limiteTypeaheadResults: IItemTypeahead[];\n typeaheadResults: IItemTypeahead[];\n searchTermSelected(searchTerm: string): () => void;\n view: number;\n}\n\n@translate(['suggestedTopFilters'])\n@observer\nexport class SearchSuggestion extends React.Component {\n public render() {\n const searchSuggestionContainer = classnames(\n 'elc-search-suggestion-container',\n 'js-search-suggestion-container'\n );\n const searchSuggestionsWrapper = classnames(\n 'elc-search-suggestion-wrapper',\n 'js-search-suggestion-wrapper'\n );\n const searchTypeaheadTitle = classnames(\n 'elc-search-typeahead-title',\n 'js-search-typeahead-title'\n );\n\n const {\n inputValue,\n limiteTypeaheadResults,\n typeaheadResults,\n resultsLoaded,\n searchTermSelected,\n view\n } = this.props;\n const { suggestedTopFilters } = this.props.translations as ITranslationsCollection;\n const searchUrl = `${this.props.searchUrl}`;\n\n return (\n resultsLoaded &&\n searchUrl && (\n <>\n {typeaheadResults.length > 0 && (\n \n \n \n {suggestedTopFilters}\n \n \n \n \n )}\n {SEARCH_VIEW.OVERLAY === view ? (\n \n ) : null}\n \n )\n );\n }\n}\n","export const SearchConfigs = {\n hideSorting: true,\n filterData: {\n filtersTitle: '',\n filtersDisplayType: '',\n generalKeys: [],\n filterSets: []\n }\n};\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { translate, ITranslationsCollection, ServiceView } from 'elc-service';\nimport { PRODUCT_GRID } from 'elc-service-view-names';\nimport styled from 'styled-components';\nimport { IItem } from '../../internal/interfaces/ISearchInterfaces';\nimport { IItemTypeahead, INumRecs, IContentItem } from '../interfaces/ISearchInterfaces';\nimport { SearchSuggestion } from '../views/search-suggestion/SearchSuggestion';\nimport * as classnames from 'classnames';\nimport { SearchResultsMessage } from './SearchResultsMessage';\nimport { SearchConfigs } from '../configs/SearchConfigs';\nimport { TOGGLE_TYPE } from '../constants/Search';\n\nexport interface ISearchMppGrid {\n config: {\n content?: IContentItem[];\n searchItems: IItem[];\n bestSellerItems: IItem[];\n filterData: {\n filtersTitle: string;\n filtersDisplayType: string;\n generalKeys: object[];\n filterSets: object[];\n };\n productGridBreakpoints?: object;\n hideProductPrice?: boolean;\n hideProductBadge?: boolean;\n showSubDisplayName?: boolean;\n hideProductRating?: boolean;\n enableNotifyMe?: boolean;\n enableQuickView?: boolean;\n enableMobileQuickView?: boolean;\n searchUrl?: string;\n ctaType?: string;\n enableAutoReplenishment?: boolean;\n autoReplenishOptions?: number[];\n autoReplenishToggleType?: TOGGLE_TYPE;\n };\n className?: string;\n inputValue: string;\n resultsLoaded: boolean;\n isLoading: boolean;\n translations?: ITranslationsCollection;\n numRecs: INumRecs;\n limiteTypeaheadResults: IItemTypeahead[];\n typeaheadResults: IItemTypeahead[];\n resultType: number;\n adjustedTerm: string;\n searchTermSelected(searchTerm: string): () => void;\n view: number;\n}\n\nconst SearchResultsWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`;\n\nconst SearchGridWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`;\n\n@translate(['bestSellersProductsTitle'])\n@observer\nexport class SearchGrid extends React.Component {\n public static defaultProps: ISearchMppGrid;\n public render() {\n const searchresultsWrapper = classnames(\n 'elc-search-results-wrapper',\n 'js-search-results-wrapper'\n );\n const searchresultsWrappersMessage = classnames(\n 'elc-search-results-wrapper-message',\n 'js-search-results-wrapper-message'\n );\n\n const searchGridClassnames = classnames(\n 'elc-search-grid-wrapper',\n 'js-search-grid-wrapper'\n );\n\n const translations = this.props.translations as ITranslationsCollection;\n const {\n inputValue,\n resultsLoaded,\n numRecs,\n adjustedTerm,\n limiteTypeaheadResults,\n typeaheadResults,\n resultType,\n searchTermSelected,\n view,\n config: {\n content,\n searchItems: searchProducts,\n bestSellerItems: bestSellers,\n productGridBreakpoints,\n hideProductPrice,\n hideProductBadge,\n showSubDisplayName,\n hideProductRating,\n enableNotifyMe,\n enableQuickView,\n enableMobileQuickView,\n searchUrl,\n ctaType,\n enableAutoReplenishment,\n autoReplenishOptions,\n autoReplenishToggleType\n }\n } = this.props;\n\n const searchDrupalConfigs = {\n content,\n productGridBreakpoints,\n hideProductBadge,\n showSubDisplayName,\n hideProductPrice,\n hideProductRating,\n enableNotifyMe,\n enableQuickView,\n enableMobileQuickView,\n hideSorting: SearchConfigs.hideSorting,\n filterData: SearchConfigs.filterData,\n translations,\n ctaType,\n enableAutoReplenishment,\n autoReplenishOptions,\n autoReplenishToggleType\n };\n\n const searchViewConfig = {\n items: searchProducts,\n ...searchDrupalConfigs,\n searchUrl\n };\n\n const bestSellerViewConfig = {\n items: bestSellers,\n ...searchDrupalConfigs\n };\n\n return searchViewConfig.items.length > 0 && resultsLoaded ? (\n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport styled from 'styled-components';\nimport { ITranslationsCollection, translate } from 'elc-service';\nimport * as classnames from 'classnames';\nimport { Heading5 } from 'elc-typography';\nimport { INumRecs, IReplacements } from '../interfaces/ISearchInterfaces';\nimport {\n PRODUCTS_IN_OVERLAY,\n RESULTS_MESSAGE,\n SEARCH_TERM,\n RECS_COUNT,\n RESULTS_COUNT,\n ADJUSTED_SEARCH_TERM,\n SEARCH_VIEW\n} from '../constants/Search';\nimport {\n searchResultsHeader,\n bestSellerTitleMobile,\n filterHeadingTheme,\n bestSellerTitle\n} from '../../theme/default-theme';\nimport { ContentSpacing, breakpoint } from 'elc-base-theme';\n\nconst {\n RESULTS_FOUND,\n RESULTS_FOUND_OVERLAY,\n NO_RESULTS,\n RESULTS_ADJUSTMENT,\n NONE\n} = RESULTS_MESSAGE;\n\nconst ResultsMessageWrapper = styled.div`\n padding: 0;\n`;\n\nexport interface ISearchResults {\n inputValue: string;\n resultsLoaded: boolean;\n translations?: ITranslationsCollection;\n numRecs: INumRecs;\n resultType: number;\n adjustedTerm?: string;\n view: number;\n}\n\nconst SearchTermWrapper = styled.span`\n ${searchResultsHeader};\n`;\n\nconst SearchedTermWrapper = styled.span``;\n\nconst TitleWrapper = styled(Heading5)`\n text-align: left;\n padding: ${ContentSpacing.space16} 0;\n ${bestSellerTitleMobile};\n ${filterHeadingTheme};\n [dir='rtl'] & {\n text-align: right;\n }\n\n ${breakpoint('desktop')`\n text-align: center;\n padding: ${ContentSpacing.space16} 0 ${ContentSpacing.space24} 0;\n ${bestSellerTitle};\n [dir='rtl'] & {\n text-align: center;\n }\n `};\n`;\n\nconst SearchTerm = styled.p``;\n\n@translate([\n 'noResultsMessage',\n 'bestSellersProductsTitle',\n 'resultsFoundMessage',\n 'resultsFoundMessageOverlay',\n 'searchAdjustmentMessage'\n])\n@observer\nexport class SearchResultsMessage extends React.Component {\n private getViewType = (type: number) => {\n return SEARCH_VIEW.OVERLAY === type ? 'Overlay' : 'Results';\n };\n // Get translated string after replacing the keywords with the corresponding values\n private getMessageAndClasses = () => {\n const {\n resultsFoundMessage,\n resultsFoundMessageOverlay,\n noResultsMessage,\n searchAdjustmentMessage\n } = this.props.translations as ITranslationsCollection;\n\n const {\n inputValue = '',\n numRecs: { totalNumRecs, lastRecNum },\n adjustedTerm,\n resultType,\n view\n } = this.props;\n\n let searchResultMessageClassNames = '';\n let message = '';\n let dataTestId = '';\n let parts;\n\n // Keywords (in translatable fields) and values mapping\n const replacements: IReplacements = {\n [SEARCH_TERM]: inputValue,\n [RECS_COUNT]:\n lastRecNum && lastRecNum >= PRODUCTS_IN_OVERLAY ? PRODUCTS_IN_OVERLAY : lastRecNum,\n [RESULTS_COUNT]: totalNumRecs,\n [ADJUSTED_SEARCH_TERM]: adjustedTerm || ''\n };\n\n // A regEx containing all the keywords in the translatable fields\n const regEx = new RegExp(Object.keys(replacements).join('|'), 'gi');\n\n switch (resultType) {\n case RESULTS_FOUND:\n searchResultMessageClassNames = classnames(\n 'elc-search-result-page-message',\n 'js-search-result-page-message'\n );\n dataTestId = `SEA-Display-Message-${this.getViewType(view)}`;\n const searchedTermClassNames = classnames(\n 'elc-search-searched-term-wrapper',\n 'js-search-searched-term-wrapper'\n );\n parts = resultsFoundMessage.split(new RegExp(`(${SEARCH_TERM})`, 'gi'));\n message = parts.map((part: string) => {\n if (part === SEARCH_TERM) {\n return (\n \n {inputValue}\n \n );\n } else if (part.includes(RESULTS_COUNT)) {\n return part.replace(RESULTS_COUNT, replacements[RESULTS_COUNT].toString());\n }\n\n return part;\n });\n break;\n case RESULTS_ADJUSTMENT:\n searchResultMessageClassNames = classnames(\n 'elc-search-result-adjustment-message',\n 'js-search-result-adjustment-message'\n );\n dataTestId = `SEA-Display-Message-Spell-Check-${this.getViewType(view)}`;\n message = searchAdjustmentMessage.replace(regEx, (matched: keyof IReplacements) => {\n return replacements[matched];\n });\n break;\n case RESULTS_FOUND_OVERLAY:\n searchResultMessageClassNames = classnames(\n 'elc-search-result-overlay-message',\n 'js-search-result-overlay-message'\n );\n dataTestId = `SEA-Display-Message-${this.getViewType(view)}`;\n message = resultsFoundMessageOverlay.replace(\n regEx,\n (matched: keyof IReplacements) => {\n return replacements[matched];\n }\n );\n break;\n case NO_RESULTS:\n searchResultMessageClassNames = classnames(\n 'elc-search-no-result-message',\n 'js-search-no-result-message'\n );\n dataTestId = `SEA-NoResultsMessage-${this.getViewType(view)}`;\n const searchTermClassNames = classnames(\n 'elc-search-search-term-wrapper',\n 'js-search-search-term-wrapper'\n );\n parts = noResultsMessage.split(new RegExp(`(${SEARCH_TERM})`, 'gi'));\n message = parts.map((part: string) =>\n part === SEARCH_TERM ? (\n \n {inputValue}\n \n ) : (\n part\n )\n );\n break;\n default:\n return {\n searchResultMessageClassNames,\n message,\n dataTestId\n };\n }\n\n return {\n searchResultMessageClassNames,\n message,\n dataTestId\n };\n };\n\n public render() {\n const { bestSellersProductsTitle } = this.props.translations as ITranslationsCollection;\n const resultsMessageWrapperClassNames = classnames(\n 'elc-search-results-message-wrapper',\n 'js-search-results-message-wrapper'\n );\n\n const { resultType, resultsLoaded } = this.props;\n\n const { searchResultMessageClassNames, message, dataTestId } = this.getMessageAndClasses();\n\n return resultsLoaded && resultType === NONE ? null : (\n \n \n {message}\n \n {resultType === NO_RESULTS ? (\n {bestSellersProductsTitle}\n ) : null}\n \n );\n }\n}\n","import { Colors, Fonts, ContentSpacing } from 'elc-base-theme';\n\nexport const selectedSizeBoxTheme = `\n background-color: ${Colors.primary900};\n color: ${Colors.white};\n`;\n\nexport const sizeBoxTheme = `\n border-color: ${Colors.black};\n`;\n\nexport const selectedShadeImageTheme = `\n border-color: ${Colors.black};\n box-shadow: 0 0 1px 1px ${Colors.black};\n`;\n\nexport const shadeImageTheme = `\n border-color: ${Colors.white};\n\n &:hover {\n box-shadow: 0 1px ${Colors.white};\n border-color: ${Colors.black};\n }\n`;\n\nexport const sizePickerLabelTheme = `\n color: ${Colors.blackDisabledEmphasis};\n`;\n\nexport const anchorTheme = `\n cursor: pointer;\n text-decoration: underline;\n font-family: ${Fonts.roboto};\n font-size: ${ContentSpacing.space12};\n`;\n\nexport const anchorUppercaseTheme = `\n text-transform: uppercase;\n font-weight: 700;\n ${anchorTheme};\n`;\n\nexport const anchorLowercaseTheme = `\n text-transform: lowercase;\n ${anchorTheme};\n`;\n\nexport const secondaryTextTheme = `\n font-size: ${ContentSpacing.space12};\n font-family: ${Fonts.roboto};\n color: ${Colors.primary700};\n text-transform: lowercase;\n vertical-align: middle;\n`;\n\nexport const borderTopTheme = `\n border-top: 1px solid ${Colors.primary400};\n`;\n\nexport const borderBottomTheme = `\n border-bottom: 1px solid ${Colors.primary400};\n`;\n\nexport const MainColumnTheme = `\n background: ${Colors.primary100};\n`;\n\nexport const inputBorderTheme = `\t\n border-radius: 0;\n border: 1px solid ${Colors.primary400};\t\t\n`;\n\nexport const SideColumnTheme = `\n background: ${Colors.white};\n box-shadow: ${ContentSpacing.space4} 0 ${ContentSpacing.space4} 0 ${Colors.blackLightEmphasis};\n`;\nexport const StickyRowTheme = `\n background: ${Colors.white};\n box-shadow: 0 1px 1px 0 ${Colors.blackLightEmphasis};\n`;\n\nexport const backgroundWhiteTheme = `\n background: ${Colors.white};\n`;\n\nexport const backgroundOverlay = `\n background: rgba(0, 0, 0, 0.4);\n`;\n\nexport const iconStrokeTheme = `\n stroke: ${Colors.primary700};\n stroke-width: 2px;\n`;\n\nexport const columnHeadingTheme = `\n text-transform: none;\n font-weight: bold;\n font-size: ${ContentSpacing.space16};\n letter-spacing: normal;\n`;\n\nexport const filterHeadingTheme = `\n font-weight: normal;\n text-transform: uppercase;\n`;\n\nexport const clearButtonTheme = `\n background: none;\n border: none;\n color: ${Colors.blackLightEmphasis};\n font-family: ${Fonts.robotoMedium};\n font-size: ${ContentSpacing.space20};\n`;\n\nexport const customInputTheme = `\n font-size: ${ContentSpacing.space24};\n border: 0;\n color: ${Colors.primary800};\n font-family: ${Fonts.roboto};\n ::placeholder {\n color: ${Colors.blackLightEmphasis};\n font-family: ${Fonts.robotoMedium};\n }\n`;\n\nexport const inputBorderMobileTheme = `\n border-radius: 0;\n border-width: 1px 0;\t\t\n border-style: solid;\t\t\n border-color: ${Colors.primary500};\t\t\n`;\n\nexport const clearButtonThemeMobile = `\n background: none;\n border: none;\n color: ${Colors.blackMediumEmphasis};\n font-family: ${Fonts.robotoMedium};\n font-size: 13px;\n letter-spacing: 0.${ContentSpacing.space16};\n`;\n\nexport const customInputThemeMobile = `\n font-size: 13px;\n border: 0;\n color: ${Colors.primary700};\n font-family: ${Fonts.robotoMedium};\n letter-spacing: 0.${ContentSpacing.space16};\n line-height: ${ContentSpacing.space20};\n ::placeholder {\n color: ${Colors.primary700};\n font-family: ${Fonts.robotoMedium};\n }\n`;\nexport const noResultsText = `\n color: ${Colors.black};\n font-family: ${Fonts.roboto};\n font-size: 14px;\n letter-spacing: 0.25px;\n`;\nexport const noResultsTextMobile = `\n color: ${Colors.black};\n font-family: ${Fonts.roboto};\n font-size: ${ContentSpacing.space12};\n line-height: ${ContentSpacing.space16};\n`;\nexport const bestSellerTitle = `\n font-family: ${Fonts.robotoMedium};\n font-size: ${ContentSpacing.space16};\n line-height: ${ContentSpacing.space16};\n letter-spacing: 0.15px;\n`;\nexport const bestSellerTitleMobile = `\n font-size: 18px;\n line-height: 22px;\n letter-spacing: 0;\n`;\n\nexport const fillSearchMagnifier = `\n fill: ${Colors.primary600};\n`;\n\nexport const suggestionText = `\n font-size: 14px;\n font-family:${Fonts.robotoMedium};\n white-space: nowrap;\n text-overflow: ellipsis;\n text-decoration: none;\n`;\nexport const suggestionWrapper = `\n border-bottom: 0.5px solid #979797;\n`;\n\nexport const allResultsButton = `\n font-family: ${Fonts.robotoMedium};\n font-size: ${ContentSpacing.space16};\n letter-spacing: 1px;\n line-height: ${ContentSpacing.space24};\n`;\n\nexport const backgroundResultsButton = `\n background: ${Colors.white};\n box-shadow: 0 -${ContentSpacing.space4} ${ContentSpacing.space8} 0 rgba(0, 0, 0, 0.2);\n`;\n\nexport const searchResultsHeader = `\n font-weight: bold;\n`;\n\nexport const fontBold = `\n font-weight: bold;\n`;\n\nexport const headerLabel = `\n color: ${Colors.primary800};\n font-family: ${Fonts.robotoMedium};\n font-size: 16px;\n letter-spacing: 0.15px;\n line-height: ${ContentSpacing.space20};\n`;\n\nexport const filtersTitleLabel = `\n color: ${Colors.primary800};\n font-family: ${Fonts.robotoMedium};\n font-weight: bold;\n font-size: 18px;\n letter-spacing: 0.18px;\n line-height: 42px;\n text-transform: uppercase;\n`;\n\nexport const dropdownSortLabel = `\n color: ${Colors.primary800};\n font-family: ${Fonts.roboto};\n font-size: 20px;\n letter-spacing: 0.${ContentSpacing.space24};\n line-height: ${ContentSpacing.space32};\n`;\n\nexport const mobileSortLabel = `\n font-size: 14px;\n letter-spacing: 0.${ContentSpacing.space24};\n line-height: ${ContentSpacing.space20};\n ::placeholder {\n color: ${Colors.primary800};\n font-family: ${Fonts.roboto};\n text-align: center;\n }\n`;\n\nexport const MobileSelectTheme = `\n font-family: ${Fonts.robotoMedium};\n font-size: 14px;\n color: ${Colors.primary700};\n`;\n\nexport const mobileOption = `\n cursor: pointer;\n color: ${Colors.black};\n font-family: ${Fonts.robotoMedium};\n font-size: ${ContentSpacing.space16};\n height: ${ContentSpacing.space16};\n letter-spacing: 0.15px;\n line-height: ${ContentSpacing.space16};\n`;\n\nexport const mobileOptionLabel = `\n background: ${Colors.primary300};\n`;\n\nexport const removeIconFilter = `\n stroke: ${Colors.primary600};\n`;\n\nexport const filterValue = `\n color: ${Colors.primary600};\n`;\n\nexport const clearFilterButtonMobile = `\n background: transparent;\n color: ${Colors.black};\n text-decoration: underline;\n`;\n\nexport const clearFilterButtonDesktop = `\n background: ${Colors.black};;\n color: ${Colors.white};\n text-decoration: none;\n`;\n\nexport const filtersCount = `\n letter-spacing: 0.24px;\n line-height: ${ContentSpacing.space20};\n font-size: 14px;\n`;\n\nexport const searchTab = `\n background-color: transparent;\n color: ${Colors.black};\n`;\n\nexport const transparentButton = `\n border: none;\n background-color: transparent;\n`;\n"],"sourceRoot":""}