@sledge-app/react-instant-search 0.0.76 → 0.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SearchResultWidget/SearchResultWidget.d.ts +1 -0
- package/dist/components/SearchResultWidget/SearchResultWidget.d.ts.map +1 -1
- package/dist/sledge-react-instant-search.cjs +1 -1
- package/dist/sledge-react-instant-search.cjs.map +1 -1
- package/dist/sledge-react-instant-search.js +47 -26
- package/dist/sledge-react-instant-search.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sledge-react-instant-search.js","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/components/SelectField/SelectField.tsx","../../../core/api/shopify.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../../core/hooks/usePrevious.ts","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../../core/lib/animation.ts","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../../core/api/instant-search.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/Global/index.ts","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://sledge-api-preprod.offstack.io';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.offstack.io';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n CUSTOM_ROUTE_PAGE: 'data-custom-route-page',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size'\n },\n INSTANT_SEARCH: {\n QUERY_KEYWORD: 'data-query-keyword',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n WISHLIST: {\n ELEMENT_BADGE_FLOATING_ICON: 'wishlist-badge-floating-icon',\n ELEMENT_BADGE_FLOATING_FULL: 'wishlist-badge-floating-full',\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [10, 25, 50, 100];\nexport const SEARCH_RESULT_URL = '/pages/search-result';\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n }\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\n","import useSWR from 'swr';\n\nexport { useSWR };\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (cname: string, cvalue: any, expired: number, expiredBy: 'day' | 'hour' | 'minute' | 'second') => {\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const detectInitSelector = (element: any, init: any) => {\n let hasRunning = false;\n\n document.body.addEventListener('DOMNodeInserted', () => {\n if (!hasRunning && element) {\n hasRunning = true;\n\n init();\n }\n });\n};\n\nexport const getTextBetween = (start: string, end: string, text: string) => {\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (str: string, find: any[], replace: any[]) => {\n for (var i = 0; i < find.length; i++) {\n str = str.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return str;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (element: any, headerOffset: number) => {\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const isTokenExpired = (token: string) => {\n const expiry = JSON.parse(atob(token.split('.')[1])).exp;\n return Math.floor(new Date().getTime() / 1000) >= expiry;\n};\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '' }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setProgress((+value / total) * 100), 150);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: string;\n defaultChecked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, defaultChecked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" defaultChecked={defaultChecked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\nimport React from 'react';\n\nexport interface ISliderProps {\n defaultValue: number[];\n min: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { defaultValue, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n const [value, setValue] = React.useState(defaultValue);\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n defaultValue={defaultValue}\n min={min}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => {\n setValueCommit && setValueCommit(valueCommit);\n setValue(valueCommit);\n }}\n onValueChange={(valueChange: number[]) => {\n setValueChange && setValueChange(valueChange);\n setValue(valueChange);\n }}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#23BC45\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#23BC45\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n </SliderElement.Root>\n </form>\n );\n};\n","import { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n}\n\nexport const Pagination = ({ currentPage, totalPage, totalResult, onChange }: IPaginationProps) => {\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={17} height={17} color=\"black\" />\n </button>\n <span>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={17} height={17} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(${image})`\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.6334 3.33398C23.9899 3.33398 27.5887 6.65342 28.0324 10.8989L28.1562 10.9003C30.5729 10.9003 33.5112 12.5053 34.5029 17.007L35.8179 27.1853C36.2896 30.4703 35.6996 33.1053 34.0612 34.9953C32.4312 36.8753 29.8512 37.8703 26.5996 37.8703H12.6862C9.11458 37.8703 6.62625 36.9953 5.07792 35.197C3.52292 33.3936 3.00292 30.6886 3.53292 27.1586L4.82625 17.1153C5.67625 12.5103 8.78458 10.9003 11.1912 10.9003C11.399 8.98444 12.2629 7.16182 13.6334 5.79565C15.2084 4.23065 17.3801 3.33398 19.5984 3.33398H19.6334ZM28.1562 13.4003H11.1912C10.4562 13.4003 7.99958 13.697 7.29458 17.5036L6.00792 27.5036C5.58958 30.3086 5.91292 32.3386 6.97125 33.567C8.01625 34.7803 9.88625 35.3703 12.6862 35.3703H26.5996C28.3462 35.3703 30.7312 35.022 32.1712 33.3586C33.3146 32.0403 33.7079 30.077 33.3412 27.522L32.0429 17.4353C31.4896 14.9503 30.0296 13.4003 28.1562 13.4003ZM24.4942 18.0405C25.1842 18.0405 25.7826 18.6005 25.7826 19.2905C25.7826 19.9805 25.2609 20.5405 24.5709 20.5405H24.4942C23.8042 20.5405 23.2442 19.9805 23.2442 19.2905C23.2442 18.6005 23.8042 18.0405 24.4942 18.0405ZM14.7774 18.0405C15.4674 18.0405 16.0657 18.6005 16.0657 19.2905C16.0657 19.9805 15.5424 20.5405 14.8524 20.5405H14.7774C14.0874 20.5405 13.5274 19.9805 13.5274 19.2905C13.5274 18.6005 14.0874 18.0405 14.7774 18.0405ZM19.6284 5.83398H19.6034C18.0351 5.83398 16.5067 6.46565 15.3984 7.56732C14.4956 8.46609 13.9051 9.64764 13.7141 10.8995L25.5129 10.9C25.0846 8.03628 22.6082 5.83398 19.6284 5.83398Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={14} height={14}>\n <path d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\" />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { Popover } from '@core/components';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label || placeholder;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","declare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n var myHeaders = new Headers();\n myHeaders.append('Content-Type', 'application/json');\n\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: id,\n quantity: quantity\n });\n });\n\n var raw = JSON.stringify({\n items: items\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n if (!window?.Shopify?.routes) return;\n\n return await fetch(`${window.Shopify.routes.root}cart/add.js`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n var raw = JSON.stringify({\n products: products\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/bulk`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/info`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistDetail: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/detail/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/check/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'DELETE',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/clear`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/cart`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const handleCheckWishlist = async (init?: boolean) => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && init) {\n response = wishlistChecked;\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n setIsWishlist(!isWishlist);\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistBadgeUpdate) {\n if (triggerRenderMultipleComponent?.wishlist?.badge?.trigger && typeof wishlistChecked !== 'boolean')\n triggerRenderMultipleComponent?.wishlist?.badge?.trigger(!triggerRenderMultipleComponent?.wishlist?.badge?.value);\n\n window.sledgeWishlistBadgeUpdate();\n }\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: 'failed add to wishlist',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.wishlist) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist(true);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '');\n }, [isRenderApp]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderApp?.wishlist) return;\n\n handleCheckWishlist(true);\n }, [isRenderApp, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n textCancel: button_cancel_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share } = dataSettings?.languages?.widget || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 17V20C15 20.2652 14.8946 20.5196 14.7071 20.7071C14.5196 20.8946 14.2652 21 14 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V8C3 7.73478 3.10536 7.48043 3.29289 7.29289C3.48043 7.10536 3.73478 7 4 7H7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 3H8C7.44772 3 7 3.44772 7 4V16C7 16.5523 7.44772 17 8 17H18C18.5523 17 19 16.5523 19 16V4C19 3.44772 18.5523 3 18 3Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistBadgeUpdate) {\n if (triggerRenderMultipleComponent?.wishlist?.badge?.trigger) triggerRenderMultipleComponent?.wishlist?.badge?.trigger(!triggerRenderMultipleComponent?.wishlist?.badge?.value);\n\n window.sledgeWishlistBadgeUpdate();\n }\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist,\n textCancel: 'Cancel'\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: 'Failed',\n message: 'Failed add to wishlist, please try again',\n textCancel: 'Cancel'\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n document.body.addEventListener('DOMNodeInserted', () => {\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n });\n };\n\n const handleClick = async () => {\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: 'Are you sure want to add this to your wishlist item?',\n message: `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: 'Add to your wishlist',\n textCancel: 'Cancel',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : '',\n textCancel: 'Cancel'\n });\n\n handleCopyShareLink();\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? 'Adding...' : 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n options?: number[];\n defaultLimitOptions?: number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ options, defaultLimitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n let getOptions: number[] | undefined = options || defaultLimitOptions;\n\n const handleChangeLimit = (value: string) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {getOptions && Boolean(getOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={getOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || getOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort || wishlistSort[0]?.value}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n defaultLimitOptions?: number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async (id: any, query?: any, token?: string) => {\n const { page, limit, sort, keyword, rating } = query || {};\n\n let convertId = sanitizeDataId(id);\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n rating: rating || ''\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (id: any) => {\n let convertId = sanitizeDataId(id);\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/info/${convertId}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/info/ids/${convertIds.join(',')}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var formdata = new FormData();\n [...files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: formdata,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'DELETE',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media/${id}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n user: {\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n },\n product: {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n },\n review: {\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { usePrevious } from '@core/hooks';\nimport { scrollToElement } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n sledgeProductReviewRatingUpdate(): void;\n }\n}\n\nexport interface IRatingProps {\n value?: any;\n size?: ('xs' | 'sm' | 'md') | string;\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const { value, size = 'md', params, withSkeletonLoading = true, isScrollToElementWidget = true, data: propsData } = props;\n const { productId } = params || {};\n\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n const [totalReview, setTotalReview] = React.useState(0);\n const [averageReview, setAverageReview] = React.useState('0');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ productId });\n\n const { fill_color, outline_color } = dataSettings?.display?.rating || {};\n\n const handleProductRatingInfo = async (validateProductId: any) => {\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (!propsData) {\n response = await getReviewInfo(validateProductId);\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n } else {\n data = propsData;\n run = true;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (value && !params) {\n setAverageReview(value);\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement(document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET), 50);\n }, 200);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.productReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewRatingUpdate = () => {\n setIsLoading(true);\n\n handleRefreshProductRating();\n };\n }\n\n if (size === 'xs') {\n setSizing({\n width: 14.4,\n height: 14.4\n });\n } else if (size === 'sm') {\n setSizing({\n width: 18,\n height: 18\n });\n } else {\n setSizing({\n width: 28.8,\n height: 28.8\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || '');\n }, [isRenderApp, productId]);\n\n return (\n <div className=\"sledge-product-review__rating\" onClick={handleOnClick}>\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <>\n <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ display: 'none' }} id=\"sledge-product-review-rating-icon-svg-store\">\n <symbol id=\"sledge-product-review-icons-rating-icon-fill\" viewBox=\"0 0 30 29\" fill={fill_color || '#23BC45'}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.00014 17.7L1.20174 12.9C0.107339 12.0248 0.587339 10.2648 1.97614 10.0664L10.2001 9.69998L13.7121 0.895176C13.9569 0.407176 14.4545 0.0999756 15.0001 0.0999756C15.5457 0.0999756 16.0433 0.408776 16.2881 0.895176L19.8001 9.69998L28.0241 10.0664C29.4129 10.2648 29.8929 12.0248 28.7985 12.9L23.0001 17.7L24.5825 27.0712C24.7649 28.3496 23.4369 29.3064 22.2833 28.7288L15.0001 24.1L7.71694 28.7272C6.56174 29.3048 5.23534 28.348 5.41774 27.0696L7.00014 17.7Z\"\n />\n </symbol>\n <symbol id=\"sledge-product-review-icons-rating-icon-line\" viewBox=\"0 0 30 29\" stroke={outline_color || '#8D9196'} fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.00014 17.7L1.20174 12.9C0.107339 12.0248 0.587339 10.2648 1.97614 10.0664L10.2001 9.69998L13.7121 0.895176C13.9569 0.407176 14.4545 0.0999756 15.0001 0.0999756C15.5457 0.0999756 16.0433 0.408776 16.2881 0.895176L19.8001 9.69998L28.0241 10.0664C29.4129 10.2648 29.8929 12.0248 28.7985 12.9L23.0001 17.7L24.5825 27.0712C24.7649 28.3496 23.4369 29.3064 22.2833 28.7288L15.0001 24.1L7.71694 28.7272C6.56174 29.3048 5.23534 28.348 5.41774 27.0696L7.00014 17.7Z\"\n strokeWidth=\"1.4\"\n />\n </symbol>\n <defs>\n <g id=\"sledge-product-review-icons-rating-icon\">\n <use href=\"#sledge-product-review-icons-rating-icon-line\" className=\"sledge-product-review__rating-icon-line\" />\n <use href=\"#sledge-product-review-icons-rating-icon-fill\" className=\"sledge-product-review__rating-icon-fill\" />\n </g>\n </defs>\n </svg>\n\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n let ratingValue = Math.floor(parseFloat(averageReview));\n\n let getCommaValue = String(averageReview).includes(',') ? String(averageReview).split(',') : [];\n let getCommaValueDot = String(averageReview).includes('.') ? String(averageReview).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n return (\n <svg {...sizing} viewBox=\"0 0 30 29\" data-product-review-rating-fill={item <= ratingValue ? 'full' : fillOther} key={index}>\n <use href=\"#sledge-product-review-icons-rating-icon\" />\n </svg>\n );\n })}\n {!value && params ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n","import { Button, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoading?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings, params, onAfterAddReview }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"grey-100\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview)}\n style={display_button_write_review_style}\n >\n <svg width={16} height={17} viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8323 14.1264C14.1083 14.1264 14.3323 14.3504 14.3323 14.6264C14.3323 14.9024 14.1083 15.1264 13.8323 15.1264H8.99701C8.72101 15.1264 8.49701 14.9024 8.49701 14.6264C8.49701 14.3504 8.72101 14.1264 8.99701 14.1264H13.8323ZM10.7429 2.93576C10.7762 2.96176 11.8915 3.82843 11.8915 3.82843C12.2969 4.06976 12.6135 4.5011 12.7335 5.01176C12.8529 5.5171 12.7662 6.03843 12.4882 6.47909C12.4864 6.48203 12.4845 6.48494 12.4781 6.49358L12.4731 6.50025C12.4279 6.55972 12.2318 6.80776 11.2417 8.04815C11.2325 8.06441 11.2221 8.07963 11.2107 8.09443C11.1941 8.11624 11.1759 8.13628 11.1565 8.15453C11.089 8.23956 11.0176 8.3289 10.9426 8.42283L10.7907 8.61313C10.4772 9.00579 10.1053 9.47139 9.66407 10.0236L9.43764 10.3071C8.58586 11.3732 7.49499 12.7382 6.09755 14.4864C5.79155 14.8678 5.33288 15.0898 4.84021 15.0958L2.41421 15.1264H2.40755C2.17621 15.1264 1.97488 14.9678 1.92088 14.7418L1.37488 12.4278C1.26221 11.9484 1.37421 11.4538 1.68155 11.0698L7.96155 3.2151C7.96421 3.21243 7.96621 3.2091 7.96888 3.20643C8.65755 2.3831 9.90288 2.26176 10.7429 2.93576ZM7.26136 5.69133L2.46221 11.6944C2.34821 11.8371 2.30621 12.0211 2.34821 12.1978L2.80221 14.1211L4.82821 14.0958C5.02088 14.0938 5.19888 14.0078 5.31688 13.8611C5.92454 13.1008 6.68825 12.1452 7.47345 11.1627L7.75125 10.815L8.02952 10.4668C8.76591 9.54526 9.4934 8.63471 10.1021 7.87258L7.26136 5.69133ZM8.73888 3.84443L7.88603 4.91L10.7265 7.09062C11.2733 6.4058 11.633 5.95476 11.6662 5.91176C11.7755 5.73443 11.8182 5.48376 11.7609 5.24243C11.7022 4.9951 11.5482 4.78509 11.3262 4.65109C11.2789 4.61843 10.1555 3.74643 10.1209 3.71909C9.69821 3.38043 9.08155 3.4391 8.73888 3.84443Z\"\n fill=\"currentColor\"\n />\n </svg>\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { Loading, Popover, SelectField, SkeletonLoading } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoading?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n LinkComponent?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoading, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList, LinkComponent }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"grey-100\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.5919 9.13869C12.7359 9.13869 13.6666 10.0647 13.6666 11.2027C13.6666 12.3407 12.7359 13.2667 11.5919 13.2667C10.4473 13.2667 9.51593 12.3407 9.51593 11.2027C9.51593 10.0647 10.4473 9.13869 11.5919 9.13869ZM11.5919 10.1387C10.9986 10.1387 10.5159 10.616 10.5159 11.2027C10.5159 11.79 10.9986 12.2667 11.5919 12.2667C12.1846 12.2667 12.6666 11.79 12.6666 11.2027C12.6666 10.616 12.1846 10.1387 11.5919 10.1387ZM6.7202 10.7286C6.9962 10.7286 7.2202 10.9526 7.2202 11.2286C7.2202 11.5046 6.9962 11.7286 6.7202 11.7286H2.51953C2.24353 11.7286 2.01953 11.5046 2.01953 11.2286C2.01953 10.9526 2.24353 10.7286 2.51953 10.7286H6.7202ZM4.07533 2.66669C5.22 2.66669 6.15067 3.59335 6.15067 4.73135C6.15067 5.86935 5.22 6.79469 4.07533 6.79469C2.93133 6.79469 2 5.86935 2 4.73135C2 3.59335 2.93133 2.66669 4.07533 2.66669ZM4.07533 3.66669C3.48267 3.66669 3 4.14402 3 4.73135C3 5.31802 3.48267 5.79469 4.07533 5.79469C4.66867 5.79469 5.15067 5.31802 5.15067 4.73135C5.15067 4.14402 4.66867 3.66669 4.07533 3.66669ZM12.7941 4.26695C13.0701 4.26695 13.2941 4.49095 13.2941 4.76695C13.2941 5.04295 13.0701 5.26695 12.7941 5.26695H8.59407C8.31807 5.26695 8.09407 5.04295 8.09407 4.76695C8.09407 4.49095 8.31807 4.26695 8.59407 4.26695H12.7941Z\"\n fill=\"currentColor\"\n />\n </svg>\n }\n prefixSelectedLabel=\"Sort by\"\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n LinkComponent={LinkComponent}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>({\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n });\n const [averageReview, setAverageReview] = React.useState('0');\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (!summaryData) {\n response = await getReviewInfo(productId);\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n } else {\n data = summaryData;\n run = true;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"5s\" />\n ) : isLoading ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && <Rating value={String(averageReview)} size=\"md\" withSkeletonLoading={false} isScrollToElementWidget={false} />}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview} {totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"42s\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating value={item} size=\"sm\" withSkeletonLoading={false} isScrollToElementWidget={false} />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(true);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nconst fetchApi = async (url: string, method: string, body?: any) => {\n let sledgeInstantSearchAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeInstantSearchAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var requestOptions: any = {\n ...{\n method: method,\n headers: myHeaders,\n redirect: 'follow'\n },\n ...(body && {\n body: JSON.stringify(body)\n })\n };\n\n return await fetch(`${INSTANT_SEARCH_ENGINE_URL}${url}`, requestOptions)\n .then((response) => response.json())\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const search = async (index: any, body: any) => {\n return await fetchApi(`/indexes/${index}/search`, 'POST', body);\n};\n\nexport const multiSearch = async (body: any) => {\n return await fetchApi('/multi-search', 'POST', body);\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n keyword: keyword,\n result_count: resultCount\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/search`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/click`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/cart`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { API_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\n\nexport interface IProductGrid {\n className?: string;\n type: 'small' | 'medium' | 'large';\n data: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n}\n\nexport const ProductGrid = ({\n type,\n className = '',\n data,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews\n}: IProductGrid) => {\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n redirect_add_to_cart = true,\n language_button_add_to_cart = 'Add To Cart',\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <div className={`sledge__product-grid ${className}`} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency } = product || {};\n const { id: variant_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n let isLoadingAddToCart = clickedAddToCartId == variant_id;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !variants[0].inventory_quantity && showOptionOutOfStock : false;\n\n const getCards = cards\n ? cards({\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n }\n },\n showPopupComponent,\n setShowPopupComponent\n })\n : null;\n\n return cards ? (\n <React.Fragment key={index}>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: getCards }}></div> : getCards}</React.Fragment>\n ) : (\n <div className=\"sledge__product-grid-card\" key={index}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() =>\n sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\n })\n }\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${API_URL}/img/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n />\n <img src={image?.src || ''} alt=\"sledge-product-card-image\" loading=\"lazy\" onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)} />\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">Sold out</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {title ? (\n <a\n href={url}\n onClick={() =>\n sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\n })\n }\n >\n <h3 style={display_product_name_style}>{title}</h3>\n </a>\n ) : null}\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <div>{variant_title}</div>\n <div>\n <>{show_vendor ? <>Vendor: {vendor}</> : null}</>\n <> | </>\n <>{show_sku ? <>SKU: {sku}</> : null}</>\n </div>\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () =>\n handleAddToCart({\n id: variant_id,\n quantity: 1\n })\n })}\n >\n {isLoadingAddToCart ? (\n 'Adding...'\n ) : isOutOfStock ? (\n 'Sold out'\n ) : (\n <>\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.83562 1.50023C10.796 1.50023 12.4155 2.99397 12.6152 4.90442L12.6709 4.90507C13.7584 4.90507 15.0806 5.62732 15.5269 7.65307L16.1186 12.2333C16.3309 13.7116 16.0654 14.8973 15.3281 15.7478C14.5946 16.5938 13.4336 17.0416 11.9704 17.0416H5.7094C4.10215 17.0416 2.9824 16.6478 2.28565 15.8386C1.5859 15.0271 1.3519 13.8098 1.5904 12.2213L2.1724 7.70182C2.5549 5.62957 3.95365 4.90507 5.03665 4.90507C5.13014 4.04293 5.51889 3.22275 6.13562 2.60797C6.84437 1.90372 7.82162 1.50023 8.81987 1.50023H8.83562ZM12.6709 6.03007H5.03665C4.7059 6.03007 3.6004 6.16357 3.28315 7.87657L2.70415 12.3766C2.5159 13.6388 2.6614 14.5523 3.13765 15.1051C3.6079 15.6511 4.4494 15.9166 5.7094 15.9166H11.9704C12.7564 15.9166 13.8296 15.7598 14.4776 15.0113C14.9921 14.4181 15.1691 13.5346 15.0041 12.3848L14.4199 7.84582C14.1709 6.72757 13.5139 6.03007 12.6709 6.03007ZM11.023 8.11815C11.3335 8.11815 11.6027 8.37015 11.6027 8.68065C11.6027 8.99115 11.368 9.24315 11.0575 9.24315H11.023C10.7125 9.24315 10.4605 8.99115 10.4605 8.68065C10.4605 8.37015 10.7125 8.11815 11.023 8.11815ZM6.65042 8.11815C6.96092 8.11815 7.23017 8.37015 7.23017 8.68065C7.23017 8.99115 6.99467 9.24315 6.68417 9.24315H6.65042C6.33992 9.24315 6.08792 8.99115 6.08792 8.68065C6.08792 8.37015 6.33992 8.11815 6.65042 8.11815ZM8.83337 2.62522H8.82212C8.11637 2.62522 7.42862 2.90947 6.92987 3.40522C6.5236 3.80967 6.25789 4.34137 6.17193 4.90472L11.4814 4.90493C11.2887 3.61626 10.1743 2.62522 8.83337 2.62522Z\"\n fill=\"#393D4E\"\n />\n </svg>\n <span>{language_button_add_to_cart ? language_button_add_to_cart : 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n};\n","import './CollectionGrid.css';\n\nimport { Button } from '@core/components';\nimport { API_URL } from '@core/lib/const';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n}\n\nexport const CollectionGrid = ({ className = '', data }: ICollectionGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, description, url, image } = item;\n\n return (\n <div className=\"sledge__collection-grid-card\" key={index}>\n <div className=\"sledge__collection-grid-card-image\">\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-product-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-text\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n <div className=\"sledge__collection-grid-card-content-description\">{description}</div>\n </div>\n <div className=\"sledge__collection-grid-card-content-button-wrapper\">\n <Button type=\"button\" colorType=\"success\" elementType=\"hyperlink\" link={url}>\n Shop Now\n </Button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import './PageGrid.css';\n\nimport { API_URL } from '@core/lib/const';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n}\n\nexport const PageGrid = ({ className = '', data }: IPageGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, description, url, image } = item;\n\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image\">\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-product-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n <div className=\"sledge__page-grid-card-content-description\">{description}</div>\n </div>\n </div>\n </a>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import './BlogGrid.css';\n\nimport { API_URL } from '@core/lib/const';\nimport { Button } from '@core/components';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n}\n\nexport const BlogGrid = ({ className = '', data }: IBlogGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, date, description, url, image } = item;\n\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-blog-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <div className=\"sledge__blog-grid-card-title\">\n <div>\n <a href={url}>\n <div>{title}</div>\n </a>\n </div>\n </div>\n {!date?.length ? null : <div className=\"sledge__blog-grid-card-date\">{date}</div>}\n <div className=\"sledge__blog-grid-card-text\">{description}</div>\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <Button type=\"button\" colorType=\"light\" elementType=\"hyperlink\" link={url}>\n Learn More\n </Button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n withCorner?: boolean;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '', withCorner = true }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n {withCorner && <ScrollAreaElement.Corner className=\"sledge__scroll-area-corner\" />}\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'grey-100' | 'grey-300';\n animationDuration?: string;\n disableAnimation?: boolean;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, animationDuration = '8s', disableAnimation = false, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n return (\n <div\n className={`sledge__skeleton-item ${className} ${!disableAnimation ? 'sledge__skeleton-item-animation' : ''}`}\n style={{\n ...{\n width: width,\n height: height,\n WebkitAnimationDuration: animationDuration,\n animationDuration: animationDuration\n },\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"40px\" height=\"40px\" color=\"grey-300\" rounded=\"sm\" disableAnimation />\n </div>\n <SkeletonItem width=\"100%\" height=\"100%\" color=\"grey-100\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"134px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"20s\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"190px\"\n height=\"46px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"117px\" height=\"40px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || (type === 'grid' && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration={type === 'list' ? '2.5s' : '8s'}\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'grid' ? { 350: 1, 750: 3, 1024: 4 } : { 350: 1 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-image\">\n <SkeletonItem width=\"246px\" height=\"246px\" color=\"grey-300\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-text\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"100%\" height=\"70px\" color=\"grey-300\" rounded=\"lg\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem\n width=\"100%\"\n height=\"47px\"\n color=\"grey-300\"\n rounded=\"md\"\n style={{\n maxWidth: '357px'\n }}\n />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content-button-wrapper\">\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"20s\"\n style={{\n maxWidth: '117px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"grey-300\" rounded=\"md\" animationDuration=\"6s\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"17s\"\n style={{\n maxWidth: '115px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <SkeletonItem width=\"100%\" height=\"100%\" color=\"grey-100\" rounded=\"md\" animationDuration=\"10s\" />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '242px',\n marginTop: '26px',\n marginBottom: '12px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"23s\"\n style={{\n maxWidth: '80px',\n marginBottom: '27px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"80px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n maxWidth: '190px',\n marginBottom: '27px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"20s\"\n style={{\n maxWidth: '117px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderApp]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","export const OtherIndexLists = ({\n listsComponent,\n name,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n name?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getListsComponent = listsComponent ? listsComponent({ name, items, showPopupComponent, setShowPopupComponent }) : null;\n\n return listsComponent ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getListsComponent }}></div>\n ) : (\n getListsComponent\n )\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No {name?.toLowerCase()} were found</li>\n </ul>\n )}\n </>\n );\n};\n","import { SearchIcon } from '@core/components';\nimport { SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SuggestionKeywordLists = ({\n listsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getListsComponent = listsComponent ? listsComponent({ keywords, showPopupComponent, setShowPopupComponent }) : null;\n\n return listsComponent ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getListsComponent }}></div>\n ) : (\n getListsComponent\n )\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${SEARCH_RESULT_URL}?q=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n};\n","import { SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getComponent = component ? component({ keyword, showPopupComponent, setShowPopupComponent }) : null;\n\n return component ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getComponent }}></div>\n ) : (\n getComponent\n )\n ) : (\n <a href={`${SEARCH_RESULT_URL}?q=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n View More Result\n </a>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!showInfo) return;\n\n setIsLoading(true);\n\n const { tabs, suffix_index_product, hidden_tags, display } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(suffix_index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!display?.filter?.show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(suffix_index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(suffix_index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n if (!showInfo) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { tabs, suffix_index_product, hidden_tags, display } = response;\n\n setAllowedTabs(tabs);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent\n });\n\n setTimeout(() => {\n if (searchFieldRef?.current) {\n searchFieldRef.current.focus();\n searchFieldRef.current.value = keyword;\n }\n }, 500);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleMultiSearch({ tabs: allowedTabs, suffix_index_product: suffixIndexProduct, hidden_tags: hiddenTags, display: displaySettings }, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder=\"Search anything...\"\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Products</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No product were found</div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\ninterface IResultProps {\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n searchResultFacets?: any;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n showOutOfStock?: boolean;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n searchResultContainerRef?: any;\n}\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { layoutType = 'default', query, params, children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props;\n const { keyword: queryKeyword = '' } = query || {};\n const { collectionId } = params || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n }\n });\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(true);\n const [allowedSorts, setAllowedSorts] = React.useState([]);\n const [allowedFilters, setAllowedFilters] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>([]);\n const [defaultSort, setDefaultSort] = React.useState('');\n const [showOutOfStock, setShowOutOfStock] = React.useState(false);\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (id: string, name: string, e: React.MouseEvent<HTMLLIElement, MouseEvent>) => {\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setResultComponent(id.includes(suffixIndexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any, type?: 'totalDataPerIndex' | 'default') => {\n const { filters, tabs, suffix_index_product, hidden_tags, display, show_out_of_stock } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(suffix_index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n }\n }\n })\n : [];\n let isProductIndex = index.includes(suffix_index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n if (collectionId) additionalFilter.push(`collections.id = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: type === 'default' ? '' : keyword,\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n if (type === 'totalDataPerIndex') {\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n } else {\n const { facetDistribution, facetStats } = results?.find(({ indexUid }: any) => indexUid.includes(suffix_index_product)) || {};\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n let inStock = Object.keys(facetDistribution[value]).map((item) => {\n return Boolean(Number(item)) ? facetDistribution[value][item] : 0;\n });\n\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else if (value === 'variants.price') {\n items = facetStats[value];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { allowed_sorts, default_sort, filters, tabs, suffix_index_product, hidden_tags, display, colors, show_out_of_stock } = response;\n\n setAllowedSorts(allowed_sorts?.length ? allowed_sorts : []);\n setAllowedFilters(filters?.length ? filters : []);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(default_sort);\n setShowOutOfStock(show_out_of_stock);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(suffix_index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n }\n\n await handleInitStates(response, 'default');\n\n if (layoutType === 'default') await handleInitStates(response, 'totalDataPerIndex');\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n }, [isRenderApp]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword) && layoutType === 'default') {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING, 'totalDataPerIndex');\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"grey-100\" animationDuration=\"15s\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"grey-100\" animationDuration=\"13s\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"grey-100\" rounded=\"full\" animationDuration=\"40s\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginBottom: '21px'\n }}\n />\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"13s\" />\n </div>\n ) : null}\n <div className=\"sledge-instant-search__result-data-keyword-form\">\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"lg\"\n style={{\n maxWidth: '630px'\n }}\n />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"grey-100\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"grey-100\" rounded=\"lg\" />\n </div>\n </div>\n </div>\n );\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef}>\n {isFirstLoading ? null : (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n {layoutType === 'default' && allowedTabs?.length ? (\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li onClick={(e) => handleChangeTabIndex(index, name, e)} className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`} key={index}>\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n ) : null}\n </div>\n )}\n\n {isFirstLoading && layoutType?.length ? (\n <>\n {tabSkeleton}\n {filterHorizontalSkeleton}\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge-instant-search__result-filter\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n {searchAndSelectOptionSkeleton}\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n searchResultFacets,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n searchResultContainerRef\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n searchResultFacets,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n setKeyword,\n filterHorizontalSkeleton,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef\n } = props || {};\n const { keyword: queryKeyword = '' } = query || {};\n const { collectionId } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isOpenSort, setIsOpenSort] = React.useState(false);\n const [isOpenLimit, setIsOpenLimit] = React.useState(false);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedSortName, setClickedSortName] = React.useState<string>(allowedSorts && Boolean(allowedSorts?.length) ? allowedSorts.find(({ value }: any) => value === defaultSort)?.label : '');\n const [clickedLimitId, setClickedLimitId] = React.useState(displaySettings?.search?.limit || 10);\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [isFilterChanged, setIsFilterChanged] = React.useState(false);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedFacets });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) setClickedFacets(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (label: string, value: string) => {\n setIsOpenSort(false);\n setClickedSortName(label);\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setIsOpenLimit(false);\n setClickedLimitId(value);\n };\n\n const handleOpenFilter = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n };\n\n const handleFilterReset = () => {\n setIsFilterChanged(true);\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleFilterChange = (parentId: string, value: any, force = false) => {\n setIsFilterChanged(true);\n\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleSearchResultData = (result: any, onSearch: boolean) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResult = async (isRefreshPage = false, onSearch = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let value = facet[0];\n let isCustom = ['variants.inventory_quantity'].includes(value);\n let isRange = ['variants.price'].includes(value);\n let isArray = ['tags'].includes(value);\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? `${value} >= ${facet[1][0]} AND ${value} <= ${facet[1][1]}`\n : isArray\n ? `${value} IN [${facet[1]}]`\n : facet[1]\n ?.map((item: any) => {\n return isCustom ? `${value} ${item}` : `${value} = '${item}'`;\n })\n .join(' OR ')\n : isCustom\n ? `${value} ${facet[1]}`\n : isArray\n ? `${value} IN [${facet[1]}]`\n : `${value} = '${facet[1]}'`;\n\n return items;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`tags NOT IN [${hiddenTags}]`);\n if (collectionId) filters.push(`collections.id = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response, onSearch);\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || (displaySettings?.filter?.hide_when_one_value && totalSearchResult <= 1)) return;\n\n let isSetFilter = false;\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n setAllowedFilter(items);\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n setAllowedFilter(items);\n }\n }\n });\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n\n setTimeout(() => {\n scrollToElement(searchResultContainerRef.current, 50);\n }, 200);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword && setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(\n previousState && (previousState?.keyword !== keyword || previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult(true, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, currentPage, clickedTabIndexId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span className=\"sledge-instant-search__result-filter-item-refine-title-clear\" onClick={() => handleFilterChange(name, value)}>\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const facetComponent = (filter: any) => {\n const { value, label, display } = filter;\n\n let blockComponent = null;\n let items = searchResultFacets[value];\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n\n if (display.toLowerCase() === 'slider') {\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n defaultValue={[valueFilterPriceChange[0] || items?.min, valueFilterPriceChange[1] || items?.max]}\n min={items?.min}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) => handleFilterChange(value, valueCommit)}\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[0] || items?.min}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[1] || items?.max}</div>\n </div>\n </div>\n );\n } else if (display.toLowerCase() === 'checkbox' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n return (\n <li key={index}>\n <Checkbox\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n label={`${item.name}${item.total !== undefined && isShowNumberMatchingProduct ? ` (${item.total})` : ''}`}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={clickedFacets && clickedFacets[value]?.includes(item.value)}\n labelStyle={filter_option_style}\n />\n </li>\n );\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n return {\n label: `${name} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n return {\n label: `${name} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={clickedFacets && clickedFacets[value]?.includes(item.value)}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let isNotRerender = ['select'].includes(display.toLowerCase()) && items?.length;\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilter(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let isNotRerender = ['radio', 'select'].includes(display.toLowerCase()) && items?.length;\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n return isRender ? (\n <div className=\"\" key={indexFilter}>\n <Popover\n trigger={\n <Button type=\"button\" onClick={() => handleOpenFilter(value)}>\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\">\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n }\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </div>\n ) : null;\n });\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const paginationComponent = <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} />;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' ? (\n <>\n {isFirstLoading ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : filterHorizontalComponents.every((currentValue) => !currentValue) ? null : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <>\n {Boolean(dataClickedFacets.every((currentValue) => !currentValue)) ? null : (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n )}\n </>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter\">{filterVerticalSkeleton}</div>\n ) : filterVerticalComponents.every((currentValue) => !currentValue) ? null : (\n <div className=\"sledge-instant-search__result-filter\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n Boolean(dataClickedFacets.every((currentValue) => !currentValue)) ? null : (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">Filter</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n Clear All\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n )\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n searchAndSelectOptionSkeleton\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.layout === 'horizontal' && (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">{summaryText}</div>\n )}\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder=\"Search products...\"\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword(value)}\n onResetField={() => handleChangeKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>Sort by:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ label, value }: any) => handleChangeSort(label, value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>Limit:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const { keyword, clickedTabIndexId, clickedTabIndexName, setKeyword, searchResultContainerRef } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [clickedSortId, setClickedSortId] = React.useState<string>('');\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n </div>\n );\n };\n\n const handleSearchResult = async () => {\n if (!clickedTabIndexId) return;\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n\n setTimeout(() => {\n scrollToElement(searchResultContainerRef.current, 50);\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [clickedSortId, keyword, currentPage, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={`Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`}\n value={keyword}\n onChange={({ value }: any) => setKeyword && setKeyword(value)}\n onResetField={() => setKeyword && setKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"18s\" />\n </div>\n );\n\n const skeletonLoadingComponent = String(clickedTabIndexId)?.includes('collection') ? (\n <SkeletonLoading.CollectionGrid count={3} />\n ) : String(clickedTabIndexId)?.includes('page') ? (\n <SkeletonLoading.PageGrid count={12} />\n ) : String(clickedTabIndexId)?.includes('blog') || String(clickedTabIndexId)?.includes('article') ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n String(clickedTabIndexId)?.includes('collection') ? (\n <CollectionGrid {...elementProps} />\n ) : String(clickedTabIndexId)?.includes('page') ? (\n <PageGrid {...elementProps} />\n ) : String(clickedTabIndexId)?.includes('blog') || String(clickedTabIndexId)?.includes('article') ? (\n <BlogGrid {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement\n data={searchResult.map((item: any) => {\n const { id, title, url } = item;\n\n return {\n id: id,\n title: title,\n description: `${title}${clickedTabIndexName ? ` ${clickedTabIndexName.toLowerCase()}` : ''}`,\n url: url,\n image: ''\n };\n })}\n />\n\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} />\n </>\n ) : (\n <ResultEmpty />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { isLoading } = props || {};\n\n const [title, setTitle] = React.useState('');\n const [description, setDescription] = React.useState('');\n\n React.useEffect(() => {\n setTitle('No results found');\n setDescription('Your search did not match any results. <br/> Please try again');\n }, []);\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: title }}></div>\n <div className=\"sledge-instant-search__result-empty-description\" dangerouslySetInnerHTML={{ __html: description }}></div>\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { tabs, suffix_index_product, hidden_tags, display } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(suffix_index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!display?.filter?.show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(suffix_index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(suffix_index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n if (!keyword.length) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { tabs, suffix_index_product, hidden_tags, display } = response;\n\n setAllowedTabs(tabs);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n }, [keyword]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleMultiSearch({ tabs: allowedTabs, suffix_index_product: suffixIndexProduct, hidden_tags: hiddenTags, display: displaySettings }, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder=\"Search anything\"\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onResetField={() => setKeyword('')}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={keyword.length ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading} withCorner={false}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists listsComponent={otherIndexListsComponent} name={name} items={hits} isComponentJsVersion={isJsVersion} />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">Products</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">No product were found</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult component={searchViewMoreResultComponent} keyword={keyword} isComponentJsVersion={isJsVersion} />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["jsx","React","jsxs","PopoverElement.Root","open","PopoverElement.Trigger","PopoverElement.Portal","PopoverElement.Content","PopoverElement.Close","PopoverElement.Arrow","ProgressElement.Root","ProgressElement.Indicator","CheckboxElement.Root","CheckboxElement.Indicator","SliderElement.Root","SliderElement.Track","SliderElement.Range","SliderElement.Thumb","RadioGroupElement.Root","RadioGroupElement.Item","RadioGroupElement.Indicator","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","SelectElement.ScrollDownButton","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","value","addToCartTrigger","_b","_a","_c","Fragment","_d","_f","_e","shareLink","WidgetHeaderSort","WidgetHeader","data","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","index","instantSearchProductClickTrigger","TooltipElement.Provider","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","TooltipElement.Content","TooltipElement.Arrow","ScrollAreaElement.Root","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","ScrollAreaElement.Thumb","ScrollAreaElement.Corner","ResponsiveMasonry","_i","_h","_g","_k","_j","Dialog.Root","Dialog.Portal","Dialog.Overlay","Dialog.Content","facets"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sledge-react-instant-search.js","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/components/SelectField/SelectField.tsx","../../../core/api/shopify.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../../core/hooks/usePrevious.ts","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../../core/lib/animation.ts","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../../core/api/instant-search.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/Global/index.ts","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import React from 'react';\nimport { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://sledge-api-preprod.offstack.io';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.offstack.io';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n CUSTOM_ROUTE_PAGE: 'data-custom-route-page',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size'\n },\n INSTANT_SEARCH: {\n QUERY_KEYWORD: 'data-query-keyword',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n WISHLIST: {\n ELEMENT_BADGE_FLOATING_ICON: 'wishlist-badge-floating-icon',\n ELEMENT_BADGE_FLOATING_FULL: 'wishlist-badge-floating-full',\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [10, 25, 50, 100];\nexport const SEARCH_RESULT_URL = '/pages/search-result';\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n }\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\n","import useSWR from 'swr';\n\nexport { useSWR };\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (cname: string, cvalue: any, expired: number, expiredBy: 'day' | 'hour' | 'minute' | 'second') => {\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const detectInitSelector = (element: any, init: any) => {\n let hasRunning = false;\n\n document.body.addEventListener('DOMNodeInserted', () => {\n if (!hasRunning && element) {\n hasRunning = true;\n\n init();\n }\n });\n};\n\nexport const getTextBetween = (start: string, end: string, text: string) => {\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (str: string, find: any[], replace: any[]) => {\n for (var i = 0; i < find.length; i++) {\n str = str.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return str;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (element: any, headerOffset: number) => {\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const isTokenExpired = (token: string) => {\n const expiry = JSON.parse(atob(token.split('.')[1])).exp;\n return Math.floor(new Date().getTime() / 1000) >= expiry;\n};\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '' }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setProgress((+value / total) * 100), 150);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: string;\n defaultChecked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, defaultChecked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" defaultChecked={defaultChecked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\nimport React from 'react';\n\nexport interface ISliderProps {\n defaultValue: number[];\n min: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { defaultValue, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n const [value, setValue] = React.useState(defaultValue);\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n defaultValue={defaultValue}\n min={min}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => {\n setValueCommit && setValueCommit(valueCommit);\n setValue(valueCommit);\n }}\n onValueChange={(valueChange: number[]) => {\n setValueChange && setValueChange(valueChange);\n setValue(valueChange);\n }}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#23BC45\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#23BC45\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n </SliderElement.Root>\n </form>\n );\n};\n","import { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n}\n\nexport const Pagination = ({ currentPage, totalPage, totalResult, onChange }: IPaginationProps) => {\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={17} height={17} color=\"black\" />\n </button>\n <span>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={17} height={17} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(${image})`\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.6334 3.33398C23.9899 3.33398 27.5887 6.65342 28.0324 10.8989L28.1562 10.9003C30.5729 10.9003 33.5112 12.5053 34.5029 17.007L35.8179 27.1853C36.2896 30.4703 35.6996 33.1053 34.0612 34.9953C32.4312 36.8753 29.8512 37.8703 26.5996 37.8703H12.6862C9.11458 37.8703 6.62625 36.9953 5.07792 35.197C3.52292 33.3936 3.00292 30.6886 3.53292 27.1586L4.82625 17.1153C5.67625 12.5103 8.78458 10.9003 11.1912 10.9003C11.399 8.98444 12.2629 7.16182 13.6334 5.79565C15.2084 4.23065 17.3801 3.33398 19.5984 3.33398H19.6334ZM28.1562 13.4003H11.1912C10.4562 13.4003 7.99958 13.697 7.29458 17.5036L6.00792 27.5036C5.58958 30.3086 5.91292 32.3386 6.97125 33.567C8.01625 34.7803 9.88625 35.3703 12.6862 35.3703H26.5996C28.3462 35.3703 30.7312 35.022 32.1712 33.3586C33.3146 32.0403 33.7079 30.077 33.3412 27.522L32.0429 17.4353C31.4896 14.9503 30.0296 13.4003 28.1562 13.4003ZM24.4942 18.0405C25.1842 18.0405 25.7826 18.6005 25.7826 19.2905C25.7826 19.9805 25.2609 20.5405 24.5709 20.5405H24.4942C23.8042 20.5405 23.2442 19.9805 23.2442 19.2905C23.2442 18.6005 23.8042 18.0405 24.4942 18.0405ZM14.7774 18.0405C15.4674 18.0405 16.0657 18.6005 16.0657 19.2905C16.0657 19.9805 15.5424 20.5405 14.8524 20.5405H14.7774C14.0874 20.5405 13.5274 19.9805 13.5274 19.2905C13.5274 18.6005 14.0874 18.0405 14.7774 18.0405ZM19.6284 5.83398H19.6034C18.0351 5.83398 16.5067 6.46565 15.3984 7.56732C14.4956 8.46609 13.9051 9.64764 13.7141 10.8995L25.5129 10.9C25.0846 8.03628 22.6082 5.83398 19.6284 5.83398Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={14} height={14}>\n <path d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\" />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { Popover } from '@core/components';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label || placeholder;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","declare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n var myHeaders = new Headers();\n myHeaders.append('Content-Type', 'application/json');\n\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: id,\n quantity: quantity\n });\n });\n\n var raw = JSON.stringify({\n items: items\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n if (!window?.Shopify?.routes) return;\n\n return await fetch(`${window.Shopify.routes.root}cart/add.js`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n var raw = JSON.stringify({\n products: products\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/bulk`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/info`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistDetail: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/detail/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/check/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'DELETE',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/clear`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/wishlist/cart`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const handleCheckWishlist = async (init?: boolean) => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && init) {\n response = wishlistChecked;\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n setIsWishlist(!isWishlist);\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistBadgeUpdate) {\n if (triggerRenderMultipleComponent?.wishlist?.badge?.trigger && typeof wishlistChecked !== 'boolean')\n triggerRenderMultipleComponent?.wishlist?.badge?.trigger(!triggerRenderMultipleComponent?.wishlist?.badge?.value);\n\n window.sledgeWishlistBadgeUpdate();\n }\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: 'failed add to wishlist',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.wishlist) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist(true);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '');\n }, [isRenderApp]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderApp?.wishlist) return;\n\n handleCheckWishlist(true);\n }, [isRenderApp, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n textCancel: button_cancel_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share } = dataSettings?.languages?.widget || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 17V20C15 20.2652 14.8946 20.5196 14.7071 20.7071C14.5196 20.8946 14.2652 21 14 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V8C3 7.73478 3.10536 7.48043 3.29289 7.29289C3.48043 7.10536 3.73478 7 4 7H7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18 3H8C7.44772 3 7 3.44772 7 4V16C7 16.5523 7.44772 17 8 17H18C18.5523 17 19 16.5523 19 16V4C19 3.44772 18.5523 3 18 3Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistBadgeUpdate) {\n if (triggerRenderMultipleComponent?.wishlist?.badge?.trigger) triggerRenderMultipleComponent?.wishlist?.badge?.trigger(!triggerRenderMultipleComponent?.wishlist?.badge?.value);\n\n window.sledgeWishlistBadgeUpdate();\n }\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist,\n textCancel: 'Cancel'\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: 'Failed',\n message: 'Failed add to wishlist, please try again',\n textCancel: 'Cancel'\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n document.body.addEventListener('DOMNodeInserted', () => {\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n });\n };\n\n const handleClick = async () => {\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: 'Are you sure want to add this to your wishlist item?',\n message: `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: 'Add to your wishlist',\n textCancel: 'Cancel',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : '',\n textCancel: 'Cancel'\n });\n\n handleCopyShareLink();\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? 'Adding...' : 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n options?: number[];\n defaultLimitOptions?: number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ options, defaultLimitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n let getOptions: number[] | undefined = options || defaultLimitOptions;\n\n const handleChangeLimit = (value: string) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {getOptions && Boolean(getOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={getOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || getOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort || wishlistSort[0]?.value}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n defaultLimitOptions?: number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"grey-100\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async (id: any, query?: any, token?: string) => {\n const { page, limit, sort, keyword, rating } = query || {};\n\n let convertId = sanitizeDataId(id);\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n rating: rating || ''\n }).toString();\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/${convertId}${queryParams}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (id: any) => {\n let convertId = sanitizeDataId(id);\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/info/${convertId}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/info/ids/${convertIds.join(',')}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var formdata = new FormData();\n [...files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: formdata,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n\n var requestOptions: any = {\n method: 'DELETE',\n headers: myHeaders,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review/media/${id}`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n user: {\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n },\n product: {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n },\n review: {\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/review`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { usePrevious } from '@core/hooks';\nimport { scrollToElement } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n sledgeProductReviewRatingUpdate(): void;\n }\n}\n\nexport interface IRatingProps {\n value?: any;\n size?: ('xs' | 'sm' | 'md') | string;\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const { value, size = 'md', params, withSkeletonLoading = true, isScrollToElementWidget = true, data: propsData } = props;\n const { productId } = params || {};\n\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n const [totalReview, setTotalReview] = React.useState(0);\n const [averageReview, setAverageReview] = React.useState('0');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ productId });\n\n const { fill_color, outline_color } = dataSettings?.display?.rating || {};\n\n const handleProductRatingInfo = async (validateProductId: any) => {\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (!propsData) {\n response = await getReviewInfo(validateProductId);\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n } else {\n data = propsData;\n run = true;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (value && !params) {\n setAverageReview(value);\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement(document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET), 50);\n }, 200);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.productReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewRatingUpdate = () => {\n setIsLoading(true);\n\n handleRefreshProductRating();\n };\n }\n\n if (size === 'xs') {\n setSizing({\n width: 14.4,\n height: 14.4\n });\n } else if (size === 'sm') {\n setSizing({\n width: 18,\n height: 18\n });\n } else {\n setSizing({\n width: 28.8,\n height: 28.8\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || '');\n }, [isRenderApp, productId]);\n\n return (\n <div className=\"sledge-product-review__rating\" onClick={handleOnClick}>\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" />\n ) : (\n <>\n <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ display: 'none' }} id=\"sledge-product-review-rating-icon-svg-store\">\n <symbol id=\"sledge-product-review-icons-rating-icon-fill\" viewBox=\"0 0 30 29\" fill={fill_color || '#23BC45'}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.00014 17.7L1.20174 12.9C0.107339 12.0248 0.587339 10.2648 1.97614 10.0664L10.2001 9.69998L13.7121 0.895176C13.9569 0.407176 14.4545 0.0999756 15.0001 0.0999756C15.5457 0.0999756 16.0433 0.408776 16.2881 0.895176L19.8001 9.69998L28.0241 10.0664C29.4129 10.2648 29.8929 12.0248 28.7985 12.9L23.0001 17.7L24.5825 27.0712C24.7649 28.3496 23.4369 29.3064 22.2833 28.7288L15.0001 24.1L7.71694 28.7272C6.56174 29.3048 5.23534 28.348 5.41774 27.0696L7.00014 17.7Z\"\n />\n </symbol>\n <symbol id=\"sledge-product-review-icons-rating-icon-line\" viewBox=\"0 0 30 29\" stroke={outline_color || '#8D9196'} fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.00014 17.7L1.20174 12.9C0.107339 12.0248 0.587339 10.2648 1.97614 10.0664L10.2001 9.69998L13.7121 0.895176C13.9569 0.407176 14.4545 0.0999756 15.0001 0.0999756C15.5457 0.0999756 16.0433 0.408776 16.2881 0.895176L19.8001 9.69998L28.0241 10.0664C29.4129 10.2648 29.8929 12.0248 28.7985 12.9L23.0001 17.7L24.5825 27.0712C24.7649 28.3496 23.4369 29.3064 22.2833 28.7288L15.0001 24.1L7.71694 28.7272C6.56174 29.3048 5.23534 28.348 5.41774 27.0696L7.00014 17.7Z\"\n strokeWidth=\"1.4\"\n />\n </symbol>\n <defs>\n <g id=\"sledge-product-review-icons-rating-icon\">\n <use href=\"#sledge-product-review-icons-rating-icon-line\" className=\"sledge-product-review__rating-icon-line\" />\n <use href=\"#sledge-product-review-icons-rating-icon-fill\" className=\"sledge-product-review__rating-icon-fill\" />\n </g>\n </defs>\n </svg>\n\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n let ratingValue = Math.floor(parseFloat(averageReview));\n\n let getCommaValue = String(averageReview).includes(',') ? String(averageReview).split(',') : [];\n let getCommaValueDot = String(averageReview).includes('.') ? String(averageReview).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n return (\n <svg {...sizing} viewBox=\"0 0 30 29\" data-product-review-rating-fill={item <= ratingValue ? 'full' : fillOther} key={index}>\n <use href=\"#sledge-product-review-icons-rating-icon\" />\n </svg>\n );\n })}\n {!value && params ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n","import { Button, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoading?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoading, text, dataSettings, params, onAfterAddReview }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"grey-100\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview)}\n style={display_button_write_review_style}\n >\n <svg width={16} height={17} viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8323 14.1264C14.1083 14.1264 14.3323 14.3504 14.3323 14.6264C14.3323 14.9024 14.1083 15.1264 13.8323 15.1264H8.99701C8.72101 15.1264 8.49701 14.9024 8.49701 14.6264C8.49701 14.3504 8.72101 14.1264 8.99701 14.1264H13.8323ZM10.7429 2.93576C10.7762 2.96176 11.8915 3.82843 11.8915 3.82843C12.2969 4.06976 12.6135 4.5011 12.7335 5.01176C12.8529 5.5171 12.7662 6.03843 12.4882 6.47909C12.4864 6.48203 12.4845 6.48494 12.4781 6.49358L12.4731 6.50025C12.4279 6.55972 12.2318 6.80776 11.2417 8.04815C11.2325 8.06441 11.2221 8.07963 11.2107 8.09443C11.1941 8.11624 11.1759 8.13628 11.1565 8.15453C11.089 8.23956 11.0176 8.3289 10.9426 8.42283L10.7907 8.61313C10.4772 9.00579 10.1053 9.47139 9.66407 10.0236L9.43764 10.3071C8.58586 11.3732 7.49499 12.7382 6.09755 14.4864C5.79155 14.8678 5.33288 15.0898 4.84021 15.0958L2.41421 15.1264H2.40755C2.17621 15.1264 1.97488 14.9678 1.92088 14.7418L1.37488 12.4278C1.26221 11.9484 1.37421 11.4538 1.68155 11.0698L7.96155 3.2151C7.96421 3.21243 7.96621 3.2091 7.96888 3.20643C8.65755 2.3831 9.90288 2.26176 10.7429 2.93576ZM7.26136 5.69133L2.46221 11.6944C2.34821 11.8371 2.30621 12.0211 2.34821 12.1978L2.80221 14.1211L4.82821 14.0958C5.02088 14.0938 5.19888 14.0078 5.31688 13.8611C5.92454 13.1008 6.68825 12.1452 7.47345 11.1627L7.75125 10.815L8.02952 10.4668C8.76591 9.54526 9.4934 8.63471 10.1021 7.87258L7.26136 5.69133ZM8.73888 3.84443L7.88603 4.91L10.7265 7.09062C11.2733 6.4058 11.633 5.95476 11.6662 5.91176C11.7755 5.73443 11.8182 5.48376 11.7609 5.24243C11.7022 4.9951 11.5482 4.78509 11.3262 4.65109C11.2789 4.61843 10.1555 3.74643 10.1209 3.71909C9.69821 3.38043 9.08155 3.4391 8.73888 3.84443Z\"\n fill=\"currentColor\"\n />\n </svg>\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { Loading, Popover, SelectField, SkeletonLoading } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoading?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n LinkComponent?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoading, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList, LinkComponent }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"grey-100\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.5919 9.13869C12.7359 9.13869 13.6666 10.0647 13.6666 11.2027C13.6666 12.3407 12.7359 13.2667 11.5919 13.2667C10.4473 13.2667 9.51593 12.3407 9.51593 11.2027C9.51593 10.0647 10.4473 9.13869 11.5919 9.13869ZM11.5919 10.1387C10.9986 10.1387 10.5159 10.616 10.5159 11.2027C10.5159 11.79 10.9986 12.2667 11.5919 12.2667C12.1846 12.2667 12.6666 11.79 12.6666 11.2027C12.6666 10.616 12.1846 10.1387 11.5919 10.1387ZM6.7202 10.7286C6.9962 10.7286 7.2202 10.9526 7.2202 11.2286C7.2202 11.5046 6.9962 11.7286 6.7202 11.7286H2.51953C2.24353 11.7286 2.01953 11.5046 2.01953 11.2286C2.01953 10.9526 2.24353 10.7286 2.51953 10.7286H6.7202ZM4.07533 2.66669C5.22 2.66669 6.15067 3.59335 6.15067 4.73135C6.15067 5.86935 5.22 6.79469 4.07533 6.79469C2.93133 6.79469 2 5.86935 2 4.73135C2 3.59335 2.93133 2.66669 4.07533 2.66669ZM4.07533 3.66669C3.48267 3.66669 3 4.14402 3 4.73135C3 5.31802 3.48267 5.79469 4.07533 5.79469C4.66867 5.79469 5.15067 5.31802 5.15067 4.73135C5.15067 4.14402 4.66867 3.66669 4.07533 3.66669ZM12.7941 4.26695C13.0701 4.26695 13.2941 4.49095 13.2941 4.76695C13.2941 5.04295 13.0701 5.26695 12.7941 5.26695H8.59407C8.31807 5.26695 8.09407 5.04295 8.09407 4.76695C8.09407 4.49095 8.31807 4.26695 8.59407 4.26695H12.7941Z\"\n fill=\"currentColor\"\n />\n </svg>\n }\n prefixSelectedLabel=\"Sort by\"\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n LinkComponent={LinkComponent}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>({\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n });\n const [averageReview, setAverageReview] = React.useState('0');\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (!summaryData) {\n response = await getReviewInfo(productId);\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n } else {\n data = summaryData;\n run = true;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"5s\" />\n ) : isLoading ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && <Rating value={String(averageReview)} size=\"md\" withSkeletonLoading={false} isScrollToElementWidget={false} />}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview} {totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"42s\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating value={item} size=\"sm\" withSkeletonLoading={false} isScrollToElementWidget={false} />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(true);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId } from '@core/lib/helper';\n\nconst fetchApi = async (url: string, method: string, body?: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token || localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeInstantSearchAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var requestOptions: any = {\n ...{\n method: method,\n headers: myHeaders,\n redirect: 'follow'\n },\n ...(body && {\n body: JSON.stringify(body)\n })\n };\n\n return await fetch(`${INSTANT_SEARCH_ENGINE_URL}${url}`, requestOptions)\n .then((response) => response.json())\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const search = async (index: any, body: any) => {\n return await fetchApi(`/indexes/${index}/search`, 'POST', body);\n};\n\nexport const multiSearch = async (body: any, token?: string) => {\n return await fetchApi('/multi-search', 'POST', body, token);\n};\n\nexport const getFacets = async ( index: string, token?: string ) => {\n return await fetchApi( `/indexes/${ index }/settings/filterable-attributes`, 'GET', null, token )\n}\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n keyword: keyword,\n result_count: resultCount\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/search`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/click`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP);\n\n var myHeaders = new Headers();\n myHeaders.append('Authorization', `Bearer ${sledgeAuthApp}`);\n myHeaders.append('Content-Type', 'application/json');\n\n var raw = JSON.stringify({\n product: {\n id: sanitizeDataId(productId)\n }\n });\n\n var requestOptions: any = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n return await fetch(`${API_URL}/instantsearch/statistics/cart`, requestOptions)\n .then((response) => response.json())\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { API_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\n\nexport interface IProductGrid {\n className?: string;\n type: 'small' | 'medium' | 'large';\n data: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n}\n\nexport const ProductGrid = ({\n type,\n className = '',\n data,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists\n}: IProductGrid) => {\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n redirect_add_to_cart = true,\n language_button_add_to_cart = 'Add To Cart',\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <div className={`sledge__product-grid ${className}`} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency } = product || {};\n const { id: variant_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n let isLoadingAddToCart = clickedAddToCartId == variant_id;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !variants[0].inventory_quantity && showOptionOutOfStock : false;\n\n const getCards = cards\n ? cards({\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n }\n },\n showPopupComponent,\n setShowPopupComponent\n })\n : null;\n\n return cards ? (\n <React.Fragment key={index}>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: getCards }}></div> : getCards}</React.Fragment>\n ) : (\n <div className=\"sledge__product-grid-card\" key={index}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() =>\n sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\n })\n }\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${API_URL}/img/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img src={image?.src || ''} alt=\"sledge-product-card-image\" loading=\"lazy\" onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)} />\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">Sold out</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {title ? (\n <a\n href={url}\n onClick={() =>\n sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\n })\n }\n >\n <h3 style={display_product_name_style}>{title}</h3>\n </a>\n ) : null}\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <div>{variant_title}</div>\n <div>\n <>{show_vendor ? <>Vendor: {vendor}</> : null}</>\n <> | </>\n <>{show_sku ? <>SKU: {sku}</> : null}</>\n </div>\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () =>\n handleAddToCart({\n id: variant_id,\n quantity: 1\n })\n })}\n >\n {isLoadingAddToCart ? (\n 'Adding...'\n ) : isOutOfStock ? (\n 'Sold out'\n ) : (\n <>\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.83562 1.50023C10.796 1.50023 12.4155 2.99397 12.6152 4.90442L12.6709 4.90507C13.7584 4.90507 15.0806 5.62732 15.5269 7.65307L16.1186 12.2333C16.3309 13.7116 16.0654 14.8973 15.3281 15.7478C14.5946 16.5938 13.4336 17.0416 11.9704 17.0416H5.7094C4.10215 17.0416 2.9824 16.6478 2.28565 15.8386C1.5859 15.0271 1.3519 13.8098 1.5904 12.2213L2.1724 7.70182C2.5549 5.62957 3.95365 4.90507 5.03665 4.90507C5.13014 4.04293 5.51889 3.22275 6.13562 2.60797C6.84437 1.90372 7.82162 1.50023 8.81987 1.50023H8.83562ZM12.6709 6.03007H5.03665C4.7059 6.03007 3.6004 6.16357 3.28315 7.87657L2.70415 12.3766C2.5159 13.6388 2.6614 14.5523 3.13765 15.1051C3.6079 15.6511 4.4494 15.9166 5.7094 15.9166H11.9704C12.7564 15.9166 13.8296 15.7598 14.4776 15.0113C14.9921 14.4181 15.1691 13.5346 15.0041 12.3848L14.4199 7.84582C14.1709 6.72757 13.5139 6.03007 12.6709 6.03007ZM11.023 8.11815C11.3335 8.11815 11.6027 8.37015 11.6027 8.68065C11.6027 8.99115 11.368 9.24315 11.0575 9.24315H11.023C10.7125 9.24315 10.4605 8.99115 10.4605 8.68065C10.4605 8.37015 10.7125 8.11815 11.023 8.11815ZM6.65042 8.11815C6.96092 8.11815 7.23017 8.37015 7.23017 8.68065C7.23017 8.99115 6.99467 9.24315 6.68417 9.24315H6.65042C6.33992 9.24315 6.08792 8.99115 6.08792 8.68065C6.08792 8.37015 6.33992 8.11815 6.65042 8.11815ZM8.83337 2.62522H8.82212C8.11637 2.62522 7.42862 2.90947 6.92987 3.40522C6.5236 3.80967 6.25789 4.34137 6.17193 4.90472L11.4814 4.90493C11.2887 3.61626 10.1743 2.62522 8.83337 2.62522Z\"\n fill=\"#393D4E\"\n />\n </svg>\n <span>{language_button_add_to_cart ? language_button_add_to_cart : 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n};\n","import './CollectionGrid.css';\n\nimport { Button } from '@core/components';\nimport { API_URL } from '@core/lib/const';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n}\n\nexport const CollectionGrid = ({ className = '', data }: ICollectionGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, description, url, image } = item;\n\n return (\n <div className=\"sledge__collection-grid-card\" key={index}>\n <div className=\"sledge__collection-grid-card-image\">\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-product-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-text\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n <div className=\"sledge__collection-grid-card-content-description\">{description}</div>\n </div>\n <div className=\"sledge__collection-grid-card-content-button-wrapper\">\n <Button type=\"button\" colorType=\"success\" elementType=\"hyperlink\" link={url}>\n Shop Now\n </Button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import './PageGrid.css';\n\nimport { API_URL } from '@core/lib/const';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n}\n\nexport const PageGrid = ({ className = '', data }: IPageGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, description, url, image } = item;\n\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image\">\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-product-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n <div className=\"sledge__page-grid-card-content-description\">{description}</div>\n </div>\n </div>\n </a>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import './BlogGrid.css';\n\nimport { API_URL } from '@core/lib/const';\nimport { Button } from '@core/components';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n}\n\nexport const BlogGrid = ({ className = '', data }: IBlogGrid) => {\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, date, description, url, image } = item;\n\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img\n src={image || `${API_URL}/img/blank-image.png`}\n alt=\"sledge-blog-card-image\"\n loading=\"lazy\"\n onError={(event) => (event.currentTarget.src = `${API_URL}/img/blank-image.png`)}\n />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <div className=\"sledge__blog-grid-card-title\">\n <div>\n <a href={url}>\n <div>{title}</div>\n </a>\n </div>\n </div>\n {!date?.length ? null : <div className=\"sledge__blog-grid-card-date\">{date}</div>}\n <div className=\"sledge__blog-grid-card-text\">{description}</div>\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <Button type=\"button\" colorType=\"light\" elementType=\"hyperlink\" link={url}>\n Learn More\n </Button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n withCorner?: boolean;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '', withCorner = true }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n {withCorner && <ScrollAreaElement.Corner className=\"sledge__scroll-area-corner\" />}\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'grey-100' | 'grey-300';\n animationDuration?: string;\n disableAnimation?: boolean;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, animationDuration = '8s', disableAnimation = false, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n return (\n <div\n className={`sledge__skeleton-item ${className} ${!disableAnimation ? 'sledge__skeleton-item-animation' : ''}`}\n style={{\n ...{\n width: width,\n height: height,\n WebkitAnimationDuration: animationDuration,\n animationDuration: animationDuration\n },\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"40px\" height=\"40px\" color=\"grey-300\" rounded=\"sm\" disableAnimation />\n </div>\n <SkeletonItem width=\"100%\" height=\"100%\" color=\"grey-100\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"134px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"20s\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"190px\"\n height=\"46px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"117px\" height=\"40px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || (type === 'grid' && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration={type === 'list' ? '2.5s' : '8s'}\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'grid' ? { 350: 1, 750: 3, 1024: 4 } : { 350: 1 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-image\">\n <SkeletonItem width=\"246px\" height=\"246px\" color=\"grey-300\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-text\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"100%\" height=\"70px\" color=\"grey-300\" rounded=\"lg\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem\n width=\"100%\"\n height=\"47px\"\n color=\"grey-300\"\n rounded=\"md\"\n style={{\n maxWidth: '357px'\n }}\n />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content-button-wrapper\">\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"20s\"\n style={{\n maxWidth: '117px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"grey-300\" rounded=\"md\" animationDuration=\"6s\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-300\"\n rounded=\"md\"\n animationDuration=\"17s\"\n style={{\n maxWidth: '115px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <SkeletonItem width=\"100%\" height=\"100%\" color=\"grey-100\" rounded=\"md\" animationDuration=\"10s\" />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '242px',\n marginTop: '26px',\n marginBottom: '12px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"23s\"\n style={{\n maxWidth: '80px',\n marginBottom: '27px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"80px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n maxWidth: '190px',\n marginBottom: '27px'\n }}\n />\n <SkeletonItem\n width=\"100%\"\n height=\"40px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"20s\"\n style={{\n maxWidth: '117px'\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderApp]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","export const OtherIndexLists = ({\n listsComponent,\n name,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n name?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getListsComponent = listsComponent ? listsComponent({ name, items, showPopupComponent, setShowPopupComponent }) : null;\n\n return listsComponent ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getListsComponent }}></div>\n ) : (\n getListsComponent\n )\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No {name?.toLowerCase()} were found</li>\n </ul>\n )}\n </>\n );\n};\n","import { SearchIcon } from '@core/components';\nimport { SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SuggestionKeywordLists = ({\n listsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getListsComponent = listsComponent ? listsComponent({ keywords, showPopupComponent, setShowPopupComponent }) : null;\n\n return listsComponent ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getListsComponent }}></div>\n ) : (\n getListsComponent\n )\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${SEARCH_RESULT_URL}?q=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n};\n","import { SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n const getComponent = component ? component({ keyword, showPopupComponent, setShowPopupComponent }) : null;\n\n return component ? (\n isComponentJsVersion ? (\n <div dangerouslySetInnerHTML={{ __html: getComponent }}></div>\n ) : (\n getComponent\n )\n ) : (\n <a href={`${SEARCH_RESULT_URL}?q=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n View More Result\n </a>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!showInfo) return;\n\n setIsLoading(true);\n\n const { tabs, suffix_index_product, hidden_tags, display } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(suffix_index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!display?.filter?.show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(suffix_index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(suffix_index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n if (!showInfo) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { tabs, suffix_index_product, hidden_tags, display } = response;\n\n setAllowedTabs(tabs);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent\n });\n\n setTimeout(() => {\n if (searchFieldRef?.current) {\n searchFieldRef.current.focus();\n searchFieldRef.current.value = keyword;\n }\n }, 500);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleMultiSearch({ tabs: allowedTabs, suffix_index_product: suffixIndexProduct, hidden_tags: hiddenTags, display: displaySettings }, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder=\"Search anything...\"\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Products</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No product were found</div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n}\n\ninterface IResultProps {\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n searchResultFacets?: any;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n showOutOfStock?: boolean;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n}\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { layoutType = 'default', query, params, children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, data: propsData } = props;\n const { keyword: queryKeyword = '' } = query || {};\n const { collectionId } = params || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n }\n });\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}')?.data : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(true);\n const [allowedSorts, setAllowedSorts] = React.useState([]);\n const [allowedFilters, setAllowedFilters] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>([]);\n const [defaultSort, setDefaultSort] = React.useState('');\n const [showOutOfStock, setShowOutOfStock] = React.useState(false);\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (id: string, name: string, e: React.MouseEvent<HTMLLIElement, MouseEvent>) => {\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setResultComponent(id.includes(suffixIndexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any, type?: 'totalDataPerIndex' | 'default') => {\n const { filters, tabs, suffix_index_product, hidden_tags, display, show_out_of_stock } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(suffix_index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n }\n }\n })\n : [];\n let isProductIndex = index.includes(suffix_index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n if (collectionId) additionalFilter.push(`collections.id = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: type === 'default' ? '' : keyword,\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n if (type === 'totalDataPerIndex') {\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n } else {\n const { facetDistribution, facetStats } = results?.find(({ indexUid }: any) => indexUid.includes(suffix_index_product)) || {};\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n let inStock = Object.keys(facetDistribution[value]).map((item) => {\n return Boolean(Number(item)) ? facetDistribution[value][item] : 0;\n });\n\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else if (value === 'variants.price') {\n items = facetStats[value];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { allowed_sorts, default_sort, filters, tabs, suffix_index_product, hidden_tags, display, colors, show_out_of_stock } = response;\n\n setAllowedSorts(allowed_sorts?.length ? allowed_sorts : []);\n setAllowedFilters(filters?.length ? filters : []);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(default_sort);\n setShowOutOfStock(show_out_of_stock);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(suffix_index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n }\n\n await handleInitStates(response, 'default');\n\n if (layoutType === 'default') await handleInitStates(response, 'totalDataPerIndex');\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n }, [isRenderApp]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword) && layoutType === 'default') {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING, 'totalDataPerIndex');\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"grey-100\" animationDuration=\"15s\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"grey-100\" animationDuration=\"13s\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"15s\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"grey-100\" rounded=\"full\" animationDuration=\"40s\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n style={{\n marginBottom: '21px'\n }}\n />\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"13s\" />\n </div>\n ) : null}\n <div className=\"sledge-instant-search__result-data-keyword-form\">\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"lg\"\n style={{\n maxWidth: '630px'\n }}\n />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"grey-100\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"grey-100\" rounded=\"lg\" />\n </div>\n </div>\n </div>\n );\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef}>\n {isFirstLoading ? null : (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n {layoutType === 'default' && allowedTabs?.length ? (\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li onClick={(e) => handleChangeTabIndex(index, name, e)} className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`} key={index}>\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n ) : null}\n </div>\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {tabSkeleton}\n {filterHorizontalSkeleton}\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge-instant-search__result-filter\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n {searchAndSelectOptionSkeleton}\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n searchResultFacets,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n searchResultContainerRef,\n data: propsData,\n settings\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n searchResultFacets,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n setKeyword,\n filterHorizontalSkeleton,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef,\n data: propsData,\n settings\n } = props || {};\n const { keyword: queryKeyword = '' } = query || {};\n const { collectionId } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isOpenSort, setIsOpenSort] = React.useState(false);\n const [isOpenLimit, setIsOpenLimit] = React.useState(false);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedSortName, setClickedSortName] = React.useState<string>(allowedSorts && Boolean(allowedSorts?.length) ? allowedSorts.find(({ value }: any) => value === defaultSort)?.label : '');\n const [clickedLimitId, setClickedLimitId] = React.useState(displaySettings?.search?.limit || 10);\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [isFilterChanged, setIsFilterChanged] = React.useState(false);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedFacets });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) setClickedFacets(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (label: string, value: string) => {\n setIsOpenSort(false);\n setClickedSortName(label);\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setIsOpenLimit(false);\n setClickedLimitId(value);\n };\n\n const handleOpenFilter = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n };\n\n const handleFilterReset = () => {\n setIsFilterChanged(true);\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleFilterChange = (parentId: string, value: any, force = false) => {\n setIsFilterChanged(true);\n\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleSearchResultData = (result: any, onSearch: boolean) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResult = async (isRefreshPage = false, onSearch = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let value = facet[0];\n let isCustom = ['variants.inventory_quantity'].includes(value);\n let isRange = ['variants.price'].includes(value);\n let isArray = ['tags'].includes(value);\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? `${value} >= ${facet[1][0]} AND ${value} <= ${facet[1][1]}`\n : isArray\n ? `${value} IN [${facet[1]}]`\n : facet[1]\n ?.map((item: any) => {\n return isCustom ? `${value} ${item}` : `${value} = '${item}'`;\n })\n .join(' OR ')\n : isCustom\n ? `${value} ${facet[1]}`\n : isArray\n ? `${value} IN [${facet[1]}]`\n : `${value} = '${facet[1]}'`;\n\n return items;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`tags NOT IN [${hiddenTags}]`);\n if (collectionId) filters.push(`collections.id = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response, onSearch);\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || (displaySettings?.filter?.hide_when_one_value && totalSearchResult <= 1)) return;\n\n let isSetFilter = false;\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n setAllowedFilter(items);\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n setAllowedFilter(items);\n }\n }\n });\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n\n setTimeout(() => {\n scrollToElement(searchResultContainerRef.current, 50);\n }, 200);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword && setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(\n previousState && (previousState?.keyword !== keyword || previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult(true, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, currentPage, clickedTabIndexId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span className=\"sledge-instant-search__result-filter-item-refine-title-clear\" onClick={() => handleFilterChange(name, value)}>\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const facetComponent = (filter: any) => {\n const { value, label, display } = filter;\n\n let blockComponent = null;\n let items = searchResultFacets[value];\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n\n if (display.toLowerCase() === 'slider') {\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n defaultValue={[valueFilterPriceChange[0] || items?.min, valueFilterPriceChange[1] || items?.max]}\n min={items?.min}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) => handleFilterChange(value, valueCommit)}\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[0] || items?.min}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[1] || items?.max}</div>\n </div>\n </div>\n );\n } else if (display.toLowerCase() === 'checkbox' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n return (\n <li key={index}>\n <Checkbox\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n label={`${item.name}${item.total !== undefined && isShowNumberMatchingProduct ? ` (${item.total})` : ''}`}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={clickedFacets && clickedFacets[value]?.includes(item.value)}\n labelStyle={filter_option_style}\n />\n </li>\n );\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n return {\n label: `${name} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n return {\n label: `${name} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={clickedFacets && clickedFacets[value]?.includes(item.value)}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let isNotRerender = ['select'].includes(display.toLowerCase()) && items?.length;\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilter(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let isNotRerender = ['radio', 'select'].includes(display.toLowerCase()) && items?.length;\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n return isRender ? (\n <div className=\"\" key={indexFilter}>\n <Popover\n trigger={\n <Button type=\"button\" onClick={() => handleOpenFilter(value)}>\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\">\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n }\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </div>\n ) : null;\n });\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const paginationComponent = <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} />;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : filterHorizontalComponents.every((currentValue) => !currentValue) ? null : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <>\n {Boolean(dataClickedFacets.every((currentValue) => !currentValue)) ? null : (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n )}\n </>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter\">{filterVerticalSkeleton}</div>\n ) : filterVerticalComponents.every((currentValue) => !currentValue) ? null : (\n <div className=\"sledge-instant-search__result-filter\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n Boolean(dataClickedFacets.every((currentValue) => !currentValue)) ? null : (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">Filter</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n Clear All\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n )\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n searchAndSelectOptionSkeleton\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.layout === 'horizontal' && (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">{summaryText}</div>\n )}\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder=\"Search products...\"\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword(value)}\n onResetField={() => handleChangeKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>Sort by:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId || settings?.default_sort}\n onChange={({ label, value }: any) => handleChangeSort(label, value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>Limit:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const { keyword, clickedTabIndexId, clickedTabIndexName, setKeyword, searchResultContainerRef } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [clickedSortId, setClickedSortId] = React.useState<string>('');\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n </div>\n );\n };\n\n const handleSearchResult = async () => {\n if (!clickedTabIndexId) return;\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n\n setTimeout(() => {\n scrollToElement(searchResultContainerRef.current, 50);\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [clickedSortId, keyword, currentPage, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={`Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`}\n value={keyword}\n onChange={({ value }: any) => setKeyword && setKeyword(value)}\n onResetField={() => setKeyword && setKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"grey-100\" rounded=\"md\" animationDuration=\"18s\" />\n </div>\n );\n\n const skeletonLoadingComponent = String(clickedTabIndexId)?.includes('collection') ? (\n <SkeletonLoading.CollectionGrid count={3} />\n ) : String(clickedTabIndexId)?.includes('page') ? (\n <SkeletonLoading.PageGrid count={12} />\n ) : String(clickedTabIndexId)?.includes('blog') || String(clickedTabIndexId)?.includes('article') ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n String(clickedTabIndexId)?.includes('collection') ? (\n <CollectionGrid {...elementProps} />\n ) : String(clickedTabIndexId)?.includes('page') ? (\n <PageGrid {...elementProps} />\n ) : String(clickedTabIndexId)?.includes('blog') || String(clickedTabIndexId)?.includes('article') ? (\n <BlogGrid {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement\n data={searchResult.map((item: any) => {\n const { id, title, url } = item;\n\n return {\n id: id,\n title: title,\n description: `${title}${clickedTabIndexName ? ` ${clickedTabIndexName.toLowerCase()}` : ''}`,\n url: url,\n image: ''\n };\n })}\n />\n\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} />\n </>\n ) : (\n <ResultEmpty />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { isLoading } = props || {};\n\n const [title, setTitle] = React.useState('');\n const [description, setDescription] = React.useState('');\n\n React.useEffect(() => {\n setTitle('No results found');\n setDescription('Your search did not match any results. <br/> Please try again');\n }, []);\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: title }}></div>\n <div className=\"sledge-instant-search__result-empty-description\" dangerouslySetInnerHTML={{ __html: description }}></div>\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [suffixIndexProduct, setSuffixIndexProduct] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [hiddenTags, setHiddenTags] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { tabs, suffix_index_product, hidden_tags, display } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(suffix_index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!display?.filter?.show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(suffix_index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(suffix_index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n if (!keyword.length) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { tabs, suffix_index_product, hidden_tags, display } = response;\n\n setAllowedTabs(tabs);\n setSuffixIndexProduct(suffix_index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderApp?.instantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n }, [keyword]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleMultiSearch({ tabs: allowedTabs, suffix_index_product: suffixIndexProduct, hidden_tags: hiddenTags, display: displaySettings }, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder=\"Search anything\"\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onResetField={() => setKeyword('')}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={keyword.length ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"grey-100\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"grey-100\"\n rounded=\"md\"\n animationDuration=\"13s\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading} withCorner={false}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists listsComponent={otherIndexListsComponent} name={name} items={hits} isComponentJsVersion={isJsVersion} />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">Products</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">No product were found</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult component={searchViewMoreResultComponent} keyword={keyword} isComponentJsVersion={isJsVersion} />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["jsx","React","jsxs","PopoverElement.Root","open","PopoverElement.Trigger","PopoverElement.Portal","PopoverElement.Content","PopoverElement.Close","PopoverElement.Arrow","ProgressElement.Root","ProgressElement.Indicator","CheckboxElement.Root","CheckboxElement.Indicator","SliderElement.Root","SliderElement.Track","SliderElement.Range","SliderElement.Thumb","RadioGroupElement.Root","RadioGroupElement.Item","RadioGroupElement.Indicator","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","SelectElement.ScrollDownButton","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","value","addToCartTrigger","_b","_a","_c","Fragment","_d","_f","_e","shareLink","WidgetHeaderSort","WidgetHeader","data","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","index","instantSearchProductClickTrigger","TooltipElement.Provider","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","TooltipElement.Content","TooltipElement.Arrow","ScrollAreaElement.Root","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","ScrollAreaElement.Thumb","ScrollAreaElement.Corner","ResponsiveMasonry","_i","_h","_g","_k","_j","Dialog.Root","Dialog.Portal","Dialog.Overlay","Dialog.Content","searchParams","facets"],"mappings":"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"}
|