{"version":3,"file":"main.js?app=plp","mappings":"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","sources":["webpack://product-list/webpack/runtime/chunk loaded","webpack://product-list/webpack/runtime/create fake namespace object","webpack://product-list/webpack/runtime/load script","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/constants.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/chevron-right-big.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-fr.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/store.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media-error/index.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/user.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-it.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/string-utils.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_festival_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/product-list-data/index.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_black_fr.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/alert.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/utils/icon-factory.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/recommended-products/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/br-anonymous-visitor-id.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/recommended-products/build-recommendation-params.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/recommended-products/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/trade-banner/partials/learn-more-drawer.styles.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/shipping.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-dol-common-params.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/copyright-text/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/password-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/error-boundary/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-search-v2.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-fetch-grid-content.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/pandora-product-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-add-to-bag-flow/utils/orderability-helpers.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-us.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/cc-discover.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-password-reset.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-current-basket.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/category-query-helpers/index.js","webpack://product-list/../product-details/overrides/app/pages/product-detail/hooks/use-cart-error-handling.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/scripts/tealium.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/tealium/index.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/check.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/hand-with-heart.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/credit-card.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/receipt.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-current-customer.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-grid/product-fetcher.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-grid/product-list.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-grid/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/page-designer/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-app-origin-config.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-breadcrumbs.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-infinite-query.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/ring-sizer-entry/ring-sizer-icon.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/product-tracking-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-ring-sizer-entry.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/ring-sizer-entry/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/finger-sizer-entry/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-body.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-navigation-callback.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-variation-params.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Grid/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-toast.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/close-button/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/csp-nonce/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/mini-cart/partials/MiniCartCallToAction.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/hooks/use-product-carousel-data.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/livechat.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/truck-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/pdp-link.jsx","webpack://product-list/../product-details/overrides/app/components/sequential-size-selector/sequential-selector-styles.js","webpack://product-list/../product-details/overrides/app/components/sequential-size-selector/partials/image-tab-bar.jsx","webpack://product-list/../product-details/overrides/app/components/sequential-size-selector/index.js","webpack://product-list/../product-details/overrides/app/components/buy-box/buy-box.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/store-pickup/store-pickup.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/store-pickup/index.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/constants/delivery-estimate-messages.js","webpack://product-list/../product-details/overrides/app/components/buy-box/utils/resolve-product-type.js","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/delivery-estimate-subcomponents.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/delivery-header-view.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/delivery-list-view.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/lod-messaging.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/call-out-message.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/utils/get-calculate-ld-flags.js","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/delivery-estimate.jsx","webpack://product-list/../product-details/overrides/app/components/buy-box/hooks/use-promise-engine-delivery-flag.js","webpack://product-list/../product-details/overrides/app/hooks/use-delivery-estimates-payload.js","webpack://product-list/../product-details/overrides/app/components/buy-box/utils/get-enrich-products.js","webpack://product-list/../product-details/overrides/app/components/buy-box/hooks/use-delivery-estimate-manager.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-delivery-estimates.js","webpack://product-list/../product-details/overrides/app/components/buy-box/utils/transform-delivery-data.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/cnc-availability-utils.js","webpack://product-list/../product-details/overrides/app/components/buy-box/partials/store-availability.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-store-availability-status.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-search-store.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/stores-list/stores.list.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/stores-list/partials/store-list-items.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/stores-list/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-loqate-search.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/store-selector/index.jsx","webpack://product-list/../product-details/overrides/app/hooks/use-cnc-store-resolver.js","webpack://product-list/../product-details/overrides/app/components/buy-box/index.jsx","webpack://product-list/../product-details/overrides/app/utils/handle-cart-item.js","webpack://product-list/../product-details/overrides/app/utils/product-eligibility-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/buy-from-tile/hooks/use-plp-product-handler.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/buy-from-tile/plp-routing-wrapper.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/buy-from-tile/utils/get-product-stock-status.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/buy-from-tile/buy-from-tile.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/buy-from-tile/index.jsx","webpack://product-list/../product-details/overrides/app/utils/product-cnc-utils.js","webpack://product-list/../product-details/overrides/app/hooks/use-buy-box-drawer.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/product-tile-content.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/helpers/member-range-pricing.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/product-tile.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/index.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/warranty-pictogram.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mandalorian_white.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/amplience/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/handlers/on-product-click.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-list-interactions.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-page-urls.js","webpack://product-list/../content/overrides/app/hooks/use-load-on-view.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation.js","webpack://product-list/../content/overrides/app/components/shared/content-dim/index.jsx","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/partials/full-screen-media-tile-media/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/collaboration-logo/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/eyebrow-text/index.jsx","webpack://product-list/../content/overrides/app/components/shared/content-promo-message/index.jsx","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/partials/full-screen-media-tile-title/index.jsx","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg/index.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-title-animation.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg-line1/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg-line2/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-opacity-animation.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-description/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-cta-animation.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-cta/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions-item/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions-link/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions/index.jsx","webpack://product-list/../content/overrides/app/utils/mapContentThemeToDimVariant.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-kcp-feature-tile-count-down.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-compact-text-style.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/utils/kcp-summer-sale-media.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/index.jsx","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-kcp-summer-sale-media.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/hooks/use-lod-banner-presence.js","webpack://product-list/../content/overrides/app/components/entry-points-tile/hooks/use-image-animation.js","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-link/entry-points-link-item/use-entry-points-link-item.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-link/entry-points-link-item/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-link/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/use-entry-points-tile.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-images/entry-points-image-overlay/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-images/entry-points-image-template/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-images/entry-points-item-image/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-images/entry-points-fixed-image/index.jsx","webpack://product-list/../content/overrides/app/components/entry-points-tile/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-consistent-image-url.js","webpack://product-list/../content/overrides/app/components/inset-media-tile/index.jsx","webpack://product-list/../content/overrides/app/components/promo-inset-tile/partials/promo-tile-texts/index.jsx","webpack://product-list/../content/overrides/app/components/promo-inset-tile/index.jsx","webpack://product-list/../content/overrides/app/components/page-cover/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/description/index.jsx","webpack://product-list/../content/overrides/app/components/feature-video/index.jsx","webpack://product-list/../content/overrides/app/components/explore-prompt/index.jsx","webpack://product-list/../content/overrides/app/components/QandA/multiple-q-and-a/partials/question-item/index.jsx","webpack://product-list/../content/overrides/app/components/QandA/multiple-q-and-a/index.jsx","webpack://product-list/../content/overrides/app/components/plp-stories/partials/plp-description/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/aspect-ratio-skeleton.js","webpack://product-list/../content/overrides/app/components/plp-stories/index.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/utils/index.js","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-header-section.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-media-section.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-description-section.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/utils/map-dol-product-to-tile.js","webpack://product-list/../content/overrides/app/components/shop-the-look/hooks/use-shop-the-look-product-grid-data.js","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-product-grid-section.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-drawer-body.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-bag-button.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-product-grid-skeleton.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/partials/shop-the-look-product-grid.jsx","webpack://product-list/../content/overrides/app/components/shop-the-look/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/partials/render-image/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/partials/render-card/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/partials/render-carousel/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/partials/render-grid/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/partials/render-text/index.jsx","webpack://product-list/../content/overrides/app/components/craft-and-quality/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/image-placeholder/index.jsx","webpack://product-list/../content/overrides/app/components/entry-cards/partials/entry-card/index.jsx","webpack://product-list/../content/overrides/app/components/entry-cards/partials/entry-cards-header/index.jsx","webpack://product-list/../content/overrides/app/components/entry-cards/use-entry-cards.js","webpack://product-list/../content/overrides/app/components/entry-cards/index.jsx","webpack://product-list/../content/overrides/app/components/text-and-media/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/article-section/partials/paragraph-section/index.jsx","webpack://product-list/../content/overrides/app/components/article-section/partials/cta-section/index.jsx","webpack://product-list/../content/overrides/app/components/article-section/index.jsx","webpack://product-list/../content/overrides/app/components/QandA/single-q-and-a/partials/question/index.jsx","webpack://product-list/../content/overrides/app/components/QandA/single-q-and-a/use-single-q-and-a.jsx","webpack://product-list/../content/overrides/app/components/shared/content-block/partials/content-block-subheading/index.jsx","webpack://product-list/../content/overrides/app/components/shared/content-block/partials/content-block-description/index.jsx","webpack://product-list/../content/overrides/app/components/shared/content-block/partials/content-block-link/index.jsx","webpack://product-list/../content/overrides/app/components/shared/content-block/partials/content-block-image/index.jsx","webpack://product-list/../content/overrides/app/components/shared/content-block/index.jsx","webpack://product-list/../content/overrides/app/utils/extractUniqueProductIDs.js","webpack://product-list/../content/overrides/app/components/shared/product-block/index.jsx","webpack://product-list/../content/overrides/app/components/QandA/single-q-and-a/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/partials/tab-list.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/partials/tab-caption.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/hooks/use-tab-navigation.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/amplience/wrapper/amplience-wrapper.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/amplience/wrapper/hooks/use-mapped-component.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/token-constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media/utils.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/klarna_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/lightbox-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/engraving-preview-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/engraving-tracking-helpers.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-add-to-cart-analytics.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/calendar-with-check-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/partials/progress-bar-container.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/partials/progress-bar.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/partials/controls.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/partials/play-pause-btn.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/partials/animated-slide.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/hooks/use-carousel-init.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/hooks/use-swiper-touch-events.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/hooks/use-drag-click-suppression.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/useRegistrationFields.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/social-facebook.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-dol-basket-mutation.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/brand-logo.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/basket.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/gift-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-local-storage.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/hooks/use-delayed-on-close.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/search.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-fetch-content.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-url-mapping.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/usePdpStaticContent.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-wishlist-analytics.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-wishlist-items.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-einstein.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/chevron-up.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/file.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/lock.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/hamburger.svg","webpack://product-list/../product-details/overrides/app/api_keys/ld-keys.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/engraving.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pixar_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-view-bag-loader/index.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/cc-cvv.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/organization-schema.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-products-inventory.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-products.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/search/partials/search-flyout/search-flyout.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/query-key-helpers.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/mfe-registry/context.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/mfe-registry/index.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/klarna_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/product-search-mapper.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-capabilities.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/location.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-search-params.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-app-origin.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/view-bag-button-content/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-derived-product.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/password-requirements.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-effective-date-time.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/brand-logo-footer.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mandalorian_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-custom-keys.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/br-explicit-referrer.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-pixel-analytics.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-cn.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/like.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/grid.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-multi-site.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/visibility.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/utils/index.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/red-cross.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/signout.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/bag.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/chevron-left-big.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-currency.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/filter.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/tealium/get-initial-data-object.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/getSiteCluster.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/image/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/server-cookies.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/transform-product-scapi-dol.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/utils/icon-loader.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/scroll-area/index.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/social-youtube.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/finger-sizer-flow/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/hooks/use-responsive-placement.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/reset-password-fields.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/useResetPasswordFields.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/reset-password/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-cart-state-products.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-custom-apis.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url-helpers/build-error-page-url.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/next.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/cross.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/common.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/hand-with-heart-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/get-asset-info-helpers.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-menu-categories.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-content-link-logic.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/use-tealium-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/content-link/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-cms-action.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-search.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/hand-with-heart-primary.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/carat-message.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_black_blue.svg","webpack://product-list/../product-details/overrides/app/components/size-selector/utils.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/check-site-locator.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url-helpers/remove-locale-prefix.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url-helpers/is-non-category-route.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url-helpers/remove-parameters.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url-helpers/map-url-segment.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/email-confirmation/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-auth-modal.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-previous.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/constants.js","webpack://product-list/../content/overrides/app/components/shop-the-look/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/category-tree-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/scripts/pixel.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-sort-urls.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-search-url-handler.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/mute.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/dol-channel-headers.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-drawer-analytics.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/hooks/use-drawer-tracking.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/useLoginFields.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_white.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/heart.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/wishlist/use-wish-list-dol.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/wish-list/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/wishlist/use-customer-product-lists.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/registration-fields.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/register/index.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pause.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/size-chart-entry/index.jsx","webpack://product-list/../product-details/overrides/app/components/size-guide/size-guide.styles.js","webpack://product-list/../product-details/overrides/app/components/size-guide/partials/size-guide-table.jsx","webpack://product-list/../product-details/overrides/app/components/size-guide/partials/size-guide-content.jsx","webpack://product-list/../product-details/overrides/app/components/ring-sizer/partials/ring-sizer-icons.jsx","webpack://product-list/../product-details/overrides/app/components/ring-sizer/partials/credit-card-svg.jsx","webpack://product-list/../product-details/overrides/app/components/ring-sizer/ring-sizer.styles.js","webpack://product-list/../product-details/overrides/app/components/ring-sizer/partials/ring-sizer-measurement.jsx","webpack://product-list/../product-details/overrides/app/components/ring-sizer/index.jsx","webpack://product-list/../product-details/overrides/app/components/size-guide/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/link/index.jsx","webpack://product-list/../content/overrides/app/api_keys/ld-keys.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/image.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/logger-instance.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/chevron-down.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/editorial-link/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-image.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_bridgerton_black.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-pdp-search-params.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/cc-amex.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pink-check.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/afterpay_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-cart-state-analytics.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/drawer-utils/constants.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/visibility-off.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/utils/ring-sizer-entry.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/green-check.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-store-preferences.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/social-twitter.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/preload-links.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/skeleton-placeholder.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/image-renderer.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/use-image-width.js","webpack://product-list/../product-details/overrides/app/components/notify-me/partials/notify-me-form.jsx","webpack://product-list/../product-details/overrides/app/components/notify-me/notify-me-styles.js","webpack://product-list/../product-details/overrides/app/components/notify-me/partials/notify-me-success.jsx","webpack://product-list/../product-details/overrides/app/components/notify-me/index.jsx","webpack://product-list/./overrides/app/main.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-category.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/figma-logo.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mypandora_black.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/important-info.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/transformImageUrl.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-ca.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora_collectors_edition.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_mint.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mypandora_white.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/account.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/index.original.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-device-type.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/link.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-selected-store.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/auth-utils.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/github-logo.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/trade-banner/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/_app/partials/hooks/use-countdown.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/theme/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/pages/product-list/partials/empty-results.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/animations.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/pink-overlay/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/breadcrumb-schema.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/content-tracking-helpers.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/unmute.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_bridgerton_white.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/hp_x_pandora_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/url-mapper/url-mapper.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/url-mapper/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/pixel/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/user-price-context/user-price-context.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/user-price-context/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/getUserLocation.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-geo-location.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/api_keys/search-keys.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/price.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/motion/motion-box.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/motion/cascade-item.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/chevron-up-big.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-navigation.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/sparkles.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/marvel_x_pandora_black.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/social-instagram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/rich-text-editor/utils/parse-rich-text.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/rich-text-editor/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/product-type-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-grid/product-tile-wrapper.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-customer-baskets.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/cnc-constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/product-query-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/site-utils.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/return-primary.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/constants.js","webpack://product-list/../content/overrides/app/components/entry-cards/constants.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/return-pictogram.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/social-pinterest.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons-temp/index.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/diamond.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/marvel_x_pandora_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/layerStyles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/fonts.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/sizes.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/textStyles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/rtl.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/alert.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/button.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/drawer.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Input/input.style.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/_app.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/header/header.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/components/project/rac-drawer.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/checkout-footer.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/footer.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/social-icons/social-icons.styles.js","webpack://product-list/../content/overrides/app/components/shop-the-look/shop-the-look.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/pink-overlay/pink-overlay.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/partials/loading-dots/loading-dots.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/product-tile.styles.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/product-tile.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/member-price-tooltip.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel-step-indicator/carousel-step-indicator.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/search/partials/search-mobile/search-mobile.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/trade-banner/trade-banner.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/carousel.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/product-carousel.style.js","webpack://product-list/./overrides/app/components/hero-banner/hero-banner.styles.js","webpack://product-list/./overrides/app/components/visual-navigation/visual-navigation.styles.js","webpack://product-list/./overrides/app/components/content-tabs/content-tabs.styles.js","webpack://product-list/./overrides/app/components/filter/filter-bar/filter-bar.styles.js","webpack://product-list/./overrides/app/components/filter/filter-drawer/filter-drawer.styles.js","webpack://product-list/./overrides/app/components/recirculation-navigator/recirculation-navigator.styles.js","webpack://product-list/./overrides/app/components/search-result-header/search-result-header.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/collaboration-logo/collaboration-logo.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/eyebrow-text/eyebrow-text.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/description/description.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/video-player.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/partials/video-controls/video-controls.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/copyright-text/copyright-text.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media-error/media-error.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media/media.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/image-card/image-card.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/image-placeholder/image-placeholder.style.js","webpack://product-list/../content/overrides/app/components/craft-and-quality/craft-and-quality.style.js","webpack://product-list/../content/overrides/app/components/entry-cards/entry-cards.style.js","webpack://product-list/../content/overrides/app/components/entry-cards/partials/entry-card/entry-card.style.js","webpack://product-list/../content/overrides/app/components/shared/content-promo-message/content-promo-message.style.js","webpack://product-list/../content/overrides/app/components/feature-video/feature-video.style.js","webpack://product-list/../content/overrides/app/components/explore-prompt/explore-prompt.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/idle-user-overlay/idle-user-overlay.style.js","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/partials/full-screen-media-tile-media/full-screen-media-tile-media.style.js","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/partials/full-screen-media-tile-title/full-screen-media-tile-title.style.js","webpack://product-list/../content/overrides/app/components/full-screen-media-tile/full-screen-media-tile.style.js","webpack://product-list/../content/overrides/app/components/inset-media-tile/inset-media.style.js","webpack://product-list/../content/overrides/app/components/shared/content-dim/content-dim.style.js","webpack://product-list/../content/overrides/app/components/QandA/multiple-q-and-a/multiple-q-and-a.style.js","webpack://product-list/../content/overrides/app/components/QandA/multiple-q-and-a/partials/question-item/question-item.style.js","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-images/entry-points-image-overlay/entry-points-image-overlay.style.js","webpack://product-list/../content/overrides/app/components/entry-points-tile/entry-points-tile.style.js","webpack://product-list/../content/overrides/app/components/entry-points-tile/partials/entry-points-link/entry-points-link-item/entry-points-link-item.style.js","webpack://product-list/../content/overrides/app/components/page-cover/page-cover.style.js","webpack://product-list/../content/overrides/app/components/plp-stories/partials/plp-description/plp-description.style.js","webpack://product-list/../content/overrides/app/components/plp-stories/plp-stories.style.js","webpack://product-list/../content/overrides/app/components/scroll-panels/partials/Panel/panel.style.js","webpack://product-list/../content/overrides/app/components/visualization/partials/error-alert/error-alert.style.js","webpack://product-list/../content/overrides/app/components/visualization/content-visualization.style.js","webpack://product-list/../content/overrides/app/components/promo-inset-tile/promo-inset-tile.style.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions/kcp-feature-tile-terms-and-conditions.style.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-cta/kcp-feature-tile-cta.style.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions-link/kcp-feature-tile-terms-and-conditions-link.style.js","webpack://product-list/../content/overrides/app/components/kcp-feature-tile/kcp-feature-tile.style.js","webpack://product-list/../content/overrides/app/components/toolbar/toolbar.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Heading/heading.styles.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Link/link.style.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/link/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/link/link.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Text/text.styles.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-grid-box-width.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/menu/menu.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/nav-list-item/nav-list-item.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/dropdown-menu/dropdown-menu.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/rich-text-editor/rich-text-editor.style.js","webpack://product-list/../content/overrides/app/components/article-section/article-section.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/articles-hub/articles-hub.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/search/partials/default-suggestions/default-suggestions.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/lod-banner/lod-banner.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/tabbed-guide/tabbed-guide.style.js","webpack://product-list/../product-details/overrides/app/utils/grid.js","webpack://product-list/../product-details/overrides/app/components/gallery/gallery.styles.js","webpack://product-list/../product-details/overrides/app/components/motion-swipe/motion-swipe.styles.js","webpack://product-list/../product-details/overrides/app/components/product-view/product-view.styles.js","webpack://product-list/../product-details/overrides/app/components/part-of-set/part-of-set.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/space.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/foundations/gradients.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/shadows.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/zIndices.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/accordion.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/badge.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Checkbox/checkbox.style.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/container.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/formLabel.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/icon.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Modal/modal.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Popover/popover.style.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/radio.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/select.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/skeleton.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/base/tooltip.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Progress/progress.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionItem/accordion-item.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionButton/accordion-button.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionPanel/accordion-panel.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/breadcrumb/breadcrumb.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/search/partials/search-desktop/search.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/footer/footer.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/links-list/links-list.style.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/nested-accordion.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/locale-selector.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/offline-banner.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/pagination.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/swatch-group.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/theme/components/project/image-gallery.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/slider/slider.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/site-locator/partials/locale-menu.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/drag-button/drag-button.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/close-button/close-button.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/partials/mini-cart/mini-cart.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/nav/navigation.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/incentive-banner/incentive-banner.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/site-locator/site-locator.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/site-locator/partials/country.styles.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/live-chat/live-chat.styles.js","webpack://product-list/../product-details/overrides/app/components/product-image/product-image.styles.js","webpack://product-list/../product-details/overrides/app/components/indicators/indicators.styles.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pixar_black.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/store-primary.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/optimized-icons.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-recommendations/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-recommendations/utils/validators.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-recommendations/utils/create-recommendation-config.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-recommendations/use-recommendations.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/assurance/partials/default-button-assurance/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/assurance/partials/link-assurance/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/assurance/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/api_keys/ld-keys.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/contexts/store-locator-provider.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_white_fr.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/gift.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/apis/dol/index.js","webpack://product-list/../product-details/overrides/app/components/size-selector/index.jsx","webpack://product-list/../product-details/overrides/app/pages/product-detail/hooks/use-size-pricing.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/url.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/disney_x_pandora.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/warranty-primary.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/info.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/types.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/is-query-enabled.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/cc-visa.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/close.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/loyalty-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media/partials/media-content.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/media/index.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-products-price.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_patMcGrath_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/use-product-tile-flags.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/field/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/social-login/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/skeleton.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/got-x-pandora-white.svg","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/forms/login-fields.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/standard-login/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/passwordless-login/index.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/login/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-deep-compare-effect.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-gb.svg","webpack://product-list/./overrides/app/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/apis/oauth/index.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/useCustomQuery.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/_app/partials/constants.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/calendar-primary.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/ruler.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/seo-filters-mapper.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pictograms/store-pictogram.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/back-button/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/full-drawer-sheet.jsx","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-limit-urls.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_white_blue.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-variant.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/faq-schema.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/item-list-schema.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/collection-page-schema.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_festival_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/amplience/index.js","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/cc-mastercard.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-category-from-cache.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/returns.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-grid/product-list-skeleton.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/paypal-icon.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/drag-button/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partial-drawer-sheet.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/page-cover.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-details-analytics.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/prev.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/ring-sizer/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/member-price-tooltip.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/colors.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_horizontal_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/pixel-debounce.js","webpack://product-list/../content/overrides/app/constants.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/heart-unfilled.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/badger.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/color-message.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/favourite.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/helpers/favourite-visibility.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/image-tile.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/image-tile-desktop.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/carousel-step-indicator/carousel-step-indicator.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/image-tile-mobile.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/image-tile-carousel.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/price.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/swatch-button.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-tile/partials/swatches.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/got-x-pandora-black.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/circles-overlapping.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-promotional-pricing.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/disney_x_pandora_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/usePreferences.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/content-link/utils/content-link-utils.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/hooks/use-variation-attributes.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-filtered-product-items.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/critical-icons.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora_black.svg","webpack://product-list/../product-details/overrides/app/components/size-options/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/remote-add-to-cart.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/remote-studio-placeholder/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/remote-component/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/motion.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/api_keys/preference-keys.js","webpack://product-list/../product-details/overrides/app/components/size-selector/size-selector.styles.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_netflix_landscape_white.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/regex.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/product-utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-wish-list.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/warranty.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/helpers/query-key-helpers.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/set-ld-context-attr.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-variant-promotional-pricing.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-promotional-products-query.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-shopper-customers-mutation.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/cnc-abtest-segment.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/hp_x_pandora.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-data.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-bloomreach-sorting-options.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/_app/partials/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-default-category.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-is-client.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-notify-me.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-click-and-collect-analytics.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-recommendations-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-einstein-reco-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-bloomreach-reco-tracking.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/finger-sizer/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/partials/ConfirmationSheetCallToAction.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/partials/confirmation-sheet-progress-bar.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/partials/confirmation-sheet-bubble-bar.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/partials/product-image.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-image-url.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/partials/studio-composition-summary.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-wishlist.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/add-to-cart-modal/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/contexts/add-to-cart/index.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/paper-plane-icon.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-intersection-observer.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/get-ref-url.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/icons/index.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/heart-solid.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/check-circle.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/chevron-down-big.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/plus.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_horizontal_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-ot-banner-transition.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/onetrust/index.jsx","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/truck-primary.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/media.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/drawer-sheet/partials/lightweight-drawer.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/flag-jp.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-delivery-messages.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_netflix_landscape_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/partials/product-carousel-skeleton.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/product-carousel/partials/product-carousel-placeholder.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/chevron-right.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/primary/loyalty-primary.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/chevron-left.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/theme/foundations/breakpoints.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/afterpay_black.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionButton/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionItem/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/AccordionPanel/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/partials/loading-dots/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/button-utils/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/hooks/use-loading-animation.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/Button/hooks/use-hover-animation.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/shared/ui/DrawerContent/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/cnc-store-utils.js","webpack://product-list/../product-details/overrides/app/components/size-selector/partials/regional-sizes.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/link/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/slider/slider.jsx","webpack://product-list/./overrides/app/components/recommended-products/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/normalize-product-data.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_patMcGrath_black.svg","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/dashboard.svg","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/play.svg","webpack://product-list/../product-details/overrides/app/components/size-options/size-options.styles.js","webpack://product-list/../product-details/overrides/app/pages/product-detail/hooks/use-error-handling.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/amplience-link-info/index.jsx","webpack://product-list/../product-details/overrides/app/components/size-options/partials/size-option-price.styles.js","webpack://product-list/../product-details/overrides/app/components/size-options/partials/size-option-price.jsx","webpack://product-list/../product-details/overrides/app/components/size-options/index.jsx","webpack://product-list/../product-details/overrides/app/pages/product-detail/hooks/use-product-detail.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/remote-load.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/input/input.style.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/input/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/hooks/use-product-list-tabs.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/utils/responsive-image.js","webpack://product-list/../node_modules/@salesforce/retail-react-app/app/components/dynamic-image/index.jsx","webpack://product-list/../../node_modules/@salesforce/retail-react-app/app/assets/svg/plug.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/partials/video-controls/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/partials/poster-frame.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/constants.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/partials/video-renderer.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/hooks/use-video-source.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/utils.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/hooks/use-video-controls.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/hooks/use-control-animation.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/video-player/hooks/use-broken-video-detection.js","webpack://product-list/../templates/pandora-shared-app/overrides/app/utils/is-storybook.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/pandora-logo.svg","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/structured-data-context.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/index.jsx","webpack://product-list/../templates/pandora-shared-app/overrides/app/components/structured-data/schemas/website-schema.js","webpack://product-list/../../templates/pandora-shared-app/overrides/app/assets/svg/social-TikTok.svg","webpack://product-list/webpack/bootstrap","webpack://product-list/webpack/runtime/amd define","webpack://product-list/webpack/runtime/amd options","webpack://product-list/webpack/runtime/compat get default export","webpack://product-list/webpack/runtime/define property getters","webpack://product-list/webpack/runtime/ensure chunk","webpack://product-list/webpack/runtime/get javascript chunk filename","webpack://product-list/webpack/runtime/global","webpack://product-list/webpack/runtime/hasOwnProperty shorthand","webpack://product-list/webpack/runtime/make namespace object","webpack://product-list/webpack/runtime/node module decorator","webpack://product-list/webpack/runtime/runtimeId","webpack://product-list/webpack/runtime/sharing","webpack://product-list/webpack/runtime/publicPath","webpack://product-list/webpack/runtime/consumes","webpack://product-list/webpack/runtime/jsonp chunk loading","webpack://product-list/webpack/runtime/nonce","webpack://product-list/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"product-list:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/*\n * Copyright (c) 2022, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {defineMessage} from 'react-intl'\nimport {noop} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Global app defaults\nexport const DEFAULT_LOCALE = 'en-US'\nexport const DEFAULT_SITE_TITLE = 'Retail React App'\nexport const MAX_CACHE_AGE = 60 * 15 // 15 min\nexport const STALE_WHILE_REVALIDATE = 60 * 15 // 15 min\n\n// Constants used for product searching.\nexport const DEFAULT_SEARCH_PARAMS = {limit: 25, offset: 0, sort: 'best-matches', refine: []}\nexport const DEFAULT_LIMIT_VALUES = [25, 50, 100] // Page sizes\n\n// Constants for customer orders searching.\nexport const DEFAULT_ORDERS_SEARCH_PARAMS = {limit: 10, offset: 0, sort: 'best-matches', refine: []}\n\n// Constants for bonus product searching.\nexport const DEFAULT_BONUS_PRODUCT_SEARCH_PARAMS = {limit: 25, offset: 0}\n\n// Constants for Search Component\nexport const RECENT_SEARCH_LIMIT = 5\nexport const RECENT_SEARCH_KEY = 'recent-search-key'\nexport const RECENT_SEARCH_MIN_LENGTH = 3\n\n// Constants for product list page\nexport const PRODUCT_LIST_IMAGE_VIEW_TYPE = 'medium'\nexport const PRODUCT_LIST_SELECTABLE_ATTRIBUTE_ID = 'color'\n\n// Constants for product tile page\nexport const PRODUCT_TILE_IMAGE_VIEW_TYPE = 'medium'\nexport const PRODUCT_TILE_SELECTABLE_ATTRIBUTE_ID = 'color'\n\n// Constants for the Homepage's Shop Products section.\nexport const HOME_SHOP_PRODUCTS_CATEGORY_ID = 'newarrivals'\nexport const HOME_SHOP_PRODUCTS_LIMIT = 10\n\n// Constants for menu\nexport const CAT_MENU_DEFAULT_NAV_SSR_DEPTH = 1\nexport const CAT_MENU_DEFAULT_ROOT_CATEGORY = 'root'\n\n// Constants for shipments\nexport const DEFAULT_SHIPMENT_ID = 'me'\n\n// Default details of badge labels and the corresponding product custom properties that enable badges.\nexport const PRODUCT_BADGE_DETAILS = [\n    {\n        propertyName: 'c_isNew',\n        label: defineMessage({\n            id: 'product_tile.badge.label.new',\n            defaultMessage: 'New'\n        }),\n        color: 'green'\n    },\n    {\n        propertyName: 'c_isSale',\n        label: defineMessage({\n            id: 'product_tile.badge.label.sale',\n            defaultMessage: 'Sale'\n        }),\n        color: 'yellow'\n    }\n]\n\nexport const cssColorGroups = {\n    beige: '#d3bca9',\n    black: '#000000',\n    blue: '#4089c0',\n    brown: '#8e6950',\n    green: '#88c290',\n    grey: '#919191',\n    gray: '#919191',\n    silver: '#c0c0c0',\n    navy: '#000080',\n    orange: '#f4995c',\n    pink: '#f5a0ca',\n    purple: '#9873b9',\n    red: '#df5b5b',\n    white: '#FFFFFFF',\n    yellow: '#fbe85a',\n    gold: '#ffd700',\n    miscellaneous: 'linear-gradient(to right, orange , yellow, green, cyan, blue, violet)'\n}\n\n// Color to use for the UI surrounding the page in browsers.\nexport const THEME_COLOR = '#0176D3'\n\nexport const FILTER_ACCORDION_SATE = 'filters-expanded-index'\n\nexport const API_ERROR_MESSAGE = defineMessage({\n    id: 'global.error.something_went_wrong',\n    defaultMessage: 'Something went wrong. Try again!'\n})\nexport const INVALID_TOKEN_ERROR_MESSAGE = defineMessage({\n    defaultMessage: 'Invalid token, please try again.',\n    id: 'global.error.invalid_token'\n})\nexport const FEATURE_UNAVAILABLE_ERROR_MESSAGE = defineMessage({\n    defaultMessage: 'This feature is not currently available.',\n    id: 'global.error.feature_unavailable'\n})\n\nexport const HOME_HREF = '/'\n\nexport const urlPartPositions = {\n    PATH: 'path',\n    QUERY_PARAM: 'query_param',\n    NONE: 'none'\n}\n\n// Toast messages exist outside the scope of the base IntlProvider. This means\n// that commonly used components that require localization cannot easily be\n// extracted into a hook/helper. However, we can still extract the message\n// definitions to a common location (here), so that each message is only defined\n// once.\n\nexport const TOAST_MESSAGE_ADDED_TO_WISHLIST = defineMessage({\n    id: 'global.info.added_to_wishlist',\n    defaultMessage: '{quantity} {quantity, plural, one {item} other {items}} added to wishlist'\n})\n\nexport const TOAST_MESSAGE_ALREADY_IN_WISHLIST = defineMessage({\n    id: 'global.info.already_in_wishlist',\n    defaultMessage: 'Item is already in wishlist'\n})\n\nexport const TOAST_MESSAGE_REMOVED_ITEM_FROM_CART = defineMessage({\n    defaultMessage: 'Item removed from cart',\n    id: 'cart.info.removed_from_cart'\n})\n\nexport const TOAST_ACTION_VIEW_WISHLIST = defineMessage({\n    defaultMessage: 'View',\n    id: 'global.link.added_to_wishlist.view_wishlist'\n})\n\nexport const TOAST_MESSAGE_REMOVED_FROM_WISHLIST = defineMessage({\n    id: 'global.info.removed_from_wishlist',\n    defaultMessage: 'Item removed from wishlist'\n})\n\nexport const TOAST_MESSAGE_STORE_INSUFFICIENT_INVENTORY = defineMessage({\n    id: 'global.info.store_insufficient_inventory',\n    defaultMessage: \"Some items aren't available for pickup at this store.\"\n})\n\n// Einstein recommender constants used in <RecommendedProducts/>\nexport const EINSTEIN_RECOMMENDERS = {\n    ADD_TO_CART_MODAL: 'pdp-similar-items',\n    CART_RECENTLY_VIEWED: 'viewed-recently-einstein',\n    CART_MAY_ALSO_LIKE: 'product-to-product-einstein',\n    PDP_COMPLETE_SET: 'complete-the-set',\n    PDP_MIGHT_ALSO_LIKE: 'pdp-similar-items',\n    PDP_RECENTLY_VIEWED: 'viewed-recently-einstein',\n    EMPTY_SEARCH_RESULTS_TOP_SELLERS: 'home-top-revenue-for-category',\n    EMPTY_SEARCH_RESULTS_MOST_VIEWED: 'products-in-all-categories'\n}\n\nexport const SHIPPING_COUNTRY_CODES = [\n    {value: 'CA', label: 'Canada'},\n    {value: 'US', label: 'United States'}\n]\n\n// Constant to Enable Active Data\nexport const ACTIVE_DATA_ENABLED = true\n\nexport const REMOVE_UNAVAILABLE_CART_ITEM_DIALOG_CONFIG = {\n    dialogTitle: defineMessage({\n        defaultMessage: 'Items Unavailable',\n        id: 'confirmation_modal.remove_cart_item.title.items_unavailable'\n    }),\n    confirmationMessage: defineMessage({\n        defaultMessage:\n            'Some items are no longer available online and will be removed from your cart.',\n        id: 'confirmation_modal.remove_cart_item.message.need_to_remove_due_to_unavailability'\n    }),\n    primaryActionLabel: defineMessage({\n        defaultMessage: 'Remove',\n        id: 'confirmation_modal.remove_cart_item.action.remove'\n    }),\n    primaryActionAriaLabel: defineMessage({\n        defaultMessage: 'Remove unavailable products',\n        id: 'confirmation_modal.remove_cart_item.assistive_msg.remove'\n    }),\n    onPrimaryAction: noop\n}\n/**\n * Constant to enable the store locator and shop the store feature.\n * @deprecated Use `storeLocatorEnabled` in the config file instead\n */\nexport const STORE_LOCATOR_IS_ENABLED = true\nexport const STORE_LOCATOR_SUPPORTED_COUNTRIES = [\n    {\n        countryCode: 'US',\n        countryName: 'United States'\n    },\n    {\n        countryCode: 'DE',\n        countryName: 'Germany'\n    }\n]\nexport const STORE_LOCATOR_DEFAULT_POSTAL_CODE = '10178'\nexport const STORE_LOCATOR_RADIUS = 100\nexport const STORE_LOCATOR_RADIUS_UNIT = 'km'\nexport const STORE_LOCATOR_DEFAULT_COUNTRY = 'DE'\nexport const STORE_LOCATOR_DEFAULT_COUNTRY_CODE = 'DE'\nexport const STORE_LOCATOR_DEFAULT_PAGE_SIZE = 10\nexport const STORE_LOCATOR_NUM_STORES_PER_REQUEST_API_MAX = 200 // This is an API limit and is therefore not configurable\n\nexport const DEFAULT_DNT_STATE = true\n// Constants for shopper context\n// Supported non-string field types used in SHOPPER_CONTEXT_SEARCH_PARAMS below.\n// Only non-string types need to be identified using the \"type\" field.\n// If no \"type\" field is present, the value will be parsed as a string by default.\nexport const SHOPPER_CONTEXT_FIELD_TYPES = {\n    INT: 'int',\n    DOUBLE: 'double',\n    ARRAY: 'array'\n}\nexport const SHOPPER_CONTEXT_SEARCH_PARAMS = {\n    sourceCode: {paramName: 'sourceCode'},\n    geoLocation: {\n        city: {paramName: 'city'},\n        country: {paramName: 'country'},\n        countryCode: {paramName: 'countryCode'},\n        latitude: {paramName: 'latitude', type: SHOPPER_CONTEXT_FIELD_TYPES.DOUBLE},\n        longitude: {paramName: 'longitude', type: SHOPPER_CONTEXT_FIELD_TYPES.DOUBLE},\n        metroCode: {paramName: 'metroCode'},\n        postalCode: {paramName: 'postalCode'},\n        region: {paramName: 'region'},\n        regionCode: {paramName: 'regionCode'}\n    },\n    customQualifiers: {\n        // Add custom qualifiers here\n    },\n    assignmentQualifiers: {\n        // Add assignment qualifiers here\n    }\n}\n\n// Constants for Login\nexport const LOGIN_TYPES = {\n    PASSWORD: 'password',\n    PASSWORDLESS: 'passwordless',\n    SOCIAL: 'social'\n}\n\nexport const INVALID_TOKEN_ERROR = /invalid token/i\n\n/**\n * @deprecated The SLAS private client proxy will mask user not found errors\n * so this variable should not be used as the app will not see these errors.\n */\nexport const USER_NOT_FOUND_ERROR = /user not found/i\n\n/**\n * Constant to enable partial hydration capabilities, i.e. `<Island/>` components\n * @deprecated Use `partialHydrationEnabled` in the config file instead\n */\nexport const PARTIAL_HYDRATION_ENABLED = false\n\n// Constants for Salesforce Payments\nexport const PAYMENT_METHOD_TYPES = {\n    CARD: 'card',\n    PAYPAL: 'paypal',\n    VENMO: 'venmo'\n}\n\nexport const PAYMENT_GATEWAYS = {\n    STRIPE: 'stripe',\n    ADYEN: 'adyen',\n    PAYPAL: 'paypal'\n}\n\nexport const SETUP_FUTURE_USAGE = {\n    ON_SESSION: 'on_session',\n    OFF_SESSION: 'off_session'\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-right-big\",\n  \"use\": \"chevron-right-big-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-right-big\\\">\\n<g id=\\\"chevron-right-big_Chevron right\\\" clip-path=\\\"url(#chevron-right-big_clip0_3221_123720)\\\">\\n<path id=\\\"chevron-right-big_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.0658 10.0003L4.87338 0.807937L5.58049 0.10083L15.48 10.0003L5.58049 19.8998L4.87338 19.1927L14.0658 10.0003Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"chevron-right-big_clip0_3221_123720\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-fr\",\n  \"use\": \"flag-fr-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" id=\\\"flag-fr\\\">\\n    <g clip-path=\\\"url(#flag-fr_clip0)\\\">\\n        <g clip-path=\\\"url(#flag-fr_clip1)\\\">\\n            <path d=\\\"M25.25 4H-.25v17h25.5V4z\\\" fill=\\\"#ED2939\\\" />\\n            <path d=\\\"M16.75 4h-17v17h17V4z\\\" fill=\\\"#fff\\\" />\\n            <path d=\\\"M8.25 4h-8.5v17h8.5V4z\\\" fill=\\\"#002395\\\" />\\n        </g>\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 0H0v24h24V0zM12.5 21a8.5 8.5 0 100-17 8.5 8.5 0 000 17z\\\" fill=\\\"#fff\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"flag-fr_clip0\\\">\\n            <path fill=\\\"#fff\\\" d=\\\"M0 0h24v24H0z\\\" />\\n        </clipPath>\\n        <clipPath id=\\\"flag-fr_clip1\\\">\\n            <path fill=\\\"#fff\\\" transform=\\\"translate(-.25 4)\\\" d=\\\"M0 0h25.5v17H0z\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"store\",\n  \"use\": \"store-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"store\\\">\\n<path d=\\\"M21.92 9.42C21.94 9.3 21.95 9.17 21.95 9.04C21.95 8.68 21.64 7.25 21.02 4.76C20.91 4.31 20.51 4 20.05 4H3.9C3.44 4 3.04 4.31 2.93 4.76C2.32 7.24 2 8.68 2 9.04C2 9.17 2.01 9.29 2.03 9.44L2.06 9.69C2.28 10.75 3.01 11.6 3.97 12.01V19.53C3.97 20.08 4.42 20.53 4.97 20.53H13.97C14.52 20.53 14.97 20.08 14.97 19.53V12.18C15.53 12.04 16.05 11.77 16.46 11.38C16.88 11.78 17.4 12.06 17.97 12.19V19.53C17.97 20.08 18.42 20.53 18.97 20.53C19.52 20.53 19.97 20.08 19.97 19.53V12.01C20.92 11.59 21.67 10.73 21.89 9.59L21.91 9.44M12.98 18.53H5.98V12.19C6.47 12.07 6.92 11.84 7.31 11.53C7.37 11.48 7.44 11.44 7.5 11.38C7.56 11.44 7.63 11.48 7.69 11.53C8.26 12 8.96999 12.28 9.74999 12.28C10.53 12.28 11.24 11.99 11.81 11.53C11.87 11.48 11.94 11.44 12 11.38C12.06 11.44 12.13 11.48 12.19 11.53C12.44 11.73 12.7 11.91 13 12.03V18.53H12.98ZM19.94 9.14V9.2V9.22V9.27C19.9 9.47 19.8 9.64 19.68 9.79C19.45 10.08 19.11 10.27 18.72 10.27C18.49 10.27 18.28 10.19 18.1 10.08C17.8 9.91 17.57 9.63 17.5 9.27C17.41 8.8 16.91 8.47 16.43 8.47C15.95 8.47 15.54 8.81 15.45 9.27C15.38 9.61 15.16 9.89 14.87 10.06C14.68 10.18 14.46 10.26 14.23 10.26C13.73 10.26 13.3 9.95 13.11 9.51C13.08 9.43 13.03 9.36 13.02 9.27C12.93 8.8 12.43 8.47 11.95 8.47C11.47 8.47 11.06 8.8 10.97 9.27C10.95 9.36 10.91 9.43 10.88 9.51C10.69 9.95 10.26 10.26 9.76 10.26C9.26 10.26 8.83 9.95 8.64 9.51C8.61 9.43 8.56 9.36 8.55 9.27C8.46 8.8 7.95 8.47 7.48 8.47C7.01 8.47 6.59 8.8 6.5 9.27C6.48 9.36 6.44 9.43 6.41 9.51C6.22 9.95 5.79 10.26 5.29 10.26C4.89 10.26 4.54 10.06 4.32 9.79C4.21 9.66 4.12 9.52 4.09 9.36L4.06 9.12L4.05 9.05C4.07 8.78 4.39 7.37 4.73 5.97H19.31C19.65 7.36 19.97 8.77 19.99 9.01C19.99 9.05 19.99 9.08 19.98 9.12L19.94 9.14Z\\\" fill=\\\"black\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useLocation} from 'react-router-dom'\n\nimport {\n    Alert,\n    AlertIcon,\n    AlertTitle,\n    Text,\n    AspectRatio,\n    useMultiStyleConfig,\n    Box\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {NO_ASPECT_RATIO} from 'pandora-shared-app/overrides/app/utils/types'\n\nexport const MISSING_IMAGE = 'Image type selected, but no image was uploaded. Please add an image.'\nexport const MISSING_VIDEO = 'Video type selected, but no video was uploaded. Please add a video.'\nexport const MISSING_MEDIA =\n    'Media type it was not selected. Please select a media type and asset(s).'\n\nexport const MediaError = (props) => {\n    const {message, aspectRatio = 3 / 4} = props\n    const {container, alert, icon, title} = useMultiStyleConfig('MediaError')\n\n    // Use useLocation to extract query parameters\n    const {search} = useLocation()\n    const queryParams = new URLSearchParams(search)\n    const vse = queryParams.get('vse')\n\n    const AlertBox = useMemo(\n        () => (\n            <Alert status=\"error\" variant=\"subtle\" sx={alert} height=\"full\">\n                <AlertIcon boxSize={10} sx={icon} />\n                <AlertTitle sx={title} fontSize=\"xl\">\n                    Error\n                </AlertTitle>\n                <Text maxWidth=\"sm\">{message}</Text>\n            </Alert>\n        ),\n        [alert, icon, title, message]\n    )\n\n    return (\n        message &&\n        (aspectRatio && aspectRatio !== NO_ASPECT_RATIO ? (\n            <AspectRatio data-testid=\"media-error\" ratio={aspectRatio} sx={container}>\n                {vse ? AlertBox : <></>}\n            </AspectRatio>\n        ) : (\n            <Box width=\"full\" data-testid=\"media-error\" height=\"full\" sx={container}>\n                {vse ? AlertBox : <></>}\n            </Box>\n        ))\n    )\n}\n\nMediaError.displayName = 'MediaError'\n\nMediaError.propTypes = {\n    message: PropTypes.string,\n    aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"user\",\n  \"use\": \"user-usage\",\n  \"viewBox\": \"0 0 18 18\",\n  \"content\": \"<symbol viewBox=\\\"0 0 18 18\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"user\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.1704 4.83341C13.1704 7.1346 11.3044 9.00008 9.00252 9.00008C6.70063 9.00008 4.83459 7.1346 4.83459 4.83341C4.83459 2.53223 6.70063 0.666748 9.00252 0.666748C11.3044 0.666748 13.1704 2.53223 13.1704 4.83341ZM11.5033 4.83341C11.5033 3.4527 10.3836 2.33341 9.00251 2.33341C7.62138 2.33341 6.50176 3.4527 6.50176 4.83341C6.50176 6.21413 7.62138 7.33341 9.00251 7.33341C10.3836 7.33341 11.5033 6.21413 11.5033 4.83341ZM17.2467 16.1251L15.6712 12.9667C14.9646 11.557 13.5224 10.6668 11.9451 10.6667H6.05997C4.48264 10.6668 3.04048 11.557 2.33384 12.9667L0.758362 16.1251C0.628348 16.383 0.641206 16.6899 0.792341 16.936C0.943477 17.1822 1.21134 17.3325 1.50025 17.3334H16.5048C16.7937 17.3325 17.0616 17.1822 17.2127 16.936C17.3638 16.6899 17.3767 16.383 17.2467 16.1251ZM3.82595 13.7167L2.85066 15.6667H15.1544L14.1791 13.7167C13.7563 12.8701 12.8916 12.3347 11.9451 12.3334H6.05996C5.11343 12.3347 4.24874 12.8701 3.82595 13.7167Z\\\" fill=\\\"#181818\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-it\",\n  \"use\": \"flag-it-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" id=\\\"flag-it\\\">\\n    <g clip-path=\\\"url(#flag-it_clip0)\\\">\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 3h22.667v1.308H0V3zm0 2.616h22.667v1.309H0V5.616zM0 8.23h22.667v1.312H0V8.229zm0 2.617h22.667v1.308H0v-1.308zm0 2.616h22.667v1.309H0v-1.309zm0 2.613h22.667v1.309H0v-1.309zm0 2.617h22.667V20H0v-1.308z\\\" fill=\\\"#BD3D44\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 4.308h22.667v1.308H0V4.308zm0 2.617h22.667V8.23H0V6.925zm0 2.613h22.667v1.308H0V9.538zm0 2.616h22.667v1.308H0v-1.308zm0 2.617h22.667v1.308H0V14.77zm0 2.613h22.667v1.308H0v-1.308z\\\" fill=\\\"#fff\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 3h12.92v9.154H0V3z\\\" fill=\\\"#192F5D\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.076 3.392l.12.362h.378l-.306.222.116.365-.308-.225-.306.222.116-.362-.308-.222h.385l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.365-.305-.225-.31.222.117-.362-.305-.222h.378l.12-.362zm2.151 0l.12.362h.375l-.306.222.117.365-.31-.225-.305.222.117-.362-.31-.222h.383l.12-.362zm2.155 0l.116.362h.382l-.309.222.12.365-.309-.225-.309.222.12-.362-.309-.222h.378l.12-.362zm2.152 0l.12.362h.378l-.306.222.116.365-.308-.225-.306.222.116-.362-.305-.222h.378l.117-.362zm2.155 0l.116.362h.381l-.308.222.12.365-.31-.225-.308.222.12-.362-.31-.222h.382l.117-.362zm-9.69.916l.117.362h.382l-.309.223.113.362-.299-.223-.309.223.11-.362-.299-.223h.379l.116-.362zm2.152 0l.12.362h.378l-.308.223.12.362-.31-.223-.308.223.12-.362-.31-.223h.382l.116-.362zm2.155 0l.116.362h.382l-.309.223.117.362-.306-.223-.309.223.117-.362-.306-.223h.379l.12-.362zm2.152 0l.12.362h.378l-.309.223.12.362-.31-.223-.305.223.117-.362-.31-.223H8.5l.113-.362zm2.155 0l.116.362h.382l-.31.223.117.362-.305-.223-.31.223.117-.362-.305-.223h.378l.12-.362zm-9.692.913l.12.369h.378l-.306.222.116.362-.308-.226-.306.226.116-.365-.308-.222h.385l.113-.366zm2.155 0l.116.366h.382l-.31.222.117.362-.305-.226-.31.226.117-.365-.305-.223h.378l.12-.362zm2.151 0l.12.366h.375l-.306.222.117.362-.31-.226-.305.226.117-.365-.31-.223h.383l.12-.362zm2.155 0l.116.366h.382l-.309.222.12.362-.309-.226-.309.226.12-.365-.309-.223h.378l.12-.362zm2.152 0l.12.366h.378l-.306.222.116.362-.308-.226-.306.226.116-.365-.305-.223h.378l.117-.362zm2.155 0l.116.366h.381l-.308.222.12.362-.31-.226-.308.226.12-.365-.31-.223h.382l.117-.362zm-9.69.917l.117.362h.382l-.309.222.116.365-.305-.225-.309.222.116-.362-.305-.222h.378l.12-.362zm2.152 0l.12.362h.378l-.308.222.12.365-.31-.225-.308.222.12-.362-.31-.222h.382l.116-.362zm2.155 0l.116.362h.382l-.309.222.117.365-.306-.225-.309.222.117-.362-.306-.222h.379l.12-.362zm2.152 0l.12.362h.378l-.306.222.117.365-.31-.225-.305.222.117-.362-.31-.222H8.5l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.365-.305-.225-.31.222.117-.362-.305-.222h.378l.12-.362zm-9.692.916l.12.362h.378l-.306.223.116.365-.308-.226L.77 8l.116-.361-.308-.223h.385l.113-.362zm2.155 0l.116.362h.382l-.31.223.117.361-.305-.222L2.92 8l.117-.361-.305-.223h.378l.12-.362zm2.151 0l.12.362h.375l-.306.223.117.365-.31-.226L5.074 8l.117-.361-.31-.223h.383l.12-.362zm2.155 0l.116.362h.382l-.309.223.12.365-.309-.226L7.228 8l.12-.361-.309-.223h.378l.12-.362zm2.152 0l.12.362h.378l-.306.223.116.365-.308-.226L9.383 8 9.5 7.64l-.305-.223h.378l.117-.362zm2.155 0l.116.362h.381l-.308.223.12.365-.31-.226-.308.222.12-.361-.31-.223h.382l.117-.362zm-9.69.917l.117.361h.382l-.309.223.116.362-.305-.226-.309.226.116-.365-.305-.223h.378l.12-.358zm2.152 0l.12.361h.378l-.308.223.12.362-.31-.226-.308.226.12-.365-.31-.223h.382l.116-.358zm2.155 0l.116.361h.382l-.309.223.117.362-.306-.226-.309.226.117-.365-.306-.223h.379l.12-.358zm2.152 0l.12.361h.378l-.306.223.117.362-.31-.226-.305.226.117-.365-.31-.223H8.5l.113-.358zm2.155 0l.116.361h.382l-.31.223.117.362-.305-.226-.31.226.117-.365-.305-.223h.378l.12-.358zm-9.692.913l.12.365h.378l-.306.222.116.359-.308-.223-.306.223.116-.362-.308-.222h.385l.113-.362zm2.155 0l.116.365h.382l-.31.222.12.359-.308-.223-.31.223.12-.362-.308-.222h.378l.12-.362zm2.151 0l.12.365h.375l-.306.222.117.359-.31-.223-.305.223.117-.362-.31-.222h.383l.12-.362zm2.155 0l.116.365h.382l-.309.222.12.359-.309-.223-.309.223.12-.362-.309-.222h.378l.12-.362zm2.152 0l.12.365h.378l-.306.222.116.359-.308-.223-.306.223.116-.362-.305-.222h.378l.117-.362zm2.155 0l.116.365h.381l-.308.222.12.359-.31-.223-.308.223.12-.362-.31-.222h.382l.117-.362zm-9.69.916l.117.362h.382l-.309.222.116.366-.305-.226-.309.222.116-.362-.305-.222h.378l.12-.362zm2.152 0l.12.362h.378l-.308.222.12.366-.31-.226-.308.222.12-.362-.31-.222h.382l.116-.362zm2.155 0l.116.362h.382l-.309.222.117.366-.306-.226-.309.222.117-.362-.306-.222h.379l.12-.362zm2.152 0l.12.362h.378l-.306.222.117.366-.31-.226-.305.222.117-.362-.31-.222H8.5l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.366-.305-.226-.31.222.117-.362-.305-.222h.378l.12-.362zm-9.692.916l.12.362h.378l-.306.223.116.362-.308-.223-.306.223.116-.366-.308-.222h.385l.113-.358zm2.155 0l.116.362h.382l-.31.223.12.362-.308-.223-.31.223.12-.366-.308-.222h.378l.12-.358zm2.151 0l.12.362h.375l-.299.223.116.362-.309-.223-.305.223.116-.366-.309-.222h.382l.113-.358zm2.155 0l.116.362h.382l-.309.223.12.362-.309-.223-.309.223.12-.366-.309-.222h.378l.12-.358zm2.152 0l.12.362h.378l-.306.223.116.362-.308-.223-.306.223.116-.366-.305-.222h.378l.117-.358zm2.155 0l.116.362h.381l-.308.223.12.362-.31-.223-.308.223.12-.366-.31-.222h.382l.117-.358z\\\" fill=\\\"#fff\\\" />\\n        <g clip-path=\\\"url(#flag-it_clip1)\\\">\\n            <path d=\\\"M25.25 4H-.25v17h25.5V4z\\\" fill=\\\"#009246\\\" />\\n            <path d=\\\"M25.25 4h-17v17h17V4z\\\" fill=\\\"#fff\\\" />\\n            <path d=\\\"M25.25 4h-8.5v17h8.5V4z\\\" fill=\\\"#CE2B37\\\" />\\n        </g>\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 0H0v24h24V0zM12.5 21a8.5 8.5 0 100-17 8.5 8.5 0 000 17z\\\" fill=\\\"#fff\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"flag-it_clip0\\\">\\n            <path fill=\\\"#fff\\\" d=\\\"M0 0h24v24H0z\\\" />\\n        </clipPath>\\n        <clipPath id=\\\"flag-it_clip1\\\">\\n            <path fill=\\\"#fff\\\" transform=\\\"translate(-.25 4)\\\" d=\\\"M0 0h25.5v17H0z\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Removes zero-width spaces and other invisible characters from a string\n * @param {string} str - String to clean\n * @returns {string} Cleaned string\n */\nexport const removeInvisibleChars = (str) => {\n    if (typeof str !== 'string') {\n        return str\n    }\n\n    return str\n        .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\n        .replace(/\\s+/g, '')\n        .trim()\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_me_festival_white\",\n  \"use\": \"pandora_me_festival_white-usage\",\n  \"viewBox\": \"0 0 1750.8 414.9\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1750.8 414.9\\\" id=\\\"pandora_me_festival_white\\\"><defs></defs><polygon points=\\\"830.3 47.8 835.8 47.8 836.1 47.5 831.4 0.3 831.2 0 829.8 0 829.5 0.3 824.6 47.5 824.9 47.8 830.3 47.8\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"857 50.8 857.3 50.5 865.2 8.2 864.9 8 863.6 7.7 863.3 8 845.7 48 846 48.3 857 50.8\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M934.6 118.5a6.5 6.5 0 0 0 6.3-6.6 6.3 6.3 0 0 0-6.3-6.3 6.5 6.5 0 0 0-6.6 6.3A6.6 6.6 0 0 0 934.6 118.5ZM916.2 116.5a6.5 6.5 0 0 0 0-12.9 6.5 6.5 0 1 0 0 12.9Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"803.7 50.8 814.7 48.3 815 48 797.4 8 797.1 7.7 795.8 8 795.5 8.2 803.4 50.5 803.7 50.8\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M891.3 111.9a6.5 6.5 0 1 0 12.9 0 6.5 6.5 0 0 0-12.9 0ZM142.2 130.3h-56l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h36.7l.3-.3s-1.4-13.4-1.4-36.7V250.8l.3-.3c5 .5 16.2 1.1 20.1 1.1 37.8 0 70.2-23.1 70.2-62S179.8 130.3 142.2 130.3ZM140.5 220a146.9 146.9 0 0 1-18.7-1.3V161.8h21.5c18.9 0 34 7.7 34 27.8S164.1 220 140.5 220ZM317.5 145.9a109 109 0 0 1-5.5-15.4l-.3-.2H281.8l-.3.2a83.6 83.6 0 0 1-5.2 15.4L211.5 301.8c-5.5 13.2-10.9 20.3-10.9 20.3v.3h37.8l.3-.3c0-1.1.8-5.7 5.5-17.3L256 275.5h83.5l12.6 29.3c4.1 11.3 6.6 17.3 6.6 17.3l.2.3h37.9v-.3a149.6 149.6 0 0 1-11-20.3Zm-48.6 98 27.2-67.8h.3l29.3 67.8ZM586.4 130.5l-.2-.2H552.7l-.3.2s1.4 13.5 1.4 36.8v96.6h-.3L449.7 130.3H413l-.3.2c4.1 8.8 6.3 14.9 6.3 19V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h33.5l.3-.3s-1.4-13.4-1.4-36.7V186.8h.3L554.9 322.4h31.3l.2-.3s-1.3-13.4-1.3-36.7V167.3C585.1 144 586.4 130.5 586.4 130.5ZM690.8 130.3H626.5l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h19.8c13 0 27.4 1.7 43.9 1.7 59 0 100.7-41.8 100.7-97.5S750 130.3 690.8 130.3Zm-2.2 162.2c-9.4 0-17.9-.3-22.8-1.7-3-.8-3.6-1.9-3.6-7.1V161.6h25.5c41.5 0 68.1 28 68.1 65.3S729.2 292.5 688.6 292.5ZM916.2 127.5c-55.4 0-98.5 42.8-98.5 98.6s43.1 98.5 98.5 98.5 98.6-42.5 98.6-98.5S972.2 127.5 916.2 127.5Zm0 165.5c-35.7 0-63.4-29.1-63.4-66.9s27.7-67 63.4-67 63.7 29.1 63.7 67S952.2 293 916.2 293ZM1151.8 257.1c-4.7-7.7-11.8-13.7-19-15.7v-.2c20.1-4.4 38.7-27.8 38.7-51.1 0-31.8-24.4-59.8-62-59.8H1048l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h36.8l.3-.3s-1.4-13.4-1.4-36.7V248.6c18.4 0 25.5 3.5 32.1 14l15.7 25.2c12.9 20.9 18.3 34.3 18.3 34.3l.3.3H1194v-.3a337.1 337.1 0 0 1-23.6-34.3Zm-50.8-39c-4.4 0-12.1 0-17.3-1.1V161.6h21.1c20.6 0 31.6 13.4 31.6 28.8S1125.1 218.1 1101 218.1ZM1398.3 301.8l-68.4-155.9a109 109 0 0 1-5.5-15.4l-.2-.2h-30l-.2.2s-1.1 5.8-5.3 15.4L1224 301.8c-5.5 13.2-11 20.3-11 20.3v.3h37.9l.2-.3c0-1.1.9-5.7 5.5-17.3l11.8-29.3h83.5l12.6 29.3c4.1 11.3 6.6 17.3 6.6 17.3l.3.3h37.8v-.3A144 144 0 0 1 1398.3 301.8Zm-117-57.9 27.2-67.8h.3l29.4 67.8Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M790.9 460.5c.6-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.4-8.2h63.7L871 386.2l-8.7-.5-8.8-.2H827.1a13.6 13.6 0 0 0-.4 1.7c-.1.5-.3.9-.4 1.4l-3.9 18.1h20.7l8.9-.3 9.2-.5L857.1 425l-8.9-.6c-3-.2-5.9-.2-8.8-.2H818.7l-3.5 17c-.8 3.6-1.5 7.3-2.2 10.9s-1 6.4-1.3 8.4ZM869 460.5c.5-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2-11.1s1.1-6.2 1.4-8.2h62.6l-3.4 18.3-8.8-.5-8.7-.2H905.1c-.1.6-.3 1.1-.3 1.4a3.6 3.6 0 0 1-.2 1l-3.7 17.3h28.3l9-.5-4 18.8c-2.2-.3-4.4-.5-6.7-.6H897.2l-3.7 17.2a9.3 9.3 0 0 0-.5 2.9h34.6l9-.5-4.3 18.3ZM981.1 461.6a54.3 54.3 0 0 1-18.9-3 56.5 56.5 0 0 1-13.3-6.8l4.8-22.3h.3A41.6 41.6 0 0 0 966.6 440a29.9 29.9 0 0 0 14.6 3.9 21.1 21.1 0 0 0 11-2.6c2.8-1.7 4.2-4.4 4.2-8a6.9 6.9 0 0 0-2.5-5.4 60.3 60.3 0 0 0-8.2-5.2l-11.1-6a32.9 32.9 0 0 1-10.7-8.9c-2.9-3.6-4.4-8.3-4.4-13.8a24.3 24.3 0 0 1 2.4-10.7 25.1 25.1 0 0 1 6.8-8.7 36.4 36.4 0 0 1 10.7-5.8 44.2 44.2 0 0 1 14-2.1 59.5 59.5 0 0 1 17.1 2.3 41.9 41.9 0 0 1 12 5.8l-4.9 22.8h-.3a38.7 38.7 0 0 0-11.1-9.5 28 28 0 0 0-13.9-3.6c-3.9 0-7 .7-9.4 2.2a6.8 6.8 0 0 0-3.7 6.1 6.5 6.5 0 0 0 2.3 5.4 48.8 48.8 0 0 0 7 4.4l11.1 5.9c5.5 3 9.6 6.3 12.4 10s4.1 8.5 4.1 14.3a28.5 28.5 0 0 1-2.2 11.3 24.8 24.8 0 0 1-6.7 9.1 31.6 31.6 0 0 1-11 6.2A46.2 46.2 0 0 1 981.1 461.6ZM1044.1 460.5c.5-2 1.2-4.7 2.1-8s1.7-6.8 2.5-10.5l11.9-56.3h-10.1c-3 0-6 0-9.1.2l-9.4.4 4-18.4h76.1l-4 18.4-9.2-.4c-3-.2-6.1-.2-9.1-.2h-9.9L1068 442c-.8 3.7-1.4 7.2-2 10.5l-1.2 8ZM1103.5 460.5c.5-2 1.2-4.8 2.2-8.4s1.7-7.3 2.5-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.4-8.2H1144c-.7 2-1.4 4.7-2.3 8.2s-1.7 7.2-2.5 11.1l-11.5 54c-.8 3.6-1.5 7.3-2.1 10.9s-1.1 6.4-1.4 8.4ZM1170.7 460.5c-.1-.7-.2-1.7-.4-3.1s-.4-2.9-.7-4.8l-12.8-73.8a30.4 30.4 0 0 0-1.9-7.6 25.4 25.4 0 0 0-1.8-3.3h23.3V371c.1 1.4.3 3.3.6 5.8l8.1 60.3h.1l33.7-60.3c1.1-2 2.1-3.8 2.9-5.4s1.3-2.8 1.7-3.5h24.3a39 39 0 0 0-3.4 3.5 60.7 60.7 0 0 0-5 7.4l-44.1 73.8-2.6 4.4c-.8 1.4-1.5 2.6-1.9 3.5ZM1215.8 460.4a37.3 37.3 0 0 0 2.9-3.3c1.2-1.4 2.8-3.9 5.1-7.4l46.4-73.8c1.4-2.2 2.4-3.9 3-5l1.5-3h16.9a17.6 17.6 0 0 0 .2 1.9l.3 2.4c.1.9.3 1.6.4 2.3a10.6 10.6 0 0 0 .3 1.4l17 73.8a56.1 56.1 0 0 0 1.9 6.7 23.5 23.5 0 0 0 1.8 4h-21.2a14.1 14.1 0 0 1-.5-2.9c-.2-1.2-.6-3.2-1.2-5.9l-2.9-12.7H1251l-7.8 12.7c-3 5-4.6 8-4.8 8.8h-22.6Zm62.2-65.5h-.1l-16.4 26.3h22.7ZM1321.9 460.5c.6-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.3-8.2h20.8c-.6 2-1.3 4.7-2.2 8.2s-1.7 7.2-2.5 11.1l-11.3 52.4a6.7 6.7 0 0 0-.3 1.7 6.6 6.6 0 0 0-.1 1.5h28.3c4 0 7.3 0 9.9-.2l5.5-.4-4.4 18.3ZM1530 463.4h-26.9l.9-3.6c.6-2 1.3-4.8 2.3-8.5s1.8-7.1 2.6-10.7l5.7-26.6-26.9 49.4h-24.1l-6.8-49.9-6 28.3q-1.2 5.6-2.1 10.8c-.6 3.5-1 6.3-1.3 8.3l-.3 2.5h-26.7l1-3.6c.6-2.5 1.4-5.6 2.2-9.2s1.6-7 2.4-10l11.5-54 .9-5c.3-1.8.7-3.6 1-5.3s.7-3.3.9-4.8.5-2.9.7-4l.4-2.4h32.1l8.4 61.4 33.8-61.4h35.4l-1.1 3.7c-.6 1.9-1.4 4.6-2.2 8s-1.7 7.1-2.5 11l-11.5 54c-.8 3.6-1.5 7.3-2.1 10.8s-1.1 6.3-1.3 8.3Zm-19.5-5.7h14.6c.3-1.7.6-3.7 1-6.1s1.3-7.3 2.1-11l11.5-54c.8-3.9 1.7-7.7 2.6-11.2.4-1.7.8-3.3 1.2-4.6H1519L1482 438h-4.2l-.4-2.5-8.8-64.7h-22.4l-.3 1.6c-.2 1.6-.6 3.3-.9 5s-.7 3.4-1 5.2-.6 3.5-1 5.2l-11.5 54c-.7 3.1-1.5 6.4-2.3 10.1-.5 2.1-1 4-1.4 5.8h14.3c.3-1.7.6-3.7 1-6.1s1.4-7.3 2.2-11l9.7-46.1h4.8l.4 2.4 8.3 60.8h15.8l35.2-64.6h5.2l-.6 3.5-9.7 45.2c-.8 3.7-1.7 7.4-2.6 11C1511.3 454.7 1510.8 456.3 1510.5 457.7ZM1596.1 464.4a49.6 49.6 0 0 1-19.1-3.5 47.6 47.6 0 0 1-15-9.6 43.3 43.3 0 0 1-9.7-14.7 47.7 47.7 0 0 1-3.5-18.3 55 55 0 0 1 4.3-21.5 54.2 54.2 0 0 1 11.8-17.3 52.4 52.4 0 0 1 17.3-11.5 54.5 54.5 0 0 1 21.2-4.2 49.4 49.4 0 0 1 19 3.5 45.4 45.4 0 0 1 15 9.6 43.6 43.6 0 0 1 9.8 14.7 48.1 48.1 0 0 1 3.5 18.3 55 55 0 0 1-4.2 21.5 52 52 0 0 1-28.7 28.8A55.9 55.9 0 0 1 1596.1 464.4Zm7.3-95a49.6 49.6 0 0 0-34.6 14.1 51.1 51.1 0 0 0-10.5 15.5 49.2 49.2 0 0 0-3.8 19.3 43.2 43.2 0 0 0 3 16.2 37.3 37.3 0 0 0 8.5 12.7 40 40 0 0 0 13.2 8.5 46.2 46.2 0 0 0 16.9 3.1 50.2 50.2 0 0 0 19.5-3.8 48.3 48.3 0 0 0 15.5-10.3 46 46 0 0 0 10.2-15.5 49.2 49.2 0 0 0 3.7-19.3 43.2 43.2 0 0 0-3-16.2 37.3 37.3 0 0 0-8.5-12.7 41.1 41.1 0 0 0-13.2-8.5A46.2 46.2 0 0 0 1603.4 369.4Zm-6.2 77.3a27.7 27.7 0 0 1-11.6-2.4 28.8 28.8 0 0 1-15-15.9 32 32 0 0 1-2.1-11.7 39.3 39.3 0 0 1 2.5-13.8 35.5 35.5 0 0 1 7.1-11.3 34 34 0 0 1 10.8-7.4 33.1 33.1 0 0 1 13.4-2.7 27.7 27.7 0 0 1 11.6 2.4 27.4 27.4 0 0 1 9 6.4 31.4 31.4 0 0 1 8.1 21.2 37.2 37.2 0 0 1-2.6 13.8 33 33 0 0 1-31.2 21.4Zm5.1-59.5a27.5 27.5 0 0 0-20.1 8.3 29.4 29.4 0 0 0-5.9 9.4 32.9 32.9 0 0 0-2.1 11.8 27.8 27.8 0 0 0 1.7 9.7 26.3 26.3 0 0 0 4.8 7.7 24.7 24.7 0 0 0 7.2 5.1 23.4 23.4 0 0 0 9.3 1.8 27.2 27.2 0 0 0 11.1-2.2 25.6 25.6 0 0 0 9-6.1 29.4 29.4 0 0 0 5.9-9.4 32.9 32.9 0 0 0 2.1-11.8 26.9 26.9 0 0 0-1.7-9.6 26.3 26.3 0 0 0-4.8-7.7 23.7 23.7 0 0 0-7.3-5.2A22.5 22.5 0 0 0 1602.3 387.2ZM1689 464.2l-5.9-.2-4.9-.2-4.5-.3h-25l.9-3.6c.5-2 1.2-4.8 2.2-8.4s1.7-7.2 2.5-10.8l11.5-54c.8-3.8 1.5-7.6 2.1-11s1-6.2 1.4-8.2l.4-2.3h27.8a64 64 0 0 1 20.2 3 43 43 0 0 1 15.7 8.8 38.2 38.2 0 0 1 10 14 46.6 46.6 0 0 1 3.5 18.3 56.1 56.1 0 0 1-4.3 21.8 52 52 0 0 1-12 17.5 55.3 55.3 0 0 1-18.3 11.5A62.7 62.7 0 0 1 1689 464.2Zm-33-6.5h13.1l5 .2 4.5.2 4.8.3h5.6a57.6 57.6 0 0 0 21.2-3.8 48.6 48.6 0 0 0 16.5-10.3 44.8 44.8 0 0 0 10.7-15.6 50.7 50.7 0 0 0 3.8-19.6 41.6 41.6 0 0 0-3-16.1 33.5 33.5 0 0 0-8.6-12 37.5 37.5 0 0 0-13.6-7.6 59.4 59.4 0 0 0-18.5-2.7h-23.1q-.5 2.4-.9 5.7c-.6 3.5-1.3 7.3-2.1 11.3l-11.5 54c-.8 3.7-1.7 7.4-2.6 11C1656.8 454.6 1656.4 456.3 1656 457.7Zm32.7-11.3h-6.5a16.5 16.5 0 0 1-5.6-1 4.3 4.3 0 0 1-2.8-4.3c0-.4.1-.8.1-1.3l.3-1.2 10.6-49.8a7.6 7.6 0 0 1 .5-2.1q.3-1.2.6-2.1l.7-1.9h11.2a32.4 32.4 0 0 1 12.5 2.2 25.1 25.1 0 0 1 9.3 6.1 24 24 0 0 1 5.6 9 30.9 30.9 0 0 1 1.8 10.5 39 39 0 0 1-2.9 15.3 30.4 30.4 0 0 1-8.1 11.4 36.5 36.5 0 0 1-12.2 6.9A46 46 0 0 1 1688.7 446.4Zm-9.1-6a9.4 9.4 0 0 0 2.8.3h6.3a40.3 40.3 0 0 0 13.3-2.1 29 29 0 0 0 10.3-5.8 25.4 25.4 0 0 0 6.6-9.3 33.6 33.6 0 0 0 2.4-13.1 27.2 27.2 0 0 0-1.4-8.6 20 20 0 0 0-11.7-11.8 29.4 29.4 0 0 0-10.4-1.7h-7.1c-.2.6-.3 1.1-.4 1.5l-10.6 49.8C1679.7 440 1679.6 440.2 1679.6 440.4Zm-.9-.2h0ZM1813.9 463.4h-69.2l1-3.6 2.1-8.4c.9-3.6 1.8-7.2 2.6-10.8l11.5-54c.8-3.8 1.5-7.6 2-11s1.1-6.2 1.4-8.2l.4-2.3h68.4l-4.5 24.1-2.5-.2-8.7-.4c-2.9-.2-5.8-.2-8.6-.2h-23a.3.3 0 0 1-.1.2l-2.9 13.8h24.7l8.8-.5 3.9-.4-5.3 25.1-2.6-.3c-2.1-.3-4.3-.4-6.5-.5l-6.8-.2h-21.1l-3.1 14.5h31.1l8.9-.6 3.9-.3Zm-61.8-5.7h57.3l3-12.4-5.4.2h-37.7l.2-3a12.8 12.8 0 0 1 .7-3.5l4.1-19.2H1807l4.4.3 2.6-12.6-5.3.2-9.1.2h-22.8l4.4-20.8a3.1 3.1 0 0 0 .2-.8 10.1 10.1 0 0 1 .4-1.8l.6-2h27.4l8.9.2 6.2.3 2.4-12.4h-56.8c-.3 1.6-.6 3.5-1 5.7s-1.3 7.3-2.1 11.3l-11.5 54c-.8 3.7-1.6 7.3-2.6 11C1752.8 454.6 1752.4 456.3 1752.1 457.7Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:#e7369d\\\" /><path d=\\\"M1462 319.7c.4-5.1.6-11.4.8-18.8s.3-14 .3-20.1V172.2c0-3.3-.1-6.8-.1-10.3l-.3-10.6c-.1-3.4-.2-6.7-.3-9.8s-.2-5.8-.4-8.1h57l47.1 135.2h.3l45.7-135.2h58.1c-.4 3.9-.7 9.3-1 16.4s-.4 14.5-.4 22.4V280.8c0 7.3.2 14.6.4 21.9s.6 12.9 1 17h-41.8c.1-4.1.5-9.8.9-17s.7-14.6.7-21.9V190.9h-.3l-43.1 128.8h-40.2L1502.2 193h-.3v87.8c0 7.3.2 14.6.4 21.9s.6 12.9 1 17ZM1705.8 319.7c.2-4.1.5-9.8.8-17s.6-14.6.6-21.9V172.2c0-7.9-.2-15.4-.4-22.4s-.6-12.5-1-16.4h125.9l1.1 36.7c-5.9-.3-11.8-.7-17.8-.9s-11.9-.4-17.6-.4h-50.9a24.6 24.6 0 0 0-.2 2.6v37h38.8c6.1 0 12.1 0 18.1-.2s12-.6 17.9-1.1v37.8c-4.6-.5-9.3-.9-13.9-1.1l-13.8-.2h-47.1V281c0 .9.1 2 .2 3h51.7l17.8-.2c6-.2 12.1-.6 18.1-1.1l-1 37Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:5px\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useMemo, useState} from 'react'\nimport {createContext} from '@chakra-ui/react-utils'\nimport PropTypes from 'prop-types'\n\nconst [Provider, useProductListContextData] = createContext({\n    name: 'ProductListDataContext',\n    errorMessage:\n        'useProductListContextData: `context` is undefined. Seems you forgot to wrap components within `<ProductListDataProvider />`'\n})\n\n/**\n * Provides product list data context to its children, including state for product search fetching\n * and exposing setters for controlling this state. Designed to be easily extended with additional\n * product-related data and operations as needed (e.g., product details, filtering, pagination).\n *\n * @param {object} props - The component props.\n * @param {React.ReactNode} props.children - The child components to render within the provider.\n * @returns {JSX.Element} The provider component that supplies product list context to its descendants.\n *\n * @remarks\n * Future extensions may include additional product data and utilities, such as detailed product info,\n * list filters, sorting mechanisms, or pagination state.\n */\nconst ProductListDataProvider = ({children}) => {\n    const [isProductSearchFetching, setIsProductSearchFetching] = useState(false)\n\n    const value = useMemo(\n        () => ({\n            isProductSearchFetching,\n            setIsProductSearchFetching\n        }),\n        [isProductSearchFetching]\n    )\n\n    return <Provider value={value}>{children}</Provider>\n}\n\nProductListDataProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {ProductListDataProvider, useProductListContextData}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_diamonds_black_fr\",\n  \"use\": \"pandora_diamonds_black_fr-usage\",\n  \"viewBox\": \"0 0 284 82\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 284 82\\\" id=\\\"pandora_diamonds_black_fr\\\"><polygon points=\\\"178.1,11.3 179.3,11.3 179.4,11.3 178.4,1.2 178.3,1.1 178,1.1 178,1.2 176.9,11.3 177,11.3\\\" /><polygon points=\\\"183.8,12 183.9,11.9 185.6,2.9 185.5,2.8 185.2,2.8 185.2,2.8 181.4,11.4 181.5,11.5\\\" /><path d=\\\"M182.1 15.9c.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4-1.4.6-1.4 1.4S181.3 15.9 182.1 15.9zM178.1 15.5c.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4-1.4.6-1.4 1.4S177.4 15.5 178.1 15.5z\\\" /><polygon points=\\\"172.4,12 174.8,11.5 174.8,11.4 171.1,2.8 171,2.8 170.7,2.8 170.7,2.9 172.4,11.9\\\" /><path d=\\\"M172.8 14.5c0 .8.6 1.4 1.4 1.4.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4S172.8 13.7 172.8 14.5zM12.3 18.4h-12l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.4l.1-.1c1.1.1 3.5.2 4.3.2 8.1 0 15.1-4.9 15.1-13.3C27.4 23 20.4 18.4 12.3 18.4zM12 37.6c-.9 0-3.1-.1-4-.3V25.1h4.6c4.1 0 7.3 1.6 7.3 5.9C19.8 35.3 17 37.6 12 37.6zM49.9 21.8c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L27.1 55.2c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1c0 0-1.1-1.5-2.4-4.4L49.9 21.8zM39.5 42.7l5.8-14.5h.1l6.3 14.5H39.5zM107.5 18.5 107.5 18.5l-7.2-.1-.1.1c0 0 .3 2.9.3 7.9V47h-.1L78.2 18.4h-7.9l-.1.1c.9 1.9 1.4 3.2 1.4 4.1v29.1c0 5-.3 7.9-.3 7.9l.1.1h7.2l.1-.1c0 0-.3-2.9-.3-7.9V30.6h.1l22.3 29h6.7l.1-.1c0 0-.3-2.9-.3-7.9V26.3C107.2 21.3 107.5 18.5 107.5 18.5zM129.8 18.4H116l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h4.2c2.8 0 5.9.4 9.4.4 12.6 0 21.6-8.9 21.6-20.9C151.3 27 142.5 18.4 129.8 18.4zM129.4 53.2c-2 0-3.8-.1-4.9-.4-.6-.2-.8-.4-.8-1.5V25.1h5.5c8.9 0 14.6 6 14.6 14C143.8 47 138.1 53.2 129.4 53.2zM178.1 17.8c-11.9 0-21.1 9.2-21.1 21.1 0 12 9.2 21.1 21.1 21.1 12 0 21.1-9.1 21.1-21.1C199.2 27 190.1 17.8 178.1 17.8zM178.1 53.3c-7.6 0-13.6-6.2-13.6-14.3 0-8.1 5.9-14.3 13.6-14.3s13.6 6.2 13.6 14.3C191.8 47 185.8 53.3 178.1 53.3zM228.6 45.6c-1-1.6-2.5-2.9-4.1-3.4v-.1c4.3-.9 8.3-5.9 8.3-10.9 0-6.8-5.2-12.8-13.3-12.8h-13.2l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.9c3.9 0 5.5.8 6.9 3l3.4 5.4c2.8 4.5 3.9 7.3 3.9 7.3l.1.1h9.4v-.1c0 0-2.4-2.9-5.1-7.3L228.6 45.6zM217.7 37.2c-.9 0-2.6 0-3.7-.2V25.1h4.5c4.4 0 6.8 2.9 6.8 6.2C225.3 34.4 222.9 37.2 217.7 37.2zM281.4 55.2l-14.6-33.4c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L244 55.2c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1C283.7 59.5 282.7 58 281.4 55.2zM256.3 42.7l5.8-14.5h.1l6.3 14.5H256.3zM.2 71.4h3.6c.7 0 1.4.1 2 .4.6.2 1.1.6 1.6 1 .4.4.8.9 1 1.5s.4 1.2.4 1.8l0 0c0 .7-.1 1.3-.4 1.8-.2.6-.6 1.1-1 1.5s-1 .7-1.6 1c-.6.2-1.3.4-2 .4H.2L.2 71.4.2 71.4zM3.9 78.9c.4 0 .8-.1 1.1-.2.3-.1.6-.3.9-.6.2-.2.4-.5.6-.9.1-.3.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.3-.3-.6-.6-.9-.2-.2-.5-.4-.9-.6-.3-.1-.7-.2-1.1-.2H2.3v5.6L3.9 78.9 3.9 78.9zM11.8 71.4h2.1v9.3h-2.1V71.4zM20.4 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2.1L20.4 71.3zM22.6 76.8l-1.2-3-1.2 3H22.6zM28.8 71.4H31l2.5 4 2.5-4h2.2v9.3h-2v-6.1l-2.6 4h-.1l-2.6-4v6.1h-2v-9.3H28.8zM44.6 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2.1L44.6 71.3zM46.8 76.8l-1.2-3-1.2 3H46.8zM53 71.4h1.9l4.4 5.8v-5.8h2v9.3h-1.7l-4.5-5.9v5.9h-2L53 71.4 53 71.4zM66.7 73.3h-2.8v-1.9h7.7v1.9h-2.8v7.4h-2.1L66.7 73.3 66.7 73.3zM77.6 80.9c-.7 0-1.4-.1-2.1-.4-.7-.2-1.3-.6-1.9-1.1l1.2-1.5c.4.3.9.6 1.3.8.4.2.9.3 1.5.3.4 0 .8-.1 1-.2.2-.2.4-.4.4-.6l0 0c0-.1 0-.3-.1-.4 0-.1-.1-.2-.3-.3-.1-.1-.3-.2-.6-.3-.2-.1-.6-.2-1-.3-.5-.1-.9-.2-1.3-.4-.4-.1-.7-.3-1-.5s-.5-.5-.6-.8-.2-.7-.2-1.2l0 0c0-.4.1-.8.2-1.2.2-.3.4-.6.7-.9.3-.2.6-.4 1-.6.4-.1.8-.2 1.3-.2.7 0 1.3.1 1.9.3.6.2 1.1.5 1.6.9l-1.1 1.5c-.4-.3-.8-.5-1.2-.7-.4-.2-.8-.2-1.2-.2-.4 0-.7.1-.9.2-.2.2-.3.3-.3.6l0 0c0 .2 0 .3.1.4s.2.2.3.3c.2.1.4.2.6.3.3.1.6.2 1 .3.5.1.9.3 1.3.4s.7.3.9.6c.3.2.4.5.6.8.1.3.2.6.2 1.1l0 0c0 .5-.1.9-.3 1.2-.2.4-.4.7-.7.9-.3.2-.7.4-1.1.6C78.5 80.8 78.1 80.9 77.6 80.9zM93.3 80.9c-.7 0-1.3-.1-1.9-.4-.6-.2-1.1-.6-1.5-1s-.8-.9-1-1.5-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9.2-.6.6-1.1 1-1.5s.9-.8 1.5-1c.6-.3 1.3-.4 2-.4.4 0 .8 0 1.2.1.4.1.7.2 1 .3.3.1.6.3.8.5.2.2.5.4.7.6l-1.3 1.5c-.4-.3-.7-.6-1.1-.8-.4-.2-.8-.3-1.3-.3-.4 0-.8.1-1.1.2s-.6.4-.9.6-.4.6-.6.9c-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.2.3.5.5.9.6.3.2.7.2 1.1.2.5 0 1-.1 1.4-.3.4-.2.7-.5 1.1-.8l1.3 1.3c-.2.3-.5.5-.7.7-.3.2-.5.4-.8.5s-.6.3-1 .3C94.1 80.8 93.7 80.9 93.3 80.9zM99.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1L99.8 71.4 99.8 71.4zM103.9 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1s-.7-.3-1.2-.3h-2v2.7L103.9 75.9 103.9 75.9zM110.6 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM114.5 68.3l1.7.8-1.7 1.6H113L114.5 68.3zM120.8 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM124.7 68.3l1.7.8-1.7 1.6h-1.5L124.7 68.3zM134.2 80.9c-.7 0-1.4-.1-2.1-.4-.7-.2-1.3-.6-1.9-1.1l1.2-1.5c.4.3.9.6 1.3.8.4.2.9.3 1.5.3.4 0 .8-.1 1-.2.2-.2.4-.4.4-.6l0 0c0-.1 0-.3-.1-.4 0-.1-.1-.2-.3-.3-.1-.1-.3-.2-.6-.3-.2-.1-.6-.2-1-.3-.5-.1-.9-.2-1.3-.4-.4-.1-.7-.3-1-.5s-.5-.5-.6-.8-.2-.7-.2-1.2l0 0c0-.4.1-.8.2-1.2s.4-.6.7-.9c.3-.2.6-.4 1-.6.4-.1.8-.2 1.3-.2.7 0 1.3.1 1.9.3.6.2 1.1.5 1.6.9l-1.1 1.5c-.4-.3-.8-.5-1.2-.7-.4-.2-.8-.2-1.2-.2-.4 0-.7.1-.9.2-.2.2-.3.3-.3.6l0 0c0 .2 0 .3.1.4s.2.2.3.3c.2.1.4.2.6.3.3.1.6.2 1 .3.5.1.9.3 1.3.4s.7.3.9.6c.3.2.4.5.6.8.1.3.2.6.2 1.1l0 0c0 .5-.1.9-.3 1.2-.2.4-.4.7-.7.9-.3.2-.7.4-1.1.6C135.2 80.8 134.7 80.9 134.2 80.9zM145.6 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM155.7 71.4h1.9l4.4 5.8v-5.8h2v9.3h-1.7l-4.5-5.9v5.9h-2L155.7 71.4 155.7 71.4zM172.4 71.4h2.1v7.5h4.7v1.9h-6.7v-9.4H172.4zM185.3 71.3h1.9l4 9.4H189l-.9-2.1h-4l-.9 2.1h-2.1L185.3 71.3zM187.4 76.8l-1.2-3-1.2 3H187.4zM193.7 71.4h4.3c1.1 0 1.9.3 2.4.8.4.4.6 1 .6 1.6l0 0c0 .3 0 .5-.1.7s-.2.4-.3.6c-.1.2-.2.3-.4.4-.1.1-.3.2-.5.3.5.2 1 .5 1.3.8.3.4.5.8.5 1.5l0 0c0 .4-.1.8-.2 1.1-.2.3-.4.6-.7.8-.3.2-.7.4-1.1.5s-.9.2-1.4.2h-4.4L193.7 71.4 193.7 71.4zM197.6 75.2c.5 0 .8-.1 1.1-.2.3-.2.4-.4.4-.8l0 0c0-.3-.1-.5-.3-.7-.2-.2-.6-.2-1-.2h-2v2L197.6 75.2 197.6 75.2zM198.1 78.9c.5 0 .8-.1 1.1-.2.3-.2.4-.4.4-.8l0 0c0-.3-.1-.6-.4-.7-.2-.2-.6-.3-1.2-.3h-2.4V79h2.5V78.9zM208.9 80.9c-.7 0-1.4-.1-2-.4s-1.1-.6-1.6-1c-.4-.4-.8-.9-1-1.5s-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9.2-.6.6-1.1 1-1.5s1-.8 1.6-1c.6-.3 1.3-.4 2-.4s1.4.1 2 .4 1.1.6 1.6 1c.4.4.8.9 1 1.5s.4 1.2.4 1.9l0 0c0 .7-.1 1.3-.4 1.9-.2.6-.6 1.1-1 1.5s-1 .8-1.6 1C210.3 80.8 209.6 80.9 208.9 80.9zM208.9 79c.4 0 .8-.1 1.1-.2.3-.2.6-.4.9-.6s.4-.6.6-.9c.1-.4.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.4-.3-.7-.6-.9-.3-.3-.6-.5-.9-.6-.3-.2-.7-.2-1.1-.2s-.8.1-1.1.2c-.3.2-.6.4-.9.6s-.4.6-.6.9c-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.3.3.6.5.9.6C208.1 78.9 208.5 79 208.9 79zM216.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1L216.8 71.4 216.8 71.4zM221 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1s-.7-.3-1.2-.3h-2v2.7L221 75.9 221 75.9zM231 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2L231 71.3zM233.2 76.8l-1.2-3-1.2 3H233.2zM240.5 73.3h-2.8v-1.9h7.7v1.9h-2.8v7.4h-2.1L240.5 73.3 240.5 73.3zM252.3 80.9c-.7 0-1.4-.1-2-.4s-1.1-.6-1.6-1c-.4-.4-.8-.9-1-1.5s-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9s.6-1.1 1-1.5 1-.8 1.6-1c.6-.3 1.3-.4 2-.4s1.4.1 2 .4 1.1.6 1.6 1c.4.4.8.9 1 1.5s.4 1.2.4 1.9l0 0c0 .7-.1 1.3-.4 1.9s-.6 1.1-1 1.5c-.4.4-1 .8-1.6 1C253.7 80.8 253 80.9 252.3 80.9zM252.3 79c.4 0 .8-.1 1.1-.2.3-.2.6-.4.9-.6.2-.3.4-.6.6-.9.1-.4.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.4-.3-.7-.6-.9-.3-.3-.6-.5-.9-.6-.3-.2-.7-.2-1.1-.2s-.8.1-1.1.2-.6.4-.9.6c-.2.3-.4.6-.6.9-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.3.3.6.5.9.6C251.5 78.9 251.9 79 252.3 79zM260.3 71.4h2.1v9.3h-2.1V71.4zM265.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1V71.4zM270 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1-.3-.2-.7-.3-1.2-.3h-2v2.7L270 75.9 270 75.9zM276.7 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"alert\",\n  \"use\": \"alert-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"alert\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 10C0 4.47715 4.47715 0 10 0C12.6522 0 15.1957 1.05357 17.0711 2.92893C18.9464 4.8043 20 7.34784 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10ZM2 10C2 14.4183 5.58172 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10ZM11 10.5C11 10.2239 10.7761 10 10.5 10H9.5C9.22386 10 9 10.2239 9 10.5V13.5C9 13.7761 9.22386 14 9.5 14H10.5C10.7761 14 11 13.7761 11 13.5V10.5ZM10.5 6C10.7761 6 11 6.22386 11 6.5V7.5C11 7.77614 10.7761 8 10.5 8H9.5C9.22386 8 9 7.77614 9 7.5V6.5C9 6.22386 9.22386 6 9.5 6H10.5Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Shared Icon Factory Utility\n *\n * This utility creates icon components with consistent accessibility and theming.\n * Extracted to reduce code duplication between critical-icons.jsx and index.original.jsx\n */\n\nimport React, {forwardRef, useContext} from 'react'\nimport {IntlContext} from 'react-intl'\nimport PropTypes from 'prop-types'\nimport {Icon, useTheme} from '@salesforce/retail-react-app/app/components/shared/ui'\n\n/**\n * Creates an icon component with proper accessibility attributes\n * @param {string} name - The icon name (used for symbol reference and aria-label)\n * @param {Object} passProps - Additional props to pass to the Icon component\n * @param {Object} localizationAttributes - i18n attributes for the icon\n * @returns {React.Component} Icon component\n */\nexport const createIconComponent = (name, passProps = {}, localizationAttributes = {}) => {\n    const displayName = name\n        .toLowerCase()\n        .replace(/(?:^|[\\s-/])\\w/g, (match) => match.toUpperCase())\n        .replace(/-/g, '')\n\n    const component = forwardRef((props, ref) => {\n        const theme = useTheme()\n        // NOTE: We want to avoid `useIntl` here because that throws when <IntlProvider> is not in\n        // the component ancestry, but we only enforce `intl` if we have `localizationAttributes`.\n        let intl = useContext(IntlContext)\n\n        if (localizationAttributes && Object.keys(localizationAttributes).length > 0) {\n            if (props?.intl) {\n                const {intl: intlProp, ...otherProps} = props\n                // Allow `props.intl` to take precedence over the intl we found\n                intl = intlProp\n                props = otherProps\n            }\n            if (!intl) {\n                throw new Error(\n                    'To localize messages, you must either have <IntlProvider> in the component ancestry or provide `intl` as a prop'\n                )\n            }\n            Object.keys(localizationAttributes).forEach((key) => {\n                passProps[key] = intl.formatMessage(localizationAttributes[key])\n            })\n        }\n\n        const baseStyle = theme?.components?.Icon?.baseStyle\n        return (\n            <Icon ref={ref} aria-label={name} {...baseStyle} {...props} {...passProps}>\n                <use xlinkHref={`#${name}`} />\n            </Icon>\n        )\n    })\n\n    component.propTypes = {\n        intl: PropTypes.object\n    }\n\n    component.displayName = `${displayName}Icon`\n    return component\n}\n","export const carouselConfig = {\n    breakpoints: {\n        1024: {\n            slidesPerView: 3,\n            slidesPerGroup: 3,\n            spaceBetween: 12,\n            loopAdditionalSlides: 0\n        },\n        1280: {\n            slidesPerView: 4,\n            slidesPerGroup: 4,\n            spaceBetween: 12,\n            loopAdditionalSlides: 0\n        }\n    }\n}\n\n// Compact PLP in-grid layout (FIND-6594): denser cards, 6-up desktop with no peek.\n// Loops like every other Pandora carousel, so the arrows never go inactive. Below\n// xl a swipe advances one product, letting the carousel settle on any pair.\n// Slide counts are whole numbers: below xl the next card peeks because the carousel\n// body bleeds past the page gutter and is cropped by the screen edge, matching the\n// PDP slider — the peek is not baked into slidesPerView.\n// Keys must stay 0/768/1440: Carousel and ProductCarousel resolve the active\n// breakpoint via useBreakpointValue({base:0, md:768, xl:1440}).\nexport const inGridCarouselConfig = {\n    loop: true,\n    breakpoints: {\n        0: {\n            slidesPerView: 2,\n            slidesPerGroup: 1,\n            spaceBetween: 8,\n            loopAdditionalSlides: 2\n        },\n        768: {\n            slidesPerView: 3,\n            slidesPerGroup: 1,\n            spaceBetween: 8,\n            loopAdditionalSlides: 2\n        },\n        1440: {\n            slidesPerView: 6,\n            slidesPerGroup: 6,\n            spaceBetween: 8,\n            loopAdditionalSlides: 0\n        }\n    }\n}\n\n// Hard ceiling on the products an in-grid carousel renders, matching the\n// MAXIMUM_PRODUCTS ceiling the other carousels use. The recommendations API takes\n// no count parameter, so the cap is applied to the returned list.\nexport const IN_GRID_MAX_PRODUCTS = 12\n\nexport const confirmationSheetCarouselConfig = {\n    breakpoints: {\n        0: {\n            slidesPerView: 3,\n            slidesPerGroup: 2,\n            spaceBetween: 8,\n            loopAdditionalSlides: 2\n        },\n        768: {\n            slidesPerView: 3,\n            slidesPerGroup: 2,\n            spaceBetween: 12,\n            loopAdditionalSlides: 2\n        },\n        1280: {\n            slidesPerView: 3,\n            slidesPerGroup: 3,\n            spaceBetween: 12,\n            loopAdditionalSlides: 0\n        },\n        1440: {\n            slidesPerView: 3,\n            slidesPerGroup: 3,\n            spaceBetween: 12,\n            loopAdditionalSlides: 0\n        }\n    }\n}\n","const generate = () => {\n    const buf = new Uint32Array(2)\n    window.crypto.getRandomValues(buf)\n    const random = buf[0] * 0x100000000 + buf[1]\n    return `uid=${random}:v=app:ts=${Date.now()}:hc=1`\n}\n\nlet cachedId\n\n/**\n * Returns an in-memory anonymous Bloomreach visitor ID for the non-consent\n * fallback path. Bloomreach's secondary algorithm (Bestseller/Trending) is\n * triggered when DOL forwards an unknown visitorId.\n *\n * The value is held only in module-scope memory — nothing is written to the\n * user's terminal equipment (no cookie, no localStorage, no sessionStorage),\n * so the ePrivacy / GDPR storage-consent rules do not apply. All recommender\n * slots rendered in the same tab share the same ID; a full page reload starts\n * a fresh one.\n *\n * @returns {string|undefined} Raw (non URL-encoded) visitor ID, or undefined on the server.\n */\nexport const getBrAnonymousVisitorId = () => {\n    if (typeof window === 'undefined') {\n        return undefined\n    }\n\n    if (!cachedId) {\n        cachedId = generate()\n    }\n    return cachedId\n}\n\n/**\n * Test-only reset hook. Lets unit tests start each case with no cached ID.\n */\nexport const __resetBrAnonymousVisitorIdForTests = () => {\n    cachedId = undefined\n}\n","/**\n * Component-level factory that maps RecommendedProducts props\n * to the flat params expected by useRecommendations.\n *\n * Each strategy resolves type-specific fields (productId, categoryId, …)\n * from the component's prop bag and checks readiness.\n *\n * @module components/recommended-products/build-recommendation-params\n */\n\nimport {RECOMMENDATION_TYPES} from 'pandora-shared-app/overrides/app/hooks/use-recommendations'\n\n/** @typedef {import('pandora-shared-app/overrides/app/hooks/use-recommendations/types/recommendations').RecommendationParams} RecommendationParams */\n\nconst TYPE_STRATEGIES = {\n    [RECOMMENDATION_TYPES.ITEM]: {\n        getTypeSpecificParams: ({product}) => ({\n            productId: product?.master?.masterId || product?.productId\n        }),\n        isReady: ({product}) => !!product?.master?.masterId || !!product?.productId\n    },\n    [RECOMMENDATION_TYPES.CATEGORY]: {\n        getTypeSpecificParams: ({recommendedCategory}) => ({\n            categoryId: Array.isArray(recommendedCategory)\n                ? recommendedCategory[0]\n                : recommendedCategory\n        }),\n        isReady: ({recommendedCategory}) => !!recommendedCategory\n    },\n    [RECOMMENDATION_TYPES.KEYWORD]: {\n        getTypeSpecificParams: ({query}) => ({query}),\n        isReady: ({query}) => !!query\n    },\n    [RECOMMENDATION_TYPES.PERSONALIZED]: {\n        getTypeSpecificParams: ({product, userId}) => ({\n            productId: product?.master?.masterId || product?.productId,\n            userId\n        }),\n        isReady: ({product, userId}) =>\n            (!!product?.master?.masterId || !!product?.productId) && !!userId\n    },\n    [RECOMMENDATION_TYPES.GLOBAL]: {\n        getTypeSpecificParams: () => ({}),\n        isReady: () => true\n    }\n}\n\n/**\n * Builds recommendation params from component props.\n *\n * @param {Object} options\n * @param {string} options.type - Recommendation type (item, category, keyword, …)\n * @param {string} options.channelName - Channel identifier (pdp, plp)\n * @param {string} options.recommender - Recommender/widget ID\n * @param {string} [options.recommenderEngine] - Engine override (bloomreach, salesforce, einstein)\n * @param {string} options.visitorId - Visitor identifier\n * @param {string} options.pageUrl - Current page URL\n * @param {boolean} options.enabled - Whether the new API is enabled\n * @param {Object} [options.product] - Product object (for item/personalized types)\n * @param {string|string[]} [options.recommendedCategory] - Category ID (for category type)\n * @param {string} [options.query] - Search query (for keyword type)\n * @param {string} [options.userId] - User ID (for personalized type)\n * @param {string} [options.cachePolicy] - Caching behaviour for the query (see CACHE_POLICIES)\n * @returns {RecommendationParams}\n */\nexport const buildRecommendationParams = ({\n    type,\n    channelName,\n    recommender,\n    recommenderEngine,\n    visitorId,\n    pageUrl,\n    enabled,\n    product,\n    recommendedCategory,\n    query,\n    userId,\n    cachePolicy\n}) => {\n    const strategy = TYPE_STRATEGIES[type]\n    if (!strategy) return {type: RECOMMENDATION_TYPES.ITEM, enabled: false}\n\n    const componentProps = {product, recommendedCategory, query, userId}\n\n    return {\n        type,\n        channelName,\n        recommenderId: recommender,\n        recommenderEngine,\n        visitorId,\n        pageUrl,\n        cachePolicy,\n        ...strategy.getTypeSpecificParams(componentProps),\n        enabled: enabled && strategy.isReady(componentProps)\n    }\n}\n","import React, {useEffect, useMemo, memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useUsid} from '@salesforce/commerce-sdk-react'\nimport {getCookie} from 'react-use-cookie'\nimport useEinstein from 'pandora-shared-app/overrides/app/hooks/use-einstein'\nimport {\n    useIntersectionObserver,\n    useRecommendationsTracking\n} from 'pandora-shared-app/overrides/app/hooks'\nimport {Box, useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {ProductCarousel} from '../product-carousel'\nimport {ProductCarouselPlaceholder} from '../product-carousel/partials'\nimport {\n    carouselConfig,\n    confirmationSheetCarouselConfig,\n    inGridCarouselConfig,\n    IN_GRID_MAX_PRODUCTS\n} from './constants'\nimport {\n    useRecommendations,\n    CACHE_POLICIES,\n    RECOMMENDATION_TYPES,\n    RECOMMENDER_ENGINES\n} from 'pandora-shared-app/overrides/app/hooks/use-recommendations'\nimport {useVariant, useStringVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {BR_UID_COOKIE} from 'pandora-shared-app/overrides/app/constants'\nimport {getBrAnonymousVisitorId} from 'pandora-shared-app/overrides/app/utils/br-anonymous-visitor-id'\nimport {buildRecommendationParams} from './build-recommendation-params'\n\n/** @typedef {import('pandora-shared-app/overrides/app/types/product').DOLProduct} DOLProduct */\n/** @typedef {import('pandora-shared-app/overrides/app/hooks/use-recommendations/types/recommendations').RecommendationParams} RecommendationParams */\n\nconst IN_GRID_LAYOUT = 'inGrid'\n\n// Carousel-config selection per layout. `layout` is a pure layout switch (config +\n// style variant); `variant` keeps its historical double duty of theme + the\n// confirmation-sheet breakpoints, so existing consumers are untouched.\nconst CAROUSEL_CONFIG_STRATEGIES = {\n    [IN_GRID_LAYOUT]: () => inGridCarouselConfig,\n    default: ({variant}) => (variant ? confirmationSheetCarouselConfig : carouselConfig)\n}\n\nconst resolveCarouselConfig = ({layout, variant}) =>\n    (CAROUSEL_CONFIG_STRATEGIES[layout] ?? CAROUSEL_CONFIG_STRATEGIES.default)({variant})\n\n// Query cache policy per layout. The in-grid tabbed zones (FIND-6594) unmount\n// the inactive tab's carousel, so a widget's result must survive re-selection\n// without refetching; every other placement keeps the app-wide defaults.\nconst LAYOUT_CACHE_POLICIES = {\n    [IN_GRID_LAYOUT]: CACHE_POLICIES.RETAINED\n}\n\n// Product ceiling per layout. The recommendations API takes no count parameter,\n// so a widget answering with more than the layout allows is trimmed here.\nconst LAYOUT_MAX_PRODUCTS = {\n    [IN_GRID_LAYOUT]: IN_GRID_MAX_PRODUCTS\n}\n\n/**\n * @param {Object} props\n * @param {DOLProduct} props.product\n */\nconst RecommendedProductsComponent = ({\n    recommender,\n    product,\n    wishlist,\n    addItemToWishlist,\n    removeItemFromWishlist,\n    title,\n    isPdp,\n    category,\n    recommendedCategory,\n    enableFavourite,\n    hideSwatches,\n    dataSlotId,\n    uniqueId,\n    personalisationType,\n    section,\n    instanceId,\n    recommendationType,\n    recommenderEngine: recommenderEngineProp,\n    query,\n    layout,\n    onEmpty,\n    ...props\n}) => {\n    const {getRecommendations, recommendations, ...einstein} = useEinstein()\n    const {variant} = props\n    const styles = useMultiStyleConfig('Slider', {variant: layout ?? variant})\n\n    const [setStoryRef, isIntersecting] = useIntersectionObserver({threshold: 0.5})\n\n    const enablePdpNewRecommendationsApi = useVariant(LD_KEYS.enablePdpNewRecommendationsApi, false)\n    const pdpRecommenderEngine = useStringVariant(LD_KEYS.pdpRecommendationEngine, 'einstein')\n    const enableBrDiscoveryFallback = useVariant(\n        LD_KEYS.enableBrDiscoveryFallbackRecommendations,\n        false\n    )\n    const enablePdpRecommendationsFindingMethodSplit = useVariant(\n        LD_KEYS.enablePdpRecommendationsFindingMethodSplit,\n        false\n    )\n\n    const resolvedProductId = product?.master?.masterId || product?.productId\n    const hasProductId = !!resolvedProductId\n    const shouldUseNewRecommendationsApi = isPdp\n        ? enablePdpNewRecommendationsApi && hasProductId\n        : true\n    // PLP recommendations are Bloomreach-only, so the engine is fixed to bloomreach there.\n    // PDP resolves its engine from the pdp-recommendation-engine flag (via zone config prop).\n    const recommenderEngine =\n        recommenderEngineProp || (isPdp ? pdpRecommenderEngine : RECOMMENDER_ENGINES.BLOOMREACH)\n\n    // Resolve channel and type\n    const channelName = isPdp ? 'pdp' : 'plp'\n    const resolvedType =\n        recommendationType || (isPdp ? RECOMMENDATION_TYPES.ITEM : RECOMMENDATION_TYPES.CATEGORY)\n\n    // if no recommendationEngine provided then bloomreach will beused by default\n    const isBloomreachEngine =\n        !recommenderEngine || recommenderEngine === RECOMMENDER_ENGINES.BLOOMREACH\n\n    // Resolve visitorId based on engine:\n    // Bloomreach → _br_uid_2 cookie, Salesforce/Einstein → SFCC USID.\n    // When the visitor has not accepted cookies the BR cookie is absent; the\n    // BR Discovery fallback flag lets us send a per-session anonymous ID so\n    // Bloomreach's secondary algorithm serves non-personalised results\n    // instead of returning an empty zone.\n    const {usid} = useUsid()\n    const brUidCookie = getCookie(BR_UID_COOKIE)\n    const brVisitorIdRaw =\n        brUidCookie || (enableBrDiscoveryFallback ? getBrAnonymousVisitorId() : undefined)\n    const encodedBrVisitorId = brVisitorIdRaw ? encodeURIComponent(brVisitorIdRaw) : undefined\n    const visitorId =\n        shouldUseNewRecommendationsApi && isBloomreachEngine ? encodedBrVisitorId : usid\n    const pageUrl = typeof window !== 'undefined' ? window.location.href : ''\n\n    /** @type {RecommendationParams} */\n    const recommendationParams = useMemo(\n        () =>\n            buildRecommendationParams({\n                type: resolvedType,\n                channelName,\n                recommender,\n                recommenderEngine,\n                visitorId,\n                pageUrl,\n                product,\n                recommendedCategory,\n                query,\n                enabled: shouldUseNewRecommendationsApi,\n                cachePolicy: LAYOUT_CACHE_POLICIES[layout]\n            }),\n        [\n            resolvedType,\n            channelName,\n            visitorId,\n            pageUrl,\n            resolvedProductId,\n            recommendedCategory,\n            query,\n            shouldUseNewRecommendationsApi,\n            recommenderEngine,\n            recommender,\n            layout\n        ]\n    )\n\n    const {\n        recommendations: newRecommendations,\n        metadata,\n        isLoading: isLoadingRecommendations\n    } = useRecommendations(recommendationParams)\n\n    const {trackView, trackClick, trackAddToCart, isBloomreachAddTrackingEnabled} =\n        useRecommendationsTracking({\n            product,\n            recommendations,\n            recommender,\n            personalisationType,\n            recommenderEngine: shouldUseNewRecommendationsApi ? recommenderEngine : undefined,\n            metadata: shouldUseNewRecommendationsApi ? metadata : undefined\n        })\n\n    // Fetch via Einstein when new API is NOT enabled\n    useEffect(() => {\n        if (recommender && !shouldUseNewRecommendationsApi) {\n            if (isPdp) {\n                getRecommendations(recommender, [product], true)\n            } else {\n                getRecommendations(recommender, null, true, {\n                    categories: [{id: recommendedCategory}]\n                })\n            }\n        }\n    }, [recommender, product, shouldUseNewRecommendationsApi])\n\n    // Derive productConfig from whichever recommendation source is active\n    const productConfig = useMemo(() => {\n        // Only a layout that declares a ceiling is capped; every other carousel\n        // keeps the untouched list the engine returned.\n        const maxProducts = LAYOUT_MAX_PRODUCTS[layout]\n        const capped = (productIDs) => (maxProducts ? productIDs.slice(0, maxProducts) : productIDs)\n\n        if (shouldUseNewRecommendationsApi && newRecommendations?.length > 0) {\n            const productIDs = capped(\n                newRecommendations.map((rec) => rec.product?.productId).filter(Boolean)\n            )\n            return {\n                productIDs: productIDs.join(','),\n                limit: productIDs.length\n            }\n        }\n        if (!shouldUseNewRecommendationsApi && recommendations?.recs?.length > 0) {\n            const productIDs = capped(recommendations.recs.map((product) => product.id))\n            return {\n                productIDs: productIDs.join(','),\n                limit: productIDs.length\n            }\n        }\n        return null\n    }, [newRecommendations, recommendations, shouldUseNewRecommendationsApi, layout])\n\n    // A widget configured with rules can answer with an empty list. Callers\n    // that can drop the placement (the tabbed zones drop the tab) opt in to\n    // that signal; without the callback nothing changes for anyone else.\n    useEffect(() => {\n        if (!onEmpty || !shouldUseNewRecommendationsApi || isLoadingRecommendations) return\n        if (!productConfig) onEmpty(recommender)\n    }, [\n        onEmpty,\n        shouldUseNewRecommendationsApi,\n        isLoadingRecommendations,\n        productConfig,\n        recommender\n    ])\n\n    // Track recommendation impression\n    useEffect(() => {\n        if (isIntersecting) {\n            if (shouldUseNewRecommendationsApi && newRecommendations?.length > 0) {\n                trackView(newRecommendations.map((rec) => ({id: rec.product?.productId})))\n            } else if (recommendations?.recs) {\n                trackView(recommendations.recs)\n            }\n        }\n    }, [isIntersecting, recommendations?.recs, newRecommendations, shouldUseNewRecommendationsApi])\n\n    const isEinsteinEngine =\n        !recommenderEngine || recommenderEngine === RECOMMENDER_ENGINES.EINSTEIN\n\n    const productClickHandler = (clickedProduct, searchQuery) => {\n        // Einstein click tracking when not using new API, or when engine is einstein\n        if (!shouldUseNewRecommendationsApi || isEinsteinEngine) {\n            if (isPdp) {\n                einstein.sendViewProduct({\n                    ...clickedProduct,\n                    id: clickedProduct.productId\n                })\n            } else if (searchQuery) {\n                einstein.sendClickSearch(searchQuery, {\n                    ...clickedProduct,\n                    id: clickedProduct.productId\n                })\n            } else if (category) {\n                einstein.sendClickCategory(category, {\n                    ...clickedProduct,\n                    id: clickedProduct.productId\n                })\n            }\n        }\n\n        trackClick(clickedProduct)\n    }\n\n    if (!productConfig) {\n        // In-grid tabs swap the whole carousel on every first tab activation, and the\n        // recommendations call has to resolve before ProductCarousel has ids to fetch.\n        // Showing its skeleton for that first hop keeps the zone from collapsing to a\n        // blank gap; every other placement keeps the historical \"render nothing\".\n        const isInGridFirstFetch =\n            layout === IN_GRID_LAYOUT && shouldUseNewRecommendationsApi && isLoadingRecommendations\n\n        if (isInGridFirstFetch) {\n            return (\n                <Box sx={styles.container} data-testid=\"recommended-product-carousel-loading\">\n                    <ProductCarouselPlaceholder\n                        carouselConfig={{title, ...resolveCarouselConfig({layout, variant})}}\n                        limit={IN_GRID_MAX_PRODUCTS}\n                        layout={layout}\n                        variant={variant}\n                    />\n                </Box>\n            )\n        }\n\n        return null\n    }\n\n    const resolveProductFindingMethod = () => {\n        if (!isPdp) return uniqueId\n        if (!enablePdpRecommendationsFindingMethodSplit) return 'pdp_recommendations'\n        switch (recommenderEngine) {\n            case RECOMMENDER_ENGINES.BLOOMREACH:\n                return 'pdp_recommendations_bloomreach'\n            case RECOMMENDER_ENGINES.EINSTEIN:\n                return 'pdp_recommendations_einstein'\n            default:\n                return 'pdp_recommendations'\n        }\n    }\n    const productFindingMethod = resolveProductFindingMethod()\n\n    return (\n        <Box\n            sx={styles.container}\n            data-testid=\"recommended-product-carousel\"\n            ref={setStoryRef}\n            data-slot-id={dataSlotId}\n            data-cs-override-id={uniqueId}\n        >\n            <ProductCarousel\n                productConfig={productConfig}\n                carouselConfig={{\n                    title,\n                    ...resolveCarouselConfig({layout, variant})\n                }}\n                onProductClick={productClickHandler}\n                onAddToCart={trackAddToCart}\n                skipBloomreachAddToCartPixel={isBloomreachAddTrackingEnabled}\n                wishlist={wishlist}\n                addItemToWishlist={addItemToWishlist}\n                removeItemFromWishlist={removeItemFromWishlist}\n                enableFavourite={enableFavourite}\n                variant={variant}\n                layout={layout}\n                disableInfiniteScroll={layout === IN_GRID_LAYOUT}\n                hideSwatches={hideSwatches}\n                showBuyFromTile={isPdp || layout === IN_GRID_LAYOUT}\n                productFindingMethod={productFindingMethod}\n                section={section || dataSlotId || uniqueId || recommender || 'recommendation'}\n                instanceId={instanceId}\n            />\n        </Box>\n    )\n}\n\nRecommendedProductsComponent.propTypes = {\n    recommender: PropTypes.string,\n    product: PropTypes.object,\n    title: PropTypes.string,\n    addItemToWishlist: PropTypes.func,\n    removeItemFromWishlist: PropTypes.func,\n    wishlist: PropTypes.object,\n    isPdp: PropTypes.bool,\n    category: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    recommendedCategory: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    enableFavourite: PropTypes.bool,\n    variant: PropTypes.string,\n    hideSwatches: PropTypes.bool,\n    dataSlotId: PropTypes.string,\n    uniqueId: PropTypes.string,\n    personalisationType: PropTypes.string,\n    section: PropTypes.string,\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    recommendationType: PropTypes.oneOf(['item', 'category', 'keyword', 'personalized', 'global']),\n    recommenderEngine: PropTypes.oneOf(['bloomreach', 'einstein']),\n    query: PropTypes.string,\n    layout: PropTypes.oneOf(['inGrid']),\n    onEmpty: PropTypes.func\n}\n\n// Memoized version - prevents re-renders when only product price changes\n// Only re-renders when product ID, recommender, or isPdp changes\nconst RecommendedProductsMemoized = memo(RecommendedProductsComponent, (prevProps, nextProps) => {\n    const productIdSame = prevProps.product?.productId === nextProps.product?.productId\n    const recommenderSame = prevProps.recommender === nextProps.recommender\n    const isPdpSame = prevProps.isPdp === nextProps.isPdp\n    const prevCategory = Array.isArray(prevProps.recommendedCategory)\n        ? prevProps.recommendedCategory[0]\n        : prevProps.recommendedCategory\n    const nextCategory = Array.isArray(nextProps.recommendedCategory)\n        ? nextProps.recommendedCategory[0]\n        : nextProps.recommendedCategory\n    const categorySame = prevCategory === nextCategory\n    const typeSame = prevProps.recommendationType === nextProps.recommendationType\n    const engineSame = prevProps.recommenderEngine === nextProps.recommenderEngine\n    // Keeps favourite-toggle UI in sync on PLP, where wishlist updates do not\n    // alter the other identity inputs above.\n    const wishlistSame = prevProps.wishlist === nextProps.wishlist\n    // Tabbed in-grid zones (FIND-6594) swap these per tab; they must not be\n    // swallowed by the memo when two tabs share the other identity inputs.\n    const layoutSame = prevProps.layout === nextProps.layout\n    const uniqueIdSame = prevProps.uniqueId === nextProps.uniqueId\n    const personalisationTypeSame = prevProps.personalisationType === nextProps.personalisationType\n\n    return (\n        productIdSame &&\n        recommenderSame &&\n        isPdpSame &&\n        categorySame &&\n        typeSame &&\n        engineSame &&\n        wishlistSame &&\n        layoutSame &&\n        uniqueIdSame &&\n        personalisationTypeSame\n    )\n})\n\n// Export non-memoized as default (original behavior for PLP)\nexport const RecommendedProducts = RecommendedProductsComponent\n\n// Export memoized version for PDP with flag control\nexport const RecommendedProductsOptimized = RecommendedProductsMemoized\n\n// RRA 9.1 internals (cart page, use-add-to-cart-modal) import as default.\nexport default RecommendedProducts\n","/**\n * Styles for LearnMoreDrawer component\n * Contains comprehensive HTML element styling to properly display\n * content from Business Manager's HTML editor\n *\n * Design specs from Figma:\n * - Font size: sm (13-14px), line height: base\n * - Heading color: gray.900 (Black-1)\n * - Body text color: gray.600 (Black-3A)\n * - Minimal gaps between elements\n */\n\n// Constants\nexport const DRAWER_VARIANT = {\n    LEARN_MORE: 'learnMore',\n    PARTIAL: 'partial',\n    FULL: 'full'\n}\n\nexport const DRAWER_WIDTHS = {\n    DESKTOP: '500px' // 500px desktop width (no token available for this size)\n}\n\nexport const DRAWER_SPACING = {\n    HEADER_HEIGHT: 16, // 64px (16 * 4px = 64px)\n    HEADER_TOP_PADDING: '17px', // No exact token, keep as px\n    CLOSE_BUTTON_MARGIN_TOP: '3px', // No exact token, keep as px\n    DESKTOP_SIDE_MARGIN: 16, // 64px (16 * 4px = 64px)\n    MOBILE_SIDE_MARGIN: 8 // 32px (8 * 4px = 32px)\n}\n\nexport const DRAWER_TYPOGRAPHY = {\n    HEADING_FONT_SIZE: 5, // 20px in Chakra token system\n    HEADING_COLOR: 'black1' // Pandora Black-1 (#211710)\n}\n\nexport const ACCESSIBILITY_DEFAULTS = {\n    CLOSE_ARIA_LABEL: 'Close'\n}\n\n// Drawer content responsive styles\nexport const drawerContentStyles = {\n    width: {base: '100vw', xl: DRAWER_WIDTHS.DESKTOP},\n    maxWidth: {base: '100vw', xl: DRAWER_WIDTHS.DESKTOP}\n}\n\n// Custom style for PartialDrawerSheet wrapper\nexport const customDrawerStyle = {\n    maxWidth: {base: '100%', xl: DRAWER_WIDTHS.DESKTOP},\n    width: {base: '100%', xl: DRAWER_WIDTHS.DESKTOP}\n}\n\n// Overlay style for PartialDrawerSheet\nexport const overlayDrawerStyle = {\n    bg: {base: 'transparent', xl: 'blackAlpha.800'},\n    backdropFilter: {base: 'none', xl: 'blur(6px)'},\n    zIndex: 1398\n}\n\n// Content area styles\nexport const contentAreaStyles = {\n    '&::-webkit-scrollbar': {\n        display: 'none'\n    },\n    msOverflowStyle: 'none',\n    scrollbarWidth: 'none'\n}\n\n// Header styles\nexport const headerStyles = {\n    justify: 'space-between',\n    align: 'center',\n    marginBottom: 12,\n    spacing: 4,\n    height: DRAWER_SPACING.HEADER_HEIGHT,\n    paddingTop: DRAWER_SPACING.HEADER_TOP_PADDING\n}\n\n// Heading styles\nexport const headingStyles = {\n    as: 'h1',\n    fontSize: DRAWER_TYPOGRAPHY.HEADING_FONT_SIZE,\n    fontWeight: 'bold',\n    color: DRAWER_TYPOGRAPHY.HEADING_COLOR,\n    letterSpacing: 'tight',\n    textTransform: 'uppercase',\n    flex: '1',\n    paddingRight: 2,\n    marginTop: '6px'\n}\n\n// Close button styles\nexport const closeButtonStyles = {\n    variant: 'unstyled',\n    size: 'md',\n    color: 'black',\n    minWidth: 'auto',\n    height: 'auto',\n    _focus: {\n        outline: '1px solid',\n        outlineColor: 'blue.500',\n        outlineOffset: '1px'\n    },\n    flexShrink: 0\n}\nexport const contentStyles = {\n    '& h1': {\n        fontSize: 'sm',\n        fontWeight: 'normal',\n        color: 'gray.900',\n        lineHeight: 'base',\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& h2, & h3, & h4': {\n        fontSize: 'sm',\n        fontWeight: 'normal',\n        color: 'gray.900',\n        lineHeight: 'base',\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& h5, & h6': {\n        fontSize: 'sm',\n        fontWeight: 'normal',\n        color: 'gray.900',\n        lineHeight: 'base',\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& p': {\n        fontSize: 'sm',\n        lineHeight: 'base',\n        color: 'gray.600',\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& ul, & ol': {\n        listStyleType: 'disc',\n        listStylePosition: 'outside',\n        paddingLeft: 6,\n        marginLeft: 0,\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& ol': {\n        listStyleType: 'decimal'\n    },\n    '& li': {\n        marginBottom: 1,\n        fontSize: 'sm',\n        lineHeight: 'base',\n        color: 'gray.600',\n        display: 'list-item',\n        '&::marker': {\n            color: 'gray.600'\n        }\n    },\n    '& a': {\n        color: 'gray.600',\n        fontSize: 'sm',\n        lineHeight: 'base',\n        textDecoration: 'none',\n        borderBottom: '1px solid',\n        borderColor: 'gray.200',\n        _hover: {\n            color: 'gray.900'\n        }\n    },\n    '& strong, & b': {\n        fontWeight: 'normal',\n        color: 'gray.900'\n    },\n    '& em, & i': {\n        fontStyle: 'italic',\n        color: 'gray.600'\n    },\n    '& u': {\n        textDecoration: 'underline',\n        color: 'gray.600'\n    },\n    '& table': {\n        width: '100%',\n        borderCollapse: 'collapse',\n        marginBottom: 1,\n        marginTop: 0,\n        fontSize: 'sm',\n        lineHeight: 'base'\n    },\n    '& thead': {\n        backgroundColor: 'gray.100'\n    },\n    '& th': {\n        padding: 2,\n        textAlign: 'left',\n        fontWeight: 'normal',\n        border: '1px solid',\n        borderColor: 'gray.200',\n        fontSize: 'sm',\n        lineHeight: 'base',\n        color: 'gray.900'\n    },\n    '& td': {\n        padding: 2,\n        border: '1px solid',\n        borderColor: 'gray.200',\n        fontSize: 'sm',\n        lineHeight: 'base',\n        color: 'gray.600'\n    },\n    '& tr:nth-of-type(even)': {\n        backgroundColor: 'gray.50'\n    },\n    '& blockquote': {\n        borderLeft: '2px solid',\n        borderColor: 'gray.200',\n        paddingLeft: 4,\n        marginLeft: 0,\n        marginTop: 0,\n        marginBottom: 1,\n        fontStyle: 'italic',\n        color: 'gray.600',\n        fontSize: 'sm',\n        lineHeight: 'base'\n    },\n    '& code': {\n        backgroundColor: 'gray.100',\n        padding: 1,\n        borderRadius: 'sm',\n        fontSize: 'sm',\n        fontFamily: 'monospace',\n        color: 'gray.600'\n    },\n    '& pre': {\n        backgroundColor: 'gray.100',\n        padding: 4,\n        borderRadius: 'md',\n        overflowX: 'auto',\n        marginTop: 0,\n        marginBottom: 1,\n        '& code': {\n            backgroundColor: 'transparent',\n            padding: 0\n        }\n    },\n    '& hr': {\n        borderColor: 'gray.200',\n        marginTop: 0,\n        marginBottom: 1\n    },\n    '& img': {\n        maxWidth: '100%',\n        height: 'auto',\n        marginTop: 0,\n        marginBottom: 1\n    },\n    // Chakra List component overrides\n    '& .chakra-list': {\n        paddingLeft: 6,\n        marginBottom: 1,\n        marginTop: 0\n    },\n    '& .chakra-list__item': {\n        display: 'list-item',\n        marginBottom: 1,\n        fontSize: 'sm',\n        lineHeight: 'base',\n        color: 'gray.600'\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"shipping\",\n  \"use\": \"shipping-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"shipping\\\">\\n<g id=\\\"shipping_Truck\\\" clip-path=\\\"url(#shipping_clip0_32216_3379)\\\">\\n<g id=\\\"shipping_icon\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0002 3.81641C12.0002 2.98798 11.3286 2.3164 10.5002 2.31641L0.00341797 2.31644V15.4009H2.00921C2.11874 16.6804 3.19208 17.6848 4.5 17.6848C5.80792 17.6848 6.88126 16.6804 6.99079 15.4009H11.3044V14.4009H6.87462C6.54576 13.4042 5.60688 12.6848 4.5 12.6848C3.39312 12.6848 2.45424 13.4042 2.12538 14.4009H1.00342V3.31644L10.5002 3.31641C10.7763 3.31641 11.0002 3.54026 11.0002 3.81641V9.4377C11.0002 9.98998 11.4479 10.4377 12.0002 10.4377H15.5002V9.4377L12.0002 9.4377V3.81641ZM3 15.1848C3 14.3564 3.67157 13.6848 4.5 13.6848C5.32843 13.6848 6 14.3564 6 15.1848C6 16.0132 5.32843 16.6848 4.5 16.6848C3.67157 16.6848 3 16.0132 3 15.1848Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.7654 4.13164L16.0451 6.57424L18.5241 9.0905L18.5305 9.09662C18.8303 9.37996 19.0002 9.77426 19.0002 10.1868V14.4009H17.9499C17.7182 13.2599 16.7094 12.4011 15.5 12.4011C14.1193 12.4011 13 13.5204 13 14.9011C13 16.2818 14.1193 17.4011 15.5 17.4011C16.7096 17.4011 17.7185 16.5421 17.95 15.4009H20.0002V10.1868C20.0002 9.50239 19.7196 8.84809 19.2242 8.37633L16.7716 5.88697L14.4964 3.44932L13.7654 4.13164ZM15.5 13.4011C14.6716 13.4011 14 14.0727 14 14.9011C14 15.7296 14.6716 16.4011 15.5 16.4011C16.3284 16.4011 17 15.7296 17 14.9011C17 14.0727 16.3284 13.4011 15.5 13.4011Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n<defs>\\n<clipPath id=\\\"shipping_clip0_32216_3379\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\nexport const useDolCommonParams = () => {\n    const {site, locale} = useMultiSite()\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disableGetCustomerBasketsOrganisationIdShortCodeSiteIdParameters,\n        false\n    )\n    // DOL Q3 channel migration — flag ON removes deprecated `source` param; OFF keeps legacy 'PWA'.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId, shortCode}\n            }\n        }\n    } = getConfig()\n\n    return useMemo(\n        () => ({\n            locale: locale?.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId: site?.id,\n                      shortCode,\n                      organisationId: organizationId\n                  })\n        }),\n        [\n            site?.id,\n            locale?.id,\n            shortCode,\n            organizationId,\n            isOrgIdShortCodeSideIdParametersDisabled,\n            isDolQ3MigrationEnabled\n        ]\n    )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Text,\n    useMultiStyleConfig,\n    useTheme\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const CopyrightText = (props) => {\n    const {text, color = 'white', variant = 'image', dataAuto} = props\n    const theme = useTheme()\n    const styles = useMultiStyleConfig('CopyrightText', {\n        variant,\n        color,\n        direction: theme.direction\n    })\n\n    if (!text) return null\n\n    return (\n        <Text\n            data-testid=\"copyrightText\"\n            textStyle=\"caption\"\n            data-auto={`lbl${dataAuto || ''}Copyright`}\n            {...styles?.copyrightText}\n        >\n            {text}\n        </Text>\n    )\n}\n\nCopyrightText.displayName = 'CopyrightText'\n\nCopyrightText.propTypes = {\n    text: PropTypes.string,\n    color: PropTypes.string,\n    dataAuto: PropTypes.string,\n    variant: PropTypes.oneOf([\n        'image',\n        'video-controller-right',\n        'video-controller-left',\n        'plp-video-controller-right'\n    ])\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Provides mapping of password requirements that have/haven't been met\n * @param {string} value - The password to validate\n * @returns {Object} - True/false for each password validation rule\n */\nexport const validatePassword = (value) => {\n    return {\n        hasMinChars: value && value.length >= 8 ? true : false,\n        hasUppercase: value && /[A-Z]/.test(value) ? true : false,\n        hasLowercase: value && /[a-z]/.test(value) ? true : false,\n        hasNumber: value && /\\d/.test(value) ? true : false,\n        hasSpecialChar: value && /[!@#$%^&*(),.?\":{}|<>]/.test(value) ? true : false\n    }\n}\n","import {\n    DEFAULT_LIMIT_VALUES,\n    DEFAULT_SEARCH_PARAMS,\n    cssColorGroups\n} from '@salesforce/retail-react-app/app/constants'\nimport {METAL_FILTERS as defaultMetalFilters} from 'pandora-shared-app/overrides/app/components/product-tile/constants'\n\n// Override the default search parameters.\nDEFAULT_SEARCH_PARAMS.limit = 28\nDEFAULT_SEARCH_PARAMS.sort = ''\n\nexport const HOME_SHOP_PRODUCTS_CATEGORY_ID = 'gb-local-category-new'\n\nexport const CUSTOM_HOME_TITLE = '🎉 Hello Extensible React Template!'\n\nexport {DEFAULT_LIMIT_VALUES, DEFAULT_SEARCH_PARAMS}\n\n//TODO: This and other env urls should be moved to environment variables\nexport const SFRA_URL = 'https://dev-uk.pandora.net/'\nexport const LOGIN_SFRA_ROUTE = 'on/demandware.store/Sites-en-GB-Site/en_GB/Login-Show'\nexport const LOGIN_BANNER_SRC =\n    'https://uk.pandora.net/on/demandware.static/-/Sites-en-GB-Library/default/dwd6ed80e0/images/loyalty/images/banner/login-pop-up-details.jpg'\n\n// ****** Tealium Constants ******\nexport const TEALIUM_CONSTANTS = {\n    OTHER: {\n        MENU: 'Menu',\n        VISUAL_MENU: 'Visual_Menu',\n        BOTTOM_MENU: 'Bottom-menu',\n        GEO: 'global',\n        PLATFORM: 'gemini',\n        EXPERIENCE: 'gemini'\n    },\n    CUSTOMER: {\n        STATUS: {\n            LOGGED_IN: 'logged in',\n            NOT_LOGGED_IN: 'not logged in'\n        }\n    },\n    USER_DEVICE_TYPE: {\n        MOBILE: 'mobile',\n        DESKTOP: 'desktop'\n    },\n    CONTENT: {\n        COMMERCIAL: 'commercial'\n    },\n    SEARCH: {\n        SEARCH: 'search',\n        SEARCH_RESULTS: 'search results',\n        SEARCH_RESULTS_COMBINED: 'search-results',\n        SEARCH_METHOD: {\n            MANUAL_SUBMIT: 'manual submit',\n            SUGGESTED_PRODUCT: 'suggested product',\n            SUGGESTED_CATEGORY: 'suggested category',\n            SUGGESTED_TERM: 'suggested term'\n        },\n        SEARCH_ENGINE: {\n            BLOOMREACH: 'bloomreach',\n            SALESFORCE: 'salesforce'\n        }\n    },\n    FILTER: {\n        FILTER_TYPE: {\n            ADAPTIVE: 'adaptive',\n            PRIMARY: 'primary'\n        },\n        FILTER_AND_SORT_ENGINE: {\n            BLOOMREACH: 'bloomreach',\n            SALESFORCE: 'salesforce'\n        }\n    },\n    ESTORE_EVENT: {\n        PRODUCT_LISTING_VIEW: 'product listing view',\n        PRODUCT_LISTING_WISHLIST_ADD: 'save for later',\n        PRODUCT_LISTING_WISHLIST_REMOVE: 'remove from wishlist',\n        PRODUCT_DETAIL_VIEW: 'product detail view',\n        PRODUCT_SORT_CHANGED: 'product sort changed',\n        PRODUCT_FILTERS_CHANGED: 'product filters changed',\n        PRODUCT_OUT_OF_STOCK: 'product out of stock',\n        PRODUCT_DETAILS_CLICKED: 'details_clicked',\n        PRODUCT_SIZE_GUIDE_VIEWED: 'view size guide',\n        PRODUCT_DETAILS_NOTIFY_ME_SUBMITTED: 'email for product availability',\n        RECOMMENDATION_VIEWED: 'content_impression',\n        RECOMMENDATION_CLICKED: 'content_click',\n        INTERNAL_SEARCH: 'internal search',\n        INTERNAL_SEARCH_CLICKED: 'internal search result clicked',\n        INTERNAL_SEARCH_ZERO_RESULTS: 'internal search zero results',\n        PRODUCT_ADD_TO_CART: 'product add to cart',\n        CART_CREATED: 'cart created',\n        CART_UPDATED: 'cart updated',\n        ENGRAVING_ADD_TO_CART: 'engraving add to cart',\n        ERROR: 'error',\n        ENGRAVING_EDITOR_OPEN: 'engravingEditorModal/show',\n        ENGRAVING_EDITOR_CLOSE: 'engravingEditorModal/close',\n        PROMISE_ENGINE_MESSAGE_SHOWN: 'promise_engine_message_shown',\n        BUTTON_CLICKED: 'button_clicked',\n        PLP_AUTOLOAD: 'plp_autoload',\n        SIZE_SELECTOR_OPENED: 'size_selector_opened',\n        GEMMA_ENTRY_POINT_CLICK: 'gemma_entry_point_click',\n        STORE: {\n            BUTTON_TYPE: 'promise_engine_zip_applied',\n            STORELOOKUP: 'Store Stock Lookup',\n            SHOPSEARCH: 'Store Stock Lookup: search for shops',\n            CALLSTORE: 'Store Stock Lookup: call store',\n            STOREDETAILS: 'Store Stock Lookup: more store info',\n            CLOSESTORELOOKUP: 'Store Stock Lookup: close find in store',\n            SELECTSTORE: 'item collection store selected',\n            CHANGESTORE: 'change item collection store',\n            SEARCHAGAIN: 'Store Stock Lookup: search again',\n            USE_LOCATION: 'Store Stock Lookup: use current location',\n            ACCESSPOINTS: 'access_point_lookup',\n            CHANGESTOREGEMINI: 'Store Stock Lookup: change store',\n            CHECKAVAILABILITY: 'Store Stock Lookup: check availability',\n            DELIVERY_METHOD_PE: 'ship to personal address'\n        },\n        PROMISE_ENGINE: {\n            PE_OPENED: 'pe_opened',\n            PE_ZIPCODE_APPLIED: 'pe_zipcode_applied'\n        }\n    },\n    PAGENAMES: {\n        PRODUCT_LIST: 'ProductListPage',\n        PRODUCT_PLP: 'plp',\n        PRODUCT_OVERVIEW: 'overview',\n        CONTENT_HOMEPAGE: 'home page',\n        PRODUCT_DETAILS: 'pdp',\n        PRODUCT: 'product',\n        PRODUCT_VIEW: 'detail view'\n    },\n    PAGETYPE: {\n        PRODUCT_CATEGORY: 'category',\n        CONTENT_HOME: 'home'\n    },\n    PAGE_CONTENT: {\n        ERROR: 'error',\n        MARKETING: 'marketing'\n    },\n    ERROR_TYPE: {\n        '404_PAGE': '404_page'\n    },\n    DRAWER: {\n        EVENTS: {\n            VIEW: 'virtual_pageview',\n            CLOSE: 'virtual_pageview_closed'\n        },\n        TYPES: {\n            SHOP_THE_LOOK: 'shop_the_look',\n            IDLE_USER_OVERLAY: 'idle_user_overlay',\n            QA: 'q&a_sheet',\n            SIZE_SELECTOR: 'size_selector',\n            SIZE_GUID: 'size_guide',\n            CLICK_AND_COLLECT: 'click_and_collect',\n            COUNTRY_SELECTOR: 'country_selector',\n            PROMOTION_DETAILS: 'promotion-details'\n        }\n    },\n    BUTTON_ID: {\n        SIZE_GUIDE_GET_STARTED: 'size_guide_get_started',\n        SIZE_GUIDE_COMPLETED: 'size_guide_completed',\n        SIZE_GUIDE_MEASURE_FINGER: 'size_guide_measure_finger',\n        LOAD_MORE: 'load_more'\n    },\n    RING_SIZER_QR: {\n        SOURCE_PARAM_KEY: 'source',\n        SOURCE_PARAM_VALUE: 'qr_ring_sizer',\n        TRAFFIC_SOURCE: 'qr_code',\n        FEATURE_NAME: 'ring_sizer',\n        FEATURE_STEP: {\n            QR_VISIBLE: 'qr_visible',\n            QR_INTERACTION: 'qr_interaction',\n            LANDING: 'landing'\n        },\n        VIRTUAL_PAGE_NAME: {\n            QR_EXPOSURE: 'ring_sizer_qr_exposure',\n            QR_INTERACTION: 'ring_sizer_qr_interaction',\n            LANDING_QR: 'ring_sizer_landing_qr',\n            TRY_ON: 'ring_sizer:try_on'\n        },\n        VIRTUAL_PAGE_URL: {\n            QR_EXPOSURE: '/virtual/ring-sizer/qr-exposure',\n            QR_INTERACTION: '/virtual/ring-sizer/qr-interaction',\n            LANDING: '/virtual/ring-sizer/landing',\n            TRY_ON: '/virtual/ring-sizer/try-on'\n        }\n    }\n}\n\n// ****** End of Tealium constants ******\n\nexport * from '@salesforce/retail-react-app/app/constants'\n\n//Override Default constant as per Pandora theme\nexport const THEME_COLOR = cssColorGroups.white\nexport const DEFAULT_SITE_TITLE = 'Official Pandora™ | Handcrafted Jewelry 2024'\n\n// Tab names for Product List page\nexport const TAB_NAMES = {\n    SHOP: 'shop',\n    DISCOVER: 'discover'\n}\n\n// Amplience Home Page Header Key\nexport const AMPLIENCE_HP_HEADER_KEY = 'home/header'\n\n// Amplience Slots\nexport const AMPLIENCE_KEYS = {\n    HOME: [AMPLIENCE_HP_HEADER_KEY, 'home/top', 'home/main'],\n    PLP: ['top', 'main', 'bottom', 'grid-spot'],\n    PDP: 'pdp',\n    INHERITANCE: []\n}\n\nexport const AMPLIENCE_STATIC_CONTENT_KEYS = {\n    FOOTER_LINKS: 'footer-links',\n    FOOTER_ASSURANCES: 'assurances-footer',\n    NAVIGATION_CONTENT: 'navigation-content',\n    TRANSLATIONS: 'translations',\n    EXPLORE_PROMPT_SLOT: 'explore-prompt'\n}\n\n// Amplience Personalization Keys - keys that support personalization segments\nexport const AMPLIENCE_PERSONALIZATION_KEYS = [\n    ...AMPLIENCE_KEYS.HOME,\n    ...AMPLIENCE_KEYS.PLP,\n    ...AMPLIENCE_KEYS.PDP,\n    AMPLIENCE_STATIC_CONTENT_KEYS.EXPLORE_PROMPT_SLOT,\n    AMPLIENCE_STATIC_CONTENT_KEYS.NAVIGATION_CONTENT\n]\n\nexport const PROMOTION_TYPES = {\n    TEXT: 'text',\n    PROGRESS_BAR: 'progressbar',\n    COUNTDOWN_TIMER: 'countdown',\n    TICKER: 'ticker'\n}\n\nexport const PRODUCT_TILE_IMAGE_WIDTHS = {\n    base: '159px', // 0px and up\n    md: '319px', // 768px and up\n    lg: '330px', // 1024px and up\n    xl: '350px', // 1200px and up\n    '2xl': '600px' // 1440px and up\n}\n\nexport const TEMPLATE_CATEGORY_SFRA_REDIRECT = {\n    'rendering/category/categorycampaign': true,\n    'rendering/category/categoryhybrid': false,\n    'rendering/category/categorygiftcards': true\n}\n\n// ****** Pixel Constants ******\nconst COMMON_GROUPS = {\n    SUGGEST: 'suggest',\n    CART: 'cart',\n    PRODUCT: 'product',\n    WIDGET: 'widget'\n}\n\nconst COMMON_ACTION_TYPES = {\n    CLICK: 'click',\n    CLICK_ADD: 'click-add',\n    QUICK_VIEW: 'quickview',\n    SUBMIT: 'submit',\n    WIDGET_VIEW: 'widget-view',\n    WIDGET_CLICK: 'widget-click',\n    WIDGET_ADD: 'widget-add'\n}\n\nexport const PIXEL_CONSTANTS = {\n    EVENT_TYPES: {\n        HOME_PAGE_VIEW: 'homepage',\n        VIEW_PRODUCT: 'view_product',\n        VIEW_CATEGORY: 'view_category',\n        VIEW_SEARCH: 'view_search',\n        VIEW_CONVERSION: 'view_conversion',\n        SEARCH: 'event_search',\n        ADD_TO_CART: 'event_addToCart',\n        SUGGEST: 'event_suggest',\n        WIDGET_VIEW: 'event_widgetView',\n        WIDGET_CLICK: 'event_widgetClick'\n    },\n    PAGETYPE: {\n        HOME_PAGE: 'homepage',\n        PRODUCT: 'product',\n        PRODUCT_CATEGORY: 'category',\n        SEARCH_RESULT: 'search',\n        CONVERSION: 'conversion' //\n    },\n    EVENT: {\n        ADDTOCART: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        SEARCH: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        SUGGEST: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        QUICKVIEW: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        WIDGETVIEW: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        WIDGETCLICK: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        },\n        WIDGETADD: {\n            GROUP: COMMON_GROUPS,\n            ACTION_TYPE: COMMON_ACTION_TYPES\n        }\n    }\n}\n\nexport const BR_UID_COOKIE = '_br_uid_2'\n\nexport const REMOTE_COMPONENT_EVENTS = {\n    PVA_MODAL_SHOW: 'pvaModal/show',\n    PVA_MODAL_CLOSE: 'pvaModal/close',\n    PVA_MODAL_PROCESSING: 'pvaModal/processing',\n    // Emitted by the PVA remote once it is mounted and listening for\n    // PVA_MODAL_SHOW, so the host can re-deliver an open intent from a click\n    // that happened before the lazily loaded remote existed.\n    PVA_MODAL_READY: 'pvaModal/ready',\n    ENGRAVING_APP_READY: 'engravingAppReady',\n    BRACELET_EDITOR_APP_READY: 'braceletEditorAppReady',\n    PVA_NAVIGATE: 'pva/navigate'\n}\n\nexport const MONETATE_CUSTOM_EVENTS = {\n    PVA_FAB_SHOW: 'monetate-show-pva-fab'\n}\n\nexport const COLOR_FILTERS = {\n    clear: 'white',\n    'no colour': 'white',\n    'no color': 'white',\n    blue: 'newColors.blue',\n    beige: 'newColors.beige',\n    red: 'newColors.red',\n    multicolor:\n        'linear-gradient(0deg,rgb(130,30,145) 0,rgb(130,30,145) 25%,rgb(237,209,52) 25%,rgb(255,255,0) 50%,rgb(237,209,52) 50%,#59ba00 50%,#59ba00 76%,#111 76%,#111 100%),linear-gradient(0deg,rgb(14,92,209) 0,rgb(14,92,209) 50%,rgb(226,11,11) 50%,rgb(226,11,11) 100%)',\n    multi: 'linear-gradient(0deg,rgb(130,30,145) 0,rgb(130,30,145) 25%,rgb(237,209,52) 25%,rgb(255,255,0) 50%,rgb(237,209,52) 50%,#59ba00 50%,#59ba00 76%,#111 76%,#111 100%),linear-gradient(0deg,rgb(14,92,209) 0,rgb(14,92,209) 50%,rgb(226,11,11) 50%,rgb(226,11,11) 100%)',\n    white: 'white',\n    pink: 'newColors.pink',\n    black: 'charcoalBlack',\n    green: 'newColors.green',\n    purple: 'newColors.purple',\n    turquoise: 'newColors.turquoise',\n    yellow: 'newColors.yellow',\n    orange: 'newColors.orange',\n    brown: 'newColors.brown',\n    grey: 'ironsideLightGrey',\n    'light-blue': 'newColors.lightBlue',\n    'light-green': 'newColors.lightGreen',\n    'light-red': 'newColors.lightRed',\n    'light blue': 'newColors.lightBlue',\n    'light green': 'newColors.lightGreen',\n    'light red': 'newColors.lightRed',\n    silver: 'newColors.silver',\n    champagne: 'newColors.champagne'\n}\n\nexport const ITEMS_WITH_BORDER = ['clear', 'no colour', 'no color', 'white', 'no metal']\nexport const METAL_FILTERS = defaultMetalFilters\n\n// ****** Product Grid Constants ******\nexport const EMPH_PRODUCT_INDEX_BASE = 4\nexport const EMPH_PRODUCT_INDEX_NO_CONTENT = [9, 14]\nexport const EMPH_PRODUCT_INDEX_ONE_SLOT = [13]\n\n// ****** Product Image Constants ******\nexport const IMAGE_CONF = {\n    bgColor: 'F7F7F7',\n    quality: 70,\n    imgType: 'png'\n}\n\nexport const PRODUCT_MAIN_IMAGE_WIDTHS = {\n    base: '384px', // 0px and up\n    md: '510px', // 768px and up\n    lg: '600px', // 1024px and up\n    xl: '510px', // 1200px and up\n    '2xl': '810px' // 1440px and up\n}\n\n// ****** Engraving Editor Constants ******\nexport const ENGRAVING_EDITOR_EVENTS = {\n    OPEN: 'engravingEditorModal/show',\n    CLOSE: 'engravingEditorModal/close'\n}\n\n// Constant to enable partial hydration capabilities, i.e. `<Island/>` components\nexport const PARTIAL_HYDRATION_ENABLED = true\n","import React, {Component} from 'react'\nimport PropTypes from 'prop-types'\n\nclass ErrorBoundary extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {hasError: false}\n    }\n\n    static getDerivedStateFromError() {\n        return {hasError: true}\n    }\n\n    componentDidCatch(error, info) {\n        console.error(info.componentStack)\n    }\n\n    render() {\n        const {hasError} = this.state\n        const {children, fallbackComponent: FallbackComponent} = this.props\n\n        if (hasError) {\n            return FallbackComponent ? <FallbackComponent /> : null\n        }\n\n        return children\n    }\n}\n\nErrorBoundary.propTypes = {\n    children: PropTypes.node.isRequired,\n    fallbackComponent: PropTypes.elementType\n}\n\nexport default ErrorBoundary\n","import {useEffect, useRef} from 'react'\nimport useCookie from 'react-use-cookie'\nimport {useUserPriceSegment} from '@salesforce/retail-react-app/app/contexts'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {getRefUrl} from '../utils/get-ref-url'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport {useServerContext} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {omitNullable, pick} from '@salesforce/commerce-sdk-react/hooks/utils'\nimport {useLocation} from 'react-router-dom'\nimport {getCustomKeys} from '../utils/get-custom-keys'\n\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getApiData} from './useCustomQuery'\nimport {useInfiniteQuery} from './use-infinite-query'\nimport {queryKeyHelpers} from './helpers/query-key-helpers'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {useUrlMapping} from './use-url-mapping'\nimport {\n    defaultProductQueryOptions,\n    productSearchParamKeys,\n    defaultSearchRequestOptions,\n    getSearchProviderHeaderValue\n} from '../api_keys/search-keys'\nimport {transformBRSearchResponse} from './helpers/product-search-mapper'\nimport {setLdContextAttr} from '../utils/set-ld-context-attr'\nimport {getParsedCookieValue, getRawCookieValue} from '../utils/server-cookies'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {buildRedirectUrl} from './use-product-search-url-handler'\nimport {BR_UID_COOKIE} from '../constants'\nimport {canonicalBRRefinementsMapper} from '../utils/seo-filters-mapper'\nimport {pushUniqueRefineKeys} from './helpers/search-hook-utils'\nimport {getDolChannelHeaders} from '../utils/dol-channel-headers'\nimport {useConsent} from 'pandora-shared-app/overrides/app/components/onetrust'\nimport {useEffectiveDateTime} from './use-effective-date-time'\nimport {HTTPNotFound} from '@salesforce/pwa-kit-react-sdk/ssr/universal/errors'\n\n/** @typedef {import('./types/product-search').UseProductSearchResult} UseProductSearchResult */\n/** @typedef {import('./types/product-search').SearchRedirect} SearchRedirect */\n\n/**\n * Handles URL mapping parameters for product search.\n * Extracts complex nested logic to reduce cognitive complexity of the main method.\n * @returns {SearchRedirect|null} Redirect object if redirect is needed, null otherwise\n */\nconst handleUrlMappingParams = ({\n    urlMapping,\n    apiParams,\n    parameters,\n    enableProductSearchOn404,\n    req,\n    res\n}) => {\n    // Handle search with refinements from URL mapping\n    if (urlMapping && !!apiParams.text) {\n        if (urlMapping?.refinements) {\n            canonicalBRRefinementsMapper(parameters, urlMapping?.refinements, false)\n        }\n        return null\n    }\n\n    // Handle redirect when destination URL exists\n    if (urlMapping?.destinationUrl && !apiParams.text) {\n        return {\n            redirect: {\n                redirectUrl: buildRedirectUrl(urlMapping, req, res),\n                statusCode: urlMapping?.statusCode\n            }\n        }\n    }\n\n    // Handle category from URL mapping resourceId\n    if (urlMapping?.resourceId && !apiParams?.isCgidManual) {\n        const catKey = `${urlMapping.resourceId}`\n        const updatedArray = pushUniqueRefineKeys('', parameters.refine)\n        parameters.refine = updatedArray\n        parameters.categoryId = catKey\n        if (urlMapping?.refinements) {\n            canonicalBRRefinementsMapper(parameters, urlMapping?.refinements, false)\n        }\n        return null\n    }\n\n    // Manual category ID mode: use the provided urlSegment as categoryId\n    if (apiParams?.isCgidManual && apiParams?.urlSegment) {\n        parameters.categoryId = apiParams.urlSegment\n        return null\n    }\n\n    // 404 mode: When URL mapping fails (404) but we have urlSegment, use it as categoryId\n    // This allows us to show parent category products on invalid URLs\n    if (enableProductSearchOn404 && !urlMapping && apiParams?.urlSegment) {\n        parameters.categoryId = apiParams.urlSegment\n    }\n\n    return null\n}\n\n/**\n * Throws HTTPNotFound when the product search request returns 404 and the\n * feature flag is enabled. Keyword searches (apiParams.text) and CMS-owned searches\n * (apiParams.isCmsOwnedSearch) are excluded: a CMS-owned category comes from an\n * Amplience module rather than from the URL, so a missing category must degrade to an\n * empty module instead of turning the host page into a 404.\n * Extracted to keep useProductSearchV2's cognitive complexity in check.\n *\n * @param {Object} queryResult - Result returned by useInfiniteQuery.\n * @param {boolean} enablePlpProductSearch404Redirect - LaunchDarkly flag.\n * @param {string} [searchText] - Search query text.\n * @param {boolean} [isCmsOwnedSearch] - Search is owned by a CMS module, not by the URL.\n * @throws {HTTPNotFound} When a 404 product-search error is detected.\n */\nconst throwIfProductSearch404 = (\n    queryResult,\n    enablePlpProductSearch404Redirect,\n    searchText,\n    isCmsOwnedSearch\n) => {\n    const productSearchErrorStatus =\n        queryResult.error?.status ?? queryResult.error?.response?.status\n    if (\n        enablePlpProductSearch404Redirect &&\n        productSearchErrorStatus === 404 &&\n        !searchText &&\n        !isCmsOwnedSearch\n    ) {\n        throw new HTTPNotFound('Product search returned 404')\n    }\n}\n\n/**\n * Product search via DOL v2 contract (unified SFCC/Bloomreach).\n *\n * @param {{ parameters: Object }} apiOptions\n * @param {import('@tanstack/react-query').UseInfiniteQueryOptions} [queryOptions]\n * @returns {UseProductSearchResult}\n */\nexport const useProductSearchV2 = (apiOptions, queryOptions = {}) => {\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const location = useLocation()\n    const appOrigin = useAppOrigin(true)\n    const {getUserPriceContext} = useUserPriceSegment()\n\n    const basePath = `${appOrigin}${location.pathname}${location.search}`\n    const rawSourceFlag = useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce')\n    const {isPreviewMode} = useEffectiveDateTime()\n    const sourceFlag = isPreviewMode ? 'salesforce' : rawSourceFlag\n    const isBloomreachEnabled = sourceFlag === 'bloomreach'\n    const isContextEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const isSsrPriceContextFixEnabled = useVariant(\n        LD_KEYS.enableGlobalSsrPriceContextCookieHandling,\n        false\n    )\n    const enableProductSearchOn404 = useVariant(LD_KEYS.enableProductSearchOn404, false)\n    // [FIND-6489] Redirect to Page Not Found when the DOL product search endpoint\n    // itself returns HTTP 404 (offline/removed category that still resolves in URL\n    // mapping). Distinct from the URL-mapping 404 handled by enableProductSearchOn404.\n    const enablePlpProductSearch404Redirect = useVariant(\n        LD_KEYS.enablePlpProductSearch404Redirect,\n        false\n    )\n    const enableBrAbTesting = useVariant(LD_KEYS.enableBrAbTesting, false)\n    const enableSearchRefUrl = useVariant(LD_KEYS.enableSearchRefUrl, false)\n    const enablePlpScrollRestoration = useVariant(LD_KEYS.enablePlpScrollRestoration, false)\n    const isSearchEnabled = queryOptions.enabled\n    // [FIND-6492] DOL Q3 channel migration. Flag ON → drop the deprecated `source`\n    // query param, send `searchProvider` as a header (per DOL Search API spec), and\n    // add mandatory channelname ('pva') / channeltype headers. Flag OFF → legacy\n    // `source` query param, no new headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolQ3Headers = isDolQ3MigrationEnabled\n        ? {...getDolChannelHeaders('pva'), searchProvider: getSearchProviderHeaderValue(sourceFlag)}\n        : {}\n\n    const proxyPath = appConfig.dolAPI.proxyPath\n\n    const {parameters: apiParams} = apiOptions\n\n    const [brCookie] = useCookie(BR_UID_COOKIE, 'undefined')\n    const {allowTracking, selectedDnt} = useConsent()\n    const brCookieValue = enableBrAbTesting ? (brCookie !== 'undefined' ? brCookie : null) : null\n\n    // When enableBrAbTesting is ON: check if personalization is available BEFORE the query runs.\n    // When true on SPA navigation, the initial fetch is already personalized — no refetch needed.\n    // On direct page load (SSR → hydration), this is false server-side (typeof document check),\n    // so useCustomProductSearch's post-hydration refetch handles that case.\n    // When enableBrAbTesting is OFF: always false — no behaviour change from pre-feature state.\n    const hasPersonalizationAvailable = Boolean(\n        enableBrAbTesting &&\n            isBloomreachEnabled &&\n            brCookieValue &&\n            typeof document !== 'undefined' &&\n            allowTracking &&\n            selectedDnt !== true\n    )\n\n    if (hasPersonalizationAvailable) {\n        document.cookie = `userId=${brCookieValue}; path=/; SameSite=Lax`\n    }\n    // Capture refUrl once per page navigation using refs so that subsequent\n    // re-renders (e.g. after VIEW_SEARCH sets __BR_PRIOR_REFERRER__ to the\n    // current URL) do not lose the original referring URL.\n    const refUrlRef = useRef(undefined)\n    const prevLocationKeyRef = useRef(null)\n    const locationKey = `${location.pathname}${location.search}`\n    if (prevLocationKeyRef.current !== locationKey) {\n        prevLocationKeyRef.current = locationKey\n        refUrlRef.current = enableSearchRefUrl && !isServer ? getRefUrl() : undefined\n    }\n    const refUrl = refUrlRef.current\n    const defaultParams = {\n        ...defaultSearchRequestOptions(sourceFlag, isDolQ3MigrationEnabled),\n        locale: locale.id,\n        url: basePath,\n        ...(refUrl && {referrerUrl: refUrl})\n    }\n    const allowedParamKeys = [...productSearchParamKeys, ...getCustomKeys(apiParams)]\n    const allowedParameters = pick(apiParams, allowedParamKeys)\n    const parameters = omitNullable({...defaultParams, ...allowedParameters}) // prettier-ignore\n    // referrerUrl is a Bloomreach analytics param, not part of cache identity.\n    // Including it causes a cache miss on PLP back-navigation from PDP\n    // (document.referrer flips home→PDP), wiping the loaded pages and\n    // resetting useInfiniteQuery to page 1. The value still reaches the API\n    // via apiOptions.parameters below. Gated behind enablePlpScrollRestoration\n    // so the original behavior is preserved exactly when the flag is OFF. (FIND-5345)\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const {url, referrerUrl, ...restWithoutReferrerUrl} = parameters\n    const keepReferrerUrlInQueryKey = !enablePlpScrollRestoration && referrerUrl !== undefined\n    const queryKeyParams = keepReferrerUrlInQueryKey\n        ? {...restWithoutReferrerUrl, referrerUrl}\n        : restWithoutReferrerUrl\n    const queryKey = queryKeyHelpers.productSearch.queryKey(queryKeyParams)\n    const {req, res} = useServerContext()\n    const {data: urlMapping} = useUrlMapping()\n\n    // Allow product search even when urlMapping fails (404) if we have urlSegment\n    // This enables showing parent category products on invalid URLs\n    // Allow product search even when urlMapping fails (404) if we have urlSegment\n    // This enables showing parent category products on invalid URLs\n    const isQueryEnabled =\n        isSearchEnabled &&\n        (!!(apiParams?.isCgidManual && apiParams.urlSegment) ||\n            !!(urlMapping && apiParams.urlSegment) ||\n            (enableProductSearchOn404 && !!apiParams.urlSegment) ||\n            !!(urlMapping && apiParams.text))\n\n    const method = async ({parameters, path, ...restOptions}) => {\n        if (isServer && isContextEnabled) {\n            const cookieValue = isSsrPriceContextFixEnabled\n                ? getRawCookieValue(req.headers.cookie, 'expSegGrp')\n                : getParsedCookieValue(req.headers.cookie, 'expSegGrp')\n            if (cookieValue) {\n                await getUserPriceContext(cookieValue, {\n                    failSafe: isSsrPriceContextFixEnabled\n                })\n            }\n        }\n\n        // Handle URL mapping parameters (category, refinements, redirects)\n        if (apiParams.urlSegment || urlMapping) {\n            const redirectResult = handleUrlMappingParams({\n                urlMapping,\n                apiParams,\n                parameters,\n                enableProductSearchOn404,\n                req,\n                res\n            })\n            if (redirectResult) {\n                return redirectResult\n            }\n        }\n\n        // When enableBrAbTesting is ON: re-evaluate personalization at request time by reading\n        // document.cookie directly. This handles the first-time visitor case where the Bloomreach\n        // pixel sets _br_uid_2 after hydration, after the render-time hasPersonalizationAvailable\n        // was computed from useCookie() React state (which doesn't react to external cookie writes).\n        // When enableBrAbTesting is OFF: fall back to pre-feature behaviour (skipCredentials based\n        // on isBloomreachEnabled only, matching the original contract).\n        let skipCredentials = !isBloomreachEnabled\n        if (enableBrAbTesting) {\n            const brCookieAtRequestTime =\n                typeof document !== 'undefined'\n                    ? document.cookie.match(new RegExp('(^| )' + BR_UID_COOKIE + '=([^;]+)'))?.[2]\n                    : null\n            const isPersonalizedAtRequestTime = Boolean(\n                isBloomreachEnabled &&\n                    brCookieAtRequestTime &&\n                    brCookieAtRequestTime !== 'undefined' &&\n                    allowTracking &&\n                    selectedDnt !== true\n            )\n            if (isPersonalizedAtRequestTime && !hasPersonalizationAvailable) {\n                // First-time visitor: pixel set _br_uid_2 after render — also set userId now\n                document.cookie = `userId=${brCookieAtRequestTime}; path=/; SameSite=Lax`\n            }\n            skipCredentials = !isPersonalizedAtRequestTime\n        }\n\n        const response = await getApiData({\n            ...restOptions,\n            apiOptions: {path, queryParams: parameters, skipCredentials}\n        })\n\n        return transformBRSearchResponse({\n            ...response,\n            customerSegment: parameters.customerSegment\n        })\n    }\n\n    useEffect(() => {\n        setLdContextAttr(isBloomreachEnabled)\n    }, [isBloomreachEnabled])\n\n    const queryResult = useInfiniteQuery(\n        {\n            baseUrl: appOrigin,\n            path: getCustomApiPaths(proxyPath).PRODUCT_SEARCH_V2,\n            parameters,\n            headers: {\n                'x-environment': appConfig?.targetEnvironment,\n                ...dolQ3Headers\n            }\n        },\n        {\n            initialPageParam: 0,\n            getNextPageParam: (lastPage, allPages) => {\n                const {total, limit} = lastPage\n                const nextOffset = allPages.length * limit\n\n                return nextOffset < total ? nextOffset : undefined\n            },\n            ...queryOptions,\n            ...defaultProductQueryOptions,\n            enabled: isQueryEnabled\n        },\n        {\n            method,\n            queryKey: [queryKey, apiParams.urlSegment, 'search-v2'],\n            requiredParameters: Object.keys(defaultParams)\n        }\n    )\n\n    // [FIND-6489] Let PWA Kit's global Error component render the 404 page when\n    // the DOL product search endpoint returns 404 for a category PLP.\n    throwIfProductSearch404(\n        queryResult,\n        enablePlpProductSearch404Redirect,\n        apiParams.text,\n        apiParams.isCmsOwnedSearch\n    )\n\n    return {\n        ...queryResult,\n        hasPersonalizationAvailable\n    }\n}\n","import {useProductSearch} from './use-product-search'\nimport {useProductSearchV2} from './use-product-search-v2'\nimport {useProducts} from '@salesforce/commerce-sdk-react'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\nimport {useEffect, useRef} from 'react'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {DEFAULT_SEARCH_PARAMS} from '@salesforce/retail-react-app/app/constants'\n\n/** @typedef {import('./types/product-search').UseCustomProductSearchResult} UseCustomProductSearchResult */\n\n// NOTE: You can ignore certain refinements on a template level by updating the below\n// list of ignored refinements.\nconst REFINEMENT_DISALLOW_LIST = ['c_isNew']\n\n/**\n * Wraps useProductSearchV2/useProductSearch with refinement filtering and\n * page-flattening select transform.\n *\n * @param {Object} restParams\n * @param {string[]} _refine\n * @param {string} categorySegment\n * @param {boolean} [enableNewDolContract=false]\n * @param {boolean} [isUrlMappingLoading=false]\n * @returns {UseCustomProductSearchResult}\n */\nexport const useCustomProductSearch = (\n    restParams,\n    _refine,\n    categorySegment,\n    enableNewDolContract = false,\n    isUrlMappingLoading = false,\n    enabled = true,\n    pageNumber = 1\n) => {\n    const {data: customer} = useCurrentCustomer()\n    const sourceFlag = useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce')\n    const isBloomreachEnabled = sourceFlag === 'bloomreach'\n    const enableProductSearchOn404 = useVariant(LD_KEYS.enableProductSearchOn404, false)\n\n    const searchParams = {\n        parameters: {\n            ...restParams,\n            refine: _refine,\n            urlSegment: categorySegment\n        }\n    }\n\n    // When 404 feature is enabled and we have a category segment, wait for URL mapping to resolve\n    // This ensures parent category extraction happens before product search executes\n    const shouldWaitForUrlMapping =\n        enableProductSearchOn404 && categorySegment && isUrlMappingLoading\n\n    const enableCrawlablePaginatedPlpUrls = useVariant(\n        LD_KEYS.enableCrawlablePaginatedPlpUrls,\n        false\n    )\n    const enablePlpPageNumberFix = useVariant(LD_KEYS.enablePlpPageNumberFix, false)\n    const startingOffset =\n        enableCrawlablePaginatedPlpUrls && pageNumber > 1\n            ? (pageNumber - 1) * DEFAULT_SEARCH_PARAMS.limit\n            : 0\n\n    const queryOptions = {\n        keepPreviousData: true,\n        select: (data) => {\n            const {refinements = [], ...restProps} = data.pages[data.pages.length - 1] || {}\n            // FIND-6788: on back-nav the preserved cache still holds every page from\n            // offset 0, so `_startPage = pageNumber` mislabels tiles and shifts ?page=.\n            // Derive it from the first loaded page's offset instead.\n            const firstOffset = Array.isArray(data.pageParams) ? data.pageParams[0] ?? 0 : 0\n            const startPage = enablePlpPageNumberFix\n                ? Math.floor(firstOffset / DEFAULT_SEARCH_PARAMS.limit) + 1\n                : pageNumber\n\n            return {\n                ...data,\n                ...restProps,\n                hits: data.pages.flatMap(({hits}) => hits),\n                // Apply to disallow list to refinements.\n                refinements: refinements.filter(\n                    ({attributeId}) => !REFINEMENT_DISALLOW_LIST.includes(attributeId)\n                ),\n                _startPage: enableCrawlablePaginatedPlpUrls ? startPage : 1\n            }\n        },\n        ...(startingOffset > 0 && {\n            initialPageParam: startingOffset,\n            getNextPageParam: (lastPage, allPages) => {\n                const {total, limit} = lastPage\n                const nextOffset = startingOffset + allPages.length * limit\n                return nextOffset < total ? nextOffset : undefined\n            }\n        })\n    }\n\n    const searchProducts = enableNewDolContract ? useProductSearchV2 : useProductSearch\n    const query = searchProducts(searchParams, {\n        ...queryOptions,\n        enabled: enabled && !shouldWaitForUrlMapping\n    })\n\n    const isRefetched = useRef(false)\n\n    useEffect(() => {\n        if (\n            !isBloomreachEnabled &&\n            customer?.isRegistered &&\n            // Ensure customer is registered\n            !isRefetched.current && // Ensure refetch has not been triggered before\n            !query.isFetchedAfterMount // Ensure query is not already fetching on initial load\n        ) {\n            query.refetch()\n            isRefetched.current = true\n        }\n    }, [customer])\n\n    return query\n}\n\nexport const useCustomProducts = (ids = null, enabled = false) => {\n    return useProducts({\n        parameters: {ids: ids.join(',')},\n        enabled: enabled\n    })\n}\n","/**\n * Pandora Product Utilities\n * Custom utility functions for working with product data structures.\n *\n * @module utils/pandora-product-utils\n */\n\n/**\n * @typedef {import('pandora-shared-app/overrides/app/types/product').DOLProduct} DOLProduct\n * @typedef {import('pandora-shared-app/overrides/app/types/product').SCAPIProduct} SCAPIProduct\n */\n\n/**\n * Normalizes product ID - DOL products use productId, SCAPI uses id.\n * @param {DOLProduct|SCAPIProduct} product\n * @returns {string}\n */\nexport const getProductId = (product) => {\n    return product?.productId || product?.id || ''\n}\n\n/**\n * Checks if a product has size variations.\n * @param {DOLProduct|SCAPIProduct} product\n * @returns {boolean}\n */\nexport const hasSizeVariations = (product) => {\n    return (\n        Array.isArray(product?.variationAttributes) &&\n        product.variationAttributes.some((attr) => attr.id === 'size')\n    )\n}\n\n/**\n * Checks if a product has any variants.\n * @param {DOLProduct|SCAPIProduct} product\n * @returns {boolean}\n */\nexport const hasVariants = (product) => {\n    return Array.isArray(product?.variants) && product.variants.length > 0\n}\n\n/**\n * Extracts child products from a compound product (set or bundle).\n * @param {DOLProduct} product - Parent compound product\n * @returns {SCAPIProduct[]} Array of child products\n */\nexport const getChildProducts = (product) => {\n    if (!product) return []\n\n    if (product.setProducts?.length) {\n        return product.setProducts\n    }\n\n    if (product.bundledProducts?.length) {\n        return product.bundledProducts.map((wrapper) => wrapper.product).filter(Boolean)\n    }\n\n    return []\n}\n","/**\n * Orderability Helper Utilities\n * Pure functions for checking product/variant availability.\n *\n * @module hooks/use-add-to-bag-flow/utils/orderability-helpers\n */\n\n/**\n * @typedef {import('../types/product-config').MultiSizeSelection} MultiSizeSelection\n * @typedef {import('pandora-shared-app/overrides/app/types/product').DOLProduct} DOLProduct\n */\n\nimport {hasSizeVariations} from './selection-helpers'\n\n/**\n * Checks if a single product is orderable.\n * For products with size variations, returns true if at least one size is orderable.\n * For products without size variations, returns true unless inventory.orderable is explicitly false.\n * Note: undefined orderable is treated as orderable (optimistic default).\n *\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isProductOrderable = (product) => {\n    if (!product) return false\n\n    // If product has size variations, check if any size is orderable\n    if (hasSizeVariations(product)) {\n        const sizeAttr = product.variationAttributes?.find((attr) => attr.id === 'size')\n        return sizeAttr?.values?.some((size) => size.orderable) || false\n    }\n\n    // For products without size variations, check inventory\n    // Returns true if orderable is undefined (optimistic) or explicitly true\n    return product?.inventory?.orderable !== false\n}\n\n/**\n * Checks if all products in an array are orderable\n * @param {DOLProduct[]} products\n * @returns {boolean}\n */\nexport const areAllProductsOrderable = (products) => {\n    if (!products?.length) return false\n    return products.every(isProductOrderable)\n}\n\n/**\n * Checks if a variant is orderable\n * @param {Object} variant\n * @returns {boolean}\n */\nexport const isVariantOrderable = (variant) => {\n    return variant?.orderable !== false\n}\n\n/**\n * Checks if a size selection is orderable\n * @param {Object} size\n * @returns {boolean}\n */\nexport const isSizeOrderable = (size) => {\n    return size?.orderable !== false\n}\n\n/**\n * Checks if all items in a multi-size selection are orderable.\n * Returns true for empty selections (no selections to validate).\n * This is intentional - validation of required selections should be done separately.\n *\n * @param {MultiSizeSelection} selectedSizes\n * @returns {boolean}\n */\nexport const areAllSelectionsOrderable = (selectedSizes) => {\n    if (!selectedSizes || Object.keys(selectedSizes).length === 0) {\n        return true\n    }\n\n    return Object.values(selectedSizes).every(\n        (selection) => selection?.variant?.orderable !== false\n    )\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-us\",\n  \"use\": \"flag-us-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"flag-us\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.833313 3.3335H19.7222V4.42367H0.833313V3.3335ZM0.833313 5.51383H19.7222V6.604H0.833313V5.51383ZM0.833313 7.69141H19.7222V8.78434H0.833313V7.69141ZM0.833313 9.87174H19.7222V10.9619H0.833313V9.87174ZM0.833313 12.0521H19.7222V13.1423H0.833313V12.0521ZM0.833313 14.2297H19.7222V15.3198H0.833313V14.2297ZM0.833313 16.41H19.7222V17.5002H0.833313V16.41Z\\\" fill=\\\"#BD3D44\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.833313 4.42383H19.7222V5.514H0.833313V4.42383ZM0.833313 6.60417H19.7222V7.69157H0.833313V6.60417ZM0.833313 8.78174H19.7222V9.87191H0.833313V8.78174ZM0.833313 10.9621H19.7222V12.0522H0.833313V10.9621ZM0.833313 13.1424H19.7222V14.2326H0.833313V13.1424ZM0.833313 15.32H19.7222V16.4102H0.833313V15.32Z\\\" fill=\\\"white\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.833313 3.3335H11.5994V10.9619H0.833313V3.3335Z\\\" fill=\\\"#192F5D\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1.72974 3.66016L1.82935 3.96175H2.14478L1.89022 4.14714L1.98706 4.4515L1.72974 4.26335L1.47518 4.44873L1.57202 4.14714L1.3147 3.96175H1.63566L1.72974 3.66016ZM3.52547 3.66016L3.62231 3.96175H3.94051L3.68319 4.14714L3.78003 4.4515L3.52547 4.26335L3.26815 4.44873L3.36499 4.14714L3.11043 3.96175H3.42586L3.52547 3.66016ZM5.31844 3.66016L5.41805 3.96175H5.73071L5.47616 4.14714L5.573 4.4515L5.31567 4.26335L5.06112 4.44873L5.15796 4.14714L4.90064 3.96175H5.21883L5.31844 3.66016ZM7.11418 3.66016L7.21102 3.96175H7.52922L7.27189 4.14714L7.3715 4.4515L7.11418 4.26335L6.85685 4.44873L6.95646 4.14714L6.69914 3.96175H7.01457L7.11418 3.66016ZM8.90715 3.66016L9.00675 3.96175H9.32218L9.06763 4.14714L9.16447 4.4515L8.90715 4.26335L8.65259 4.44873L8.74943 4.14714L8.49487 3.96175H8.8103L8.90715 3.66016ZM10.7029 3.66016L10.7997 3.96175H11.1179L10.8606 4.14714L10.9602 4.4515L10.7029 4.26335L10.4456 4.44873L10.5452 4.14714L10.2878 3.96175H10.606L10.7029 3.66016ZM2.62899 4.42383L2.72583 4.72542H3.04403L2.7867 4.91081L2.88078 5.2124L2.63175 5.02702L2.37443 5.2124L2.46574 4.91081L2.21672 4.72542H2.53215L2.62899 4.42383ZM4.42196 4.42383L4.52157 4.72542H4.837L4.57967 4.91081L4.67928 5.2124L4.42196 5.02702L4.16463 5.2124L4.26424 4.91081L4.00692 4.72542H4.32511L4.42196 4.42383ZM6.21769 4.42383L6.31454 4.72542H6.63273L6.37541 4.91081L6.47225 5.2124L6.21769 5.02702L5.96037 5.2124L6.05721 4.91081L5.80265 4.72542H6.11808L6.21769 4.42383ZM8.01066 4.42383L8.11027 4.72542H8.4257L8.16838 4.91081L8.26799 5.2124L8.01066 5.02702L7.7561 5.2124L7.85295 4.91081L7.59562 4.72542H7.91659L8.01066 4.42383ZM9.8064 4.42383L9.90324 4.72542H10.2214L9.96411 4.91081L10.061 5.2124L9.8064 5.02702L9.54907 5.2124L9.64592 4.91081L9.39136 4.72542H9.70679L9.8064 4.42383ZM1.72974 5.18473L1.82935 5.49186H2.14478L1.89022 5.67724L1.98706 5.97884L1.72974 5.79069L1.47518 5.97884L1.57202 5.67448L1.3147 5.48909H1.63566L1.72974 5.18473ZM3.52547 5.18473L3.62231 5.48909H3.94051L3.68319 5.67448L3.78003 5.97607L3.52547 5.78792L3.26815 5.97607L3.36499 5.67171L3.11043 5.48633H3.42586L3.52547 5.18473ZM5.31844 5.18473L5.41805 5.48909H5.73071L5.47616 5.67448L5.573 5.97607L5.31567 5.78792L5.06112 5.97607L5.15796 5.67171L4.90064 5.48633H5.21883L5.31844 5.18473ZM7.11418 5.18473L7.21102 5.48909H7.52922L7.27189 5.67448L7.3715 5.97607L7.11418 5.78792L6.85685 5.97607L6.95646 5.67171L6.69914 5.48633H7.01457L7.11418 5.18473ZM8.90715 5.18473L9.00675 5.48909H9.32218L9.06763 5.67448L9.16447 5.97607L8.90715 5.78792L8.65259 5.97607L8.74943 5.67171L8.49487 5.48633H8.8103L8.90715 5.18473ZM10.7029 5.18473L10.7997 5.48909H11.1179L10.8606 5.67448L10.9602 5.97607L10.7029 5.78792L10.4456 5.97607L10.5452 5.67171L10.2878 5.48633H10.606L10.7029 5.18473ZM2.62899 5.9484L2.72583 6.25H3.04403L2.7867 6.43538L2.88354 6.73974L2.62899 6.55159L2.37166 6.73698L2.46851 6.43538L2.21395 6.25H2.52938L2.62899 5.9484ZM4.42196 5.9484L4.52157 6.25H4.837L4.57967 6.43538L4.67928 6.73974L4.42196 6.55159L4.16463 6.73698L4.26424 6.43538L4.00692 6.25H4.32511L4.42196 5.9484ZM6.21769 5.9484L6.31454 6.25H6.63273L6.37541 6.43538L6.47225 6.73974L6.21769 6.55159L5.96037 6.73698L6.05721 6.43538L5.80265 6.25H6.11808L6.21769 5.9484ZM8.01066 5.9484L8.11027 6.25H8.4257L8.17114 6.43538L8.26799 6.73974L8.01066 6.55159L7.7561 6.73698L7.85295 6.43538L7.59562 6.25H7.91659L8.01066 5.9484ZM9.8064 5.9484L9.90324 6.25H10.2214L9.96411 6.43538L10.061 6.73974L9.8064 6.55159L9.54907 6.73698L9.64592 6.43538L9.39136 6.25H9.70679L9.8064 5.9484ZM1.72974 6.71207L1.82935 7.01367H2.14478L1.89022 7.19905L1.98706 7.50342L1.72974 7.31526L1.47518 7.50065L1.57202 7.19905L1.3147 7.01367H1.63566L1.72974 6.71207ZM3.52547 6.71207L3.62231 7.01367H3.94051L3.68319 7.19905L3.78003 7.50065L3.52547 7.31526L3.26815 7.50065L3.36499 7.19905L3.11043 7.01367H3.42586L3.52547 6.71207ZM5.31844 6.71207L5.41805 7.01367H5.73071L5.47616 7.19905L5.573 7.50342L5.31567 7.31526L5.06112 7.50065L5.15796 7.19905L4.90064 7.01367H5.21883L5.31844 6.71207ZM7.11418 6.71207L7.21102 7.01367H7.52922L7.27189 7.19905L7.3715 7.50342L7.11418 7.31526L6.85685 7.50065L6.95646 7.19905L6.69914 7.01367H7.01457L7.11418 6.71207ZM8.90715 6.71207L9.00675 7.01367H9.32218L9.06763 7.19905L9.16447 7.50342L8.90715 7.31526L8.65259 7.50065L8.74943 7.19905L8.49487 7.01367H8.8103L8.90715 6.71207ZM10.7029 6.71207L10.7997 7.01367H11.1179L10.8606 7.19905L10.9602 7.50342L10.7029 7.31526L10.4456 7.50065L10.5452 7.19905L10.2878 7.01367H10.606L10.7029 6.71207ZM2.62899 7.47575L2.72583 7.77734H3.04403L2.7867 7.96273L2.88354 8.26432L2.62899 8.07617L2.37166 8.26432L2.46851 7.95996L2.21395 7.77457H2.52938L2.62899 7.47575ZM4.42196 7.47575L4.52157 7.77734H4.837L4.57967 7.96273L4.67928 8.26432L4.42196 8.07617L4.16463 8.26432L4.26424 7.95996L4.00692 7.77457H4.32511L4.42196 7.47575ZM6.21769 7.47575L6.31454 7.77734H6.63273L6.37541 7.96273L6.47225 8.26432L6.21769 8.07617L5.96037 8.26432L6.05721 7.95996L5.80265 7.77457H6.11808L6.21769 7.47575ZM8.01066 7.47575L8.11027 7.77734H8.4257L8.17114 7.96273L8.26799 8.26432L8.01066 8.07617L7.7561 8.26432L7.85295 7.95996L7.59562 7.77457H7.91659L8.01066 7.47575ZM9.8064 7.47575L9.90324 7.77734H10.2214L9.96411 7.96273L10.061 8.26432L9.8064 8.07617L9.54907 8.26432L9.64592 7.95996L9.39136 7.77457H9.70679L9.8064 7.47575ZM1.72974 8.23665L1.82935 8.54101H2.14478L1.89022 8.7264L1.98706 9.02522L1.72974 8.83984L1.47518 9.02522L1.57202 8.72363L1.3147 8.53825H1.63566L1.72974 8.23665ZM3.52547 8.23665L3.62231 8.54101H3.94051L3.68319 8.7264L3.7828 9.02522L3.52547 8.83984L3.26815 9.02522L3.36776 8.72363L3.11043 8.53825H3.42586L3.52547 8.23665ZM5.31844 8.23665L5.41805 8.54101H5.73071L5.47616 8.7264L5.573 9.02522L5.31567 8.83984L5.06112 9.02522L5.15796 8.72363L4.90064 8.53825H5.21883L5.31844 8.23665ZM7.11418 8.23665L7.21102 8.54101H7.52922L7.27189 8.7264L7.3715 9.02522L7.11418 8.83984L6.85685 9.02522L6.95646 8.72363L6.69914 8.53825H7.01457L7.11418 8.23665ZM8.90715 8.23665L9.00675 8.54101H9.32218L9.06763 8.7264L9.16447 9.02522L8.90715 8.83984L8.65259 9.02522L8.74943 8.72363L8.49487 8.53825H8.8103L8.90715 8.23665ZM10.7029 8.23665L10.7997 8.54101H11.1179L10.8606 8.7264L10.9602 9.02522L10.7029 8.83984L10.4456 9.02522L10.5452 8.72363L10.2878 8.53825H10.606L10.7029 8.23665ZM2.62899 9.00032L2.72583 9.30192H3.04403L2.7867 9.4873L2.88354 9.79166L2.62899 9.60351L2.37166 9.7889L2.46851 9.4873L2.21395 9.30192H2.52938L2.62899 9.00032ZM4.42196 9.00032L4.52157 9.30192H4.837L4.57967 9.4873L4.67928 9.79166L4.42196 9.60351L4.16463 9.7889L4.26424 9.4873L4.00692 9.30192H4.32511L4.42196 9.00032ZM6.21769 9.00032L6.31454 9.30192H6.63273L6.37541 9.4873L6.47225 9.79166L6.21769 9.60351L5.96037 9.7889L6.05721 9.4873L5.80265 9.30192H6.11808L6.21769 9.00032ZM8.01066 9.00032L8.11027 9.30192H8.4257L8.17114 9.4873L8.26799 9.79166L8.01066 9.60351L7.7561 9.7889L7.85295 9.4873L7.59562 9.30192H7.91659L8.01066 9.00032ZM9.8064 9.00032L9.90324 9.30192H10.2214L9.96411 9.4873L10.061 9.79166L9.8064 9.60351L9.54907 9.7889L9.64592 9.4873L9.39136 9.30192H9.70679L9.8064 9.00032ZM1.72974 9.76399L1.82935 10.0656H2.14478L1.89022 10.251L1.98706 10.5526L1.72974 10.3672L1.47518 10.5526L1.57202 10.2482L1.3147 10.0628H1.63566L1.72974 9.76399ZM3.52547 9.76399L3.62231 10.0656H3.94051L3.68319 10.251L3.7828 10.5526L3.52547 10.3672L3.26815 10.5526L3.36776 10.2482L3.11043 10.0628H3.42586L3.52547 9.76399ZM5.31844 9.76399L5.41805 10.0656H5.73071L5.48169 10.251L5.57853 10.5526L5.32121 10.3672L5.06665 10.5526L5.16349 10.2482L4.90617 10.0628H5.22437L5.31844 9.76399ZM7.11418 9.76399L7.21102 10.0656H7.52922L7.27189 10.251L7.3715 10.5526L7.11418 10.3672L6.85685 10.5526L6.95646 10.2482L6.69914 10.0628H7.01457L7.11418 9.76399ZM8.90715 9.76399L9.00675 10.0656H9.32218L9.06763 10.251L9.16447 10.5526L8.90715 10.3672L8.65259 10.5526L8.74943 10.2482L8.49487 10.0628H8.8103L8.90715 9.76399ZM10.7029 9.76399L10.7997 10.0656H11.1179L10.8606 10.251L10.9602 10.5526L10.7029 10.3672L10.4456 10.5526L10.5452 10.2482L10.2878 10.0628H10.606L10.7029 9.76399Z\\\" fill=\\\"white\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20 0H0V20H20V0ZM10.4167 17.5C14.3287 17.5 17.5 14.3287 17.5 10.4167C17.5 6.50465 14.3287 3.33333 10.4167 3.33333C6.50465 3.33333 3.33333 6.50465 3.33333 10.4167C3.33333 14.3287 6.50465 17.5 10.4167 17.5Z\\\" fill=\\\"white\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cc-discover\",\n  \"use\": \"cc-discover-usage\",\n  \"viewBox\": \"0 0 38 22\",\n  \"content\": \"<symbol viewBox=\\\"0 0 38 22\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cc-discover\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" fill=\\\"white\\\" />\\n<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"30\\\" height=\\\"18\\\" rx=\\\"4\\\" fill=\\\"white\\\" />\\n<path d=\\\"M11.2346 20H32.8001C33.4628 20 34 19.4638 34 18.8015V12.1094C34 12.1094 25.9599 17.5604 11.2346 20Z\\\" fill=\\\"#E7772F\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7.61743 8.33691H8.65832C9.80653 8.33691 10.6075 9.04957 10.6075 10.0756C10.6075 10.5881 10.362 11.0828 9.94826 11.4105C9.59994 11.6871 9.20253 11.8125 8.65198 11.8125H7.61743V8.33691ZM8.51632 11.2235C8.97479 11.2235 9.26149 11.1393 9.4867 10.9468C9.73053 10.7394 9.87705 10.4056 9.87705 10.0707C9.87705 9.73739 9.73053 9.41513 9.4867 9.20624C9.25049 9.00409 8.97479 8.92555 8.51632 8.92555H8.32608V11.2235H8.51632Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M10.9341 8.33691H11.6399V11.8125H10.9341V8.33691Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M13.3734 9.66876C12.9474 9.51924 12.8229 9.41964 12.8229 9.2318C12.8229 9.01346 13.0454 8.84788 13.3514 8.84788C13.5635 8.84788 13.7383 8.92911 13.9244 9.12762L14.2929 8.66502C13.9884 8.40863 13.624 8.27881 13.2268 8.27881C12.584 8.27881 12.0941 8.70672 12.0941 9.27255C12.0941 9.75296 12.3218 9.99668 12.9865 10.2281C13.2643 10.3205 13.4054 10.3837 13.4769 10.4265C13.6185 10.5141 13.689 10.6396 13.689 10.7846C13.689 11.0673 13.4549 11.2752 13.1385 11.2752C12.8016 11.2752 12.529 11.1138 12.3658 10.8107L11.9092 11.2339C12.2356 11.6916 12.627 11.8962 13.1661 11.8962C13.9014 11.8962 14.4195 11.4251 14.4195 10.7541C14.4195 10.2013 14.1792 9.95066 13.3734 9.66876Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M14.6421 10.0755C14.6421 11.0976 15.4805 11.8896 16.5597 11.8896C16.8641 11.8896 17.1249 11.8321 17.4462 11.687V10.8883C17.1623 11.1613 16.9131 11.269 16.5907 11.269C15.8776 11.269 15.3724 10.7752 15.3724 10.0706C15.3724 9.40494 15.894 8.87757 16.5597 8.87757C16.8956 8.87757 17.1523 8.99146 17.4462 9.26851V8.47071C17.1358 8.32051 16.8811 8.2583 16.5742 8.2583C15.5012 8.2583 14.6421 9.06582 14.6421 10.0755Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M23.1846 10.6703L22.2161 8.33691H21.4438L22.9835 11.9002H23.3633L24.9329 8.33691H24.1667L23.1846 10.6703Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M25.2542 11.8125H27.2627V11.2235H25.9628V10.2854H27.2134V9.69663H25.9628V8.92555H27.2627V8.33691H25.2542V11.8125Z\\\" fill=\\\"#1A1918\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M28.7825 8.33691C29.6003 8.33691 30.0668 8.71152 30.0668 9.36237C30.0668 9.89419 29.774 10.2432 29.24 10.3476L30.3827 11.8125H29.5113L28.5328 10.4151H28.4407V11.8125H27.7305V8.33691H28.7825ZM28.4406 9.93508H28.6463C29.1003 9.93508 29.3374 9.74805 29.3374 9.40016C29.3374 9.06158 29.1003 8.88385 28.6578 8.88385H28.4406V9.93508Z\\\" fill=\\\"#1A1918\\\" />\\n<path d=\\\"M21.5437 10.0834C21.5437 11.084 20.6964 11.8951 19.6503 11.8951C18.6045 11.8951 17.7571 11.084 17.7571 10.0834C17.7571 9.08265 18.6045 8.27148 19.6503 8.27148C20.6964 8.27148 21.5437 9.08265 21.5437 10.0834Z\\\" fill=\\\"#E7772F\\\" />\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" stroke=\\\"#DDDDDD\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2024, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {AuthHelpers, useAuthHelper} from '@salesforce/commerce-sdk-react'\nimport {useToast} from '@salesforce/retail-react-app/app/hooks/use-toast'\nimport {useIntl} from 'react-intl'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getPasswordlessCallbackUrl} from '@salesforce/retail-react-app/app/utils/auth-utils'\n\n/**\n * This hook provides commerce-react-sdk hooks to simplify the reset password flow.\n */\nexport const usePasswordReset = () => {\n    const showToast = useToast()\n    const {formatMessage} = useIntl()\n    const {locale} = useMultiSite()\n    const config = getConfig().app.login?.resetPassword\n    const resetPasswordLandingPath = config?.landingPath\n    const callbackURI = getPasswordlessCallbackUrl(config?.callbackURI)\n\n    const getPasswordResetTokenMutation = useAuthHelper(AuthHelpers.GetPasswordResetToken)\n    const resetPasswordMutation = useAuthHelper(AuthHelpers.ResetPassword)\n\n    const getPasswordResetToken = async (email) => {\n        await getPasswordResetTokenMutation.mutateAsync({\n            user_id: email,\n            mode: config.mode,\n            locale: locale.id,\n            ...(callbackURI && {callback_uri: callbackURI})\n        })\n    }\n\n    const resetPassword = async ({email, token, newPassword}) => {\n        await resetPasswordMutation.mutateAsync(\n            {user_id: email, pwd_action_token: token, new_password: newPassword},\n            {\n                onSuccess: () => {\n                    showToast({\n                        title: formatMessage({\n                            defaultMessage: 'Password Reset Success',\n                            id: 'password_reset_success.toast'\n                        }),\n                        status: 'success',\n                        position: 'bottom-right'\n                    })\n                }\n            }\n        )\n    }\n\n    return {getPasswordResetToken, resetPassword, resetPasswordLandingPath}\n}\n","import {useCustomerId, useBasketV2 as useBasket} from '@salesforce/commerce-sdk-react'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {filterProductItems} from '../utils/get-filtered-product-items'\nimport {useCustomerBaskets} from './use-customer-baskets'\nimport {useEffect, useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\n// PAY-9624: The Shopper Baskets v2 query (used only for locale-translated promotion\n// strings) is keyed on {basketId, locale} and is not invalidated by the add-item\n// mutation, so it serves the PREVIOUS cached value for a moment after add-to-bag.\n// Its numeric fill fields (promotionQualifyingAmount / percentage / thresholdAmount)\n// would then override the FRESH numbers already present on the customer basket,\n// leaving the confirmation-sheet bubble unfilled until a later re-render.\n// Fix: overlay ONLY the locale-translated TEXT fields from the v2 basket; keep every\n// numeric/config field from the fresh customer basket. Numbers are locale-independent.\nconst LOCALIZED_PROGRESS_BAR_KEYS = [\n    'callout',\n    'promotionGrantedCallout',\n    'discountMsg',\n    'thresholdAmountFormatted',\n    'shopMoreUrl'\n]\nconst LOCALIZED_APPROACHING_DISCOUNT_KEYS = ['discountMsg', 'callout', 'discountThresholdFormatted']\n\n// Merge the locale-translated text from `localized` onto the fresh `base`, keeping\n// `base`'s numeric fields. Falls back to whichever side exists when the other is absent.\nconst overlayLocalizedText = (base, localized, localizedKeys) => {\n    if (!base) return localized\n    if (!localized) return base\n    const overlay = {}\n    localizedKeys.forEach((key) => {\n        if (localized[key] !== undefined) {\n            overlay[key] = localized[key]\n        }\n    })\n    return {...base, ...overlay}\n}\n\n/**\n * This hook combine some commerce-react-sdk hooks to provide more derived data for Retail App baskets\n * @param id - basket id to get the current used basket among baskets returned, use first basket in the array if not defined\n */\nexport const useCurrentBasket = ({id = ''} = {}) => {\n    const customerId = useCustomerId()\n    const {locale} = useMultiSite()\n\n    const {\n        data: basketsData,\n        refetch,\n        ...restOfQuery\n    } = useCustomerBaskets(\n        {parameters: {customerId}},\n        {\n            enabled: !!customerId && !isServer\n        }\n    )\n\n    // Handle page restoration from browser back button\n    useEffect(() => {\n        if (isServer) return\n\n        const handlePageShow = (event) => {\n            // If page is restored from cache (back button), force basket refresh\n            if (event.persisted && customerId) {\n                // Use refetch method to directly refresh the basket query\n                refetch()\n            }\n        }\n\n        window.addEventListener('pageshow', handlePageShow)\n\n        return () => {\n            window.removeEventListener('pageshow', handlePageShow)\n        }\n    }, [refetch, customerId])\n\n    const currentBasket = useMemo(\n        () =>\n            basketsData?.baskets?.find((basket) => basket?.basketId === id) ||\n            basketsData?.baskets?.[0],\n        [basketsData, id]\n    )\n\n    // Fetch locale-translated promotion attributes via Shopper Baskets v2.\n    // Customer Baskets API does not support locale, so c_approachingDiscounts and\n    // c_promotionProgressBarInformation would otherwise return default-locale strings.\n    const {data: shopperBasket, refetch: refetchShopperBasket} = useBasket(\n        {parameters: {basketId: currentBasket?.basketId, locale: locale?.id}},\n        {enabled: !!currentBasket?.basketId && !isServer}\n    )\n\n    // PAY-9624: the add-to-bag mutation refreshes the customer basket but not this\n    // locale-keyed v2 query, so keep the localized promo strings in sync by refetching\n    // whenever the customer basket changes.\n    useEffect(() => {\n        if (!isServer && currentBasket?.basketId) {\n            refetchShopperBasket?.()\n        }\n    }, [currentBasket?.basketId, currentBasket?.lastModified, refetchShopperBasket])\n\n    const enrichedBasket = useMemo(() => {\n        if (!currentBasket) return currentBasket\n\n        // Keep fresh numeric fill from the customer basket; localize text via v2.\n        const approachingDiscounts = overlayLocalizedText(\n            currentBasket.c_approachingDiscounts,\n            shopperBasket?.c_approachingDiscounts,\n            LOCALIZED_APPROACHING_DISCOUNT_KEYS\n        )\n        const promotionProgressBarInformation = overlayLocalizedText(\n            currentBasket.c_promotionProgressBarInformation,\n            shopperBasket?.c_promotionProgressBarInformation,\n            LOCALIZED_PROGRESS_BAR_KEYS\n        )\n\n        return {\n            ...currentBasket,\n            ...(approachingDiscounts && {c_approachingDiscounts: approachingDiscounts}),\n            ...(promotionProgressBarInformation && {\n                c_promotionProgressBarInformation: promotionProgressBarInformation\n            })\n        }\n    }, [currentBasket, shopperBasket])\n\n    const filteredItems = useMemo(\n        () =>\n            filterProductItems(enrichedBasket?.productItems, [\n                'c_isEngravingService',\n                'c_isGiftPackage',\n                'c_isCareProduct'\n            ]),\n        [enrichedBasket?.productItems]\n    )\n\n    return {\n        ...restOfQuery,\n        refetch,\n        data: enrichedBasket,\n        derivedData: {\n            hasBasket: basketsData?.total > 0,\n            totalItems: filteredItems.reduce((acc, item) => acc + item.quantity, 0) || 0\n        }\n    }\n}\n","/**\n * [FIND-4846] Optimized category data selector for cache optimization\n * CHANGE: Added select function to trim non-critical fields from category response\n * REASON: Reduce cache size and hydration payload by excluding unused fields\n * IMPACT: Reduces memory footprint and improves performance\n * RELATED AC: Client-Side Cache Optimization\n *\n * @param {Object} data - The category data to optimize\n * @param {Object} options - Configuration options\n * @param {boolean} options.enableRestrictedFields - Whether to include restricted category fields (c_promotionID, c_contentAssetID)\n */\nexport const selectOptimizedCategoryData = (data, options = {}) => {\n    if (!data) return data\n\n    const {enableRestrictedFields = false} = options\n\n    // Helper function to recursively optimize nested categories\n    const optimizeNestedCategories = (categories) => {\n        if (!Array.isArray(categories)) return categories\n\n        return categories.map((category) => selectOptimizedCategoryData(category, options))\n    }\n\n    // Essential fields used across the application\n    const essentialFields = {\n        id: data.id,\n        name: data.name,\n        description: data.description,\n        pageTitle: data.pageTitle,\n        pageDescription: data.pageDescription,\n        pageKeywords: data.pageKeywords, // Used for SEO meta tags\n        thumbnail: data.thumbnail,\n        parentCategoryId: data.parentCategoryId,\n        parentCategoryTree: data.parentCategoryTree,\n        categories: optimizeNestedCategories(data.categories), // Recursively optimize nested categories\n        onlineSubCategoriesCount: data.onlineSubCategoriesCount,\n\n        // Critical custom fields used in the application\n        c_slugURL: data.c_slugURL,\n        c_relSlugURL: data.c_relSlugURL,\n        c_adaptiveFilterData: data.c_adaptiveFilterData,\n        c_isDiscoverTabDefault: data.c_isDiscoverTabDefault,\n        c_hideFromBreadcrumb: data.c_hideFromBreadcrumb,\n        c_showInMenu: data.c_showInMenu,\n        c_template: data.c_template,\n        c_PLPorRedirect: data.c_PLPorRedirect,\n        c_alternativeUrl: data.c_alternativeUrl,\n        c_additionalTracking: data.c_additionalTracking,\n        c_bubbleImageUrl: data.c_bubbleImageUrl, // Used in navigation menu bubble images\n\n        // Fields confirmed to be actively used in codebase analysis\n        c_visualNavigation: data.c_visualNavigation, // Used in hero banner navigation\n        c_visualNavigationRecirculation: data.c_visualNavigationRecirculation, // Used in recirculation navigator\n        c_metadata: data.c_metadata, // Used for SEO meta tags and hero banner titles\n        c_pndCategoryBanner: data.c_pndCategoryBanner, // Used for category banner display\n\n        // Restricted category fields - used in PDP for customer eligibility check\n        // Only included when enableRestrictedFields flag is enabled\n        ...(enableRestrictedFields && {\n            c_promotionID: data.c_promotionID,\n            c_contentAssetID: data.c_contentAssetID\n        })\n    }\n    return essentialFields\n}\n","import {useIntl} from 'react-intl'\n\nexport const useCartErrorHandling = () => {\n    const intl = useIntl()\n\n    const getErrorMessage = (error) => {\n        // If error is not an object or doesn't have the expected structure, return generic message\n        if (!error || typeof error !== 'object') {\n            return intl.formatMessage({\n                id: 'global.error.oops.something_went_wrong',\n                defaultMessage: 'OOPS! Something went wrong on our end. Please try again.'\n            })\n        }\n\n        // Check if error has the expected structure with errors array\n        if (error.errors && Array.isArray(error.errors) && error.errors.length > 0) {\n            const errorCode = error.errors[0]?.message || error.errors[0]?.code\n\n            // Map specific error codes to user-friendly messages\n            switch (errorCode) {\n                case 'error.message.cart.limit.reached':\n                    return intl.formatMessage({\n                        id: 'global.error.cart.limit.reached',\n                        defaultMessage: 'Cart Limit Reached'\n                    })\n                case 'error.alert.selected.quantity.cannot.be.added':\n                    return intl.formatMessage({\n                        id: 'global.error.selected.quantity.cannot.be.added',\n                        defaultMessage: 'Selected quantity cannot be added to the cart'\n                    })\n                case 'error.message.egiftcard.form.invalid':\n                    return intl.formatMessage({\n                        id: 'global.error.egiftcard.form.invalid',\n                        defaultMessage: 'Please submit valid Electronic Gift Card form data'\n                    })\n                default:\n                    // For any other error codes, return generic message\n                    return intl.formatMessage({\n                        id: 'global.error.oops.something_went_wrong',\n                        defaultMessage: 'OOPS! Something went wrong on our end. Please try again.'\n                    })\n            }\n        }\n\n        // If error doesn't have the expected structure, return generic message\n        return intl.formatMessage({\n            id: 'global.error.oops.something_went_wrong',\n            defaultMessage: 'OOPS! Something went wrong on our end. Please try again.'\n        })\n    }\n\n    return {\n        getErrorMessage\n    }\n}\n","import React, {useEffect} from 'react'\nimport {Helmet} from 'react-helmet'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useCspNonce} from 'pandora-shared-app/overrides/app/contexts/csp-nonce'\n\nexport const TealiumScript = () => {\n    const {app: appConfig} = getConfig()\n    const {\n        tealium: {account, profile, script: baseURL, environment}\n    } = appConfig\n\n    const basePath = `${baseURL}/${account}/${profile}/${environment}`\n\n    const {isUpdatedUtagDataSet, setIsTealiumInitialized, initialDataObject} = useTealium()\n    const nonce = useCspNonce()\n\n    useEffect(() => {\n        // If updatedUtagData is not set, fo not load the tealium script\n        if (!isUpdatedUtagDataSet) return // Delay initialization until\n\n        // Set the noview flag to true to suppress the automatic page view tracking call.\n        window.utag_cfg_ovrd = window.utag_cfg_ovrd || {}\n        window.utag_cfg_ovrd.noview = true\n        // Pass nonce to utag for any scripts it creates\n        if (nonce) {\n            window.utag_cfg_ovrd.csp_nonce = nonce\n        }\n\n        window.utag_data = {...window.utag_data, ...initialDataObject}\n\n        // Dynamically inject the asynchronous script\n        const utagAsyncScript = document.createElement('script')\n        utagAsyncScript.src = `${basePath}/utag.js`\n        utagAsyncScript.type = 'text/javascript'\n        utagAsyncScript.async = true\n        if (nonce) utagAsyncScript.setAttribute('nonce', nonce)\n\n        // Use addEventListener instead of inline onload\n        utagAsyncScript.addEventListener('load', () => {\n            // Tealium Loaded. Set the isTealiumInitialized state variable to true\n            setIsTealiumInitialized(true)\n        })\n        // Find the first script tag within the head element\n        const headElement = document.head\n        const firstHeadScript = headElement.getElementsByTagName('script')[0]\n\n        // Insert the utag script before the first script tag\n        headElement.insertBefore(utagAsyncScript, firstHeadScript)\n    }, [isUpdatedUtagDataSet])\n\n    return (\n        <Helmet>\n            <script defer nonce={nonce} src={`${basePath}/utag.sync.js`} type=\"text/javascript\" />\n        </Helmet>\n    )\n}\n\nTealiumScript.displayName = 'TealiumScript'\n","import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {createContext} from '@chakra-ui/react-utils'\nimport PropTypes from 'prop-types'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\nimport {TealiumScript} from '../../components/scripts'\nimport {getInitialDataObject} from './get-initial-data-object'\nimport {isMobile} from 'react-device-detect' // https://www.npmjs.com/package/react-device-detect#when-to-use-this-library\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks'\n\nconst [Provider, useTealium] = createContext({\n    name: 'TealiumContext',\n    errorMessage:\n        'useTealium: `context` is undefined. Seems you forgot to wrap components within `<TealiumProvider />`'\n})\n\n// The C&C ZIP-vs-city A/B test runs on the PDP app only (build-time constant).\nconst IS_CNC_ABTEST_APP = process.env.TARGET_APP === 'pdp'\n\nconst TealiumProvider = ({children}) => {\n    const {locale} = useMultiSite()\n    const {data: customer, refetch} = useCurrentCustomer()\n    const [isUpdatedUtagDataSet, setIsUpdatedUtagDataSet] = useState(false)\n    const [isTealiumInitialized, setIsTealiumInitialized] = useState(false)\n    const [isVisualNavigationTriggered, setIsVisualNavigationTriggered] = useState(false)\n    const [isAdaptiveFilterTriggered, setIsAdaptiveFilterTriggered] = useState(false)\n\n    const isContextEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const loqateEnabled = useVariant(LD_KEYS.enablePdpCncLoqateStoreSearch, false)\n    const enableTealiumRefetchCustomer = useVariant(LD_KEYS.enableTealiumRefetchCustomer, false)\n    const enableTealiumPdpViewCurrentData = useVariant(\n        LD_KEYS.enableTealiumPdpViewCurrentData,\n        false\n    )\n\n    useEffect(() => {\n        if (!enableTealiumRefetchCustomer) {\n            refetch() // Old behavior: Re-fetch customer data when component mounts\n        }\n    }, [enableTealiumRefetchCustomer])\n\n    // useEffect with dependencies\n    useEffect(() => {\n        if (enableTealiumRefetchCustomer) {\n            if (customer?.isRegistered && (!customer?.firstName || !customer?.email)) {\n                refetch()\n            }\n        }\n    }, [customer, refetch, enableTealiumRefetchCustomer])\n\n    const initialDataObject = useMemo(\n        () =>\n            getInitialDataObject({\n                locale,\n                customer,\n                isMobile,\n                isContextEnabled,\n                loqateEnabled,\n                isCncAbtestApp: IS_CNC_ABTEST_APP\n            }),\n        [\n            locale?.id,\n            locale?.preferredCurrency,\n            isMobile,\n            isContextEnabled,\n            loqateEnabled,\n            customer?.firstName,\n            customer?.lastName,\n            customer?.email,\n            customer?.creationDate,\n            customer?.isRegistered,\n            customer?.c_masterCRMID,\n            customer?.c_crmLoyaltyData,\n            customer?.addresses?.[0]?.city,\n            customer?.addresses?.[0]?.postalCode\n        ]\n    )\n\n    const initialDataObjectRef = useRef(initialDataObject)\n    useEffect(() => {\n        initialDataObjectRef.current = initialDataObject\n    }, [initialDataObject])\n\n    // Set the initial utag_data object.\n    useEffect(() => {\n        window.utag_data = {...window.utag_data, ...initialDataObject}\n    }, [initialDataObject])\n\n    const waitForTealium = () =>\n        new Promise((resolve) => {\n            const checkTealiumLoaded = () => {\n                if (window?.utag) {\n                    resolve(window.utag)\n                } else {\n                    setTimeout(checkTealiumLoaded, 500)\n                }\n            }\n\n            checkTealiumLoaded()\n        })\n\n    /**\n     * Link tracking function.\n     * @description Tracks non-page views, page interactions, and other dynamic page events.\n     * @see [API Reference]{@link https://docs.tealium.com/platforms/javascript/api/tracking-functions/#utaglink}\n     *\n     * @param {Object} dataObject - A data object containing the data layer variables associated with the event.\n     * @param {function} callback - A function to be executed after the tracking call has completed.\n     * @param {Array} uidArray - An array of tag UID’s to trigger.\n     */\n    const link = useCallback(\n        (dataObject, ...restArgs) =>\n            waitForTealium().then((utag) => utag.link(dataObject, ...restArgs)),\n        []\n    )\n\n    /**\n     * View tracking function.\n     * @description Tracks page views, virtual page views, and Ajax page flows.\n     * @see [API Reference]{@link https://docs.tealium.com/platforms/javascript/api/tracking-functions/#utagview}\n     *\n     * @param {Object} dataObject - A data object containing the data layer variables associated with the event.\n     * @param {function} callback - A function to be executed after the tracking call has completed.\n     * @param {Array} uidArray - An array of tag UID’s to trigger.\n     */\n    const view = useCallback(\n        (dataObject, ...restArgs) =>\n            waitForTealium().then((utag) =>\n                utag.view(\n                    {\n                        ...(enableTealiumPdpViewCurrentData\n                            ? initialDataObjectRef.current\n                            : initialDataObject),\n                        ...dataObject\n                    },\n                    ...restArgs\n                )\n            ),\n        [enableTealiumPdpViewCurrentData, initialDataObject]\n    )\n\n    const value = useMemo(\n        () => ({\n            link,\n            view,\n            initialDataObject,\n            isUpdatedUtagDataSet,\n            setIsUpdatedUtagDataSet,\n            isTealiumInitialized,\n            setIsTealiumInitialized,\n            isVisualNavigationTriggered,\n            setIsVisualNavigationTriggered,\n            isAdaptiveFilterTriggered,\n            setIsAdaptiveFilterTriggered\n        }),\n        // The state booleans MUST be in the deps: they're part of the value, so the memo\n        // has to recompute (and propagate a new identity to consumers) when one flips.\n        // The setters are stable useState setters. Previously this memo relied on\n        // initialDataObject churning to recompute; now that initialDataObject is stable\n        // (deps narrowed to primitives above) the booleans need to be listed explicitly\n        // or setter updates silently no-op. (FIND-6633)\n        [\n            link,\n            view,\n            initialDataObject,\n            isUpdatedUtagDataSet,\n            isTealiumInitialized,\n            isVisualNavigationTriggered,\n            isAdaptiveFilterTriggered\n        ]\n    )\n\n    return (\n        <Provider value={value}>\n            <TealiumScript />\n            {children}\n        </Provider>\n    )\n}\n\nTealiumProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {TealiumProvider, useTealium}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"check\",\n  \"use\": \"check-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"check\\\">\\n<path d=\\\"M16.5417 6.01214L7.70841 14.8022C7.63018 14.8807 7.52368 14.9248 7.41258 14.9248C7.30148 14.9248 7.19498 14.8807 7.11675 14.8022L2.62508 10.3325C2.5462 10.2547 2.50183 10.1487 2.50183 10.0381C2.50183 9.92758 2.5462 9.82161 2.62508 9.74376L3.20841 9.16328C3.28665 9.08479 3.39315 9.04064 3.50425 9.04064C3.61535 9.04064 3.72184 9.08479 3.80008 9.16328L7.40841 12.7539L15.3667 4.83461C15.5316 4.67557 15.7936 4.67557 15.9584 4.83461L16.5417 5.42337C16.6206 5.50123 16.665 5.6072 16.665 5.71776C16.665 5.82831 16.6206 5.93429 16.5417 6.01214Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hand-with-heart\",\n  \"use\": \"hand-with-heart-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"hand-with-heart\\\">\\n<g id=\\\"hand-with-heart_Hand with heart\\\">\\n<g id=\\\"hand-with-heart_icon\\\">\\n<path d=\\\"M15.0654 2.53617C14.5254 1.22247 13.5308 0.486734 12.3915 0.500181C11.4742 0.511009 10.5803 1.00762 9.8771 1.87114C9.15785 1.02276 8.2556 0.537914 7.35552 0.528028C6.22372 0.515597 5.26701 1.25401 4.8417 2.57279C4.32568 4.17288 5.20073 5.72795 6.27567 7.00248C7.10551 7.9864 8.15377 8.91548 9.02802 9.69033C9.301 9.93228 9.55703 10.1592 9.78413 10.368L10.461 9.63197C10.2082 9.3995 9.93416 9.15648 9.64912 8.90375C8.78415 8.13681 7.81815 7.28028 7.04009 6.35777C5.99158 5.11457 5.45131 3.94058 5.79344 2.87973C6.11074 1.89583 6.73131 1.52123 7.34453 1.52797C7.9988 1.53515 8.81763 1.97701 9.46365 2.99431L9.89534 3.67408L10.3132 2.9857C10.9396 1.95365 11.7397 1.50795 12.4033 1.50011C13.039 1.49261 13.7172 1.88667 14.1405 2.91635C14.5639 3.9464 14.1443 4.9512 13.3433 5.89822C12.6816 6.68055 11.8445 7.3222 11.2375 7.78751C11.1109 7.88452 10.9943 7.97395 10.8914 8.05531L11.5117 8.83969C11.5988 8.77078 11.703 8.69112 11.8201 8.60154C12.4222 8.14121 13.367 7.41876 14.1068 6.54402C14.9894 5.50058 15.7049 4.09209 15.0654 2.53617Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M4.06619 12.1329C5.18745 11.7325 6.38139 11.5765 7.5679 11.6753L9.00251 11.7949L12.2307 12.078C13.1203 12.156 13.8393 12.836 13.9666 13.7199C14.1338 14.8795 13.2343 15.918 12.0627 15.918H7.91716V14.918H12.0627C12.6252 14.918 13.0571 14.4194 12.9769 13.8626C12.9157 13.4382 12.5705 13.1117 12.1434 13.0742L8.9173 12.7912L8.91514 12.7911L7.48485 12.6719C6.44044 12.5848 5.3895 12.7222 4.40253 13.0747L4.15743 13.1622C2.87543 13.6201 1.45324 13.4537 0.311523 12.7123L0.856129 11.8736C1.73632 12.4452 2.83275 12.5734 3.82109 12.2205L4.06619 12.1329Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M18.8757 14.6542C18.8757 14.0447 18.3029 13.5974 17.7115 13.7452L15.3303 14.3405L15.0878 13.3704L17.469 12.7751C18.6915 12.4695 19.8757 13.3941 19.8757 14.6542C19.8757 15.4181 19.4268 16.1107 18.7294 16.4225L12.8221 19.064C11.6963 19.5674 10.4272 19.6503 9.2455 19.2976L5.73449 18.2498C4.12634 17.7698 2.40369 17.8431 0.842116 18.4579L0.767211 18.4874L0.400879 17.5569L0.475784 17.5274C2.24557 16.8306 4.19791 16.7476 6.02047 17.2915L9.53148 18.3394C10.4839 18.6236 11.5066 18.5568 12.4139 18.1511L18.3212 15.5096C18.6585 15.3588 18.8757 15.0237 18.8757 14.6542Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"credit-card\",\n  \"use\": \"credit-card-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"credit-card\\\">\\n<path d=\\\"M1 5V4C1 3.44772 1.44772 3 2 3H18C18.5523 3 19 3.44772 19 4V16C19 16.5523 18.5523 17 18 17H2C1.44772 17 1 16.5523 1 16V7.5H16.5M3.5 14H9.5\\\" stroke=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"receipt\",\n  \"use\": \"receipt-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"receipt\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M15.8333 1.66675H4.16667C3.70643 1.66675 3.33333 2.03984 3.33333 2.50008V16.0501C3.3364 16.2707 3.42272 16.4821 3.575 16.6417L5.15 18.2084C5.22523 18.2894 5.33116 18.3348 5.44167 18.3334H5.68333C5.79383 18.3348 5.89977 18.2894 5.975 18.2084L7.5 16.6667C7.57693 16.5882 7.68176 16.5433 7.79167 16.5417C7.90138 16.5442 8.00589 16.589 8.08333 16.6667L9.59166 18.1751C9.6669 18.256 9.77283 18.3014 9.88333 18.3001H10.125C10.2355 18.3014 10.3414 18.256 10.4167 18.1751L11.9333 16.6667C12.0103 16.5882 12.1151 16.5433 12.225 16.5417C12.3289 16.5483 12.4267 16.5928 12.5 16.6667L14.0083 18.1751C14.0836 18.256 14.1895 18.3014 14.3 18.3001H14.5417C14.6522 18.3014 14.7581 18.256 14.8333 18.1751L16.425 16.6667C16.579 16.5115 16.6657 16.302 16.6667 16.0834V2.50008C16.6667 2.03984 16.2936 1.66675 15.8333 1.66675ZM12.9167 8.33341C13.1468 8.33341 13.3333 8.14687 13.3333 7.91675V7.08341C13.3333 6.8533 13.1468 6.66675 12.9167 6.66675H7.08333C6.85321 6.66675 6.66667 6.8533 6.66667 7.08341V7.91675C6.66667 8.14687 6.85321 8.33341 7.08333 8.33341H12.9167ZM10.4167 11.6667C10.6468 11.6667 10.8333 11.4802 10.8333 11.2501V10.4167C10.8333 10.1866 10.6468 10.0001 10.4167 10.0001H7.08333C6.85321 10.0001 6.66667 10.1866 6.66667 10.4167V11.2501C6.66667 11.4802 6.85321 11.6667 7.08333 11.6667H10.4167ZM14.45 16.2668L15 15.7167V3.33341H5V15.7001L5.56667 16.2668L6.59167 15.2417C6.74688 15.0878 6.95638 15.001 7.175 15.0001H8.38333C8.60195 15.001 8.81145 15.0878 8.96667 15.2417L10 16.2751L11.075 15.2417C11.2323 15.0858 11.4452 14.9988 11.6667 15.0001H12.8333C13.0519 15.001 13.2614 15.0878 13.4167 15.2417L13.7 15.5251L13.8333 15.6584L14.45 16.2668Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2022, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useCustomer, useCustomerId, useCustomerType} from '@salesforce/commerce-sdk-react'\n\n/**\n * A hook that returns the current customer.\n * @param {Array<string>} [expand] - Optional array of fields to expand in the customer query\n * @param {Object} [queryOptions] - Optional React Query options\n */\nexport const useCurrentCustomer = (expand, queryOptions = {}) => {\n    const customerId = useCustomerId()\n    const {isRegistered, isGuest, customerType} = useCustomerType()\n    const parameters = {\n        customerId,\n        ...(expand && {expand})\n    }\n    const query = useCustomer(\n        {parameters},\n        {enabled: !!customerId && isRegistered, ...queryOptions}\n    )\n    const value = {\n        ...query,\n        data: {\n            ...query.data,\n            customerType,\n            customerId,\n            isRegistered,\n            isGuest\n        }\n    }\n    return value\n}\n","import {useEffect, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useCustomProducts, useCustomProductSearch} from '../../hooks/use-fetch-grid-content'\nimport {useVariant, useStringVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {usePromotionalPricing} from '../../hooks/use-promotional-pricing'\nimport {useVariantPromotionalPricing} from '../../hooks/use-variant-promotional-pricing'\nimport {setExclusionTileFields} from '../../utils/product-type-utils'\n\nconst ProductFetcher = ({\n    gridData,\n    setProductToDisplay,\n    fetchProductById,\n    setFetchProductById,\n    setShouldRefetch,\n    restParams,\n    _refine,\n    categorySegment,\n    shouldRefetch,\n    onProductSearchResult = () => {},\n    setPromotionalPricing = () => {},\n    setVariantPromotionalPricing = () => {}\n}) => {\n    const isBloomreachEnabled =\n        useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n\n    const enableNewDolContract = useVariant(LD_KEYS.enableNewDolContract, false)\n    const {limit, data = [], cgid, pids = []} = gridData\n    const updatedRestParams = {\n        ...restParams,\n        limit,\n        isCgidManual: !!cgid,\n        isCmsOwnedSearch: !!cgid\n    }\n\n    // Call useCustomProductSearch with constructed parameters\n    const {isFetching, data: productSearchResult} = useCustomProductSearch(\n        updatedRestParams,\n        _refine,\n        cgid ?? categorySegment,\n        enableNewDolContract\n    )\n    // Use infinite query promotional pricing (eliminates circular dependencies)\n    // Only fetch promotional pricing when cgid is available, otherwise pass empty array\n    const productsForPricing = !data?.length && cgid ? productSearchResult?.hits || [] : []\n    const promotionalPricing = usePromotionalPricing(productsForPricing, 'product-fetcher')\n\n    // Use infinite query variant promotional pricing (eliminates circular dependencies)\n    // Only fetch variant promotional pricing when cgid is available, otherwise pass empty array\n    const variantPromotionalPricing = useVariantPromotionalPricing(\n        productsForPricing,\n        'product-fetcher'\n    )\n    const {data: productData} = useCustomProducts(pids, fetchProductById)\n\n    const isContextEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const excludeSetsFromWishlist = useVariant(LD_KEYS.enableGlobalExcludeSetsFromWishlist, false)\n    useEffect(() => {\n        if (!isBloomreachEnabled || !promotionalPricing || promotionalPricing.isLoading) {\n            return\n        }\n\n        const stableData = {\n            isLoading: promotionalPricing.isLoading,\n            promotionalPrices: promotionalPricing.promotionalPrices\n        }\n\n        setPromotionalPricing(stableData)\n    }, [\n        isBloomreachEnabled,\n        promotionalPricing?.isLoading,\n        JSON.stringify(Object.keys(promotionalPricing?.promotionalPrices || {}))\n    ])\n\n    useEffect(() => {\n        if (\n            !isBloomreachEnabled ||\n            !variantPromotionalPricing ||\n            variantPromotionalPricing.isLoading\n        ) {\n            return\n        }\n\n        const stableVariantData = {\n            isLoading: variantPromotionalPricing.isLoading,\n            variantPromotionalPrices: variantPromotionalPricing.variantPromotionalPrices,\n            isComplete: variantPromotionalPricing.isComplete\n        }\n\n        setVariantPromotionalPricing(stableVariantData)\n    }, [\n        isBloomreachEnabled,\n        variantPromotionalPricing?.isLoading,\n        variantPromotionalPricing?.isComplete,\n        JSON.stringify(Object.keys(variantPromotionalPricing?.variantPromotionalPrices || {}))\n    ])\n\n    useEffect(() => {\n        if (!data?.length && cgid) {\n            setShouldRefetch(true)\n            setFetchProductById(false)\n        } else if (!data?.length && pids?.length) {\n            setFetchProductById(true)\n        } else {\n            setShouldRefetch(false)\n            setFetchProductById(false)\n            const displayedProducts = limit ? data.slice(0, limit) : data\n            setProductToDisplay(displayedProducts)\n        }\n    }, [data, cgid, pids, limit])\n\n    useEffect(() => {\n        if (fetchProductById && productData) {\n            const transformedProducts = productData?.data?.map((product) => {\n                const price = product.price\n\n                const promotionPriceInfo = product?.c_extend?.priceInfo?.promotionPrice\n                const isPriceTesting =\n                    isContextEnabled &&\n                    promotionPriceInfo?.promoDetails?.[0]?.standardPriceTest === true\n\n                const salePrice = getSalePrice(\n                    product.productPromotions ? product.productPromotions : null,\n                    product.price\n                )\n\n                const originalPrice = isPriceTesting && salePrice ? salePrice : price\n\n                return {\n                    currency: product.currency,\n                    hitType: product.type.master ? 'master' : '',\n                    ...setExclusionTileFields(product.type, excludeSetsFromWishlist),\n                    productId: product.id,\n                    productName: product.name,\n                    c_extend: {\n                        custom: {\n                            metalName: product.c_metalName,\n                            metalGroup: product.c_metalGroup,\n                            category: product.c_primaryCategory,\n                            size: product?.variants?.[0]?.variationValues?.size || null,\n                            discount: 0\n                        },\n                        recommendation: {},\n                        isLowInventory: false,\n                        isNew: false,\n                        isEngravable: false,\n                        variants: [],\n                        productUrl: product.slugUrl,\n                        inventory: product.inventory,\n                        lastLowestPrice: product.c_extend?.priceInfo?.lastLowestPrice\n                    },\n                    representedProduct: {\n                        id: product?.variants?.[0]?.productId || null\n                    },\n                    price: originalPrice,\n                    salePrice: salePrice,\n                    pricePerUnit: product.pricePerUnit,\n                    orderable: product.orderable,\n                    primaryImage: findImage(product.imageGroups)\n                }\n            })\n            setProductToDisplay(transformedProducts)\n        }\n    }, [fetchProductById, productData, excludeSetsFromWishlist])\n\n    const stableProductSearchResult = useMemo(() => productSearchResult, [productSearchResult])\n\n    useEffect(() => {\n        if (shouldRefetch && !isFetching && stableProductSearchResult?.hits) {\n            const displayedProducts = limit\n                ? stableProductSearchResult.hits.slice(0, limit)\n                : stableProductSearchResult.hits\n\n            setProductToDisplay((prevDisplayedProducts) => {\n                const hasChanged =\n                    JSON.stringify(prevDisplayedProducts) !== JSON.stringify(displayedProducts)\n                return hasChanged ? displayedProducts : prevDisplayedProducts\n            })\n        }\n    }, [shouldRefetch, isFetching, stableProductSearchResult, limit, setProductToDisplay])\n\n    const findImage = (imageGroups) => {\n        const imageGroup = imageGroups?.find((group) => group.viewType === 'main_rect_base')\n        return imageGroup?.images?.[0] || null\n    }\n\n    function getSalePrice(productPromotions, price) {\n        // Check if productPromotions exists and is an array\n        if (productPromotions !== undefined && productPromotions !== null) {\n            // Loop through productPromotions to find the first valid promotionalPrice\n            for (let promo of productPromotions) {\n                if (promo.promotionalPrice) {\n                    return promo.promotionalPrice\n                }\n            }\n        }\n        // Return the original price if no promotionalPrice is found or productPromotions doesn't exist\n        return price\n    }\n\n    useEffect(() => {\n        if (stableProductSearchResult) onProductSearchResult(stableProductSearchResult)\n    }, [stableProductSearchResult])\n\n    return null\n}\n\nProductFetcher.propTypes = {\n    gridData: PropTypes.shape({\n        limit: PropTypes.number,\n        data: PropTypes.array,\n        cgid: PropTypes.string,\n        pids: PropTypes.array\n    }).isRequired,\n    setProductToDisplay: PropTypes.func.isRequired,\n    fetchProductById: PropTypes.bool.isRequired,\n    setFetchProductById: PropTypes.func.isRequired,\n    setShouldRefetch: PropTypes.func.isRequired,\n    restParams: PropTypes.object.isRequired,\n    _refine: PropTypes.string,\n    categorySegment: PropTypes.object,\n    shouldRefetch: PropTypes.bool,\n    onProductSearchResult: PropTypes.func,\n    setPromotionalPricing: PropTypes.func,\n    setVariantPromotionalPricing: PropTypes.func\n}\n\nexport default ProductFetcher\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ProductTileWrapper from './product-tile-wrapper'\n\nconst ProductList = ({\n    products,\n    searchQuery,\n    category,\n    displayLimit,\n    isShopTheLook,\n    isInGrid,\n    promotionalPricing,\n    onProductClick,\n    section = 'PLP',\n    instanceId,\n    flags = {},\n    isBuyFromTileAvailable = false\n}) => {\n    // If displayLimit is provided, slice the products array to show only the first displayLimit items\n    const displayedProducts = displayLimit ? products.slice(0, displayLimit) : products\n    return (\n        <>\n            {displayedProducts.map((product, index) => (\n                <ProductTileWrapper\n                    key={product.productId}\n                    index={index}\n                    product={product}\n                    searchQuery={searchQuery}\n                    category={category}\n                    isShopTheLook={isShopTheLook}\n                    isInGrid={isInGrid}\n                    promotionalPricing={promotionalPricing}\n                    onProductClick={onProductClick}\n                    section={section}\n                    instanceId={instanceId}\n                    flags={flags}\n                    isBuyFromTileAvailable={isBuyFromTileAvailable}\n                />\n            ))}\n        </>\n    )\n}\n\nProductList.propTypes = {\n    products: PropTypes.array.isRequired,\n    searchQuery: PropTypes.string,\n    category: PropTypes.object,\n    wishlist: PropTypes.object,\n    displayLimit: PropTypes.number,\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    promotionalPricing: PropTypes.object,\n    onProductClick: PropTypes.func,\n    navigate: PropTypes.func,\n    section: PropTypes.string,\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    // Hoisted feature flags from useProductTileFlags, read once per grid\n    flags: PropTypes.object.isRequired,\n    // Capability from useProductCapabilities, computed once per grid\n    isBuyFromTileAvailable: PropTypes.bool\n}\n\nexport default ProductList\n","import React, {useState, useCallback} from 'react'\nimport PropTypes from 'prop-types'\nimport {useParams, useLocation} from 'react-router-dom'\nimport {useSearchParams} from '@salesforce/retail-react-app/app/hooks'\nimport {isHydrated} from '@salesforce/retail-react-app/app/utils/utils'\nimport ProductFetcher from './product-fetcher'\nimport ProductList from './product-list'\nimport EmptySearchResults from '@salesforce/retail-react-app/app/pages/product-list/partials/empty-results'\nimport {Grid} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ProductListSkeleton} from './product-list-skeleton'\nimport {useCategoryFromCache} from '../../hooks/use-category-from-cache'\nimport {useProductTileFlags} from '../product-tile/use-product-tile-flags'\nimport {useProductCapabilities} from '../../hooks/use-product-capabilities'\n\nconst ProductGrid = ({\n    gridData,\n    wishlist,\n    columns,\n    style,\n    onProductSearchResult,\n    isShopTheLook,\n    isInGrid,\n    promotionalPricing,\n    variantPromotionalPricing,\n    onProductClick,\n    navigate,\n    section,\n    instanceId\n}) => {\n    const [productToDisplay, setProductToDisplay] = useState([])\n    const [fetchProductById, setFetchProductById] = useState(false)\n    const [shouldRefetch, setShouldRefetch] = useState(false)\n    const [isLoading, setIsLoading] = useState(true)\n    const location = useLocation()\n    const [searchParams] = useSearchParams()\n    const params = useParams()\n    const {_refine, ...restParams} = searchParams\n\n    const urlParams = new URLSearchParams(location.search)\n    const searchQuery = urlParams.get('q')\n    const isSearch = Boolean(searchQuery)\n    const [gridPromotionalPricing, setGridPromotionalPricing] = useState(null)\n    const [gridVariantPricing, setGridVariantPricing] = useState(null)\n\n    const handlePromotionalPricingUpdate = useCallback((pricing) => {\n        setGridPromotionalPricing(pricing)\n    }, [])\n\n    const handleVariantPricingUpdate = useCallback((pricing) => {\n        setGridVariantPricing(pricing)\n    }, [])\n\n    const spacingY = {base: 12, lg: 16}\n\n    // Read all tile flags ONCE per grid instead of ~18 reads per tile (FIND-6629)\n    const productTileFlags = useProductTileFlags()\n    // Capability computed ONCE per grid instead of 12 flag reads per tile (FIND-6629)\n    const {isBuyFromTileAvailable} = useProductCapabilities()\n\n    const {category} = useCategoryFromCache(gridData.cgid, {\n        enabled: !isSearch,\n        withApiFallback: true\n    })\n\n    const renderLoadingOrEmptyState = () => {\n        if (isLoading) {\n            return (\n                <ProductListSkeleton\n                    limit={gridData?.displayLimit ?? searchParams.limit}\n                    isShopTheLook={isShopTheLook}\n                    isInGrid={isInGrid}\n                />\n            )\n        } else {\n            return <EmptySearchResults searchQuery={searchQuery} category={category?.name || ''} />\n        }\n    }\n\n    return (\n        <Grid\n            templateColumns={columns}\n            rowGap={spacingY}\n            marginBottom={24}\n            data-auto=\"divPLPGridContainer\"\n            sx={style}\n        >\n            <ProductFetcher\n                gridData={gridData}\n                setProductToDisplay={(products) => {\n                    setProductToDisplay(products)\n                    setIsLoading(false)\n                }}\n                fetchProductById={fetchProductById}\n                setFetchProductById={setFetchProductById}\n                setShouldRefetch={setShouldRefetch}\n                shouldRefetch={shouldRefetch}\n                restParams={restParams}\n                _refine={_refine}\n                categorySegment={params.categorySegment}\n                onProductSearchResult={onProductSearchResult}\n                setPromotionalPricing={handlePromotionalPricingUpdate}\n                setVariantPromotionalPricing={handleVariantPricingUpdate}\n            />\n\n            {!isHydrated() || isLoading || !productToDisplay?.length ? (\n                renderLoadingOrEmptyState()\n            ) : (\n                <ProductList\n                    isShopTheLook={isShopTheLook}\n                    isInGrid={isInGrid}\n                    products={productToDisplay}\n                    searchQuery={searchQuery}\n                    category={category}\n                    wishlist={wishlist}\n                    displayLimit={gridData?.displayLimit}\n                    promotionalPricing={promotionalPricing || gridPromotionalPricing}\n                    variantPromotionalPricing={variantPromotionalPricing || gridVariantPricing}\n                    onProductClick={onProductClick}\n                    navigate={navigate}\n                    section={section}\n                    instanceId={instanceId}\n                    flags={productTileFlags}\n                    isBuyFromTileAvailable={isBuyFromTileAvailable}\n                />\n            )}\n        </Grid>\n    )\n}\n\nProductGrid.propTypes = {\n    gridData: PropTypes.shape({\n        limit: PropTypes.number,\n        data: PropTypes.array,\n        cgid: PropTypes.string,\n        pids: PropTypes.array,\n        displayLimit: PropTypes.number\n    }).isRequired,\n    wishlist: PropTypes.object,\n    columns: PropTypes.oneOfType([PropTypes.array, PropTypes.number]),\n    style: PropTypes.object,\n    onProductSearchResult: PropTypes.func,\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    promotionalPricing: PropTypes.object,\n    variantPromotionalPricing: PropTypes.object,\n    onProductClick: PropTypes.func,\n    navigate: PropTypes.func,\n    section: PropTypes.string,\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n\nexport default ProductGrid\n","/*\n * Copyright (c) 2023, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n// TODO - move this to a more general location\n/**\n * Determines whether the specified URL is absolute.\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport const isAbsoluteURL = (url) => /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url)\n","import {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\n/**\n * Returns the configured app origin for the current site, falling back to the\n * PWA Kit default app origin when the site config does not provide one.\n *\n * Both hooks are invoked unconditionally so the hook call order stays stable\n * across renders.\n *\n * @returns {string}\n */\nexport const useAppOriginConfig = () => {\n    const {site} = useMultiSite()\n    const pwaKitAppOrigin = useAppOrigin(true)\n    return site?.appOrigin || pwaKitAppOrigin\n}\n","import {useMemo} from 'react'\nimport {useIntl} from 'react-intl'\nimport {useCategory} from './use-category'\nimport {useCategoryFromCache} from './use-category-from-cache'\nimport {useUrlMapping} from './use-url-mapping'\n\nconst isHiddenFromBreadcrumb = (item) => {\n    const v = item?.c_hideFromBreadcrumb\n    return v === true || v === 'true' || v === 1\n}\n\nconst filterHidden = (trail) => trail.filter((item) => !isHiddenFromBreadcrumb(item))\n\nconst applyAlternativeUrl = (trail) =>\n    trail.map((item) =>\n        item?.c_alternativeUrl\n            ? {...item, c_relSlugURL: item.c_alternativeUrl, c_slugURL: item.c_alternativeUrl}\n            : item\n    )\n\n/**\n * Build the breadcrumb trail for the current route.\n *\n * Two modes:\n *  - **direct-use**: caller passes `categories` (the page's own parent trail, e.g. PDP\n *    passes `product.primaryCategory.parentCategoryTree`). Hook just filters + formats it.\n *  - **resolve-from-url**: caller passes nothing.\n *    `useUrlMapping` (DOL) → resourceId.\n *    `useCategoryFromCache` → cache-side id correction (e.g. `charm` → `charms`).\n *    `useCategory` (per-id) → `parentCategoryTree` with `c_hideFromBreadcrumb` on every\n *    ancestor. The cached menu tree strips that field on nested nodes, so we can't filter\n *    \"Categoria\"-style redirect/grouping ancestors from there.\n */\nexport const useBreadcrumbs = ({categories, showBreadcrumbs = true} = {}) => {\n    const {formatMessage} = useIntl()\n\n    const directUse = Array.isArray(categories) && categories.length > 0\n\n    const {data: urlMapping} = useUrlMapping()\n    // Match resourceType case-insensitively — the DOL proxy returns it as\n    // lowercase 'category' (the SDK contract says uppercase, the proxy doesn't).\n    const isCategoryResource = urlMapping?.resourceType?.toLowerCase?.() === 'category'\n    const candidateResourceId = !directUse && isCategoryResource ? urlMapping?.resourceId : null\n\n    // Cache lookup handles singular/plural slug retry (e.g. `charm` → `charms`).\n    // Disable its own API fallback — the useCategory call below covers that.\n    const {category: cachedCategory} = useCategoryFromCache(candidateResourceId, {\n        enabled: Boolean(candidateResourceId),\n        withApiFallback: false\n    })\n    const resourceId = cachedCategory?.id ?? candidateResourceId\n\n    // Per-id endpoint provides parentCategoryTree with c_hideFromBreadcrumb on\n    // each ancestor — required to drop redirect/grouping nodes like \"Categoria\".\n    const {data: categoryWithTree} = useCategory(\n        {parameters: {id: resourceId}},\n        {enabled: Boolean(resourceId), keepPreviousData: true}\n    )\n\n    const parentTrail = useMemo(() => {\n        if (directUse) {\n            const visible = filterHidden(categories)\n            return visible.length > 0 ? visible : [categories[categories.length - 1]]\n        }\n        if (!resourceId || !categoryWithTree?.parentCategoryTree) return []\n        return filterHidden(categoryWithTree.parentCategoryTree)\n    }, [directUse, categories, resourceId, categoryWithTree])\n\n    return useMemo(() => {\n        if (!showBreadcrumbs) return []\n        if (!directUse && !resourceId) return []\n\n        const homeBreadcrumb = {\n            id: 'home',\n            name: formatMessage({id: 'breadcrumb.home', defaultMessage: 'Home'}),\n            c_slugURL: '/',\n            c_relSlugURL: '/'\n        }\n\n        if (parentTrail.length === 0) return [homeBreadcrumb]\n\n        return [homeBreadcrumb, ...applyAlternativeUrl(parentTrail)]\n    }, [showBreadcrumbs, directUse, resourceId, parentTrail, formatMessage])\n}\n","import {useInfiniteQuery as useReactInfiniteQuery} from '@tanstack/react-query'\nimport {useAuthorizationHeader} from '@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader'\nimport {hasAllKeys} from '@salesforce/commerce-sdk-react/hooks/utils'\n\n/**\n * Custom hook for infinite queries, wrapping the `useInfiniteQuery` from `@tanstack/react-query`.\n *\n * @param {Object} apiOptions - Options passed through to the API client.\n * @param {Object} queryOptions - Options passed through to `@tanstack/react-query`.\n * @param {Object} hookConfig - Configuration values specific to the API endpoint.\n * @param {Function} hookConfig.method - The API method to call.\n * @param {Array} hookConfig.queryKey - The query key for the query.\n * @param {Array<string>} hookConfig.requiredParameters - List of required parameters for the API method.\n * @param {boolean} [hookConfig.enabled=true] - Flag to enable or disable the query.\n * @param {Function} hookConfig.getNextPageParam - Function to get the next page parameter.\n * @returns {Object} The result of the `useReactInfiniteQuery` hook.\n */\nexport const useInfiniteQuery = (apiOptions, queryOptions, hookConfig) => {\n    const authenticatedMethod = useAuthorizationHeader(hookConfig.method)\n\n    // Wrap the method to include the page parameter.\n    const wrappedMethod = async ({pageParam}) =>\n        await authenticatedMethod({\n            ...apiOptions,\n            parameters: {\n                ...apiOptions.parameters,\n                // Use nullish coalescing to default to 0 if pageParam coming as null or undefined after hydration.\n                // Fall back to initialPageParam for crawlable paginated URLs (e.g. ?page=2 → offset 28).\n                offset: pageParam ?? queryOptions.initialPageParam ?? 0\n            }\n        })\n\n    return useReactInfiniteQuery(hookConfig.queryKey, wrappedMethod, {\n        getNextPageParam: hookConfig.getNextPageParam,\n        enabled:\n            /*\n             * Individual hooks can provide `enabled` checks that are done in ADDITION to\n             * the required parameter check.\n             */\n            hookConfig.enabled !== false &&\n            /*\n             * The default `enabled` is \"has all required parameters\",\n             * end users can always completely OVERRIDE the default `enabled` check.\n             */\n            hasAllKeys(apiOptions.parameters, hookConfig.requiredParameters),\n\n        ...queryOptions\n    })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst RingSizerIcon = ({width = 72, height = 94, ...props}) => {\n    return (\n        <svg\n            width={width}\n            height={height}\n            viewBox=\"0 0 72 94\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            {...props}\n        >\n            <path\n                d=\"M51.3417 41.5001C51.6179 41.5001 51.8417 41.724 51.8417 42.0001V46.5001C51.8417 46.7762 51.6179 47.0001 51.3417 47.0001C51.0656 47.0001 50.8417 46.7762 50.8417 46.5001V43.2072L45.1288 48.9202L44.4216 48.2131L50.1346 42.5001H46.8417C46.5656 42.5001 46.3417 42.2762 46.3417 42.0001C46.3417 41.724 46.5656 41.5001 46.8417 41.5001H51.3417Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M19.5001 42.0001C19.5001 41.724 19.7239 41.5001 20.0001 41.5001H24.5001C24.7762 41.5001 25.0001 41.724 25.0001 42.0001C25.0001 42.2762 24.7762 42.5001 24.5001 42.5001H21.2072L26.9201 48.2131L26.213 48.9202L20.5001 43.2072V46.5001C20.5001 46.7762 20.2762 47.0001 20.0001 47.0001C19.7239 47.0001 19.5001 46.7762 19.5001 46.5001V42.0001Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M20.0001 73.8439C19.7239 73.8439 19.5001 73.62 19.5001 73.3439V68.8439C19.5001 68.5677 19.7239 68.3439 20.0001 68.3439C20.2762 68.3439 20.5001 68.5677 20.5001 68.8439V72.1367L26.213 66.4238L26.9201 67.1309L21.2072 72.8439H24.5001C24.7762 72.8439 25.0001 73.0677 25.0001 73.3439C25.0001 73.62 24.7762 73.8439 24.5001 73.8439H20.0001Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M51.8417 73.3439C51.8417 73.62 51.6179 73.8439 51.3417 73.8439H46.8417C46.5656 73.8439 46.3417 73.62 46.3417 73.3439C46.3417 73.0677 46.5656 72.8439 46.8417 72.8439H50.1346L44.4216 67.1309L45.1288 66.4238L50.8417 72.1367V68.8439C50.8417 68.5677 51.0656 68.3439 51.3417 68.3439C51.6179 68.3439 51.8417 68.5677 51.8417 68.8439V73.3439Z\"\n                fill=\"#211710\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M36 89.0001C53.1208 89.0001 67 75.1209 67 58.0001C67 40.8793 53.1208 27.0001 36 27.0001C18.8792 27.0001 5 40.8793 5 58.0001C5 75.1209 18.8792 89.0001 36 89.0001ZM36 88.0001C52.5685 88.0001 66 74.5686 66 58.0001C66 41.4316 52.5685 28.0001 36 28.0001C19.4315 28.0001 6 41.4316 6 58.0001C6 74.5686 19.4315 88.0001 36 88.0001Z\"\n                fill=\"#211710\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M39.2865 22.1481L55.7244 8.46639L50.2639 0.429199H22.4862L17 8.46638L33.3734 22.0945C14.7174 23.4397 0 39.0012 0 58.0001C0 77.8824 16.1177 94.0001 36 94.0001C55.8823 94.0001 72 77.8824 72 58.0001C72 39.2258 57.6285 23.8081 39.2865 22.1481ZM26.7333 8.96495L34.6939 21.8925L19.1622 8.96495H26.7333ZM27.9077 8.96495L35.9346 22.0002L36 22.0001C36.2624 22.0001 36.5241 22.0029 36.7851 22.0085L44.8171 8.96495H27.9077ZM45.4329 7.96495H27.2919L23.2673 1.4292L49.4575 1.4292L45.4329 7.96495ZM45.9915 8.96495L38.0314 21.8917L53.5622 8.96495H45.9915ZM54.1748 7.96495H46.6073L50.2052 2.12218L54.1748 7.96495ZM26.1176 7.96495H18.553L22.5299 2.13883L26.1176 7.96495ZM36 93.0001C55.33 93.0001 71 77.3301 71 58.0001C71 38.6701 55.33 23.0001 36 23.0001C16.67 23.0001 1 38.6701 1 58.0001C1 77.3301 16.67 93.0001 36 93.0001Z\"\n                fill=\"#211710\"\n            />\n        </svg>\n    )\n}\n\nRingSizerIcon.propTypes = {\n    width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    height: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n}\n\nexport default RingSizerIcon\n","const PRODUCT_FINDING_METHOD_KEY = 'product_finding_method'\n\n/**\n * Gets product_finding_method from URL query parameter\n * @returns {string|null} The finding method value or null if not present\n */\nexport const getProductFindingMethod = () => {\n    if (typeof window === 'undefined') return null\n    const urlParams = new URLSearchParams(window.location.search)\n    return urlParams.get(PRODUCT_FINDING_METHOD_KEY)\n}\n","import {useCallback, useEffect, useMemo, useRef} from 'react'\nimport {useBreakpointValue} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useRingSizerContext} from 'pandora-shared-app/overrides/app/contexts/ring-sizer'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useIntersectionObserver} from 'pandora-shared-app/overrides/app/hooks/use-intersection-observer'\nimport {\n    extractMobileContent,\n    extractDesktopContent,\n    extractImageData,\n    buildImageSrc,\n    buildLegacyImageSrc,\n    checkHasDesktopContent\n} from 'pandora-shared-app/overrides/app/hooks/utils/ring-sizer-entry'\nimport {DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION} from 'pandora-shared-app/overrides/app/utils/media'\nimport {getProductFindingMethod} from 'pandora-shared-app/overrides/app/utils/product-tracking-utils'\n\nconst {RING_SIZER_QR, ESTORE_EVENT, DRAWER, BUTTON_ID, USER_DEVICE_TYPE} = TEALIUM_CONSTANTS\n\nconst getQrParams = () => {\n    if (typeof window === 'undefined') return {isFromQr: false, findingMethod: 'pdp'}\n    const params = new URLSearchParams(window.location.search)\n    return {\n        isFromQr: params.get(RING_SIZER_QR.SOURCE_PARAM_KEY) === RING_SIZER_QR.SOURCE_PARAM_VALUE,\n        findingMethod: getProductFindingMethod() || 'pdp'\n    }\n}\n\n/**\n * @typedef {import('./types/ring-sizer-entry').RingSizerModule} RingSizerModule\n * @typedef {import('./types/ring-sizer-entry').UseRingSizerEntryReturn} UseRingSizerEntryReturn\n */\n\n/**\n * Main hook for ring sizer entry point (CMS content block).\n * Handles content extraction, tracking, and click handling.\n *\n * @param {Object} options\n * @param {RingSizerModule} options.ringSizerModule - Ring sizer module from CMS\n * @returns {UseRingSizerEntryReturn}\n */\nexport const useRingSizerEntry = ({ringSizerModule}) => {\n    // -------------------------------------------------------------------------\n    // FEATURE FLAGS\n    // -------------------------------------------------------------------------\n    const enableQRCode = useVariant(LD_KEYS.enablePdpRingSizerQRCode, false)\n    const enableTrackingFix = useVariant(LD_KEYS.enablePdpRingSizerTrackingFix, false)\n    // Gates the media-partial refactor. OFF (default) → legacy getImageUrl path.\n    const enableRingSizerRefactoring = useVariant(LD_KEYS.enablePdpRingSizerRefactoring, false)\n    const enableRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const enableQrCodeTracking = useVariant(LD_KEYS.enablePdpRingSizerQrCodeTracking, false)\n\n    // -------------------------------------------------------------------------\n    // THIRD-PARTY HOOKS\n    // -------------------------------------------------------------------------\n    const {link, view} = useTealium()\n    const isDesktop = useBreakpointValue({base: false, xl: true}, {ssr: true})\n\n    // -------------------------------------------------------------------------\n    // CONTEXT HOOKS\n    // -------------------------------------------------------------------------\n    const {openRingSizer, isRingSizerOpen} = useRingSizerContext()\n\n    // Ref-based guard: set synchronously on click to block the ghost click that\n    // mobile browsers synthesize after touch. Reset when React commits.\n    const pendingOpenRef = useRef(false)\n    // Guard: fire QR exposure tracking only once per mount.\n    const hasTrackedQrExposureRef = useRef(false)\n    // Guard: fire mobile landing tracking only once per ring-sizer open.\n    const hasTrackedMobileLandingRef = useRef(false)\n\n    useEffect(() => {\n        if (enableTrackingFix && isRingSizerOpen) {\n            pendingOpenRef.current = false\n        }\n    }, [isRingSizerOpen, enableTrackingFix])\n\n    // -------------------------------------------------------------------------\n    // QR INTERSECTION OBSERVER — req #1: fire utag.view when QR code is visible\n    // -------------------------------------------------------------------------\n    const qrObserverOptions = useMemo(() => ({threshold: 0.5}), [])\n    const [setQrRef, isQrVisible] = useIntersectionObserver(qrObserverOptions)\n\n    useEffect(() => {\n        if (!enableQrCodeTracking) return\n        if (!isDesktop) return\n        if (!enableQRCode) return\n        if (!isQrVisible) return\n        if (hasTrackedQrExposureRef.current) return\n\n        hasTrackedQrExposureRef.current = true\n        const {findingMethod} = getQrParams()\n        view({\n            estore_event: [DRAWER.EVENTS.VIEW],\n            virtual_page_name: RING_SIZER_QR.VIRTUAL_PAGE_NAME.QR_EXPOSURE,\n            virtual_page_url: RING_SIZER_QR.VIRTUAL_PAGE_URL.QR_EXPOSURE,\n            feature_name: RING_SIZER_QR.FEATURE_NAME,\n            feature_step: RING_SIZER_QR.FEATURE_STEP.QR_VISIBLE,\n            finding_method: findingMethod,\n            user_device_type: USER_DEVICE_TYPE.DESKTOP\n        })\n    }, [enableQrCodeTracking, isDesktop, enableQRCode, isQrVisible, view])\n\n    // -------------------------------------------------------------------------\n    // MOBILE LANDING — req #3: fire utag.view when ring sizer opens via QR\n    // -------------------------------------------------------------------------\n    useEffect(() => {\n        if (!enableQrCodeTracking) return\n        if (isDesktop) return\n        if (!isRingSizerOpen) {\n            hasTrackedMobileLandingRef.current = false\n            return\n        }\n        if (hasTrackedMobileLandingRef.current) return\n\n        const {isFromQr, findingMethod} = getQrParams()\n        if (!isFromQr) return\n\n        hasTrackedMobileLandingRef.current = true\n        view({\n            estore_event: [DRAWER.EVENTS.VIEW],\n            virtual_page_name: RING_SIZER_QR.VIRTUAL_PAGE_NAME.LANDING_QR,\n            virtual_page_url: RING_SIZER_QR.VIRTUAL_PAGE_URL.LANDING,\n            feature_name: RING_SIZER_QR.FEATURE_NAME,\n            feature_step: RING_SIZER_QR.FEATURE_STEP.LANDING,\n            traffic_source: RING_SIZER_QR.TRAFFIC_SOURCE,\n            finding_method: findingMethod,\n            user_device_type: USER_DEVICE_TYPE.MOBILE\n        })\n    }, [enableQrCodeTracking, isDesktop, isRingSizerOpen, view])\n\n    // -------------------------------------------------------------------------\n    // DERIVED VALUES\n    // -------------------------------------------------------------------------\n    // Mobile content\n    const {mobileTitle, mobileDescription, mobileButtonText, mobileButtonAriaLabel} =\n        extractMobileContent(ringSizerModule)\n\n    // Desktop content\n    const {desktopTitle, desktopDescription} = extractDesktopContent(ringSizerModule)\n\n    // Image data\n    const {imageAlt} = extractImageData(ringSizerModule)\n    const image = ringSizerModule?.image\n\n    // -------------------------------------------------------------------------\n    // MEMOIZED VALUES\n    // -------------------------------------------------------------------------\n    const desktopImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'desktop', DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP)\n                : buildLegacyImageSrc(image, 'desktop'),\n        [enableRingSizerRefactoring, image]\n    )\n    const mobileWidth = enableRingSizerUiEnhancements\n        ? DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE\n        : DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n\n    const mobileImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'mobile', mobileWidth)\n                : buildLegacyImageSrc(image, 'mobile'),\n        [enableRingSizerRefactoring, image, mobileWidth]\n    )\n\n    const qrCodeUrl = useMemo(() => {\n        if (typeof window === 'undefined') return ''\n        const existingFindingMethod = getProductFindingMethod()\n        const url = new URL(window.location.origin + window.location.pathname)\n        if (existingFindingMethod)\n            url.searchParams.set('product_finding_method', existingFindingMethod)\n        url.searchParams.set('openDrawer', 'ring-sizer')\n        url.searchParams.set(RING_SIZER_QR.SOURCE_PARAM_KEY, RING_SIZER_QR.SOURCE_PARAM_VALUE)\n        return url.toString()\n    }, [])\n\n    const hasDesktopContent = checkHasDesktopContent({\n        desktopTitle,\n        desktopDescription,\n        desktopImageSrc\n    })\n\n    // -------------------------------------------------------------------------\n    // CALLBACKS\n    // -------------------------------------------------------------------------\n\n    // req #2 (optional): fire utag.view when user interacts with the QR block on desktop\n    const handleQrClick = useCallback(() => {\n        if (!enableQrCodeTracking) return\n        const {findingMethod} = getQrParams()\n        view({\n            estore_event: [DRAWER.EVENTS.VIEW],\n            virtual_page_name: RING_SIZER_QR.VIRTUAL_PAGE_NAME.QR_INTERACTION,\n            virtual_page_url: RING_SIZER_QR.VIRTUAL_PAGE_URL.QR_INTERACTION,\n            feature_name: RING_SIZER_QR.FEATURE_NAME,\n            feature_step: RING_SIZER_QR.FEATURE_STEP.QR_INTERACTION,\n            finding_method: findingMethod,\n            user_device_type: USER_DEVICE_TYPE.DESKTOP\n        })\n    }, [enableQrCodeTracking, view])\n\n    const handleGetStartedClick = useCallback(() => {\n        if (enableTrackingFix && (isRingSizerOpen || pendingOpenRef.current)) return\n        if (enableTrackingFix) {\n            pendingOpenRef.current = true\n        }\n\n        // req #5: re-use existing tracking + add QR attribution when coming from QR\n        if (enableQrCodeTracking) {\n            const {isFromQr, findingMethod} = getQrParams()\n            link({\n                estore_event: [ESTORE_EVENT.BUTTON_CLICKED],\n                button_id: BUTTON_ID.SIZE_GUIDE_GET_STARTED,\n                feature_name: RING_SIZER_QR.FEATURE_NAME,\n                feature_step: RING_SIZER_QR.FEATURE_STEP.LANDING,\n                finding_method: findingMethod,\n                user_device_type: isDesktop ? USER_DEVICE_TYPE.DESKTOP : USER_DEVICE_TYPE.MOBILE,\n                ...(isFromQr && {traffic_source: RING_SIZER_QR.TRAFFIC_SOURCE})\n            })\n        } else {\n            link({\n                estore_event: [ESTORE_EVENT.BUTTON_CLICKED],\n                button_id: BUTTON_ID.SIZE_GUIDE_GET_STARTED\n            })\n        }\n\n        openRingSizer()\n    }, [link, openRingSizer, isRingSizerOpen, enableTrackingFix, enableQrCodeTracking])\n\n    // -------------------------------------------------------------------------\n    // RETURN\n    // -------------------------------------------------------------------------\n    return {\n        // Content availability\n        hasDesktopContent,\n        // Mobile content\n        mobileTitle,\n        mobileDescription,\n        mobileButtonText,\n        mobileButtonAriaLabel,\n        mobileImageSrc,\n        // Desktop content\n        desktopTitle,\n        desktopDescription,\n        desktopImageSrc,\n        // Image\n        imageAlt,\n        // Actions\n        handleGetStartedClick,\n        // QR Code\n        enableQRCode,\n        qrCodeUrl,\n        // QR tracking\n        setQrRef,\n        handleQrClick\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Flex,\n    Text,\n    Button,\n    useBreakpointValue\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {StaticContentImage} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-image'\nimport {QRCodeSVG} from 'qrcode.react'\nimport RingSizerIcon from './ring-sizer-icon'\nimport {useRingSizerEntry} from 'pandora-shared-app/overrides/app/hooks/use-ring-sizer-entry'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// Responsive display maps (base = mobile, xl = desktop) — hoisted at module level so\n// React reuses the same reference across renders instead of allocating a new object\n// for every Chakra prop.\nconst MOBILE_ONLY_DISPLAY = {base: 'block', xl: 'none'}\nconst DESKTOP_ONLY_DISPLAY = {base: 'none', xl: 'block'}\nconst MOBILE_ONLY_FLEX = {base: 'flex', xl: 'none'}\nconst DESKTOP_ONLY_FLEX = {base: 'none', xl: 'flex'}\n\n/**\n * Ring Sizer Entry Point - Presentational Component.\n * CMS drag-and-drop module for size guide content.\n * All business logic handled by useRingSizerEntry hook.\n * Uses RingSizerContext for opening the ring sizer drawer.\n */\nconst RingSizerEntry = ({ringSizerModule}) => {\n    const {\n        hasDesktopContent,\n        mobileTitle,\n        mobileDescription,\n        mobileButtonText,\n        mobileButtonAriaLabel,\n        mobileImageSrc,\n        desktopTitle,\n        desktopDescription,\n        desktopImageSrc,\n        imageAlt,\n        handleGetStartedClick,\n        enableQRCode,\n        qrCodeUrl,\n        setQrRef,\n        handleQrClick\n    } = useRingSizerEntry({ringSizerModule})\n\n    const enableRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n\n    // Check if there's any mobile content to show\n    const hasMobileContent = Boolean(\n        mobileTitle || mobileDescription || mobileImageSrc || mobileButtonText\n    )\n\n    // Determine if we're on desktop (xl breakpoint)\n    const isDesktop = useBreakpointValue({base: false, xl: true}, {ssr: true})\n\n    const hasDesktopOutput = hasDesktopContent || enableQRCode\n\n    if (!hasMobileContent && !hasDesktopOutput) {\n        return null\n    }\n    if (isDesktop && !hasDesktopOutput) {\n        return null\n    }\n    if (!isDesktop && !hasMobileContent) {\n        return null\n    }\n\n    return (\n        <Flex direction=\"column\" gap={2} textStyle=\"bodySm\" data-auto=\"ringSizerEntry\">\n            {/* Title */}\n            {mobileTitle && (\n                <Text\n                    as=\"h3\"\n                    textStyle=\"bodyMd\"\n                    display={MOBILE_ONLY_DISPLAY}\n                    data-testid=\"ring-sizer-entry-heading-mobile\"\n                >\n                    {mobileTitle}\n                </Text>\n            )}\n            {desktopTitle && (\n                <Text\n                    as=\"h3\"\n                    textStyle=\"bodyMd\"\n                    display={DESKTOP_ONLY_DISPLAY}\n                    data-testid=\"ring-sizer-entry-heading-desktop\"\n                >\n                    {desktopTitle}\n                </Text>\n            )}\n\n            {/* Description */}\n            {mobileDescription && (\n                <Box\n                    display={MOBILE_ONLY_DISPLAY}\n                    color=\"black3a\"\n                    data-testid=\"ring-sizer-entry-description-mobile\"\n                >\n                    {mobileDescription}\n                </Box>\n            )}\n            {desktopDescription && (\n                <Box\n                    display={DESKTOP_ONLY_DISPLAY}\n                    color=\"black3a\"\n                    data-testid=\"ring-sizer-entry-description-desktop\"\n                >\n                    {desktopDescription}\n                </Box>\n            )}\n\n            {/* Mobile: CMS image + button below when moderator has uploaded a mobile image */}\n            {mobileImageSrc && (\n                <Box display={MOBILE_ONLY_DISPLAY} mt={4} data-auto=\"ringSizerMobileImage\">\n                    <StaticContentImage\n                        src={mobileImageSrc}\n                        alt={imageAlt}\n                        enableRingSizerUiEnhancements={enableRingSizerUiEnhancements}\n                        type=\"ring\"\n                        width=\"100%\"\n                        data-testid=\"ring-sizer-entry-image-mobile\"\n                    />\n                </Box>\n            )}\n\n            {mobileImageSrc && mobileButtonText && (\n                <Box display={MOBILE_ONLY_DISPLAY} mt={4} data-auto=\"ringSizerMobileContent\">\n                    <Button\n                        variant=\"outline\"\n                        onClick={handleGetStartedClick}\n                        aria-label={mobileButtonAriaLabel}\n                        width=\"100%\"\n                        data-testid=\"ring-sizer-entry-cta-mobile\"\n                        data-auto=\"ringSizerMobileCta\"\n                    >\n                        {mobileButtonText}\n                    </Button>\n                </Box>\n            )}\n\n            {/* Mobile: Fallback SVG icon + button in a gray box when no CMS image is set */}\n            {!mobileImageSrc && mobileButtonText && (\n                <Box\n                    display={MOBILE_ONLY_FLEX}\n                    flexDirection=\"column\"\n                    alignItems=\"center\"\n                    backgroundColor=\"black5\"\n                    width=\"100%\"\n                    mt={4}\n                    p={8}\n                    data-testid=\"ring-sizer-entry-icon-mobile\"\n                    data-auto=\"ringSizerMobileFallback\"\n                >\n                    <Box mb=\"8px\">\n                        <RingSizerIcon width={72} height={94} aria-label={imageAlt} />\n                    </Box>\n                    <Button\n                        variant=\"outline\"\n                        width=\"100%\"\n                        onClick={handleGetStartedClick}\n                        aria-label={mobileButtonAriaLabel}\n                        data-testid=\"ring-sizer-entry-cta-mobile\"\n                        data-auto=\"ringSizerMobileCta\"\n                    >\n                        {mobileButtonText}\n                    </Button>\n                </Box>\n            )}\n\n            {/* Desktop: QR code (when flag enabled) OR CMS Image (fallback) */}\n            {isDesktop && enableQRCode ? (\n                <Box\n                    ref={setQrRef}\n                    onClick={handleQrClick}\n                    display={DESKTOP_ONLY_FLEX}\n                    justifyContent=\"center\"\n                    alignItems=\"center\"\n                    backgroundColor=\"black5\"\n                    width=\"100%\"\n                    aspectRatio={476 / 244}\n                    mt={4}\n                    mb={12}\n                    data-testid=\"ring-sizer-qr-code-section\"\n                    data-auto=\"ringSizerQrCode\"\n                    data-cs-override-id=\"pdp_ring_sizer_qr_code\"\n                >\n                    <QRCodeSVG\n                        value={qrCodeUrl}\n                        size={160}\n                        level=\"M\"\n                        data-testid=\"ring-sizer-qr-code\"\n                    />\n                </Box>\n            ) : (\n                desktopImageSrc && (\n                    <Box display={DESKTOP_ONLY_DISPLAY} mt={4} data-auto=\"ringSizerDesktopContent\">\n                        <StaticContentImage\n                            src={desktopImageSrc}\n                            alt={imageAlt}\n                            enableRingSizerUiEnhancements={enableRingSizerUiEnhancements}\n                            type=\"ring\"\n                            width=\"100%\"\n                            data-testid=\"ring-sizer-entry-image-desktop\"\n                        />\n                    </Box>\n                )\n            )}\n        </Flex>\n    )\n}\n\nRingSizerEntry.propTypes = {\n    ringSizerModule: PropTypes.shape({\n        image: PropTypes.shape({\n            copyright: PropTypes.object,\n            desktop: PropTypes.object,\n            mobile: PropTypes.object,\n            imageAltText: PropTypes.string\n        }),\n        mobileButtonAriaLabel: PropTypes.string,\n        mobileButtonText: PropTypes.string,\n        mobileDescription: PropTypes.string,\n        mobileTitle: PropTypes.string,\n        desktopDescription: PropTypes.string,\n        desktopTitle: PropTypes.string\n    }).isRequired\n}\n\nexport default RingSizerEntry\n","import React, {useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text, Button} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {StaticContentImage} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-image'\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\nimport {useFingerSizerContext} from 'pandora-shared-app/overrides/app/contexts/finger-sizer'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {\n    buildImageSrc,\n    buildLegacyImageSrc\n} from 'pandora-shared-app/overrides/app/hooks/utils/ring-sizer-entry'\nimport {DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION} from 'pandora-shared-app/overrides/app/utils/media'\n\nconst {ESTORE_EVENT, BUTTON_ID} = TEALIUM_CONSTANTS\n\n// Responsive display maps (base = mobile, xl = desktop) — hoisted so React does not\n// build a fresh style object per render for every Chakra prop.\nconst MOBILE_ONLY_DISPLAY = {base: 'block', xl: 'none'}\nconst DESKTOP_ONLY_DISPLAY = {base: 'none', xl: 'block'}\n\nexport const FingerSizerEntry = ({fingerSizerModule}) => {\n    const enableRingSizerRefactoring = useVariant(LD_KEYS.enablePdpRingSizerRefactoring, false)\n    const enableNewEntryPointsTracking = useVariant(\n        LD_KEYS.enablePdpRingSizerNewEntryPointsTracking,\n        false\n    )\n    const {openFingerSizer} = useFingerSizerContext()\n    const {link} = useTealium()\n\n    const image = fingerSizerModule?.image\n    const mobileImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'mobile', DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE)\n                : buildLegacyImageSrc(image, 'mobile'),\n        [enableRingSizerRefactoring, image]\n    )\n    const desktopImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'desktop', DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP)\n                : buildLegacyImageSrc(image, 'desktop'),\n        [enableRingSizerRefactoring, image]\n    )\n\n    const handleGetStartedClick = useCallback(() => {\n        link({\n            estore_event: [ESTORE_EVENT.BUTTON_CLICKED],\n            button_id: enableNewEntryPointsTracking\n                ? BUTTON_ID.SIZE_GUIDE_MEASURE_FINGER\n                : BUTTON_ID.SIZE_GUIDE_GET_STARTED\n        })\n        openFingerSizer()\n    }, [link, openFingerSizer, enableNewEntryPointsTracking])\n\n    if (!fingerSizerModule) return null\n\n    const {\n        mobileTitle,\n        mobileDescription,\n        desktopTitle,\n        desktopDescription,\n        desktopRichText,\n        mobileButtonText,\n        mobileButtonAriaLabel\n    } = fingerSizerModule\n    const imageAlt = image?.imageAltText || ''\n\n    const hasMobileContent = Boolean(\n        mobileTitle || mobileDescription || mobileImageSrc || mobileButtonText\n    )\n    const hasDesktopContent = Boolean(\n        desktopTitle || desktopDescription || desktopRichText || desktopImageSrc\n    )\n    if (!hasMobileContent && !hasDesktopContent) return null\n\n    return (\n        <Flex direction=\"column\" gap={2} textStyle=\"bodySm\" data-auto=\"fingerSizerEntry\">\n            {mobileTitle && (\n                <Text\n                    as=\"h3\"\n                    textStyle=\"bodyMd\"\n                    display={MOBILE_ONLY_DISPLAY}\n                    data-testid=\"finger-sizer-entry-heading-mobile\"\n                >\n                    {mobileTitle}\n                </Text>\n            )}\n            {desktopTitle && (\n                <Text\n                    as=\"h3\"\n                    textStyle=\"bodyMd\"\n                    display={DESKTOP_ONLY_DISPLAY}\n                    data-testid=\"finger-sizer-entry-heading-desktop\"\n                >\n                    {desktopTitle}\n                </Text>\n            )}\n\n            {mobileDescription && (\n                <Box\n                    display={MOBILE_ONLY_DISPLAY}\n                    color=\"black3a\"\n                    data-testid=\"finger-sizer-entry-description-mobile\"\n                >\n                    {mobileDescription}\n                </Box>\n            )}\n            {desktopDescription && (\n                <Box\n                    display={DESKTOP_ONLY_DISPLAY}\n                    color=\"black3a\"\n                    data-testid=\"finger-sizer-entry-description-desktop\"\n                >\n                    {desktopDescription}\n                </Box>\n            )}\n\n            {desktopImageSrc && (\n                <Box display={DESKTOP_ONLY_DISPLAY} mt={4} data-auto=\"fingerSizerDesktopContent\">\n                    <StaticContentImage\n                        src={desktopImageSrc}\n                        alt={imageAlt}\n                        enableRingSizerUiEnhancements\n                        type=\"ring\"\n                        width=\"100%\"\n                        data-testid=\"finger-sizer-entry-image-desktop\"\n                    />\n                </Box>\n            )}\n\n            {desktopRichText && (\n                <Box\n                    display={DESKTOP_ONLY_DISPLAY}\n                    color=\"black3a\"\n                    mt={4}\n                    data-testid=\"finger-sizer-entry-richtext-desktop\"\n                >\n                    <RichTextEditor content={desktopRichText} />\n                </Box>\n            )}\n\n            {mobileImageSrc && (\n                <Box display={MOBILE_ONLY_DISPLAY} mt={4} data-auto=\"fingerSizerMobileImage\">\n                    <StaticContentImage\n                        src={mobileImageSrc}\n                        alt={imageAlt}\n                        enableRingSizerUiEnhancements\n                        type=\"ring\"\n                        width=\"100%\"\n                        data-testid=\"finger-sizer-entry-image-mobile\"\n                    />\n                </Box>\n            )}\n\n            {mobileButtonText && (\n                <Box\n                    display={MOBILE_ONLY_DISPLAY}\n                    mt={mobileImageSrc ? 4 : 0}\n                    data-auto=\"fingerSizerMobileContent\"\n                >\n                    <Button\n                        variant=\"outline\"\n                        onClick={handleGetStartedClick}\n                        aria-label={mobileButtonAriaLabel}\n                        width=\"100%\"\n                        data-testid=\"finger-sizer-entry-cta-mobile\"\n                        data-auto=\"fingerSizerMobileCta\"\n                    >\n                        {mobileButtonText}\n                    </Button>\n                </Box>\n            )}\n        </Flex>\n    )\n}\n\nFingerSizerEntry.propTypes = {\n    fingerSizerModule: PropTypes.shape({\n        mobileTitle: PropTypes.string,\n        mobileDescription: PropTypes.string,\n        desktopTitle: PropTypes.string,\n        desktopDescription: PropTypes.string,\n        desktopRichText: PropTypes.string,\n        image: PropTypes.object,\n        mobileButtonText: PropTypes.string,\n        mobileButtonAriaLabel: PropTypes.string\n    })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Skeleton, Text, Flex} from '@salesforce/retail-react-app/app/components/shared/ui'\n// Custom Content Component(s)\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\nimport {getImageUrl} from 'pandora-shared-app/overrides/app/utils/media'\nimport {getVideoDataDesktopPreferred} from 'pandora-shared-app/overrides/app/components/media/utils'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {VideoPlayer} from 'pandora-shared-app/overrides/app/components/video-player'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport RingSizerEntry from 'pandora-shared-app/overrides/app/components/ring-sizer-entry'\nimport {FingerSizerEntry} from 'pandora-shared-app/overrides/app/components/finger-sizer-entry'\nimport {FingerSizerFlow} from 'pandora-shared-app/overrides/app/components/finger-sizer-flow'\nimport {StaticContentImage} from './static-content-image'\n\nconst StaticContentBody = ({\n    drawerBodyContent,\n    isLoading,\n    flexGap = 12,\n    innerFlexGap = 2,\n    type,\n    hasRingSizerModule = false\n}) => {\n    const enablePdpRingSizer = useVariant(LD_KEYS.enablePdpRingSizer, false)\n    const enableRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const getImageSrc = (content) => {\n        const aprimoCdnUrl = content?.aprimoImg?.aprimoData?.cdnUrl\n        const amplienceImage = content?.image\n        const hasAmplience = Boolean(amplienceImage?.defaultHost)\n\n        // The LD flag controls which DAM takes priority: when aprimoPrimary is on\n        // Aprimo wins and only falls back to Amplience when no Aprimo asset exists;\n        // when off Amplience wins with Aprimo as the fallback.\n        const useAprimo = aprimoPrimary\n            ? Boolean(aprimoCdnUrl)\n            : !hasAmplience && Boolean(aprimoCdnUrl)\n\n        if (useAprimo) {\n            // getImageUrl bakes the width into the Aprimo URL via qWidth, so no\n            // manual `&w=768` suffix is appended for the Aprimo path.\n            return getImageUrl({cdnUrl: aprimoCdnUrl, qWidth: 768})\n        }\n\n        if (!hasAmplience) return ''\n\n        const {defaultHost, endpoint, name} = amplienceImage\n        const baseUrl = getImageUrl({defaultHost, endpoint, name})\n\n        // Guard against a null/empty URL so the caller can skip the image block\n        // (baking `&w=768` onto a falsy value would otherwise make it truthy).\n        return baseUrl ? `${baseUrl}&w=768` : ''\n    }\n\n    // all existinf will receive 0, so that no change is needed on existing content\n    // Only new manufacturer information will have the effect, or any future component needs it\n    const headingPb = Math.max(0, 2 - innerFlexGap)\n    const renderTextContent = (content) => {\n        if (!content?.body) return null\n        const contentKey = content._meta?.deliveryId || content.id || content.key\n        if (content?.key === 'textHeading') {\n            return (\n                <Text\n                    as=\"h3\"\n                    textStyle={type === 'ring' ? 'bodyMd' : 'bodySm'}\n                    pb={headingPb}\n                    key={`heading-${contentKey}`}\n                    data-testid=\"content-heading\"\n                >\n                    {content.body}\n                </Text>\n            )\n        } else {\n            return (\n                <Box\n                    key={`description-${contentKey}`}\n                    data-testid=\"content-description\"\n                    color={content?.key === 'textDescription' ? 'black3a' : undefined}\n                >\n                    {content.body}\n                </Box>\n            )\n        }\n    }\n\n    const renderLinkContent = (content) => {\n        if (!content?.link) return null\n        const contentKey = content._meta?.deliveryId || content.id || content.key\n        return (\n            <Box key={`link-${contentKey}`} data-testid=\"content-link\" color=\"black3a\">\n                <ContentLink\n                    key={`linkCTA-${contentKey}`}\n                    linkData={content.link}\n                    color=\"secondary\"\n                />\n            </Box>\n        )\n    }\n\n    const renderParagraphContent = (content, idx) => {\n        if (!content?.body) return null\n        const contentKey = content._meta?.deliveryId || content.id || content.key\n        return (\n            <RichTextEditor\n                key={`paragraph-${contentKey}-${idx}`}\n                content={content.body}\n                data-testid=\"content-rich-text\"\n                color={content?.key === 'textDescription' ? 'black3a' : undefined}\n            />\n        )\n    }\n\n    const renderVideoContent = (content, idx) => {\n        // The Amplience video-link is (confusingly) authored under `image`, while\n        // Aprimo ships its renditions under `aprimoVideo`. The LD flag controls\n        // priority, with Amplience as the fallback — same semantics as the image path.\n        const videoMedia = {\n            video: content?.image,\n            aprimoVideo: content?.aprimoVideo\n        }\n        const resolved = getVideoDataDesktopPreferred(videoMedia, {aprimoPrimary})\n        if (!resolved) return null\n\n        // Flatten Aprimo's nested aprimoData so useVideoSource sees\n        // cdnUrl / cdnMobileUrl / cdnDesktopUrl / thumbnail directly (it then picks\n        // the per-device rendition itself); the Amplience node passes through as-is.\n        const video = resolved?.aprimoData?.cdnUrl ? {...resolved.aprimoData} : resolved\n        const contentKey = content._meta?.deliveryId || content.id || content.key\n\n        return (\n            <VideoPlayer\n                key={`video-${contentKey}-${idx}`}\n                video={video}\n                isMobile={false}\n                active={true}\n                // Content-asset videos auto-play/loop with no user controls.\n                audioBtnEnabled={false}\n                playBtnEnabled={false}\n                // VideoPlayer is a full-bleed player whose container is height:100%\n                // with absolutely-positioned layers, so it needs an explicit aspect\n                // ratio to have any height in this drawer (otherwise it collapses to\n                // 0 and the video, though loaded, is invisible). 314x244 matches the\n                // Figma spec for the PDP content drawer media.\n                aspectRatio={314 / 244}\n                data-auto=\"contentAssetVideo\"\n            />\n        )\n    }\n\n    const renderRingSizerEntry = (content, idx) => {\n        const ringSizerModule = content?.ringSizerModule\n        if (!enablePdpRingSizer || !ringSizerModule) return null\n        const contentKey = content?._meta?.deliveryId || ringSizerModule?._meta?.deliveryId\n        return (\n            <RingSizerEntry\n                key={`ringsizer-${contentKey}-${idx}`}\n                ringSizerModule={ringSizerModule}\n            />\n        )\n    }\n\n    const renderFingerSizerEntry = (content, idx) => {\n        const fingerSizerModule = content?.fingerSizerModule\n        // OG-8800 finger sizer is gated by the ring sizer UI enhancements flag and only\n        // active on ring PDPs. If the flag is off or we're on a non-ring product type,\n        // the finger sizer module is ignored even if a moderator authors it in Amplience.\n        if (!enableRingSizerUiEnhancements || type !== 'ring' || !fingerSizerModule) return null\n        const contentKey = content?._meta?.deliveryId || fingerSizerModule?._meta?.deliveryId\n        // OG-8800 state matrix:\n        //   State 1 — moderator authored `ringSizerModule` alongside → collapsed CTA\n        //   State 2 — no `ringSizerModule` in the content asset → expanded inline\n        return hasRingSizerModule ? (\n            <FingerSizerEntry\n                key={`fingersizer-${contentKey}-${idx}`}\n                fingerSizerModule={fingerSizerModule}\n            />\n        ) : (\n            <FingerSizerFlow\n                key={`fingerflow-${contentKey}-${idx}`}\n                fingerSizerModule={fingerSizerModule}\n            />\n        )\n    }\n\n    return (\n        <Skeleton isLoaded={!isLoading} data-testid=\"drawer-body-skeleton\">\n            <Flex direction=\"column\" gap={flexGap}>\n                {drawerBodyContent.map((item, itemIdx) => (\n                    <Flex\n                        direction=\"column\"\n                        key={item._meta?.deliveryId || item.id || String(itemIdx)}\n                        gap={innerFlexGap}\n                        textStyle=\"bodySm\"\n                    >\n                        {item.contentFields.map((content, idx) => {\n                            const contentType = content?.type?.toLowerCase()\n                            switch (contentType) {\n                                case 'text':\n                                    return renderTextContent(content)\n                                case 'link':\n                                    return renderLinkContent(content)\n                                case 'paragraph':\n                                    return renderParagraphContent(content, idx)\n                                case 'image': {\n                                    // getImageSrc already bakes the width in (Amplience\n                                    // gets `&w=768`, Aprimo gets qWidth), so the src is\n                                    // passed through as-is here.\n                                    const imgSrc = getImageSrc(content)\n                                    return imgSrc ? (\n                                        <StaticContentImage\n                                            key={\n                                                content._meta?.deliveryId ||\n                                                content.id ||\n                                                content.key ||\n                                                String(idx)\n                                            }\n                                            src={imgSrc}\n                                            alt={content?.alttext}\n                                            data-auto=\"imgStaticContent\"\n                                            data-testid=\"content-image\"\n                                            mt={4}\n                                            {...(content?.key === 'imageWithBackground' && {\n                                                backgroundColor: 'black5'\n                                            })}\n                                        />\n                                    ) : null\n                                }\n                                case 'video':\n                                    return renderVideoContent(content, idx)\n                                case 'ringsizermodule':\n                                    return renderRingSizerEntry(content, idx)\n                                case 'fingersizermodule':\n                                    return renderFingerSizerEntry(content, idx)\n                                default:\n                                    return null\n                            }\n                        })}\n                    </Flex>\n                ))}\n            </Flex>\n        </Skeleton>\n    )\n}\nStaticContentBody.propTypes = {\n    drawerBodyContent: PropTypes.array,\n    isLoading: PropTypes.bool,\n    flexGap: PropTypes.number,\n    innerFlexGap: PropTypes.number,\n    type: PropTypes.string,\n    hasRingSizerModule: PropTypes.bool\n}\n\nStaticContentBody.displayName = 'StaticContentBody'\n\nexport default StaticContentBody\n","import {useCallback} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getPipelineUrl} from '../utils/url'\n\nexport const useNavigationCallback = (controllerPath) => {\n    const {site, locale} = useMultiSite()\n\n    return useCallback(() => {\n        window.location.href = getPipelineUrl(site, locale, controllerPath)\n    }, [site, locale, controllerPath])\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {usePDPSearchParams} from '@salesforce/retail-react-app/app/hooks/use-pdp-search-params'\n\n/*\n * This hook will return only the params that are also product attributes for the\n * passed in product object.\n * @param {Object} product - The product object\n * @param {boolean} isProductPartOfSet - Whether the product is part of a set\n * @param {boolean} isProductPartOfBundle - Whether the product is part of a bundle\n * @param {Object} controlledVariationValues - Optional controlled variation values (skips URL reading)\n */\nexport const useVariationParams = (\n    product = {},\n    isProductPartOfSet = false,\n    isProductPartOfBundle = false,\n    controlledVariationValues = null\n) => {\n    const {variationAttributes = [], variationValues = {}} = product\n\n    // Always call hooks first (hooks must be called unconditionally)\n    const [allParams, productParams] = usePDPSearchParams(product.id)\n    const params = isProductPartOfSet || isProductPartOfBundle ? productParams : allParams\n\n    // If controlled values are provided, use those instead of URL params\n    if (controlledVariationValues !== null) {\n        return variationAttributes\n            .map(({id}) => id)\n            .reduce((acc, key) => {\n                let value = controlledVariationValues[key] || variationValues?.[key]\n                return value ? {...acc, [key]: value} : acc\n            }, {})\n    }\n\n    // Using all the variation attribute id from the array generated below, get\n    // the value if there is one from the location search params and add it to the\n    // accumulator.\n    const variationParams = variationAttributes\n        .map(({id}) => id)\n        .reduce((acc, key) => {\n            let value = params.get(`${key}`) || variationValues?.[key]\n            return value ? {...acc, [key]: value} : acc\n        }, {})\n\n    return variationParams\n}\n","import React from 'react'\nimport {Grid as ChakraGrid} from '@chakra-ui/react'\nimport PropTypes from 'prop-types'\n\nexport const Grid = ({\n    children,\n    templateColumns = {base: 'repeat(6, 1fr)', xl: 'repeat(12, 1fr)'},\n    columnGap = {base: 2, md: 3},\n    mx = {base: 8, md: 12, xl: 16},\n    ...rest\n}) => {\n    return (\n        <ChakraGrid templateColumns={templateColumns} columnGap={columnGap} mx={mx} {...rest}>\n            {children}\n        </ChakraGrid>\n    )\n}\n\nGrid.propTypes = {\n    children: PropTypes.node,\n    templateColumns: PropTypes.object,\n    columnGap: PropTypes.object,\n    mx: PropTypes.oneOfType([PropTypes.object, PropTypes.number])\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React from 'react'\nimport {\n    Alert,\n    AlertIcon,\n    AlertTitle,\n    CloseButton,\n    Spacer,\n    useToast as useChakraToast\n} from '@salesforce/retail-react-app/app/components/shared/ui'\n\n/**\n * Display a toast message on the screen.\n * This is a custom hook to handle showing toasts in the app, preventing duplicate toasts and to add action elements\n * to toasts when required. It supports all props supported by Chakra toast.\n *\n * @param {string} title Message text to be displayed in toast\n * @param {string} id - id provided to the toast to avoid duplicate toast ids, use it if multiple toasts are needed\n * @param {string} status Semantic state of the toast - success | error | info | warning\n * @param {node} action Optional component to be displayed in the toast (eg. Button to allow user to perform action)\n * @param {string} position The placement of the toast on screen\n * @param {number} duration The delay before the toast hides (in milliseconds)\n */\nexport function useToast() {\n    const toast = useChakraToast()\n\n    return ({\n        title,\n        description,\n        status,\n        action,\n        position = 'top-right',\n        duration = 5000,\n        variant = 'subtle',\n        isClosable = true\n    }) => {\n        let toastConfig = {\n            title,\n            description,\n            status,\n            isClosable,\n            position,\n            duration,\n            variant\n        }\n\n        if (action) {\n            toastConfig = {\n                ...toastConfig,\n\n                render: ({onClose}) => (\n                    <Alert status={status} variant=\"subtle\" borderRadius=\"md\" py={3} width=\"sm\">\n                        <AlertIcon />\n                        <AlertTitle> {title} </AlertTitle>\n                        <Spacer />\n                        {action}\n                        <Spacer />\n                        <CloseButton onClick={onClose} />\n                    </Alert>\n                )\n            }\n        }\n        toast(toastConfig)\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {IconButton, useStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {CloseIcon} from 'pandora-shared-app/overrides/app/components/icons'\n\nexport const CloseButton = ({onClick, ...restProps}) => {\n    const styles = useStyleConfig('CloseButton')\n    const intl = useIntl()\n    return (\n        <IconButton\n            aria-label={intl.formatMessage({\n                defaultMessage: 'Close',\n                id: 'confirmation_modal.close.assistive_msg'\n            })}\n            variant=\"unstyled\"\n            sx={styles}\n            icon={<CloseIcon boxSize={5} />}\n            onClick={onClick}\n            {...restProps}\n        />\n    )\n}\n\nCloseButton.propTypes = {\n    onClick: PropTypes.func.isRequired\n}\n","import {createContext, useContext} from 'react'\n\nexport const CspNonceContext = createContext('')\n\nexport const useCspNonce = () => useContext(CspNonceContext)\n","import {\n    Stack,\n    Button,\n    useStyleConfig,\n    useBreakpointValue\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport React, {useMemo} from 'react'\nimport {useNavigationCallback} from '../../../../../hooks/use-navigation-callback'\nimport {useViewBagLoader} from '../../../../../hooks/use-view-bag-loader'\nimport ViewBagButtonContent from '../../../../view-bag-button-content'\nimport {CONTROLLER_PATH} from '../../../../_app/partials/constants'\nimport {usePreferences} from '../../../../../hooks/index'\nimport {PREFERENCE_KEYS} from '../../../../../api_keys/preference-keys'\nimport {LD_KEYS} from '../../../../../api_keys/ld-keys'\nimport {useVariant} from '../../../../../hooks/use-variant'\n\nconst MiniCartCallToAction = ({totalCount, darkTheme}) => {\n    const styles = useStyleConfig('MiniCart')\n    const onViewCartClick = useNavigationCallback(CONTROLLER_PATH.CART_SHOW)\n    const onCheckoutClick = useNavigationCallback(CONTROLLER_PATH.CHECKOUT_BEGIN)\n    const {data: miniCartCheckoutPreference} = usePreferences(PREFERENCE_KEYS.checkoutButtonDisable)\n\n    const enableViewBagLottieLoader = useVariant(LD_KEYS.enableViewBagLottieLoader, false)\n    const isDesktop = useBreakpointValue({base: false, lg: true})\n\n    const showLottie = enableViewBagLottieLoader && isDesktop\n\n    const {isViewBagLoading, handleViewBagClick} = useViewBagLoader({\n        enabled: showLottie,\n        onViewCart: onViewCartClick\n    })\n\n    const memoizedMiniCartData = useMemo(\n        () => miniCartCheckoutPreference,\n        [miniCartCheckoutPreference]\n    )\n    const isDisableCheckout = memoizedMiniCartData?.[0]?.preferenceValue?.[0] ?? true\n\n    const intl = useIntl()\n\n    return (\n        <Stack spacing=\"4\" direction=\"row\" data-testid=\"mini-cart-cta\">\n            <Button\n                onClick={handleViewBagClick}\n                width=\"100%\"\n                variant={darkTheme ? 'emphasized' : 'outline'}\n                border={`1px solid ${darkTheme ? '#504c49' : '#E6E6E6'}`}\n                flexWrap=\"wrap\"\n                data-testid=\"mini-cart-cta-cart\"\n                data-cs-override-id=\"mini_cart_view_bag\"\n            >\n                <ViewBagButtonContent\n                    isLoading={showLottie && isViewBagLoading}\n                    darkTheme={darkTheme}\n                    totalCount={totalCount}\n                    textStyles={styles.outlineButtonText}\n                />\n            </Button>\n\n            {!isDisableCheckout && (\n                <Button\n                    onClick={onCheckoutClick}\n                    width=\"100%\"\n                    variant={darkTheme ? 'outline' : 'emphasized'}\n                    {...(darkTheme && {bg: 'white'})}\n                    data-testid=\"mini-cart-cta-checkout\"\n                    data-cs-override-id=\"mini_cart_checkout\"\n                >\n                    {intl.formatMessage({\n                        defaultMessage: 'Checkout',\n                        id: 'add_to_cart_modal.link.checkout'\n                    })}\n                </Button>\n            )}\n        </Stack>\n    )\n}\n\nMiniCartCallToAction.propTypes = {\n    totalCount: PropTypes.number,\n    darkTheme: PropTypes.bool\n}\n\nexport default MiniCartCallToAction\n","import {useEffect, useMemo, useState} from 'react'\n\nimport {\n    useCustomProductSearch,\n    useCustomProducts\n} from 'pandora-shared-app/overrides/app/hooks/use-fetch-grid-content'\nimport {usePromotionalPricing} from 'pandora-shared-app/overrides/app/hooks/use-promotional-pricing'\nimport {useVariantPromotionalPricing} from 'pandora-shared-app/overrides/app/hooks/use-variant-promotional-pricing'\nimport {useProductsPrice} from 'pandora-shared-app/overrides/app/hooks/use-products-price'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {processProductIDs, transformProduct} from '../utils'\n\nexport const UseProductCarouselData = (productConfig, {enabled = true} = {}) => {\n    const {productIDs, categoryID, limit} = productConfig\n\n    const [products, setProducts] = useState([])\n    const [isLoading, setIsLoading] = useState(true)\n\n    const processedIDs = productIDs ? processProductIDs(productIDs) : []\n    const fetchProductById = Boolean(productIDs)\n\n    const {data: productData, error: productError} = UseCustomProducts(\n        processedIDs,\n        enabled && fetchProductById\n    )\n    const enableNewDolContract = useVariant(LD_KEYS.enableNewDolContract, false)\n\n    // The by-ID branch fully supersedes search results, so skip the search request\n    // entirely when product IDs are configured.\n    const {data: productSearchResult, error: searchError} = UseCustomProductSearch(\n        limit,\n        categoryID,\n        enabled && !fetchProductById,\n        enableNewDolContract\n    )\n\n    const enableCarouselPromotionalPricing = useVariant(\n        LD_KEYS.enableProductCarouselPromotionalPricing,\n        false\n    )\n\n    // Legacy path: search-result-only promotional pricing via Bloomreach-gated hook.\n    // Still wired when the flag is off so existing markets keep current behaviour.\n    const legacyHits = enableCarouselPromotionalPricing ? [] : productSearchResult?.hits || []\n    const legacyPromotionalPricing = usePromotionalPricing(legacyHits)\n    const legacyVariantPromotionalPricing = useVariantPromotionalPricing(legacyHits)\n\n    // New path: direct DOL fetch by product IDs for both branches (by-ID and search).\n    const carouselProductIds = useMemo(() => {\n        if (!enableCarouselPromotionalPricing) return []\n        if (fetchProductById) return processedIDs\n        return (productSearchResult?.hits || []).map((h) => h?.productId).filter(Boolean)\n    }, [\n        enableCarouselPromotionalPricing,\n        fetchProductById,\n        processedIDs,\n        productSearchResult?.hits\n    ])\n    const resolvedPrices = useResolvedPrices(carouselProductIds)\n\n    // Hydrate the by-IDs branch with DOL price data so each transformed product\n    // carries c_price (with memberPrice when available)\n    const enablePdpPricingAndMemberDisplay = useVariant(\n        LD_KEYS.enablePdpPricingAndMemberDisplay,\n        false\n    )\n    const {pricesData} = useProductsPrice(\n        fetchProductById && enablePdpPricingAndMemberDisplay ? processedIDs : []\n    )\n\n    useEffect(() => {\n        const error = productError || searchError\n        if (fetchProductById && productData) {\n            const updatedProducts = productData?.data?.map((product) => {\n                const transformed = transformProduct(product)\n                transformed.hasProductPromotions = enableCarouselPromotionalPricing\n\n                const dolPrice = pricesData?.[product?.id || transformed?.productId]\n                return dolPrice ? {...transformed, c_price: dolPrice} : transformed\n            })\n            setProducts(updatedProducts)\n            setIsLoading(false)\n        } else if (categoryID && productSearchResult?.hits) {\n            setProducts(productSearchResult.hits)\n            setIsLoading(false)\n        } else if (error) {\n            setIsLoading(false)\n        } else {\n            setIsLoading(true)\n        }\n    }, [\n        fetchProductById,\n        productData,\n        categoryID,\n        productSearchResult,\n        productError,\n        searchError,\n        enableCarouselPromotionalPricing,\n        pricesData\n    ])\n\n    const promotionalPricing = enableCarouselPromotionalPricing\n        ? resolvedPrices\n        : legacyPromotionalPricing\n\n    const variantPromotionalPricing = enableCarouselPromotionalPricing\n        ? undefined\n        : legacyVariantPromotionalPricing\n\n    return {\n        products,\n        isLoading,\n        promotionalPricing,\n        variantPromotionalPricing,\n        error: productError || searchError\n    }\n}\n\n/**\n * Direct DOL price lookup, returning `{promotionalPrices, isLoading}` shaped like\n * `usePromotionalPricing` so consumers (`getEnhancedPrice`) are interchangeable.\n * Bypasses the Bloomreach indexer-flag filter — caller is responsible for stamping\n * `hasProductPromotions: true` on products that should hit the enhanced branch,\n * and for passing `[]` (or omitting IDs) when the feature is disabled.\n */\nexport const useResolvedPrices = (productIds = []) => {\n    const {pricesData, isPricesDataFetching} = useProductsPrice(productIds)\n\n    const promotionalPrices = useMemo(() => {\n        if (!pricesData) return {}\n        return Object.entries(pricesData).reduce((acc, [id, p]) => {\n            acc[id] = {\n                salesPrice: p?.sales?.value,\n                listPrice: p?.list?.value,\n                currency: p?.currency,\n                promotions: p?.appliedPromotions || [],\n                lastLowestPrice: p?.lastLowestPrice,\n                type: p?.type,\n                min: p?.min,\n                max: p?.max,\n                memberPrice: p?.memberPrice\n            }\n            return acc\n        }, {})\n    }, [pricesData])\n\n    return {promotionalPrices, isLoading: isPricesDataFetching}\n}\n\nconst UseCustomProducts = (processedIDs, fetchProductById) => {\n    return useCustomProducts(processedIDs, fetchProductById)\n}\n\nconst UseCustomProductSearch = (\n    limit,\n    categoryID,\n    enabled = true,\n    enableNewDolContract = false,\n    isCgidManual = !!categoryID,\n    urlSegment = categoryID\n) => {\n    return useCustomProductSearch(\n        {limit, isCgidManual, urlSegment, isCmsOwnedSearch: isCgidManual},\n        [],\n        categoryID,\n        enableNewDolContract,\n        false,\n        enabled\n    )\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"livechat\",\n  \"use\": \"livechat-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"livechat\\\">\\n            <path d=\\\"M5.50195 13.3477C5.74967 13.3477 5.97259 13.4991 6.06348 13.7295L7.06934 16.2812L9.62207 17.2881C9.85248 17.379 10.0039 17.6019 10.0039 17.8496C10.0037 18.0971 9.85232 18.3193 9.62207 18.4102L7.06934 19.417L6.06348 21.9688C5.97259 22.1992 5.74967 22.3506 5.50195 22.3506C5.2543 22.3505 5.03227 22.1991 4.94141 21.9688L3.93457 19.417L1.38184 18.4102C1.15173 18.3192 1.00019 18.097 1 17.8496C1 17.602 1.15157 17.3791 1.38184 17.2881L3.93457 16.2812L4.94141 13.7295C5.03227 13.4991 5.2543 13.3477 5.50195 13.3477ZM14.5986 1.65039C14.8591 1.65039 15.0904 1.81809 15.1719 2.06543L17.0068 7.64453L22.585 9.47754C22.8323 9.55902 23 9.79136 23 10.0518C22.9998 10.312 22.8321 10.5435 22.585 10.625L17.0068 12.459L15.1719 18.0371C15.0904 18.2845 14.8591 18.4521 14.5986 18.4521C14.3384 18.4519 14.1077 18.2844 14.0264 18.0371L12.1914 12.459L6.61328 10.625C6.3661 10.5436 6.1994 10.312 6.19922 10.0518C6.19924 9.79135 6.36597 9.55901 6.61328 9.47754L12.1914 7.64453L14.0264 2.06543C14.1078 1.81825 14.3384 1.65062 14.5986 1.65039Z\\\" fill=\\\"white\\\" />\\n          </symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"truck-pictogram\",\n  \"use\": \"truck-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol viewBox=\\\"0 0 64 64\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"truck-pictogram\\\">\\n    <path d=\\\"M4 10.001V26.001H5V11.001H32.717C34.2082 11.001 35.417 12.2098 35.417 13.701V30.0271C35.417 31.1173 36.3008 32.0011 37.391 32.0011H54V31.0011H37.391C36.8531 31.0011 36.417 30.565 36.417 30.0271V13.701C36.417 11.6575 34.7605 10.001 32.717 10.001H4Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M45.8661 47.6076C45.8661 46.3139 46.9149 45.2651 48.2086 45.2651C49.5023 45.2651 50.551 46.3139 50.551 47.6076C50.551 48.9012 49.5023 49.95 48.2086 49.95C46.9149 49.95 45.8661 48.9012 45.8661 47.6076ZM48.2086 46.2651C47.4672 46.2651 46.8661 46.8662 46.8661 47.6076C46.8661 48.349 47.4672 48.95 48.2086 48.95C48.95 48.95 49.551 48.349 49.551 47.6076C49.551 46.8662 48.95 46.2651 48.2086 46.2651Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M43.4853 10.001H40V11.001H43.4853C43.9636 11.001 44.4133 11.2291 44.6958 11.6151L57.8612 29.6044C58.6011 30.6155 59 31.8359 59 33.0888V46.001H54.4007C53.688 43.2464 51.1858 41.2119 48.2084 41.2119C44.6762 41.2119 41.8127 44.0754 41.8127 47.6077C41.8127 51.1399 44.6762 54.0034 48.2084 54.0034C51.7407 54.0034 54.6042 51.1399 54.6042 47.6077C54.6042 47.403 54.5946 47.2007 54.5758 47.001H60V33.0888C60 31.6235 59.5335 30.1963 58.6681 29.0138L45.5027 11.0245C45.0319 10.3812 44.2825 10.001 43.4853 10.001ZM48.2084 42.2119C45.2284 42.2119 42.8127 44.6277 42.8127 47.6077C42.8127 50.5876 45.2284 53.0034 48.2084 53.0034C51.1884 53.0034 53.6042 50.5876 53.6042 47.6077C53.6042 44.6277 51.1884 42.2119 48.2084 42.2119Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M15.782 45.2656C14.4883 45.2656 13.4396 46.3144 13.4396 47.608C13.4396 48.9017 14.4883 49.9505 15.782 49.9505C17.0757 49.9505 18.1244 48.9017 18.1244 47.608C18.1244 46.3144 17.0757 45.2656 15.782 45.2656ZM14.4396 47.608C14.4396 46.8666 15.0406 46.2656 15.782 46.2656C16.5234 46.2656 17.1244 46.8666 17.1244 47.608C17.1244 48.3494 16.5234 48.9505 15.782 48.9505C15.0406 48.9505 14.4396 48.3494 14.4396 47.608Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 31.001V47.0009H9.41452C9.39572 47.2006 9.38611 47.403 9.38611 47.6077C9.38611 51.1399 12.2496 54.0034 15.7818 54.0034C19.3141 54.0034 22.1776 51.1399 22.1776 47.6077C22.1776 47.403 22.168 47.2006 22.1492 47.0009H37V46.0009H22V46.1047C21.3239 43.2976 18.7965 41.2119 15.7818 41.2119C12.8045 41.2119 10.3023 43.2463 9.58963 46.0009H5V32.001H31V31.001H4ZM15.7818 42.2119C12.8019 42.2119 10.3861 44.6277 10.3861 47.6077C10.3861 50.5876 12.8019 53.0034 15.7818 53.0034C18.7618 53.0034 21.1776 50.5876 21.1776 47.6077C21.1776 44.6277 18.7618 42.2119 15.7818 42.2119Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Link as NavLink} from '../../nav/link'\nimport useNavigation from '@salesforce/retail-react-app/app/hooks/use-navigation'\n\nconst addEmphasizedParam = (url, isEmphasized) => {\n    if (!isEmphasized) return url\n    const separator = url.includes('?') ? '&' : '?'\n    return `${url}${separator}emphasized=true`\n}\n\nconst PdpLink = ({\n    styles = {},\n    activeProduct,\n    handleClick = () => {},\n    renderProductContent = () => {},\n    rest,\n    children,\n    isProductEmphasised = false,\n    cgid,\n    ...otherProps\n}) => {\n    const navigate = useNavigation()\n\n    const urlObj = new URL(activeProduct.productUrl, 'https://example.com')\n    const pathSegments = urlObj.pathname.split('/').filter(Boolean)\n    const queryParams = urlObj.search\n\n    let noLocaleSlugPath = '/' + pathSegments?.slice(1).join('/') + queryParams\n    if (cgid) {\n        noLocaleSlugPath = `${noLocaleSlugPath}#cgid=${cgid}`\n    }\n\n    const navigationPath = addEmphasizedParam(noLocaleSlugPath, isProductEmphasised)\n\n    const handleSpaNavigationClick = (e) => {\n        e.preventDefault()\n        handleClick(e)\n        navigate(navigationPath)\n    }\n\n    return (\n        <NavLink\n            {...styles.container}\n            {...rest}\n            {...otherProps}\n            onClick={handleSpaNavigationClick}\n            to={navigationPath}\n        >\n            {renderProductContent && renderProductContent()}\n            {children}\n        </NavLink>\n    )\n}\n\nPdpLink.propTypes = {\n    pdpVariant: PropTypes.string,\n    styles: PropTypes.object,\n    rest: PropTypes.object,\n    activeProduct: PropTypes.shape({\n        productUrl: PropTypes.string.isRequired\n    }).isRequired,\n    handleClick: PropTypes.func,\n    renderProductContent: PropTypes.func,\n    children: PropTypes.node,\n    isProductEmphasised: PropTypes.bool,\n    cgid: PropTypes.string\n}\n\nexport default PdpLink\n","export const SequentialSelectorStyles = {\n    // Image tabs\n    img: {\n        width: '18',\n        height: '18',\n        borderRadius: '50%',\n        backgroundColor: 'black5',\n        backgroundPosition: '50%',\n        backgroundSize: 'cover',\n        backgroundRepeat: 'no-repeat',\n        border: '1px solid',\n        borderColor: 'blackBubbleBorder'\n    },\n\n    itemContainer: {\n        display: 'flex',\n        alignItems: 'center',\n        gap: '3',\n        pl: [8, 8, 12, 16],\n        pb: '8',\n        borderBottom: '1px solid',\n        borderColor: 'black4',\n        overflowX: 'auto',\n        scrollSnapType: 'x mandatory',\n        scrollBehavior: 'smooth',\n\n        sx: {\n            '& > *': {\n                scrollSnapAlign: 'center',\n                flexShrink: 0\n            },\n            scrollbarWidth: 'none',\n            '&::-webkit-scrollbar': {\n                display: 'none'\n            }\n        }\n    },\n\n    imageContainer: {\n        display: 'flex',\n        alignItems: 'center',\n        gap: '2',\n        background: 'none',\n        padding: '0',\n        height: '100%',\n        textTransform: 'none'\n    },\n\n    // Size options\n    sizesContainer: {\n        sx: {\n            paddingX: [8, 8, 12, 16],\n            paddingY: '8'\n        }\n    },\n\n    sizeGuideButton: {\n        border: 'none',\n        marginBottom: '8',\n        padding: '0',\n        justifyContent: 'space-between',\n        _hover: {\n            border: 'none'\n        }\n    },\n\n    // Main size selector entry point button\n    multiSizeSelectorButton: {\n        marginBottom: '6',\n        justifyContent: 'space-between'\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {HStack, Text, VStack, Img} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {Button} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {SequentialSelectorStyles} from '../sequential-selector-styles'\nimport {useIntl} from 'react-intl'\n\nconst ImageTabBar = ({products, activeIndex, onTabClick}) => {\n    const {formatMessage} = useIntl()\n\n    return (\n        <HStack {...SequentialSelectorStyles.itemContainer}>\n            {products.map((product, index) => {\n                const imageGroup = product.imageGroups?.find(\n                    (img) => img.viewType === 'main_rect_center'\n                )\n                const image = imageGroup?.images?.[0]\n\n                const isActive = index === activeIndex\n\n                return (\n                    <Button\n                        key={product.productId + '-' + index}\n                        onClick={() => onTabClick(index)}\n                        aria-selected={isActive}\n                        aria-label={`Select product ${index + 1}`}\n                        variant=\"ghost\"\n                        opacity={isActive ? 1 : 0.3}\n                        _focusVisible={{boxShadow: 'outline'}}\n                        {...SequentialSelectorStyles.imageContainer}\n                    >\n                        <VStack spacing={1}>\n                            <Img\n                                {...SequentialSelectorStyles.img}\n                                border={isActive ? '1px solid' : 'none'}\n                                src={image?.disBaseLink}\n                                alt={image?.alt}\n                                data-auto={`bundleSetProductBubble${index}`}\n                            />\n                            <Text fontSize=\"xs\">\n                                {formatMessage(\n                                    {\n                                        id: `product_view.child_product.sequence.number`,\n                                        defaultMessage: 'Item {itemNumber}'\n                                    },\n                                    {\n                                        itemNumber: index + 1\n                                    }\n                                )}\n                            </Text>\n                        </VStack>\n                    </Button>\n                )\n            })}\n        </HStack>\n    )\n}\n\nImageTabBar.propTypes = {\n    products: PropTypes.array.isRequired,\n    activeIndex: PropTypes.number.isRequired,\n    onTabClick: PropTypes.func.isRequired\n}\n\nexport default ImageTabBar\n","import React, {useState, useEffect, useLayoutEffect, useCallback, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport SizeOptions from 'product-details/overrides/app/components/size-options/index'\nimport {Box, Button, Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport ImageTabBar from './partials/image-tab-bar'\nimport {ChevronRightIcon, StaticRulerIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {SequentialSelectorStyles} from './sequential-selector-styles'\nimport SizeGuideDrawer from '../size-guide'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {\n    filterSizeTable,\n    getMeasurementOptions,\n    getRegionalSizeOptions\n} from '../size-selector/utils'\nimport {motion, AnimatePresence} from 'framer-motion'\nimport {RegionalSize} from '../size-selector/partials/regional-sizes'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getFavoriteStore} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {normalizeSizeTable} from 'pandora-shared-app/overrides/app/utils/transform-product-scapi-dol'\n\nconst SequentialSizeSelectorDrawer = ({\n    products,\n    setOpenDrawer,\n    onConfirmMultiSizeSelection,\n    combinedSelectedSizesLabel,\n    isClickAndCollect,\n    openBuyBoxDrawer,\n    isProductPartOfBundle,\n    isProductPartOfSet,\n    hideFindYourSizeButton = false,\n    resetShowStorePickupFlag,\n    openedFromAtbFlow,\n    showStorePickupIfNoSizeSelected,\n    disableOOSVariants = null,\n    onDrawerClose,\n    isOpen: isOpenProp,\n    onRequestClose,\n    isNotifyMe = false,\n    onNotifyMeClick\n}) => {\n    const intl = useIntl()\n    const {locale} = useMultiSite()\n    const [showSizeSelectWarning, setShowSizeSelectWarning] = useState(false)\n    const [isDrawerOpenInternal, setIsDrawerOpenInternal] = useState(false)\n    const [isSizeGuideActive, setIsSizeGuideActive] = useState(false)\n    const [activeIndex, setActiveIndex] = useState(0)\n    const [selectedSizes, setSelectedSizes] = useState({})\n    const [isSizeGuideDrawerOpen, setIsSizeGuideDrawerOpen] = useState(false)\n\n    const isControlled = isOpenProp !== undefined\n    const isDrawerOpen = isControlled ? isOpenProp && !isSizeGuideActive : isDrawerOpenInternal\n\n    const closeDrawer = useCallback(() => {\n        if (isControlled) {\n            onRequestClose?.()\n        } else {\n            setIsDrawerOpenInternal(false)\n        }\n    }, [isControlled, onRequestClose])\n\n    useEffect(() => {\n        setSelectedSizes({})\n        setActiveIndex(0)\n    }, [products.map((product) => product.id).join('-')])\n\n    // Child products of a set/bundle carry the raw SCAPI c_sizeTable whose type\n    // ('Rings'/'Bracelets'/'Necklaces') must be normalized ('ring'/'bracelet'/'necklace')\n    // for size guide content keys, size table config and regional size lookups.\n    const activeSizeTable = normalizeSizeTable(products[activeIndex]?.c_sizeTable)\n    const activeSizeTableId = products[activeIndex]?.c_sizeTableId\n    const isUsOrCaSite = locale?.id === 'en-US' || locale?.id === 'en-CA'\n\n    const {favStoreId: isSizeOrderableForFavStore} = getFavoriteStore()\n\n    // Disable OOS variants only for Buy From Tile (when disableOOSVariants prop is explicitly passed)\n    // When disableOOSVariants is null (PDP), never disable OOS - keep existing behavior\n    // When disableOOSVariants is passed (Buy From Tile), use the value directly\n    // Per-child C&C eligibility is handled by the existing C&C flow, not by disabling buttons\n    const disableOOSForActiveProduct = disableOOSVariants === null ? false : disableOOSVariants\n\n    const enableNotifyMe = useVariant(LD_KEYS.enablePdpNotifyMe, true)\n    const isNotifyMeForActiveProduct = enableNotifyMe && isNotifyMe && !isClickAndCollect\n\n    const getIsNotifyMeForSize = useCallback(\n        () => isNotifyMeForActiveProduct,\n        [isNotifyMeForActiveProduct]\n    )\n\n    const regionalSizeOptions = getRegionalSizeOptions(\n        activeSizeTable?.type,\n        Object.values(activeSizeTable?.sizes || {})[0]?.names,\n        intl\n    )\n    const sizeTypeOptions = getMeasurementOptions(\n        activeSizeTable?.type,\n        Object.values(activeSizeTable?.sizes || {})[0]?.measurements,\n        intl\n    )\n\n    // Temporary flag: remove the legacy path (and this flag) once the derived-state\n    // fix is verified in production.\n    const enableRegionalSizeDerivedState = useVariant(\n        LD_KEYS.enablePdpRegionalSizeDerivedState,\n        false\n    )\n\n    // Legacy behavior: option objects frozen in state from the item active at mount,\n    // never re-derived when activeIndex moves to an item with different options.\n    const [legacyRegionalSize, setLegacyRegionalSize] = useState(\n        regionalSizeOptions.find((el) =>\n            isUsOrCaSite ? el.key === 'imperial' : el.key === 'metric'\n        )\n    )\n    const [legacySizeType, setLegacySizeType] = useState(sizeTypeOptions[0])\n\n    // Fixed behavior: options differ per set item (a necklace has none, a ring has\n    // two), so store only the user's explicit picks by key and re-resolve them\n    // against the active item's options on every render — a frozen useState initial\n    // value from item #0 would be stale (or undefined) on other item types.\n    const [userRegionalSizeKey, setUserRegionalSizeKey] = useState(null)\n    const [userSizeTypeKey, setUserSizeTypeKey] = useState(null)\n\n    const selectedRegionalSize = enableRegionalSizeDerivedState\n        ? regionalSizeOptions.find((el) => el.key === userRegionalSizeKey) ??\n          regionalSizeOptions.find((el) =>\n              isUsOrCaSite ? el.key === 'imperial' : el.key === 'metric'\n          )\n        : legacyRegionalSize\n    const selectedSizeType = enableRegionalSizeDerivedState\n        ? sizeTypeOptions.find((el) => el.key === userSizeTypeKey) ?? sizeTypeOptions[0]\n        : legacySizeType\n    const enableSizeGuide = useVariant(LD_KEYS.enablePdpSizeGuide, true)\n    const enablePdpSetBundleSizeGuide = useVariant(LD_KEYS.enablePdpSetBundleSizeGuide, false)\n    const enablePdpRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const ringSizeGuideButtonSx =\n        enablePdpRingSizerUiEnhancements && activeSizeTable?.type === 'ring'\n            ? {textTransform: 'none'}\n            : undefined\n\n    const sizeGuideMessage =\n        enablePdpRingSizerUiEnhancements && activeSizeTable?.type === 'ring'\n            ? {defaultMessage: 'Need sizing help?', id: 'product_view.button.size_guide_ring'}\n            : {defaultMessage: 'Size guide & tips', id: 'product_view.button.size_guide'}\n\n    const isLastStep = activeIndex === products.length - 1\n    const activeProduct = products[activeIndex]\n    const totalItems = products.length\n\n    // To scroll to the buttom on last size selection\n    const confirmButtonRef = useRef(null)\n\n    const handleSizeSelect = useCallback(\n        (selectedSize) => {\n            const matchedVariant = activeProduct.variants.find(\n                (v) => v.variationValues.size === selectedSize.value\n            )\n\n            setSelectedSizes((prev) => ({\n                ...prev,\n                [activeProduct.id]: {\n                    size: selectedSize,\n                    variant: matchedVariant\n                }\n            }))\n\n            if (activeIndex < totalItems - 1) {\n                setActiveIndex(activeIndex + 1)\n                setShowSizeSelectWarning(false)\n            }\n        },\n        [activeProduct, activeIndex, totalItems]\n    )\n\n    // Handle OOS size selection — notify me or C&C flow\n    const handleOutOfStockSizeSelection = useCallback(\n        (selectedName) => {\n            const selectedSize = activeProduct?.variationAttributes?.[0]?.values.find(\n                (size) => size.name === selectedName.name\n            )\n\n            if (selectedSize) {\n                const matchedVariant = activeProduct.variants?.find(\n                    (v) => v.variationValues?.size === selectedSize.value\n                )\n\n                // If notify me is enabled, open the notify me modal for this variant\n                if (isNotifyMeForActiveProduct && onNotifyMeClick) {\n                    onNotifyMeClick(matchedVariant || activeProduct)\n                    return\n                }\n\n                setSelectedSizes((prev) => ({\n                    ...prev,\n                    [activeProduct.id]: {\n                        size: selectedSize,\n                        variant: matchedVariant\n                    }\n                }))\n\n                if (activeIndex < totalItems - 1) {\n                    setActiveIndex(activeIndex + 1)\n                    setShowSizeSelectWarning(false)\n                }\n            }\n        },\n        [activeProduct, activeIndex, totalItems, isNotifyMeForActiveProduct, onNotifyMeClick]\n    )\n\n    const handleChangeRegionalSize = (value) => {\n        if (enableRegionalSizeDerivedState) {\n            setUserRegionalSizeKey(value.key)\n        } else {\n            setLegacyRegionalSize(value)\n        }\n    }\n\n    const handleChangeSelectedTypeSize = (value) => {\n        if (enableRegionalSizeDerivedState) {\n            setUserSizeTypeKey(value.key)\n        } else {\n            setLegacySizeType(value)\n        }\n    }\n\n    const handleConfirmSizeSelection = () => {\n        if (Object.keys(selectedSizes).length === products.length) {\n            const anyOosSelected = Object.values(selectedSizes).some(\n                (selection) => selection.size && !selection.size.orderable\n            )\n\n            // Close drawer immediately\n            closeDrawer()\n\n            // Determine if we should open BuyBox for C&C\n            // Open C&C when any size is OOS online for bundle/set products\n            const shouldOpenBuyBoxForOOS =\n                anyOosSelected &&\n                (isProductPartOfBundle || isProductPartOfSet) &&\n                isClickAndCollect &&\n                !isSizeOrderableForFavStore\n\n            // Capture these flags BEFORE any operations that might change them\n            const isStoreLookupFlow = showStorePickupIfNoSizeSelected?.current\n            const wasFromAtbFlow = openedFromAtbFlow?.current === true\n\n            // Call the callback with flag to open BuyBox (supports both PDP and buy-from-tile)\n            // Parent will update productIds and then open drawer if needed\n            onConfirmMultiSizeSelection(selectedSizes, shouldOpenBuyBoxForOOS)\n\n            // For PDP: Open BuyBox directly if openBuyBoxDrawer function is provided\n            // Trigger for CnC for bundle product when favorite store is not orderable\n            if (\n                openBuyBoxDrawer &&\n                anyOosSelected &&\n                isProductPartOfBundle &&\n                isClickAndCollect &&\n                !isSizeOrderableForFavStore\n            ) {\n                // Only set ATB flag if user initiated from ATB flow AND not in \"Select a Store\" flow\n                // This ensures auto-ATB only happens when user clicked \"Add to Bag\" first\n                const shouldSetAtbFlag = wasFromAtbFlow && !isStoreLookupFlow\n                openBuyBoxDrawer(shouldSetAtbFlag)\n            }\n        }\n    }\n\n    const handleDrawerClose = () => {\n        setIsSizeGuideActive(false)\n        setIsSizeGuideDrawerOpen(false)\n        closeDrawer()\n        resetShowStorePickupFlag?.()\n        // Notify parent component that drawer was closed\n        if (onDrawerClose) {\n            onDrawerClose()\n        }\n    }\n\n    const handleDrawerBack = () => {\n        setIsSizeGuideActive(false)\n        setIsSizeGuideDrawerOpen(false)\n    }\n\n    const onTabClick = useCallback(\n        (index) => {\n            // No clicking ahead without selecting intermediate sizes\n            if (index > activeIndex) {\n                const missingSizeProduct = products\n                    .slice(activeIndex, index)\n                    .find((product) => !selectedSizes[product.id])\n\n                if (missingSizeProduct) {\n                    setShowSizeSelectWarning(true)\n                    return\n                }\n            }\n\n            setShowSizeSelectWarning(false)\n            setActiveIndex(index)\n        },\n        [activeIndex, products, selectedSizes]\n    )\n\n    // Use useLayoutEffect to ensure the function is set immediately before first paint\n    // This prevents the issue where first click doesn't work\n    useLayoutEffect(() => {\n        if (setOpenDrawer) {\n            setOpenDrawer(() => () => setIsDrawerOpenInternal(true))\n        }\n    }, [setOpenDrawer])\n\n    useEffect(() => {\n        if (isLastStep && selectedSizes[activeProduct?.id]) {\n            const timeoutId = setTimeout(() => {\n                if (confirmButtonRef.current) {\n                    confirmButtonRef.current.scrollIntoView({\n                        behavior: 'smooth',\n                        block: 'center'\n                    })\n                }\n            }, 100)\n\n            return () => clearTimeout(timeoutId)\n        }\n    }, [isLastStep, selectedSizes, activeProduct?.id])\n\n    return (\n        <>\n            {!hideFindYourSizeButton && (\n                <Button\n                    width=\"full\"\n                    key=\"size-button\"\n                    onClick={() => {\n                        // Reset ATB flow flag when opening drawer directly (not from ATB)\n                        // This ensures auto-add only triggers when user clicked \"Add to Bag\" first\n                        if (openedFromAtbFlow) {\n                            openedFromAtbFlow.current = false\n                        }\n                        setIsDrawerOpenInternal(true)\n                    }}\n                    variant=\"outline\"\n                    rightIcon={<ChevronRightIcon w={5} h={5} name=\"chevron-right\" />}\n                    data-testid=\"findYourSizeButton\"\n                    data-cs-override-id=\"PDP_select_size\"\n                    {...SequentialSelectorStyles.multiSizeSelectorButton}\n                >\n                    {combinedSelectedSizesLabel\n                        ? intl.formatMessage({\n                              defaultMessage: 'size',\n                              id: 'product_view.button.selected_size'\n                          }) +\n                          ' ' +\n                          combinedSelectedSizesLabel\n                        : intl.formatMessage({\n                              defaultMessage: 'Find your sizes',\n                              id: 'product_view.button.find_multi_sizes'\n                          })}\n                </Button>\n            )}\n            <FullDrawerSheet\n                isOpen={isDrawerOpen}\n                onClose={handleDrawerClose}\n                headerText={intl.formatMessage({\n                    defaultMessage: 'Choose a size',\n                    id: 'product_view.heading.choose_size'\n                })}\n                sheetType=\"bundle_size_selector\"\n                bodyPadding={0}\n                bodyContent={\n                    <>\n                        <ImageTabBar\n                            products={products}\n                            activeIndex={activeIndex}\n                            onTabClick={onTabClick}\n                        />\n\n                        <AnimatePresence mode=\"wait\">\n                            <motion.div\n                                key={activeProduct.id}\n                                initial={{opacity: 0, x: 10}}\n                                animate={{opacity: 1, x: 0}}\n                                exit={{opacity: 0, x: -10}}\n                                transition={{duration: 0.125, ease: 'easeInOut'}}\n                            >\n                                {showSizeSelectWarning && (\n                                    <Text\n                                        textStyle=\"caption\"\n                                        color=\"red60\"\n                                        px={16}\n                                        pt={7}\n                                        data-testid=\"sizeSelectWarning\"\n                                    >\n                                        {intl.formatMessage({\n                                            defaultMessage:\n                                                'Please select a size before proceeding.',\n                                            id: 'product_view.label.select_size_warning'\n                                        })}\n                                    </Text>\n                                )}\n\n                                {activeProduct && (\n                                    <Box\n                                        {...SequentialSelectorStyles.sizesContainer}\n                                        data-testid={`productSizeOptions-${activeProduct.id}`}\n                                    >\n                                        {enablePdpSetBundleSizeGuide &&\n                                            enableSizeGuide &&\n                                            activeSizeTableId &&\n                                            activeSizeTable?.type && (\n                                                <Button\n                                                    width=\"full\"\n                                                    key=\"size-guide-button\"\n                                                    onClick={() => {\n                                                        setIsSizeGuideDrawerOpen(true)\n                                                        setIsSizeGuideActive(true)\n                                                    }}\n                                                    variant=\"outline\"\n                                                    rightIcon={\n                                                        <ChevronRightIcon\n                                                            w={5}\n                                                            h={5}\n                                                            name=\"chevron-right\"\n                                                        />\n                                                    }\n                                                    data-testid=\"sizeGuideButton\"\n                                                    data-cs-override-id=\"PDP_sizes_overlay_guide\"\n                                                    {...SequentialSelectorStyles.sizeGuideButton}\n                                                    sx={ringSizeGuideButtonSx}\n                                                >\n                                                    <StaticRulerIcon\n                                                        boxSize={'5'}\n                                                        mr={3}\n                                                        name=\"ruler-icon\"\n                                                    />\n                                                    {intl.formatMessage(sizeGuideMessage)}\n                                                </Button>\n                                            )}\n\n                                        {activeSizeTableId && activeSizeTable?.type && (\n                                            <RegionalSize\n                                                selectedRegionalSize={selectedRegionalSize}\n                                                handleChangeRegionalSize={handleChangeRegionalSize}\n                                                handleChangeSelectedTypeSize={\n                                                    handleChangeSelectedTypeSize\n                                                }\n                                                selectedSizeType={selectedSizeType}\n                                                sizeOptions={sizeTypeOptions}\n                                                sizeTip={activeSizeTable?.sizeTip}\n                                                regionalSizeOptions={regionalSizeOptions}\n                                            />\n                                        )}\n\n                                        <SizeOptions\n                                            sizes={activeProduct?.variationAttributes?.[0]?.values}\n                                            value={selectedSizes[activeProduct.id]}\n                                            onChange={handleSizeSelect}\n                                            isNotifyMe={isNotifyMeForActiveProduct}\n                                            getIsNotifyMeForSize={getIsNotifyMeForSize}\n                                            isClickAndCollect={isClickAndCollect}\n                                            handleOutOfStockSizeSelection={\n                                                handleOutOfStockSizeSelection\n                                            }\n                                            selectedRegionalSize={selectedRegionalSize}\n                                            sizeDataMap={activeSizeTable?.sizes}\n                                            productType={activeSizeTable?.type}\n                                            selectedSizeType={selectedSizeType}\n                                            disableOOSVariants={disableOOSForActiveProduct}\n                                        />\n                                    </Box>\n                                )}\n                                {isLastStep && selectedSizes[activeProduct?.id] && (\n                                    <Box paddingX={16} paddingY={8} ref={confirmButtonRef}>\n                                        <Button\n                                            width=\"full\"\n                                            colorScheme=\"dark\"\n                                            variant=\"primary\"\n                                            type=\"submit\"\n                                            data-auto=\"multiSizeSubmitBtn\"\n                                            onClick={handleConfirmSizeSelection}\n                                        >\n                                            {intl.formatMessage({\n                                                defaultMessage: 'confirm size selection',\n                                                id: 'product_view.button.confirm_size_selection'\n                                            })}\n                                        </Button>\n                                    </Box>\n                                )}\n                            </motion.div>\n                        </AnimatePresence>\n                    </>\n                }\n            />\n            {isSizeGuideDrawerOpen && (\n                <SizeGuideDrawer\n                    isSizeGuideDrawerOpen={isSizeGuideDrawerOpen}\n                    handleDrawerClose={handleDrawerClose}\n                    handleDrawerBack={handleDrawerBack}\n                    type={activeSizeTable?.type}\n                    sizeTableData={filterSizeTable(activeSizeTable, activeProduct?.variants)}\n                    sizeTableFull={activeSizeTable}\n                    selectedRegionalSize={selectedRegionalSize}\n                    digitalSizeGroup={activeProduct?.c_digitalSizeGroup}\n                />\n            )}\n        </>\n    )\n}\n\nSequentialSizeSelectorDrawer.propTypes = {\n    products: PropTypes.arrayOf(PropTypes.object).isRequired,\n    setOpenDrawer: PropTypes.func,\n    onConfirmMultiSizeSelection: PropTypes.func.isRequired,\n    combinedSelectedSizesLabel: PropTypes.string,\n    isClickAndCollect: PropTypes.bool,\n    openBuyBoxDrawer: PropTypes.func,\n    isProductPartOfBundle: PropTypes.bool,\n    isProductPartOfSet: PropTypes.bool,\n    hideFindYourSizeButton: PropTypes.bool,\n    resetShowStorePickupFlag: PropTypes.func,\n    openedFromAtbFlow: PropTypes.shape({current: PropTypes.bool}),\n    showStorePickupIfNoSizeSelected: PropTypes.shape({current: PropTypes.bool}),\n    disableOOSVariants: PropTypes.bool,\n    onDrawerClose: PropTypes.func,\n    isOpen: PropTypes.bool,\n    onRequestClose: PropTypes.func,\n    isNotifyMe: PropTypes.bool,\n    onNotifyMeClick: PropTypes.func\n}\n\nexport default SequentialSizeSelectorDrawer\n","export const BuyBoxStyles = {\n    container: {\n        my: '6'\n    },\n    panel: (withCursor = true) => ({\n        position: 'relative',\n        padding: '6',\n        backgroundColor: 'black5',\n        ...(withCursor && {cursor: 'pointer'})\n    }),\n    flexBox: {\n        alignItems: 'center'\n    },\n    flexItem: {\n        flexGrow: '1',\n        pr: '4'\n    },\n    callOutBox: {\n        pt: '4'\n    },\n    callOutFlex: {\n        backgroundColor: 'pandoraPink40',\n        p: '3',\n        alignItems: 'flex-start'\n    },\n    callOutIconBox: {\n        display: 'inline-flex',\n        alignItems: 'top',\n        cursor: 'pointer'\n    },\n    header: {\n        alignItems: 'center',\n        mb: '3'\n    },\n    icon: {\n        w: '4',\n        h: '4'\n    },\n    label: {\n        fontSize: '0.6875rem',\n        pl: '2.5',\n        letterSpacing: '0.55px'\n    },\n    listBox: {\n        ml: '2.5'\n    },\n    dividerBox: {\n        px: '8'\n    },\n    'input:-webkit-autofill': {\n        backgroundColor: 'white !important'\n    },\n    linkSection: {\n        ml: '4',\n        mt: '2'\n    },\n    btn: {\n        textTransform: 'inherit',\n        textAlign: 'left'\n    },\n    lodLabel: {\n        color: 'green100',\n        pt: '1',\n        pl: '4'\n    }\n}\n\nexport const statusText = (status) => {\n    let textColor = 'black3a'\n\n    if (status === 'oos') {\n        textColor = 'red100'\n    } else if (status === 'available' || status === 'low') {\n        textColor = 'green100'\n    }\n\n    return {\n        color: textColor,\n        ...(status === 'low' && {pb: '1'})\n    }\n}\n\nexport const listItem = (status, isSoldOut = false) => {\n    const normalizedStatus = (status || '').toLowerCase().trim()\n    let bgColor = 'green60'\n\n    if (\n        isSoldOut ||\n        normalizedStatus === 'oos' ||\n        normalizedStatus === 'unavailable' ||\n        normalizedStatus === 'not-available'\n    ) {\n        bgColor = 'red100'\n    }\n\n    return {\n        display: 'inline-flex',\n        alignItems: 'center',\n        fontSize: '2.75',\n        fontWeight: 400,\n        letterSpacing: 0,\n        lineHeight: '4',\n        paddingLeft: '4',\n        position: 'relative',\n\n        _before: {\n            content: '\"\"',\n            display: 'block',\n            position: 'absolute',\n            left: '0',\n            top: 1,\n            width: 2,\n            height: 2,\n            borderRadius: '4',\n            backgroundColor: bgColor\n        }\n    }\n}\n","export const LoqateSuggestionsStyles = {\n    list: {\n        position: 'absolute',\n        top: '100%',\n        mt: '-6',\n        left: 0,\n        right: 0,\n        zIndex: 10,\n        bg: 'white',\n        border: '1px solid',\n        borderColor: 'black4',\n        borderTop: 'none',\n        maxHeight: '200px',\n        overflowY: 'auto',\n        listStyleType: 'none'\n    },\n    item: {\n        px: '4',\n        py: '3',\n        cursor: 'pointer',\n        _hover: {\n            bg: 'gray.50'\n        }\n    }\n}\n\nexport const StorePickupStyles = {\n    heading: {\n        mb: '6'\n    },\n    locatorSearchButton: {\n        mb: '6',\n        width: '100%'\n    },\n    dividerText: {\n        w: '100%',\n        textAlign: 'center',\n        pb: '6'\n    },\n    postCodeContainer: {\n        w: '100%',\n        pb: '6',\n\n        input: {\n            textTransform: 'uppercase'\n        },\n\n        'input#postalCode:-webkit-autofill': {\n            transition: 'background-color 9999s ease-in-out 0s',\n            WebkitTextFillColor: `black1 !important`,\n            boxShadow: `0 0 0px 1000px white inset !important`\n        }\n    },\n    selectStoreButton: {\n        width: '100%'\n    },\n    storeItemBox: {\n        padding: '4',\n        border: '1px solid',\n        borderColor: 'black4',\n\n        '&.active': {\n            borderColor: 'black1'\n        }\n    },\n    noStoreMessageBox: {\n        backgroundColor: 'red100',\n        color: 'white',\n        padding: '5',\n        marginBottom: '6'\n    }\n}\n","import {\n    Box,\n    Stack,\n    Text,\n    List,\n    ListItem\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport Input from 'pandora-shared-app/overrides/app/components/input'\nimport PropTypes from 'prop-types'\nimport React, {useEffect, useCallback, useState, useRef} from 'react'\nimport {useForm} from 'react-hook-form'\nimport {FormattedMessage, useIntl} from 'react-intl'\nimport {StorePickupStyles, LoqateSuggestionsStyles} from './store-pickup.styles'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {InfoIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {CS_LOQATE_OVERRIDE_IDS} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\n\nconst StorePickUp = ({\n    submitHandler,\n    locationHandler,\n    isDeliveryOption,\n    isError,\n    errorMessage,\n    resetGeoLocation,\n    hasNoStores = false,\n    storePrefs,\n    loqateEnabled = false,\n    loqateSuggestions = [],\n    loqateSuggestionResolved = false,\n    onLoqateInputChange,\n    onLoqateSuggestionSelect,\n    onLoqateClear,\n    onNoStoresReset\n}) => {\n    const {site} = useMultiSite()\n    const storePostalCodeRegex = new RegExp(site?.clickAndCollect?.storePostalCodeRegex || '')\n    const [showSuggestions, setShowSuggestions] = useState(false)\n    const suggestionsRef = useRef(null)\n    // Skips the watch effect for the setValue done on suggestion select,\n    // so the dropdown doesn't re-fetch and reopen.\n    const skipNextInputEffect = useRef(false)\n    // Tracks the previous input so the no-stores reset fires on real typing only.\n    const prevInputRef = useRef('')\n\n    const {\n        register,\n        handleSubmit,\n        formState: {errors, dirtyFields},\n        setError,\n        clearErrors,\n        watch,\n        setValue\n    } = useForm({\n        mode: 'onChange'\n    })\n    const intl = useIntl()\n\n    // ContentSquare zones for the Loqate search — applied only when the variant is ON (DEL-7429).\n    const csId = (id) => (loqateEnabled ? {'data-cs-override-id': id} : {})\n\n    const inputValue = watch('postalCode', '')\n\n    const handleFindInStores = useCallback(\n        (data) => {\n            const postalCode = data?.postalCode?.trim()\n            const isUnresolvedCityInput =\n                loqateEnabled && !storePostalCodeRegex.test(postalCode) && !loqateSuggestionResolved\n            if (isUnresolvedCityInput) {\n                setShowSuggestions(false)\n                // No suggestions -> no-results message; otherwise prompt to pick one. (DEL-7518)\n                const message = loqateSuggestions.length\n                    ? intl.formatMessage({\n                          id: 'product_details.store_pickup_dialog.loqate_select_required',\n                          defaultMessage: 'Please select a location from the suggestions'\n                      })\n                    : intl.formatMessage({\n                          id: 'product_details.store_pickup_dialog.loqate_no_results',\n                          defaultMessage: 'No results found. Please try a different search.'\n                      })\n                setError('postalCode', {type: 'manual', message})\n                return\n            }\n            clearErrors()\n            if (resetGeoLocation) {\n                resetGeoLocation()\n            }\n            if (onLoqateClear) onLoqateClear()\n            setShowSuggestions(false)\n            submitHandler(data)\n        },\n        [\n            clearErrors,\n            setError,\n            intl,\n            loqateEnabled,\n            storePostalCodeRegex,\n            loqateSuggestionResolved,\n            loqateSuggestions,\n            resetGeoLocation,\n            submitHandler,\n            onLoqateClear\n        ]\n    )\n\n    // React to input changes via watch instead of onChange prop\n    // (the shared Input component does not forward onChange)\n    useEffect(() => {\n        if (!loqateEnabled || !onLoqateInputChange) return\n\n        if (skipNextInputEffect.current) {\n            skipNextInputEffect.current = false\n            return\n        }\n\n        if (inputValue && inputValue.trim().length >= 3) {\n            onLoqateInputChange(inputValue)\n            setShowSuggestions(true)\n        } else {\n            if (onLoqateClear) onLoqateClear()\n            setShowSuggestions(false)\n        }\n    }, [inputValue, loqateEnabled, onLoqateInputChange, onLoqateClear])\n\n    // Reset the no-stores banner only on real typing, not when hasNoStores flips on a cached result. (DEL-7518)\n    useEffect(() => {\n        const inputChanged = inputValue !== prevInputRef.current\n        prevInputRef.current = inputValue\n        if (inputChanged && hasNoStores && inputValue && onNoStoresReset) {\n            onNoStoresReset()\n        }\n    }, [hasNoStores, inputValue, onNoStoresReset])\n\n    const handleSuggestionClick = useCallback(\n        async (suggestion) => {\n            if (!onLoqateSuggestionSelect) return\n\n            const coords = await onLoqateSuggestionSelect(suggestion)\n            if (coords) {\n                skipNextInputEffect.current = true\n                setValue('postalCode', suggestion.Text || suggestion.Description || '')\n                setShowSuggestions(false)\n            }\n        },\n        [onLoqateSuggestionSelect, setValue]\n    )\n\n    // Close suggestions when clicking outside\n    useEffect(() => {\n        const handleClickOutside = (event) => {\n            if (suggestionsRef.current && !suggestionsRef.current.contains(event.target)) {\n                setShowSuggestions(false)\n            }\n        }\n        document.addEventListener('mousedown', handleClickOutside)\n        return () => document.removeEventListener('mousedown', handleClickOutside)\n    }, [])\n\n    useEffect(() => {\n        if (isError) {\n            setError('postalCode', {\n                type: 'manual',\n                message: errorMessage\n            })\n        } else {\n            clearErrors('postalCode')\n        }\n    }, [isError, errorMessage])\n\n    const inputLabel = loqateEnabled\n        ? intl.formatMessage({\n              id: 'product_details.store_pickup_dialog.postcode_or_city.placeholder',\n              defaultMessage: 'Search by city, state or post code'\n          })\n        : intl.formatMessage({\n              id: 'product_details.store_pickup_dialog.postcode.placeholder',\n              defaultMessage: 'Search by post code'\n          })\n\n    const validationRules = loqateEnabled\n        ? {\n              required: {\n                  value: true,\n                  message: intl.formatMessage({\n                      id: 'product_details.store_pickup_dialog.postcode_or_city.input_validation_error',\n                      defaultMessage: 'Please enter either a valid Zip Code / City / State'\n                  })\n              }\n          }\n        : {\n              required: {\n                  value: true,\n                  message: intl.formatMessage({\n                      id: 'product_details.store_pickup_dialog.input_validation_error',\n                      defaultMessage: 'Please enter a post code'\n                  })\n              },\n              pattern: {\n                  value: storePostalCodeRegex,\n                  message: intl.formatMessage({\n                      id: 'product_details.store_pickup_dialog.input_invalid_error',\n                      defaultMessage: 'Please enter a valid post code'\n                  })\n              }\n          }\n\n    const hasSuggestions = loqateEnabled && showSuggestions && loqateSuggestions.length > 0\n\n    // Post codes are shown uppercase; Loqate city/locality text keeps its casing.\n    const postCodeContainerSx = loqateEnabled\n        ? {...StorePickupStyles.postCodeContainer, input: {textTransform: 'none'}}\n        : StorePickupStyles.postCodeContainer\n\n    return (\n        <Stack data-testid=\"store-pickup-wrapper\">\n            {hasNoStores && (\n                <Box {...StorePickupStyles.noStoreMessageBox} data-testid=\"no-store-message\">\n                    <Text textStyle=\"caption\">\n                        <InfoIcon boxSize={'4'} mr={4} />\n                        {intl.formatMessage(\n                            {\n                                defaultMessage:\n                                    'No stores {radius} {distanceUnit} nearby have this item',\n                                id: 'product_details.store_pickup_dialog.no_stores.label'\n                            },\n                            {\n                                radius: storePrefs?.radius,\n                                distanceUnit: storePrefs?.distanceUnit\n                            }\n                        )}\n                    </Text>\n                </Box>\n            )}\n            <Text {...StorePickupStyles.heading} as=\"div\">\n                {isDeliveryOption ? (\n                    <FormattedMessage\n                        defaultMessage=\"Enter your postal code to check delivery options and availability.\"\n                        id=\"product_details.buy_box.delivery_options.dialog.sub_text\"\n                    />\n                ) : (\n                    <FormattedMessage\n                        defaultMessage=\"Enter your location or postal code to check delivery options and availability.\"\n                        id=\"product_details.store_pickup_dialog.sub_text\"\n                    />\n                )}\n            </Text>\n            {!isDeliveryOption && (\n                <>\n                    <Button\n                        key=\"geo-location\"\n                        {...StorePickupStyles.locatorSearchButton}\n                        onClick={locationHandler}\n                        variant=\"action\"\n                        data-testid=\"select-locator-zip-search\"\n                        data-auto=\"btnPDPClickAndCollectSubmitZip\"\n                    >\n                        {`${intl.formatMessage({\n                            id: 'product_details.store_pickup_dialog.locator.button',\n                            defaultMessage: 'Use current location'\n                        })}`}\n                    </Button>\n                    <Text {...StorePickupStyles.dividerText} textStyle=\"bodySm\" as=\"div\">\n                        {`${intl.formatMessage({\n                            id: 'product_details.store_pickup_dialog.divider.text',\n                            defaultMessage: 'OR'\n                        })}`}\n                    </Text>\n                </>\n            )}\n            <form\n                onSubmit={handleSubmit(handleFindInStores)}\n                data-testid=\"store-form\"\n                data-pattern={storePostalCodeRegex}\n                data-error={errors['postalCode']?.message || errorMessage || ''}\n            >\n                <Box\n                    sx={postCodeContainerSx}\n                    ref={suggestionsRef}\n                    position=\"relative\"\n                    {...csId(CS_LOQATE_OVERRIDE_IDS.searchInput)}\n                >\n                    <Input\n                        defaultValue={null}\n                        dirtyFields={dirtyFields}\n                        label={inputLabel}\n                        id=\"postalCode\"\n                        name=\"postalCode\"\n                        register={register}\n                        rules={validationRules}\n                        errors={errors}\n                    />\n                    {hasSuggestions && (\n                        <List\n                            data-testid=\"loqate-suggestions\"\n                            {...csId(CS_LOQATE_OVERRIDE_IDS.suggestions)}\n                            {...LoqateSuggestionsStyles.list}\n                        >\n                            {loqateSuggestions.map((suggestion) => (\n                                <ListItem\n                                    key={`loqate-${suggestion.Id}`}\n                                    {...LoqateSuggestionsStyles.item}\n                                    onClick={() => handleSuggestionClick(suggestion)}\n                                    data-testid=\"loqate-suggestion-item\"\n                                >\n                                    <Text textStyle=\"bodySm\" fontWeight=\"medium\">\n                                        {suggestion.Text}\n                                    </Text>\n                                    {suggestion.Description && (\n                                        <Text textStyle=\"caption\" color=\"black3\">\n                                            {suggestion.Description}\n                                        </Text>\n                                    )}\n                                </ListItem>\n                            ))}\n                        </List>\n                    )}\n                </Box>\n                <Button\n                    {...StorePickupStyles.selectStoreButton}\n                    type=\"submit\"\n                    variant=\"outline\"\n                    data-testid=\"select-store-btn\"\n                    data-auto=\"btnPDPClickAndCollectSubmitZip\"\n                    {...csId(CS_LOQATE_OVERRIDE_IDS.findStores)}\n                >\n                    {isDeliveryOption ? (\n                        <FormattedMessage\n                            id=\"product_details.delivery_options.dialog.button\"\n                            defaultMessage=\"Check Delivery Time\"\n                        />\n                    ) : (\n                        <FormattedMessage\n                            id=\"product_details.store_pickup_dialog.select_store.button\"\n                            defaultMessage=\"Find stores\"\n                        />\n                    )}\n                </Button>\n            </form>\n        </Stack>\n    )\n}\n\nStorePickUp.propTypes = {\n    submitHandler: PropTypes.func,\n    locationHandler: PropTypes.func,\n    isDeliveryOption: PropTypes.bool,\n    isError: PropTypes.bool,\n    errorMessage: PropTypes.string,\n    resetGeoLocation: PropTypes.func,\n    hasNoStores: PropTypes.bool,\n    storePrefs: PropTypes.object,\n    loqateEnabled: PropTypes.bool,\n    loqateSuggestions: PropTypes.array,\n    loqateSuggestionResolved: PropTypes.bool,\n    onLoqateInputChange: PropTypes.func,\n    onLoqateSuggestionSelect: PropTypes.func,\n    onLoqateClear: PropTypes.func,\n    onNoStoresReset: PropTypes.func\n}\n\nexport default StorePickUp\n","import {defineMessages} from 'react-intl'\n\n/**\n * Delivery estimate messages for intl.\n */\nexport const DELIVERY_ESTIMATE_MESSAGES = defineMessages({\n    deliveryTraffic: {\n        id: 'product_details.buy_box.delivery_estimate.title',\n        defaultMessage: 'Get it delivered'\n    },\n    deliveryOption: {\n        id: 'product_details.buy_box.deliver_options.dialog.title',\n        defaultMessage: 'Delivery options'\n    },\n    deliveryTime: {\n        id: 'product_details.buy_box.deliver_options.title',\n        defaultMessage: 'Delivery Time'\n    },\n    deliveryTo: {\n        id: 'product_details.buy_box.delivery_estimate.success.title',\n        defaultMessage: 'Delivery To'\n    },\n    deliveryTimeSoldOut: {\n        id: 'product_details.buy_box.deliver_options.unavailable',\n        defaultMessage: 'Delivery Time - Unavailable'\n    },\n    enterPostcodeLink: {\n        id: 'product_details.buy_box.deliver_postcode.title',\n        defaultMessage: 'Enter Postcode'\n    },\n    enterPostcode: {\n        id: 'product_details.buy_box.deliver_options.label',\n        defaultMessage: 'Enter Postcode to view delivery time'\n    },\n    standard: {\n        id: 'product_details.buy_box.delivery_estimate.standard',\n        defaultMessage: 'Standard delivery in 2-3 business days'\n    },\n    express: {\n        id: 'product_details.buy_box.delivery_estimate.express',\n        defaultMessage: 'Express delivery in 1-2 business days'\n    },\n    oos: {\n        id: 'product_details.buy_box.delivery_estimate.oos.label',\n        defaultMessage: 'Currently out of stock'\n    },\n    notifyMe: {\n        id: 'product_view.button.notify_me',\n        defaultMessage: 'Notify Me'\n    },\n    unavailable: {\n        id: 'product_details.buy_box.delivery_estimate.unavailable',\n        defaultMessage: 'Unavailable'\n    },\n    sthTwoDay: {\n        id: 'product_details.buy_box.delivery_estimate.sth.two_day',\n        defaultMessage: '2 Day delivery 2–3 business days'\n    }\n})\n\n// Labels used exclusively in the PE success path — short prefix, date is appended by PE\nexport const PE_METHOD_LABELS = defineMessages({\n    standard: {\n        id: 'product_details.buy_box.delivery_shipping_method.standard',\n        defaultMessage: 'Standard by'\n    },\n    express: {\n        id: 'product_details.buy_box.delivery_shipping_method.express',\n        defaultMessage: 'Express by'\n    }\n})\n\n// Maps backend PE method names → internal canonical keys.\n// Add new entries here if the backend renames a method — no other code changes needed.\nexport const PE_METHOD_MAP = {\n    standard: 'standard',\n    express: 'express',\n    nextday: 'express'\n}\n\nexport const DELIVERY_ESTIMATE_SHIPPING_FALLBACK = {standard: true, express: true, twoDay: false}\n\nexport const PRODUCT_TYPES = {\n    REGULAR: 'REG',\n    DIAMOND: 'DIA',\n    ENGRAVABLE: 'ENG'\n}\n\nexport const DELIVERY_ESTIMATES_KEY = 'promise-engine-delivery-estimates'\n\nexport const STH_LOD_MESSAGING_KEYS = defineMessages({\n    shipToHome: {\n        defaultMessage: 'LoD Messaging',\n        id: 'product_details.sth.lod_messaging.label'\n    },\n    shipToHomeEngraving: {\n        defaultMessage: 'LoD Messaging Engraving',\n        id: 'product_details.sth.lod_messaging_engraving.label'\n    }\n})\n","import {PRODUCT_TYPES} from '../constants/delivery-estimate-messages'\nimport {isEngravable} from '../../../utils/product-type-utils'\n\n/**\n * Determines the product type based on product properties and enabled types.\n *\n * @param {Object} product - The product object to evaluate.\n * @param {Array<string>} [enabledTypes=[]] - List of enabled product types to consider.\n * @returns {string} - Returns one of the PRODUCT_TYPES constants: DIAMOND, ENGRAVABLE, or REGULAR.\n */\nexport function resolveProductType(product, enabledTypes = []) {\n    const isDiamondCarat = !!product?.c_diamondCaratWeight || !!product?.custom?.diamondCaratWeight\n    const isEngraving = isEngravable(product)\n\n    if (enabledTypes.includes(PRODUCT_TYPES.DIAMOND) && isDiamondCarat) {\n        return PRODUCT_TYPES.DIAMOND\n    }\n\n    if (enabledTypes.includes(PRODUCT_TYPES.ENGRAVABLE) && isEngraving) {\n        return PRODUCT_TYPES.ENGRAVABLE\n    }\n\n    return PRODUCT_TYPES.REGULAR\n}\n","import React from 'react'\nimport {Flex, ListItem, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {StaticShippingIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {BuyBoxStyles, listItem} from '../buy-box.styles'\n\n/**\n * Renders the delivery header with icon and optional children.\n */\nexport const DeliveryHeader = ({message, children}) => (\n    <Flex as=\"div\" {...BuyBoxStyles.header}>\n        <StaticShippingIcon {...BuyBoxStyles.icon} />\n        <Text key={message} {...BuyBoxStyles.label} textStyle=\"headingSm\">\n            {message}\n            {children && <span>{children}</span>}\n        </Text>\n    </Flex>\n)\n\nDeliveryHeader.propTypes = {\n    message: PropTypes.string.isRequired,\n    children: PropTypes.node\n}\n\n/**\n * Renders a delivery list text item.\n */\nexport const DeliveryListText = ({message, highlight}) => (\n    <ListItem data-auto=\"delivery-list-item\">\n        <Text textStyle=\"caption\" as=\"p\" sx={listItem('', Boolean(highlight))}>\n            {message}\n        </Text>\n    </ListItem>\n)\n\nDeliveryListText.propTypes = {\n    message: PropTypes.string.isRequired,\n    highlight: PropTypes.bool\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {DeliveryHeader} from './delivery-estimate-subcomponents'\nimport {useLocalStorage} from 'pandora-shared-app/overrides/app/hooks/use-local-storage'\nimport {DELIVERY_ESTIMATES_KEY} from '../constants/delivery-estimate-messages'\nimport {BuyBoxStyles} from '../buy-box.styles'\n\nconst DeliveryHeaderView = ({\n    isNotifyMe,\n    isSoldOut,\n    enableDeliveryOptions,\n    state,\n    postCode,\n    deliveryMessages,\n    onEnterPostcode\n}) => {\n    const [deliveryEstimates] = useLocalStorage(DELIVERY_ESTIMATES_KEY, null)\n\n    if (isNotifyMe) {\n        const notifyMeHeader = enableDeliveryOptions\n            ? deliveryMessages.deliveryTime\n            : deliveryMessages.deliveryTraffic\n        return <DeliveryHeader message={notifyMeHeader} />\n    }\n\n    if (isSoldOut) {\n        const deliveryTimeSoldOut = enableDeliveryOptions\n            ? deliveryMessages.deliveryTimeSoldOut\n            : deliveryMessages.deliveryTraffic\n        return <DeliveryHeader message={deliveryTimeSoldOut} />\n    }\n\n    if (enableDeliveryOptions) {\n        let peHeaderMessage = deliveryMessages.deliveryTime\n        let linkText = deliveryMessages.enterPostcodeLink\n\n        if (state === 'success' || state === 'error') {\n            peHeaderMessage = deliveryMessages.deliveryTo\n            linkText = postCode || deliveryEstimates?.shipToZipCode || ''\n        }\n\n        return (\n            <DeliveryHeader message={peHeaderMessage}>\n                <Button\n                    sx={BuyBoxStyles.btn}\n                    ml={1}\n                    variant=\"link\"\n                    onClick={onEnterPostcode}\n                    data-auto=\"deliveryOptions\"\n                    data-testid=\"delivery-options\"\n                >\n                    <Text as=\"span\" key={linkText} textStyle=\"headingSm\" fontSize=\"0.6875rem\">\n                        {linkText}\n                    </Text>\n                </Button>\n            </DeliveryHeader>\n        )\n    }\n\n    return <DeliveryHeader message={deliveryMessages.deliveryTraffic} />\n}\n\nDeliveryHeaderView.propTypes = {\n    isNotifyMe: PropTypes.bool,\n    isSoldOut: PropTypes.bool,\n    enableDeliveryOptions: PropTypes.bool,\n    state: PropTypes.string,\n    postCode: PropTypes.string,\n    deliveryMessages: PropTypes.object,\n    onEnterPostcode: PropTypes.func\n}\n\nexport default DeliveryHeaderView\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {DeliveryListText} from './delivery-estimate-subcomponents'\nimport {useJsonVariant, useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {\n    PE_METHOD_LABELS,\n    PE_METHOD_MAP,\n    DELIVERY_ESTIMATE_SHIPPING_FALLBACK\n} from '../constants/delivery-estimate-messages'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\n\nexport function getValue(collection, itemType, shippingMethod) {\n    if (!collection?.length) return\n\n    const item = collection.find((obj) => Object.hasOwn(obj, itemType))\n    return item?.[itemType]?.[shippingMethod]\n}\n\nconst DeliveryListView = ({\n    isNotifyMe,\n    isSoldOut,\n    enableDeliveryOptions,\n    state,\n    deliveryDates,\n    availableShippingMethods,\n    deliveryMessages,\n    productType\n}) => {\n    const {formatMessage} = useIntl()\n    const enablePdpPudoShippingEstimates = useVariant(LD_KEYS.enablePdpPudoShippingEstimates)\n    const sthDeliveryLevels = useJsonVariant(\n        LD_KEYS.enablePdpSthDeliveryLevels,\n        DELIVERY_ESTIMATE_SHIPPING_FALLBACK\n    )\n    const isStandardSthEnabled = sthDeliveryLevels?.standard ?? false\n    const isTwoDaySthEnabled = sthDeliveryLevels?.twoDay ?? false\n    const isExpressSthEnabled = sthDeliveryLevels?.express ?? false\n    const anySTHLevelActive = isStandardSthEnabled || isTwoDaySthEnabled || isExpressSthEnabled\n    const peMethodLabels = useDeliveryMessages(PE_METHOD_LABELS)\n\n    // Pudo shipping method\n    const pudoShippingMethod = useMemo(\n        () => (\n            <DeliveryListText\n                key=\"pudo\"\n                message={formatMessage({\n                    id: 'product_details.buy_box.delivery_estimate.pudo',\n                    defaultMessage: 'PUDO Standard in 3–5 working days'\n                })}\n            />\n        ),\n        [formatMessage]\n    )\n\n    // Renders the static fallback (used in error, or as default STH)\n    const fallbackMessage = useMemo(() => {\n        const sthContent = anySTHLevelActive ? (\n            <>\n                {isStandardSthEnabled && deliveryMessages.standard?.trim() && (\n                    <DeliveryListText key=\"sth-standard\" message={deliveryMessages.standard} />\n                )}\n                {isTwoDaySthEnabled && deliveryMessages.sthTwoDay?.trim() && (\n                    <DeliveryListText key=\"sth-two-day\" message={deliveryMessages.sthTwoDay} />\n                )}\n                {isExpressSthEnabled && deliveryMessages.express?.trim() && (\n                    <DeliveryListText key=\"sth-express\" message={deliveryMessages.express} />\n                )}\n            </>\n        ) : null\n\n        return (\n            <>\n                {sthContent}\n                {enablePdpPudoShippingEstimates && pudoShippingMethod}\n            </>\n        )\n    }, [\n        deliveryMessages,\n        enablePdpPudoShippingEstimates,\n        anySTHLevelActive,\n        isStandardSthEnabled,\n        isTwoDaySthEnabled,\n        isExpressSthEnabled\n    ])\n\n    if (isNotifyMe || isSoldOut) {\n        return (\n            <DeliveryListText key={deliveryMessages.oos} message={deliveryMessages.oos} highlight />\n        )\n    }\n\n    // promise engine enabled\n    if (enableDeliveryOptions) {\n        if (state === 'initial' || state === 'error') {\n            // case 1: before postcode entered → fallback to general info\n            // case 3: API failed → fallback to general info\n            return fallbackMessage\n        }\n\n        if (state === 'success') {\n            // case 2: API success — method names normalised through PE_METHOD_MAP\n            const items = availableShippingMethods\n                .filter((method) => {\n                    const internalKey = PE_METHOD_MAP[method.toLowerCase()]\n                    const key = internalKey ?? method.toLowerCase()\n                    // LD flag gate — PE_METHOD_MAP internal key aligns with LD flag key (both use 'express')\n                    if (internalKey && !(sthDeliveryLevels?.[internalKey] ?? true)) return false\n                    // Amplience content gate — same rule as static path; prevents flash on PE success\n                    return Boolean(deliveryMessages[key]?.trim())\n                })\n                .map((method) => {\n                    const internalKey = PE_METHOD_MAP[method.toLowerCase()] ?? method.toLowerCase()\n                    const formattedDate = getValue(deliveryDates?.items, productType, method)\n\n                    if (formattedDate) {\n                        return (\n                            <DeliveryListText\n                                key={`${method}-${formattedDate}`}\n                                message={`${peMethodLabels[internalKey]} ${formattedDate}`}\n                            />\n                        )\n                    }\n\n                    const fallbackMsg = deliveryMessages[internalKey]\n                    if (!fallbackMsg?.trim()) return null\n                    return <DeliveryListText key={method} message={fallbackMsg} />\n                })\n\n            if (enablePdpPudoShippingEstimates) {\n                items.push(pudoShippingMethod)\n            }\n\n            return items\n        }\n    }\n\n    // fallback → static delivery levels (controlled by LD flag)\n    return fallbackMessage\n}\n\nDeliveryListView.propTypes = {\n    isNotifyMe: PropTypes.bool,\n    isSoldOut: PropTypes.bool,\n    enableDeliveryOptions: PropTypes.bool,\n    state: PropTypes.string,\n    deliveryDates: PropTypes.object,\n    deliveryMessages: PropTypes.object,\n    availableShippingMethods: PropTypes.array,\n    productType: PropTypes.string\n}\n\nexport default DeliveryListView\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {BuyBoxStyles} from '../buy-box.styles'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\nimport {CNC_LOD_MESSAGING_KEYS} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\nimport {STH_LOD_MESSAGING_KEYS} from '../constants/delivery-estimate-messages'\nimport {LD_KEYS} from '../../../api_keys/ld-keys'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\n\n// Last Order Date on PDP\nconst LODMessaging = ({isSTH = false, message = null}) => {\n    const enableLoDMessageEnhancement = useVariant(LD_KEYS.enableLoDMessageEnhancement, false)\n    const LoDMessages = useDeliveryMessages({...CNC_LOD_MESSAGING_KEYS, ...STH_LOD_MESSAGING_KEYS})\n\n    if (enableLoDMessageEnhancement && message) {\n        return (\n            <Text textStyle=\"caption\" as=\"p\" data-auto=\"sth-lod-message\" {...BuyBoxStyles.lodLabel}>\n                {message}\n            </Text>\n        )\n    }\n\n    return (\n        <Text textStyle=\"caption\" as=\"p\" data-auto=\"sth-lod-message\" {...BuyBoxStyles.lodLabel}>\n            {!isSTH ? LoDMessages.clickAndCollect : LoDMessages.shipToHome}\n        </Text>\n    )\n}\n\nLODMessaging.propTypes = {\n    isSTH: PropTypes.bool,\n    message: PropTypes.string\n}\n\nexport default LODMessaging\n","import React, {useState} from 'react'\nimport {Box, Flex, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {FormattedMessage} from 'react-intl'\nimport {CloseIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {BuyBoxStyles} from '../buy-box.styles'\n\nexport const CallOutMessage = () => {\n    const [hideCallOutMessage, togglehideCallOutMessage] = useState(false)\n\n    // If user dismissed message\n    if (hideCallOutMessage) return null\n\n    return (\n        <Box {...BuyBoxStyles.callOutBox}>\n            <Flex {...BuyBoxStyles.callOutFlex}>\n                <Text as=\"p\" textStyle=\"caption\">\n                    <FormattedMessage\n                        id=\"product_details.buy_box.delivery_estimate.call_out_message\"\n                        defaultMessage=\"These are just estimated delivery dates, however, your product might arrive faster. Proceed to checkout to see accurate delivery estimates.\"\n                    />\n                </Text>\n                <Box\n                    {...BuyBoxStyles.callOutIconBox}\n                    onClick={(e) => {\n                        e.stopPropagation()\n                        togglehideCallOutMessage(true)\n                    }}\n                    data-auto=\"closeCallOutMessage\"\n                    data-testid=\"close-call-out-message\"\n                >\n                    <CloseIcon color=\"black\" boxSize={3} />\n                </Box>\n            </Flex>\n        </Box>\n    )\n}\n","import {PREFERENCE_KEYS} from 'pandora-shared-app/overrides/app/api_keys/preference-keys'\nimport {getCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\n\nexport function calculatePromiseFlag(isLDEnabled, preferences) {\n    if (!isLDEnabled) return false\n\n    const getPrefValue = (key, fallback) =>\n        preferences.find((p) => p.preferenceID === key || p.preferenceKeys?.includes(key))\n            ?.preferenceValue?.[0] ?? fallback\n\n    const abTestingUse = getPrefValue(PREFERENCE_KEYS.launchPromiseEngineABTesting, false)\n    const ldSegmentID = getPrefValue(PREFERENCE_KEYS.disablePromiseEngineLDSegmentID, 'control')\n\n    if (!abTestingUse) return true\n\n    const contextCookie = getCookie('expSegGrp')\n    if (!contextCookie) return true\n\n    try {\n        const parsedExpSegGrp = JSON.parse(decodeURIComponent(contextCookie))\n        return parsedExpSegGrp?.segment_id !== ldSegmentID\n    } catch {\n        return true\n    }\n}\n","import React, {useMemo, useState, useEffect, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Flex,\n    List,\n    Text,\n    Skeleton\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport StorePickUp from 'pandora-shared-app/overrides/app/components/store-pickup'\nimport {BuyBoxStyles} from '../buy-box.styles'\nimport {StaticChevronRightIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {useDeliveryEstimatesPayload} from '../../../hooks/use-delivery-estimates-payload'\nimport {useDeliveryEstimatesManager} from '../hooks/use-delivery-estimate-manager'\nimport DeliveryHeaderView from './delivery-header-view'\nimport DeliveryListView from './delivery-list-view'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\nimport {\n    DELIVERY_ESTIMATE_MESSAGES,\n    STH_LOD_MESSAGING_KEYS\n} from '../constants/delivery-estimate-messages'\nimport LODMessaging from './lod-messaging'\nimport {resolveProductType} from '../utils/resolve-product-type'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {CallOutMessage} from './call-out-message'\nimport {usePromiseEngineFlags} from '../hooks/use-promise-engine-delivery-flag'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from '../../../api_keys/ld-keys'\nimport {useProductDetailsLinkAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-product-details-analytics'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nexport const DeliveryEstimate = ({\n    isSoldOut,\n    isNotifyMe,\n    openNotifyMe,\n    product,\n    isProductLoading\n}) => {\n    const [isDrawerOpen, toggleIsDrawerOpen] = useState(false)\n    const [postCode, setPostCode] = useState('')\n\n    const enablePromiseEngineUtagTracking = useVariant(\n        LD_KEYS.enablePromiseEngineUtagTracking,\n        false\n    )\n    const {trackLinkEvent} = useProductDetailsLinkAnalytics()\n    const hasSubmittedRef = useRef(false)\n\n    const {isPromiseEngineEnabled, isDeliveryCalloutEnabled} = usePromiseEngineFlags()\n\n    const memoizedProduct = useMemo(() => product, [product])\n\n    const isClickable = useMemo(\n        () => isNotifyMe || (isPromiseEngineEnabled && !isSoldOut),\n        [isNotifyMe, isPromiseEngineEnabled, isSoldOut]\n    )\n\n    /* LoD Message Enhancement */\n    const enablePdpSthLodMessaging = useVariant(LD_KEYS.enablePdpSthLodMessaging, false)\n    const isEngraving = memoizedProduct?.isEngravable ?? false\n\n    const deliveryMessages = useDeliveryMessages({\n        ...DELIVERY_ESTIMATE_MESSAGES,\n        ...STH_LOD_MESSAGING_KEYS\n    })\n\n    const lodSTHMessage = isEngraving\n        ? deliveryMessages.shipToHomeEngraving\n        : deliveryMessages.shipToHome\n\n    /* LoD Message Enhancement */\n\n    const {enabledTypes, enrichedItems, availableShippingMethods} = useDeliveryEstimatesPayload(\n        memoizedProduct,\n        isPromiseEngineEnabled\n    )\n\n    const productType = useMemo(\n        () => resolveProductType(memoizedProduct, enabledTypes),\n        [resolveProductType, memoizedProduct, enabledTypes]\n    )\n\n    const {state, deliveryDates, submitZipCode, isDeliveryEstimateError, deliveryEstimateError} =\n        useDeliveryEstimatesManager({\n            shouldFetchToken: isPromiseEngineEnabled && isDrawerOpen,\n            enrichedItems,\n            availableShippingMethods,\n            closeModal: toggleIsDrawerOpen\n        })\n\n    const prevStateRef = useRef(state)\n\n    const handlePanelClick = () => {\n        if (isNotifyMe) {\n            return openNotifyMe()\n        }\n        if (isPromiseEngineEnabled && !isSoldOut) {\n            return toggleIsDrawerOpen(true)\n        }\n    }\n\n    const handlePostcodeSubmit = (formData) => {\n        hasSubmittedRef.current = true\n        setPostCode(formData.postalCode)\n        submitZipCode(formData.postalCode)\n    }\n\n    /* Utag changes */\n    useEffect(() => {\n        if (\n            enablePromiseEngineUtagTracking &&\n            isDrawerOpen &&\n            isPromiseEngineEnabled &&\n            !isSoldOut\n        ) {\n            trackLinkEvent(product, TEALIUM_CONSTANTS.ESTORE_EVENT.PROMISE_ENGINE.PE_OPENED)\n        }\n    }, [enablePromiseEngineUtagTracking, isPromiseEngineEnabled, isSoldOut, isDrawerOpen])\n\n    // side-effect: close only when success or error\n    useEffect(() => {\n        const prevState = prevStateRef.current\n\n        const transitionedToSuccess = prevState !== 'success' && state === 'success'\n\n        const transitionedToError = prevState !== 'error' && state === 'error'\n\n        if (transitionedToSuccess || transitionedToError) {\n            toggleIsDrawerOpen(false)\n        }\n\n        /* istanbul ignore next */\n        if (transitionedToSuccess && enablePromiseEngineUtagTracking && hasSubmittedRef.current) {\n            trackLinkEvent(\n                product,\n                TEALIUM_CONSTANTS.ESTORE_EVENT.PROMISE_ENGINE.PE_ZIPCODE_APPLIED\n            )\n            hasSubmittedRef.current = false\n        }\n\n        prevStateRef.current = state\n    }, [state, enablePromiseEngineUtagTracking, trackLinkEvent, product])\n\n    if (isProductLoading) {\n        return <Skeleton height={98} mb={4} data-testid=\"delivery-estimate-skeleton\" />\n    }\n\n    return (\n        <Box\n            sx={BuyBoxStyles.panel(isClickable)}\n            data-testid=\"delivery-estimate\"\n            onClick={handlePanelClick}\n        >\n            <FullDrawerSheet\n                isOpen={isDrawerOpen}\n                onClose={() => toggleIsDrawerOpen(false)}\n                headerText={deliveryMessages.deliveryOption}\n                bodyContent={\n                    <StorePickUp\n                        submitHandler={handlePostcodeSubmit}\n                        locationHandler={() => {}}\n                        isDeliveryOption={true}\n                        isError={isDeliveryEstimateError}\n                        errorMessage={deliveryEstimateError?.message || ''}\n                        resetGeoLocation={() => {}}\n                        storePrefs={{}}\n                    />\n                }\n                virtualPagePath={'delivery-time-enter-postcode'}\n            />\n            <Flex {...BuyBoxStyles.flexBox}>\n                <Box {...BuyBoxStyles.flexItem}>\n                    <DeliveryHeaderView\n                        isNotifyMe={isNotifyMe}\n                        isSoldOut={isSoldOut}\n                        enableDeliveryOptions={isPromiseEngineEnabled}\n                        state={state}\n                        postCode={postCode}\n                        deliveryMessages={deliveryMessages}\n                        onEnterPostcode={() => toggleIsDrawerOpen(true)}\n                    />\n                    <List {...BuyBoxStyles.listBox}>\n                        <DeliveryListView\n                            isNotifyMe={isNotifyMe}\n                            isSoldOut={isSoldOut}\n                            enableDeliveryOptions={isPromiseEngineEnabled}\n                            state={state}\n                            deliveryDates={deliveryDates}\n                            availableShippingMethods={availableShippingMethods}\n                            deliveryMessages={deliveryMessages}\n                            productType={productType}\n                        />\n                    </List>\n                    {isNotifyMe && (\n                        <Box ml={'6.5'}>\n                            <Button\n                                sx={BuyBoxStyles.btn}\n                                variant=\"link\"\n                                onClick={openNotifyMe}\n                                data-auto=\"notfiyMe\"\n                                data-testid=\"notify-me\"\n                            >\n                                <Text as=\"span\" textStyle=\"caption\" key={deliveryMessages.notifyMe}>\n                                    {deliveryMessages.notifyMe}\n                                </Text>\n                            </Button>\n                        </Box>\n                    )}\n                    {enablePdpSthLodMessaging && (\n                        <Box {...BuyBoxStyles.listBox}>\n                            <LODMessaging isSTH={true} message={lodSTHMessage} />\n                        </Box>\n                    )}\n                </Box>\n                {isClickable && (\n                    <Box {...BuyBoxStyles.rightIconBox}>\n                        <StaticChevronRightIcon data-testid=\"chevron-icon\" w={5} h={5} />\n                    </Box>\n                )}\n            </Flex>\n            {isDeliveryCalloutEnabled && <CallOutMessage />}\n        </Box>\n    )\n}\n\nDeliveryEstimate.propTypes = {\n    isSoldOut: PropTypes.bool,\n    isNotifyMe: PropTypes.bool,\n    openNotifyMe: PropTypes.func,\n    product: PropTypes.any,\n    isProductLoading: PropTypes.bool\n}\n\nexport default React.memo(DeliveryEstimate)\n","import {useState, useEffect} from 'react'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {usePreferences} from 'pandora-shared-app/overrides/app/hooks/usePreferences'\nimport {PREFERENCE_KEYS} from 'pandora-shared-app/overrides/app/api_keys/preference-keys'\nimport {calculatePromiseFlag} from '../utils/get-calculate-ld-flags'\n/**\n * This hook checks preferences, flags, and cookies\n * to decide if the Promise Engine should be turned on or off.\n *\n * @returns {boolean|undefined} true = enabled, false = disabled, undefined = still loading\n */\nexport function usePromiseEngineFlags() {\n    const {data: preferences = []} = usePreferences(\n        [\n            PREFERENCE_KEYS.launchPromiseEngineABTesting,\n            PREFERENCE_KEYS.disablePromiseEngineLDSegmentID\n        ],\n        true\n    )\n\n    const [flags, setFlags] = useState({\n        enableDeliveryOptions: undefined,\n        enablePdpEstimatedDeliveryCallout: undefined\n    })\n\n    const enableDeliveryOptions = useVariant(LD_KEYS.enablePdpOnlineDeliveryOptions, false)\n    const enablePdpEstimatedDeliveryCallout = useVariant(\n        LD_KEYS.enablePdpEstimatedDeliveryCallout,\n        false\n    )\n\n    useEffect(() => {\n        let updatedFlags = {...flags}\n\n        let shouldUpdate = false\n\n        if (enableDeliveryOptions) {\n            const isPEFlag = calculatePromiseFlag(enableDeliveryOptions, preferences)\n            if (updatedFlags.enableDeliveryOptions !== isPEFlag) {\n                updatedFlags.enableDeliveryOptions = isPEFlag\n                shouldUpdate = true\n            }\n        }\n\n        if (enablePdpEstimatedDeliveryCallout) {\n            const isCallout = calculatePromiseFlag(enablePdpEstimatedDeliveryCallout, preferences)\n            if (updatedFlags.enablePdpEstimatedDeliveryCallout !== isCallout) {\n                updatedFlags.enablePdpEstimatedDeliveryCallout = isCallout\n                shouldUpdate = true\n            }\n        }\n\n        if (shouldUpdate) {\n            setFlags(updatedFlags)\n        }\n    }, [preferences, enableDeliveryOptions, enablePdpEstimatedDeliveryCallout])\n\n    return {\n        isPromiseEngineEnabled: flags.enableDeliveryOptions ?? false,\n        isDeliveryCalloutEnabled: flags.enablePdpEstimatedDeliveryCallout ?? false\n    }\n}\n","import {PREFERENCE_KEYS} from 'pandora-shared-app/overrides/app/api_keys/preference-keys'\nimport {usePreferences} from 'pandora-shared-app/overrides/app/hooks/usePreferences'\nimport {useMemo} from 'react'\nimport {getEnrichProducts} from '../components/buy-box/utils/get-enrich-products'\n\nexport const useDeliveryEstimatesPayload = (product, enableDeliveryOptions) => {\n    const bundledItems = useMemo(() => product?.bundledProducts || [], [product])\n    const setItems = useMemo(() => product?.setProducts || [], [product])\n\n    const associatedProducts = useMemo(() => {\n        if (!product) return []\n\n        const productType = product?.productType || {}\n\n        if (productType.bundle) {\n            return bundledItems\n        }\n\n        if (productType.set) {\n            return setItems\n        }\n\n        return [product]\n    }, [product, bundledItems, setItems])\n\n    const {data: preferences = []} = usePreferences(\n        [\n            PREFERENCE_KEYS.enabledTypesForPromiseEngine,\n            PREFERENCE_KEYS.excludedProductsForPromiseEngine,\n            PREFERENCE_KEYS.enabledShippingMethodsForPromiseEngine\n        ],\n        true,\n        !enableDeliveryOptions\n    )\n\n    const {enabledTypes, excludedProductIds, availableShippingMethods} = useMemo(() => {\n        const grouped = preferences.reduce((acc, {preferenceID, preferenceValue}) => {\n            acc[preferenceID] = preferenceValue?.[0] || []\n            return acc\n        }, {})\n        return {\n            enabledTypes: grouped[PREFERENCE_KEYS.enabledTypesForPromiseEngine] || [],\n            excludedProductIds: grouped[PREFERENCE_KEYS.excludedProductsForPromiseEngine] || [],\n            availableShippingMethods:\n                grouped[PREFERENCE_KEYS.enabledShippingMethodsForPromiseEngine] || []\n        }\n    }, [preferences])\n\n    const enrichedItems = useMemo(() => {\n        if (!product || !associatedProducts?.length || !availableShippingMethods?.length) {\n            return []\n        }\n\n        return getEnrichProducts(\n            associatedProducts,\n            availableShippingMethods,\n            enabledTypes,\n            excludedProductIds\n        )\n    }, [product, associatedProducts, availableShippingMethods, enabledTypes, excludedProductIds])\n\n    return {\n        enabledTypes,\n        enrichedItems,\n        availableShippingMethods\n    }\n}\n","import {resolveProductType} from './resolve-product-type'\n\n/**\n * Enriches a list of items with delivery and product type information, excluding specified product IDs.\n *\n * @param {Array<Object>} items - Array of product items to process.\n * @param {Array<Object>} availableShippingMethods - List of available shipping methods to assign.\n * @param {Array<string>} enabledTypes - Array of enabled product types to filter and classify items.\n * @param {Array<string|number>} excludedProductIds - List of product IDs to exclude from processing.\n * @returns {Array<Object>} Array of enriched product objects including lineID, itemID, itemType, and deliveryServices.\n */\nexport const getEnrichProducts = (\n    items,\n    availableShippingMethods,\n    enabledTypes,\n    excludedProductIds\n) => {\n    if (!items?.length) return []\n\n    const excludedProduct = new Set(excludedProductIds)\n    const enabledProductType = new Set(enabledTypes)\n    let lineId = 1\n\n    return items.reduce((acc, item) => {\n        const id = item?.product?.id ?? item?.productId ?? item?.id\n        if (!id || excludedProduct.has(id)) return acc\n\n        const productType = resolveProductType(item?.product || item, enabledTypes)\n        if (!enabledProductType.has(productType)) return acc\n\n        acc.push({\n            lineID: String(lineId++),\n            itemID: id,\n            itemType: productType,\n            deliveryServices: availableShippingMethods\n        })\n\n        return acc\n    }, [])\n}\n","import {useState, useEffect, useCallback, useRef, useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useDeliveryEstimates} from 'pandora-shared-app/overrides/app/hooks/use-delivery-estimates'\nimport {transformDeliveryData} from '../utils/transform-delivery-data'\nimport {useLocalStorage} from 'pandora-shared-app/overrides/app/hooks/use-local-storage'\nimport {DELIVERY_ESTIMATES_KEY} from '../constants/delivery-estimate-messages'\nimport {useB2CTokenPrefetch} from 'pandora-shared-app/overrides/app/hooks/useCustomQuery'\n\n// hook: manages states + fallback logic\nexport function useDeliveryEstimatesManager({\n    shouldFetchToken,\n    enrichedItems,\n    availableShippingMethods,\n    closeModal\n}) {\n    const {site} = useMultiSite()\n    const {\n        fetchDeliveryEstimates,\n        deliveryEstimatesData,\n        isDeliveryEstimateError,\n        deliveryEstimateError\n    } = useDeliveryEstimates()\n\n    const [cached, setCached] = useLocalStorage(DELIVERY_ESTIMATES_KEY, null)\n\n    // 'initial' | 'loading' | 'success' | 'error'\n    const [state, setState] = useState('initial')\n    const [deliveryDates, setDeliveryDates] = useState({})\n\n    const hasHydratedFromCache = useRef(false)\n\n    // Fetch OpenID token only if PromiseEngine is enabled and user has interacted with it\n    const prefetchToken = useB2CTokenPrefetch()\n\n    const shouldFetchDates = useMemo(() => {\n        if (!cached || !enrichedItems.length) return false\n\n        const productType = enrichedItems?.[0]?.itemType ?? null\n        const cachedType = cached?.items?.[0] ? Object.keys(cached.items[0])[0] : null\n\n        return cachedType !== productType\n    }, [cached, enrichedItems])\n\n    // prefetchToken on demand\n    useEffect(() => {\n        if (shouldFetchToken) {\n            prefetchToken()\n        }\n    }, [shouldFetchToken])\n\n    // Common utility to fetch delivery estimates\n    const fetchEstimates = useCallback(\n        (postcode) => {\n            if (!postcode || !enrichedItems?.length) return\n\n            const payload = {\n                market: site?.clickAndCollect?.countryCode || '',\n                shipToZipCode: postcode,\n                shipToCountry: site?.clickAndCollect?.countryCode || '',\n                items: enrichedItems || []\n            }\n\n            setState('loading')\n            try {\n                fetchDeliveryEstimates(payload)\n            } catch {\n                setState('error')\n            }\n        },\n        [fetchDeliveryEstimates, enrichedItems, site?.clickAndCollect?.countryCode]\n    )\n\n    // Trigger fetch only if zip is different from current session\n    const submitZipCode = useCallback(\n        (postcode) => {\n            if (!postcode || !enrichedItems?.length) return\n\n            if (postcode === cached?.shipToZipCode) {\n                closeModal(false)\n                return\n            }\n\n            fetchEstimates(postcode)\n        },\n        [cached?.shipToZipCode, enrichedItems, fetchEstimates]\n    )\n\n    const transformedItems = useMemo(() => {\n        const items = deliveryEstimatesData?.items\n        if (!items) return null\n\n        return transformDeliveryData(items, availableShippingMethods, site?.l10n?.defaultLocale)\n    }, [deliveryEstimatesData?.items, availableShippingMethods, site?.l10n?.defaultLocale])\n\n    // Fetch delivery dates and show them for UI rendering\n    useEffect(() => {\n        if (!deliveryEstimatesData && !isDeliveryEstimateError) return\n\n        if (isDeliveryEstimateError) {\n            setState('error')\n            return\n        }\n\n        const finalDeliveryEstimates = {\n            ...deliveryEstimatesData,\n            items: transformedItems\n        }\n\n        setDeliveryDates((prev) => {\n            if (prev && prev.items === finalDeliveryEstimates.items) {\n                return prev\n            }\n            return finalDeliveryEstimates\n        })\n        setState((prev) => (prev === 'success' ? prev : 'success'))\n\n        // Defer localStorage write to avoid blocking main thread\n        // requestIdleCallback is not supported in Safari — use setTimeout as a universal fallback\n        const scheduleWrite =\n            typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout\n        scheduleWrite(() => setCached(finalDeliveryEstimates))\n    }, [deliveryEstimatesData, isDeliveryEstimateError, transformedItems, setCached])\n\n    // update initial state if localstorage has data\n    useEffect(() => {\n        if (!cached || !enrichedItems.length) return\n\n        // If we already hydrated or fetched once, never run again\n        if (hasHydratedFromCache.current) return\n        hasHydratedFromCache.current = true\n\n        // Should use cache or re-fetch?\n        if (!shouldFetchDates) {\n            setDeliveryDates(cached)\n            setState('success')\n            return\n        }\n\n        // If cache exists but needs refreshing since productType changed\n        fetchEstimates(cached.shipToZipCode)\n    }, [cached, shouldFetchDates, enrichedItems?.length, fetchEstimates])\n\n    return {\n        state,\n        deliveryDates,\n        submitZipCode,\n        isDeliveryEstimateError,\n        deliveryEstimateError\n    }\n}\n","import {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useOAuthMutation} from './useCustomQuery'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {getDolChannelHeaders} from '../utils/dol-channel-headers'\n\nexport const useDeliveryEstimates = () => {\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n\n    const organizationId = appConfig?.commerceAPI?.parameters?.organizationId\n    const proxyPath = appConfig?.dolAPI?.proxyPath\n\n    const deliveryEstimateUrl = getCustomApiPaths(proxyPath, organizationId).DELIVERY_ESTIMATES\n\n    // [DEL-7434] DOL Q3 channel migration — flag ON sends channelname 'pdp'; OFF keeps legacy 'pwa'.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n\n    const {\n        mutate: sendZipCode,\n        data: deliveryEstimatesData,\n        isPending: isEstimatesLoading,\n        isError: isDeliveryEstimateError,\n        error: deliveryEstimateError\n    } = useOAuthMutation('deliveryEstimates', {\n        path: `${deliveryEstimateUrl}?locale=${locale.id}`,\n        headers: {\n            'Content-Type': 'application/json',\n            ...(isDolQ3MigrationEnabled\n                ? getDolChannelHeaders('pdp')\n                : {channeltype: 'online', channelname: 'pwa'})\n        }\n    })\n\n    const fetchDeliveryEstimates = (payload) => {\n        sendZipCode({body: JSON.stringify(payload)})\n    }\n\n    return {\n        fetchDeliveryEstimates,\n        deliveryEstimatesData,\n        isEstimatesLoading,\n        isDeliveryEstimateError,\n        deliveryEstimateError\n    }\n}\n","/**\n * Transforms delivery items to a simplified structure with formatted max delivery dates,\n * filtering globally allowed delivery methods.\n *\n * @param {Array} items - List of items with itemType, deliveryServices, and carriers.\n * @param {Array<string>} availableMethods - List of globally allowed delivery method names.\n * @param {string} [locale='en-US'] - Locale string for date formatting (e.g., 'en-GB', 'fr-FR').\n * @returns {Array} - Transformed array with itemType -> deliveryService -> formatted max delivery date.\n */\nexport const transformDeliveryData = (items, availableShippingMethods, locale) => {\n    const formatter = new Intl.DateTimeFormat(locale, {\n        day: 'numeric',\n        month: 'long',\n        year: 'numeric',\n        timeZone: 'UTC'\n    })\n\n    return items.map(({itemType, deliveryServices}) => {\n        const itemTypeObj = {}\n\n        for (const {\n            deliveryService,\n            estimatedDeliveryDateTSMax,\n            estimatedDeliveryDate\n        } of deliveryServices) {\n            // Skip if this method is not in the available shipping methods\n            if (\n                availableShippingMethods.length &&\n                !availableShippingMethods.includes(deliveryService)\n            )\n                continue\n\n            const iso = estimatedDeliveryDateTSMax || estimatedDeliveryDate\n            itemTypeObj[deliveryService] = formatter.format(new Date(iso))\n        }\n\n        // Return object with itemType as key and its delivery method dates\n        return {\n            [itemType]: itemTypeObj\n        }\n    })\n}\n","import {STOCK_RULES} from './cnc-constants'\n\nexport const getStoreStatus = (flags, availabilityMessages, fallback = 'oos') => {\n    const rule = STOCK_RULES.find((r) => flags[r.key])\n    const status = rule?.status || fallback\n    const message = availabilityMessages[status]\n    return {status, message}\n}\n\nconst handleTrafficLightsSizeLogic = ({\n    isSizeSelected,\n    noStoreSelected,\n    hasStock,\n    hasLowStock,\n    availabilityMessages\n}) => {\n    if (!isSizeSelected) {\n        return {\n            status: '',\n            message: availabilityMessages.noSizeSelected\n        }\n    }\n\n    if (noStoreSelected) {\n        return {\n            status: '',\n            message: availabilityMessages.noStoreSelected\n        }\n    }\n\n    let status = 'oos'\n\n    if (hasStock) {\n        status = 'available'\n    }\n\n    if (hasLowStock) {\n        status = 'low' // overrides available if both true\n    }\n\n    return {\n        status,\n        message: availabilityMessages[status]\n    }\n}\n\nexport function getAvailabilityStatus({\n    availabilityMessages,\n    productIsCncEligible,\n    hasSizes,\n    isSizeSelected,\n    isSizeOrderableForFavStore,\n    selectedStore,\n    inventoryStatusFromSession\n}) {\n    if (!availabilityMessages) {\n        return {status: '', message: ''}\n    }\n\n    if (!productIsCncEligible) {\n        return {\n            status: 'oos',\n            message: availabilityMessages.CnCNotAvailable\n        }\n    }\n\n    const noStoreSelected = !selectedStore?.id\n\n    const baseOrderable = selectedStore?.hasStock ?? false\n    const baseLowStock = selectedStore?.lowStock ?? false\n    const sessionOrderable = inventoryStatusFromSession?.orderable\n    const sessionLowStock = inventoryStatusFromSession?.lowStock\n\n    const isOrderable = isSizeOrderableForFavStore ?? sessionOrderable ?? baseOrderable ?? false\n\n    const isLowStock = isOrderable && (sessionLowStock ?? baseLowStock ?? false)\n\n    if (hasSizes) {\n        return handleTrafficLightsSizeLogic({\n            isSizeSelected,\n            noStoreSelected,\n            hasStock: isOrderable,\n            hasLowStock: isLowStock,\n            availabilityMessages\n        })\n    }\n\n    if (noStoreSelected) {\n        return {\n            status: '',\n            message: availabilityMessages.noStoreSelected\n        }\n    }\n\n    const flags = {lowStock: isLowStock, hasStock: isOrderable}\n    const {status, message} = getStoreStatus(flags, availabilityMessages)\n\n    return {\n        status,\n        message\n    }\n}\n","import React, {useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text, Skeleton} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {BuyBoxStyles, listItem, statusText} from '../buy-box.styles'\nimport {PinIcon} from 'pandora-shared-app/overrides/app/components/icons-temp'\nimport {StaticChevronRightIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {useClickAndCollectAnalytics} from 'pandora-shared-app/overrides/app/hooks'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport LODMessaging from './lod-messaging'\nimport {\n    STORE_AVAILABILITY_MESSAGES,\n    CNC_LOD_MESSAGING_KEYS\n} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\nimport {useStoreAvailabilityStatus} from 'pandora-shared-app/overrides/app/hooks/use-store-availability-status'\nimport {LD_KEYS} from '../../../api_keys/ld-keys'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\n\nconst StoreAvailability = ({\n    productIsCncEligible,\n    setOpenDrawer,\n    product,\n    clickAndCollectButtonRef,\n    hasSizes,\n    isSizeSelected,\n    isSizeOrderableForFavStore,\n    selectedStore,\n    enablePdpDeliverModuleLayoutShift,\n    isProductLoading = false,\n    isPrimaryProduct\n}) => {\n    const enablePdpCncLodMessaging = useVariant(LD_KEYS.enablePdpCncLodMessaging, false)\n    const {trackEvent} = useClickAndCollectAnalytics(product)\n\n    const storeName = useMemo(() => selectedStore?.name, [selectedStore])\n    const availabilityMessages = useDeliveryMessages({\n        ...STORE_AVAILABILITY_MESSAGES,\n        ...CNC_LOD_MESSAGING_KEYS\n    })\n\n    /* LoD Message Enhancement */\n    const isEngraving = product?.isEngravable ?? false\n\n    const lodCnCMessage = isEngraving\n        ? availabilityMessages.clickAndCollectEngraving\n        : availabilityMessages.clickAndCollect\n\n    /* LoD Message Enhancement */\n\n    const showCCAvailabilityOverride = () => {\n        if (isPrimaryProduct) {\n            return {'data-cs-override-id': 'PDP_CC'}\n        }\n        return {}\n    }\n\n    const storeAvailabilityStatus = useStoreAvailabilityStatus({\n        productIsCncEligible,\n        hasSizes,\n        isSizeSelected,\n        isSizeOrderableForFavStore,\n        selectedStore,\n        productId: product?.productId,\n        isPrimaryProduct\n    })\n\n    const {status, message} = storeAvailabilityStatus || {}\n\n    const storeNameDisplay = !storeName\n        ? availabilityMessages.selectStore\n        : availabilityMessages.changeStore\n\n    const handleOnStoreClick = useCallback(\n        (e) => {\n            e.stopPropagation()\n            if (productIsCncEligible) {\n                setOpenDrawer()\n            }\n\n            trackEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.STORELOOKUP)\n        },\n        [productIsCncEligible, setOpenDrawer, trackEvent]\n    )\n\n    if (isProductLoading || product?.custom?.isPreloaded) {\n        return <Skeleton height={98} mb={4} data-testid=\"store-availability-skeleton\" />\n    }\n\n    return (\n        <Box\n            sx={BuyBoxStyles.panel(productIsCncEligible)}\n            onClick={handleOnStoreClick}\n            data-auto=\"clickCollect\"\n            data-testid=\"click-collect-wrapper\"\n            ref={clickAndCollectButtonRef}\n            {...showCCAvailabilityOverride()}\n            {...(enablePdpDeliverModuleLayoutShift ? {mt: 6} : {mb: 6})}\n        >\n            <Flex {...BuyBoxStyles.flexBox}>\n                <Box {...BuyBoxStyles.flexItem}>\n                    <Flex as=\"div\" {...BuyBoxStyles.header}>\n                        <PinIcon {...BuyBoxStyles.icon} />\n                        <Text {...BuyBoxStyles.label} textStyle=\"headingSm\">\n                            {availabilityMessages.title}\n                        </Text>\n                    </Flex>\n                    <Box as=\"div\" {...BuyBoxStyles.listBox}>\n                        <Box>\n                            <Text\n                                textStyle=\"caption\"\n                                as=\"p\"\n                                sx={listItem(status, false)}\n                                data-testid=\"cnc-availability-status\"\n                                data-availability-status={storeName || message}\n                                key={storeName || message}\n                            >\n                                {!productIsCncEligible ? message : storeName || message}\n                            </Text>\n                            {productIsCncEligible && storeName && (\n                                <Box as=\"div\" ml={'4'}>\n                                    {status !== 'available' && (\n                                        <Text\n                                            key={`${message}-${status}`}\n                                            textStyle=\"caption\"\n                                            sx={statusText(status)}\n                                        >\n                                            {message}\n                                        </Text>\n                                    )}\n                                    {(status === 'low' || status === 'available') && (\n                                        <Text\n                                            key={availabilityMessages.noStoreSelected}\n                                            textStyle=\"caption\"\n                                            color={'black3a'}\n                                        >\n                                            {availabilityMessages.noStoreSelected}\n                                        </Text>\n                                    )}\n                                </Box>\n                            )}\n                        </Box>\n                        {enablePdpCncLodMessaging && productIsCncEligible && (\n                            <LODMessaging message={lodCnCMessage} />\n                        )}\n                        {productIsCncEligible && (\n                            <Box sx={BuyBoxStyles.linkSection}>\n                                <Button\n                                    sx={BuyBoxStyles.btn}\n                                    variant=\"link\"\n                                    onClick={handleOnStoreClick}\n                                    data-auto=\"clickAndCollect\"\n                                    data-testid=\"click-and-collect\"\n                                >\n                                    <Text key={storeNameDisplay} as=\"span\" textStyle=\"caption\">\n                                        {storeNameDisplay}\n                                    </Text>\n                                </Button>\n                            </Box>\n                        )}\n                    </Box>\n                </Box>\n                {productIsCncEligible && (\n                    <Box {...BuyBoxStyles.rightIconBox}>\n                        <StaticChevronRightIcon w={5} h={5} />\n                    </Box>\n                )}\n            </Flex>\n        </Box>\n    )\n}\n\nStoreAvailability.propTypes = {\n    productIsCncEligible: PropTypes.bool,\n    setOpenDrawer: PropTypes.func,\n    product: PropTypes.object,\n    isProductLoading: PropTypes.bool,\n    clickAndCollectButtonRef: PropTypes.shape({\n        current: PropTypes.any\n    }),\n    hasSizes: PropTypes.bool,\n    isSizeSelected: PropTypes.bool,\n    isSizeOrderableForFavStore: PropTypes.bool,\n    selectedStore: PropTypes.object,\n    enablePdpDeliverModuleLayoutShift: PropTypes.bool,\n    isPrimaryProduct: PropTypes.bool\n}\n\nexport default React.memo(StoreAvailability)\n","import {useMemo} from 'react'\nimport {INVENTORY_ITEMS, STORE_AVAILABILITY_MESSAGES} from '../utils/cnc-constants'\nimport {getAvailabilityStatus} from '../utils/cnc-availability-utils'\nimport {useDeliveryMessages} from './use-delivery-messages'\nimport {useLocalStorage} from './use-local-storage'\n\nexport const useStoreAvailabilityStatus = ({\n    productIsCncEligible,\n    hasSizes,\n    isSizeSelected,\n    isSizeOrderableForFavStore,\n    selectedStore,\n    productId,\n    isPrimaryProduct\n}) => {\n    const availabilityMessages = useDeliveryMessages(STORE_AVAILABILITY_MESSAGES)\n    const [inventoryItems] = useLocalStorage(INVENTORY_ITEMS, [])\n\n    const inventoryStatusFromSession = useMemo(() => {\n        if (!isPrimaryProduct || !productId || !selectedStore?.inventoryListId) {\n            return undefined\n        }\n\n        if (!Array.isArray(inventoryItems)) return undefined\n\n        return inventoryItems.find(\n            (item) =>\n                item?.productId === productId && item?.inventoryId === selectedStore.inventoryListId\n        )\n    }, [isPrimaryProduct, productId, selectedStore?.inventoryListId, inventoryItems])\n\n    const storeAvailabilityStatus = useMemo(() => {\n        if (!isPrimaryProduct) {\n            return {status: '', message: ''}\n        }\n\n        return getAvailabilityStatus({\n            availabilityMessages,\n            productIsCncEligible,\n            hasSizes,\n            isSizeSelected,\n            isSizeOrderableForFavStore,\n            selectedStore,\n            inventoryStatusFromSession\n        })\n    }, [\n        isPrimaryProduct,\n        availabilityMessages,\n        productIsCncEligible,\n        hasSizes,\n        isSizeSelected,\n        isSizeOrderableForFavStore,\n        selectedStore,\n        inventoryStatusFromSession\n    ])\n\n    return storeAvailabilityStatus\n}\n","import {useCallback, useMemo} from 'react'\nimport {useCustomQuery} from './useCustomQuery'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\nconst STORE_QUERY_STALE_TIME_MS = 5 * 60 * 1000\nconst STORE_QUERY_CACHE_TIME_MS = 10 * 60 * 1000\nconst POSTAL_CODE_DELIMITER = /[-\\s]/\n\nexport const useSearchStore = ({productIds, urlParams, postCode, currentLocation, storePrefs}) => {\n    const {site, locale} = useMultiSite()\n    const enableShortPostalCodeLookup = useVariant(LD_KEYS.enableShortPostalCodeLookup, false)\n    const enablePostalCodeDelimiterTrim = useVariant(LD_KEYS.enablePostalCodeDelimiterTrim, false)\n    const enableCncTwoTierRadiusFallback = useVariant(\n        LD_KEYS.enablePdpCncTwoTierRadiusFallback,\n        false\n    )\n    // DOL Q3 channel migration — flag ON sends channelname 'pdp'; OFF leaves legacy (no channel headers).\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId}\n            },\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n    const {app: appConfig} = getConfig()\n\n    const storeSearchUrl = getCustomApiPaths(proxyPath, organizationId).STORES_SEARCH\n\n    const shouldFetch = !!postCode || !!(currentLocation?.latitude && currentLocation?.longitude)\n\n    const hasTwoTierRadius =\n        enableCncTwoTierRadiusFallback &&\n        storePrefs?.defaultRadius != null &&\n        storePrefs?.defaultRadius !== storePrefs?.radius\n    const defaultRadius = hasTwoTierRadius ? storePrefs.defaultRadius : storePrefs?.radius\n    const extendedRadius = storePrefs?.radius\n\n    const dolParams = useMemo(() => {\n        let params = {\n            limit: storePrefs?.maxStoreCount,\n            maxDistance: defaultRadius,\n            locale: locale.id,\n            latitude: currentLocation?.latitude || '',\n            longitude: currentLocation?.longitude || '',\n            distanceUnit: storePrefs?.distanceUnit,\n            country: site?.clickAndCollect?.countryCode || '',\n            productIds: productIds\n        }\n\n        if (postCode) {\n            if (enableShortPostalCodeLookup) {\n                params.postalCode = postCode.slice(0, 3)\n            } else if (enablePostalCodeDelimiterTrim) {\n                params.postalCode = postCode.split(POSTAL_CODE_DELIMITER)[0]\n            } else {\n                params.postalCode = postCode\n            }\n        }\n\n        return params\n    }, [\n        locale.id,\n        postCode,\n        productIds,\n        currentLocation,\n        storePrefs?.maxStoreCount,\n        defaultRadius,\n        storePrefs?.distanceUnit,\n        site,\n        enableShortPostalCodeLookup,\n        enablePostalCodeDelimiterTrim\n    ])\n\n    const extendedDolParams = useMemo(\n        () => ({...dolParams, maxDistance: extendedRadius}),\n        [dolParams, extendedRadius]\n    )\n\n    const queryKey = useMemo(\n        () => [\n            'searchStores',\n            productIds,\n            urlParams ? urlParams.toString() : '',\n            postCode || currentLocation || ''\n        ],\n        [productIds, urlParams, postCode, currentLocation]\n    )\n\n    const extendedQueryKey = useMemo(\n        () => ['searchStoresExtended', ...queryKey.slice(1)],\n        [queryKey]\n    )\n\n    const select = useCallback((searchResult = {}) => {\n        const filteredData = searchResult.data?.filter(\n            (store) => !store.isFranchiseStore && store.clickAndCollectParticipant\n        )\n\n        return {\n            ...searchResult,\n            data: filteredData ?? [],\n            total: filteredData?.length ?? 0\n        }\n    })\n\n    const headers = {\n        ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n        'x-environment': appConfig?.targetEnvironment\n    }\n\n    const queryOptions = {\n        keepPreviousData: false,\n        select,\n        staleTime: STORE_QUERY_STALE_TIME_MS,\n        cacheTime: STORE_QUERY_CACHE_TIME_MS\n    }\n\n    const {\n        data: defaultStoreData,\n        isFetching: isDefaultFetching,\n        isError: isDefaultError,\n        error: defaultError\n    } = useCustomQuery(\n        queryKey,\n        {\n            path: storeSearchUrl,\n            queryParams: dolParams,\n            headers\n        },\n        {\n            ...queryOptions,\n            enabled: shouldFetch\n        }\n    )\n\n    const shouldExtend =\n        shouldFetch && hasTwoTierRadius && !isDefaultFetching && defaultStoreData?.total === 0\n\n    const {\n        data: extendedStoreData,\n        isFetching: isExtendedFetching,\n        isError: isExtendedError,\n        error: extendedError\n    } = useCustomQuery(\n        extendedQueryKey,\n        {\n            path: storeSearchUrl,\n            queryParams: extendedDolParams,\n            headers\n        },\n        {\n            ...queryOptions,\n            enabled: shouldExtend\n        }\n    )\n\n    const useExtendedResult = shouldExtend && !isExtendedFetching && extendedStoreData !== undefined\n    const storeData = useExtendedResult ? extendedStoreData : defaultStoreData\n    const isStoreLoading = isDefaultFetching || (shouldExtend && isExtendedFetching)\n    const isStoreError = useExtendedResult ? isExtendedError : isDefaultError\n    const storeError = useExtendedResult ? extendedError : defaultError\n\n    const activeDolParams = useExtendedResult ? extendedDolParams : dolParams\n    const searchDetails = {\n        postalCode: activeDolParams.postalCode,\n        range: `${activeDolParams.maxDistance} ${activeDolParams.distanceUnit}`\n    }\n\n    return {storeData, isStoreLoading, isStoreError, storeError, searchDetails}\n}\n","export const StoresListStyles = {\n    stockMessage: {\n        fontSize: '3.5',\n        mb: '2'\n    },\n    cta: {\n        w: 'fit-content',\n        color: 'black3b',\n        textTransform: 'inherit',\n\n        '&.store-info': {\n            mt: '1'\n        }\n    },\n    stockToggleBox: {\n        mt: '4',\n        mb: '6',\n\n        stockText: {\n            pr: '2'\n        }\n    },\n    listItem: {\n        container: {\n            mt: '6',\n            mb: '6'\n        },\n        flexBox: {\n            justifyContent: 'space-between'\n        },\n        listInnerBox: {\n            paddingInlineEnd: '4'\n        },\n        addressSection: {\n            mt: '2',\n            color: 'black3b'\n        },\n        unit: {\n            color: 'black3b',\n            lineHeight: '2',\n            textAlign: 'right',\n            minW: '8ch'\n        },\n        storeStatus: {\n            '&.low': {\n                color: 'green100'\n            },\n            '&.available': {\n                color: 'green100'\n            },\n            '&.oos': {\n                color: 'red100'\n            },\n            '&.not-available': {\n                color: 'red100'\n            }\n        },\n        radio: {\n            alignItems: 'flex-start',\n            borderColor: 'black4',\n            _checked: {\n                background: 'white',\n                borderColor: 'black1',\n                _before: {\n                    content: '\"\"',\n                    display: 'block',\n                    width: 2.5,\n                    height: 2.5,\n                    borderRadius: 'full',\n                    bg: 'black1'\n                }\n            }\n        }\n    }\n}\n","import {\n    Box,\n    Flex,\n    List,\n    ListItem,\n    Stack,\n    Text\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport React, {useEffect, useState} from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport PropTypes from 'prop-types'\nimport {StoresListStyles} from '../stores.list.styles'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {STORE_AVAILABILITY_MESSAGES} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\nimport {getStoreStatus} from 'pandora-shared-app/overrides/app/utils/cnc-availability-utils'\nimport {StorePickupStyles} from '../../store-pickup/store-pickup.styles'\nimport {getFavoriteStore} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {CS_LOQATE_OVERRIDE_IDS} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\n\nconst StoreListItems = ({\n    selectStoreHandler,\n    stores,\n    onStoreInfoClick,\n    onStorePhoneClick,\n    loqateEnabled = false\n}) => {\n    const {site} = useMultiSite()\n    const [selectedStore, setSelectedStore] = useState(null)\n\n    const handleStoreSelect = (store) => {\n        setSelectedStore(store)\n        selectStoreHandler(store)\n    }\n\n    const storeAvailabilityMesages = useDeliveryMessages(STORE_AVAILABILITY_MESSAGES)\n\n    useEffect(() => {\n        const {store} = getFavoriteStore()\n        setSelectedStore(store)\n    }, [])\n\n    const getCtaMessage = (store, status) => {\n        if (status === 'oos') {\n            return storeAvailabilityMesages.notAvailableCta\n        } else if (selectedStore?.id === store.id) {\n            return storeAvailabilityMesages.selectedStoreCta\n        } else {\n            return storeAvailabilityMesages.selectStoreCta\n        }\n    }\n\n    const storeListItem = (store, status, message) => {\n        if (!store) {\n            return null\n        }\n\n        return (\n            <Flex {...StoresListStyles.listItem.flexBox}>\n                <Flex>\n                    <Box {...StoresListStyles.listItem.listInnerBox}>\n                        <Text textStyle=\"bodySm\">{store.name}</Text>\n                        <Text\n                            textStyle=\"bodySm\"\n                            sx={StoresListStyles.listItem.storeStatus}\n                            key={status}\n                            className={status}\n                        >\n                            {message}\n                        </Text>\n                        <Stack {...StoresListStyles.listItem.addressSection}>\n                            <Text textStyle=\"bodySm\">\n                                {[\n                                    store.address1,\n                                    store.address2,\n                                    store.city,\n                                    store.stateCode,\n                                    store.postalCode\n                                ]\n                                    .filter(Boolean)\n                                    .join(', ')}\n                            </Text>\n                            <Button\n                                sx={StoresListStyles.cta}\n                                textStyle=\"bodySm\"\n                                as=\"a\"\n                                variant=\"link\"\n                                href={`tel:${store.phone}`}\n                                data-auto=\"btnPDPClickAndCollectContactNumber\"\n                                data-testid={`btn-pdp-cnc-store-phone-${store.id}`}\n                                onClick={() => onStorePhoneClick(store)}\n                            >\n                                {store.phone}\n                            </Button>\n                            <Button\n                                sx={StoresListStyles.cta}\n                                textStyle=\"bodySm\"\n                                className=\"store-info\"\n                                as=\"a\"\n                                variant=\"link\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                                href={`${site?.storeLocationUrl}${store.id}`}\n                                data-auto=\"btnPDPClickAndCollectStoreInfo\"\n                                data-testid=\"btn-pdp-cnc-store-info\"\n                                onClick={() => onStoreInfoClick(store)}\n                            >\n                                <FormattedMessage\n                                    defaultMessage=\"Store info\"\n                                    id=\"product_details.store_pickup_dialog.stores_list.store_info\"\n                                />\n                            </Button>\n                        </Stack>\n                    </Box>\n                </Flex>\n                <Text variant=\"caption\" {...StoresListStyles.listItem.unit}>\n                    {store.distance} {store.distanceUnit}\n                </Text>\n            </Flex>\n        )\n    }\n\n    return (\n        <List>\n            {stores &&\n                stores\n                    .sort((a, b) => (b.hasStock === true) - (a.hasStock === true))\n                    .map((store, index) => {\n                        const {status, message} = getStoreStatus(store, storeAvailabilityMesages)\n                        return (\n                            <ListItem\n                                key={store.id}\n                                {...StoresListStyles.listItem.container}\n                                data-auto=\"divClickAndCollectResults\"\n                            >\n                                <Box\n                                    sx={StorePickupStyles.storeItemBox}\n                                    className={`${selectedStore?.id === store.id ? 'active' : ''}`}\n                                >\n                                    {storeListItem(store, status, message)}\n                                    <Button\n                                        {...StorePickupStyles.selectStoreButton}\n                                        type=\"submit\"\n                                        data-testid={`btn-select-store-${store.id}`}\n                                        variant={\n                                            selectedStore?.id === store.id ? 'primary' : 'outline'\n                                        }\n                                        mt={'4'}\n                                        disabled={status === 'oos'}\n                                        maxWidth=\"100%\"\n                                        onClick={() => handleStoreSelect(store)}\n                                        key={`${status}-${selectedStore?.id === store.id}`}\n                                        {...(loqateEnabled && {\n                                            'data-cs-override-id': `${CS_LOQATE_OVERRIDE_IDS.selectStorePrefix}${index}`\n                                        })}\n                                    >\n                                        {getCtaMessage(store, status)}\n                                    </Button>\n                                </Box>\n                            </ListItem>\n                        )\n                    })}\n        </List>\n    )\n}\n\nStoreListItems.propTypes = {\n    selectStoreHandler: PropTypes.func,\n    onStoreInfoClick: PropTypes.func,\n    onStorePhoneClick: PropTypes.func,\n    stores: PropTypes.array,\n    loqateEnabled: PropTypes.bool\n}\n\nexport default StoreListItems\n","import {Box, Checkbox, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport React, {useMemo, useState} from 'react'\nimport {FormattedMessage, useIntl} from 'react-intl'\nimport PropTypes from 'prop-types'\nimport StoreListItems from './partials/store-list-items'\nimport {StoresListStyles} from './stores.list.styles'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst StoresList = ({\n    storeData,\n    postcalCode,\n    searchAgainHandler,\n    onStoreSelect,\n    onStoreInfoClick,\n    onStorePhoneClick,\n    loqateEnabled = false\n}) => {\n    const {formatMessage} = useIntl()\n    const [showAvailableStocks, toggleShowAvailableStocks] = useState(true)\n\n    // Efficiently compute filtered lists based on current toggle\n    const {allStores, storesWithStock} = useMemo(() => {\n        const allStores = storeData?.data || []\n        return {allStores, storesWithStock: allStores.filter((store) => store.hasStock)}\n    }, [storeData])\n    const storesToShow = showAvailableStocks ? storesWithStock : allStores\n\n    const handleAvaiableStock = (event) => {\n        toggleShowAvailableStocks(event.target.checked)\n    }\n\n    return (\n        <Stack data-testid=\"store-list-wrapper\">\n            <Text sx={StoresListStyles.stockMessage} as=\"span\">\n                {formatMessage(\n                    {\n                        id: 'product_details.store_pickup_dialog.stores_found_availability.label',\n                        defaultMessage:\n                            '{count} out of {totalCount} stores have availability at {postcode}'\n                    },\n                    {\n                        count: storesWithStock.length,\n                        totalCount: storeData?.data?.length ?? 0,\n                        postcode: postcalCode\n                    }\n                )}\n            </Text>\n            <Button\n                variant=\"link\"\n                sx={StoresListStyles.cta}\n                onClick={searchAgainHandler}\n                textStyle=\"bodySm\"\n                data-auto=\"searchAgain\"\n                data-testid=\"search-again\"\n            >\n                <FormattedMessage\n                    defaultMessage=\"Search again\"\n                    id=\"product_details.store_pickup_dialog.search_again.label\"\n                />\n            </Button>\n            <Box sx={StoresListStyles.stockToggleBox}>\n                <Checkbox\n                    variant=\"black\"\n                    size=\"lg\"\n                    spacing={3}\n                    isChecked={showAvailableStocks}\n                    onChange={handleAvaiableStock}\n                    aria-label={'Show availability'}\n                    data-auto=\"stockCheck\"\n                    data-testid={`btn-stockCheck`}\n                >\n                    <Text textStyle=\"bodySm\" sx={StoresListStyles.stockToggleBox.stockText}>\n                        <FormattedMessage\n                            defaultMessage=\"Show only stores with availability\"\n                            id=\"product_details.store_pickup_dialog.stores_available.label\"\n                        />\n                    </Text>\n                </Checkbox>\n            </Box>\n            {storesToShow.length > 0 && (\n                <StoreListItems\n                    stores={storesToShow}\n                    selectStoreHandler={onStoreSelect}\n                    onStoreInfoClick={onStoreInfoClick}\n                    onStorePhoneClick={onStorePhoneClick}\n                    loqateEnabled={loqateEnabled}\n                />\n            )}\n        </Stack>\n    )\n}\n\nStoresList.propTypes = {\n    storeData: PropTypes.shape({\n        data: PropTypes.array // @To be refined once we've DOL response\n    }),\n    postcalCode: PropTypes.string,\n    searchAgainHandler: PropTypes.func,\n    onStoreSelect: PropTypes.func,\n    onStoreInfoClick: PropTypes.func,\n    onStorePhoneClick: PropTypes.func,\n    loqateEnabled: PropTypes.bool\n}\n\nexport default StoresList\n","import {useState, useRef, useCallback, useEffect} from 'react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useStringVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\nconst LOQATE_DEBOUNCE_MS = 300\nconst LOQATE_MIN_INPUT_LENGTH = 3\nconst LOQATE_RESULT_LIMIT = 12\n// LD flag default for the suggestion granularity.\nconst LOQATE_DEFAULT_TYPES = 'Locality'\n\n// Accept both a bare array and an {Items: [...]} envelope.\nconst toItems = (data) => (Array.isArray(data) ? data : data?.Items ?? [])\n\n// The geocode call must repeat these params and add addressID (addressID alone\n// is rejected). Keys use Loqate's exact casing.\nconst buildSearchBody = (input, countryCode, types) => ({\n    Input: input,\n    Countries: countryCode,\n    Limit: LOQATE_RESULT_LIMIT,\n    Types: types\n})\n\n/**\n * Typeahead call (free): returns address suggestions for the typed input.\n */\nconst fetchLoqateSuggestions = async (endpoint, input, countryCode, types, signal) => {\n    const response = await fetch(endpoint, {\n        method: 'POST',\n        headers: {'Content-Type': 'application/json'},\n        body: JSON.stringify(buildSearchBody(input, countryCode, types)),\n        signal\n    })\n\n    if (!response.ok) return []\n\n    return toItems(await response.json())\n}\n\n/**\n * Geocode call (billed): repeats the search params and adds the selected\n * addressID, then returns the resolved lat/lng.\n */\nconst fetchLoqateCoordinates = async (endpoint, suggestion, countryCode, types, signal) => {\n    const response = await fetch(endpoint, {\n        method: 'POST',\n        headers: {'Content-Type': 'application/json'},\n        body: JSON.stringify({\n            ...buildSearchBody(suggestion.Text, countryCode, types),\n            addressID: suggestion.Id\n        }),\n        signal\n    })\n\n    if (!response.ok) return null\n\n    const item = toItems(await response.json())[0]\n    const lat = Number(item?.Location?.Latitude)\n    const lng = Number(item?.Location?.Longitude)\n\n    if (!Number.isFinite(lat) || !Number.isFinite(lng)) return null\n\n    return {latitude: lat, longitude: lng}\n}\n\n/**\n * Hook providing debounced Loqate type-ahead search and coordinate retrieval.\n *\n * @param {string} countryCode - ISO country code from site config (e.g. \"US\", \"CA\")\n * @returns {{\n *   suggestions: Array,\n *   isLoading: boolean,\n *   fetchSuggestions: (input: string) => void,\n *   selectSuggestion: (suggestion: object) => Promise<{latitude: number, longitude: number}|null>,\n *   clearSuggestions: () => void\n * }}\n */\nexport const useLoqateSearch = (countryCode) => {\n    const {app: appConfig} = getConfig()\n    // Relative same-origin SSR route; key/host injected server-side. The\n    // ?app= query routes the /mobify/redirect request to the right app.\n    const endpoint = `${appConfig?.loqateAPI?.proxyPath || ''}?app=${process.env.TARGET_APP}`\n    // Suggestion granularity (e.g. \"Locality\" or \"Locality,Postcode\") — LD-driven.\n    const types = useStringVariant(LD_KEYS.enablePdpCncLoqateSearchTypes, LOQATE_DEFAULT_TYPES)\n    const [suggestions, setSuggestions] = useState([])\n    const [isLoading, setIsLoading] = useState(false)\n    const debounceRef = useRef(null)\n    const abortRef = useRef(null)\n\n    // Abort the in-flight request so a stale response can't overwrite newer results.\n    const startRequest = useCallback(() => {\n        if (abortRef.current) abortRef.current.abort()\n        const controller = new AbortController()\n        abortRef.current = controller\n        return controller\n    }, [])\n\n    useEffect(() => {\n        return () => {\n            if (debounceRef.current) clearTimeout(debounceRef.current)\n            if (abortRef.current) abortRef.current.abort()\n        }\n    }, [])\n\n    const fetchSuggestions = useCallback(\n        (input) => {\n            if (debounceRef.current) clearTimeout(debounceRef.current)\n\n            if (!input || input.trim().length < LOQATE_MIN_INPUT_LENGTH) {\n                if (abortRef.current) abortRef.current.abort()\n                setSuggestions([])\n                setIsLoading(false)\n                return\n            }\n\n            setIsLoading(true)\n\n            debounceRef.current = setTimeout(async () => {\n                const controller = startRequest()\n                try {\n                    const items = await fetchLoqateSuggestions(\n                        endpoint,\n                        input,\n                        countryCode,\n                        types,\n                        controller.signal\n                    )\n                    setSuggestions(items)\n                } catch (error) {\n                    if (error?.name !== 'AbortError') setSuggestions([])\n                } finally {\n                    if (abortRef.current === controller) {\n                        abortRef.current = null\n                        setIsLoading(false)\n                    }\n                }\n            }, LOQATE_DEBOUNCE_MS)\n        },\n        [endpoint, countryCode, types, startRequest]\n    )\n\n    const selectSuggestion = useCallback(\n        async (suggestion) => {\n            if (!suggestion?.Id) return null\n\n            // Billed geocode call to resolve the selected suggestion's coordinates.\n            const controller = startRequest()\n            setIsLoading(true)\n            try {\n                const coords = await fetchLoqateCoordinates(\n                    endpoint,\n                    suggestion,\n                    countryCode,\n                    types,\n                    controller.signal\n                )\n                setSuggestions([])\n                return coords\n            } catch {\n                return null\n            } finally {\n                if (abortRef.current === controller) {\n                    abortRef.current = null\n                    setIsLoading(false)\n                }\n            }\n        },\n        [endpoint, countryCode, types, startRequest]\n    )\n\n    const clearSuggestions = useCallback(() => {\n        if (debounceRef.current) clearTimeout(debounceRef.current)\n        if (abortRef.current) abortRef.current.abort()\n        setSuggestions([])\n    }, [])\n\n    return {\n        suggestions,\n        isLoading,\n        fetchSuggestions,\n        selectSuggestion,\n        clearSuggestions\n    }\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react'\nimport {useIntl} from 'react-intl'\nimport PropTypes from 'prop-types'\nimport {useLocation} from 'react-router-dom'\nimport {ProductListSkeleton} from 'pandora-shared-app/overrides/app/components/product-grid/product-list-skeleton'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useSearchStore} from 'pandora-shared-app/overrides/app/hooks/use-search-store'\nimport {setCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\nimport useGeolocation from 'pandora-shared-app/overrides/app/hooks/use-geo-location'\nimport {\n    CACHED_STORE_POSTAL_CODE,\n    CACHED_STORE_LOQATE_COORDS,\n    CUSTOM_SELECTED_STORE\n} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\nimport StoresList from 'pandora-shared-app/overrides/app/components/stores-list'\nimport StorePickUp from 'pandora-shared-app/overrides/app/components/store-pickup'\nimport {\n    setFavoriteStore,\n    getFavoriteStore\n} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {useLocalStorage} from 'pandora-shared-app/overrides/app/hooks/use-local-storage'\nimport {useStorePreferences} from 'pandora-shared-app/overrides/app/hooks/use-store-preferences'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useLoqateSearch} from 'pandora-shared-app/overrides/app/hooks/use-loqate-search'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\n// Loqate GlobalTypeAhead suggestion `Type` for a zip; anything else is a city/state.\nconst LOQATE_POSTCODE_TYPE = 'PostalCode'\n\nconst StoreSelector = ({\n    productIds,\n    isOpen,\n    onClose,\n    onStoreSelect,\n    onConfirmStoreSelection,\n    resetStoreInvCheck,\n    trackEvent,\n    drawerRef,\n    setActiveStore\n}) => {\n    const [postcodeFromSession, setPostcodeInSession] = useLocalStorage(\n        CACHED_STORE_POSTAL_CODE,\n        null\n    )\n    const [loqateCoordsFromSession, setLoqateCoordsInSession] = useLocalStorage(\n        CACHED_STORE_LOQATE_COORDS,\n        null\n    )\n\n    // Only restore if a store is already selected — avoids stale results on fresh visits.\n    const {store: selectedStore} = getFavoriteStore()\n    const effectivePostcode = selectedStore ? postcodeFromSession : null\n    const effectiveLoqateCoords = selectedStore ? loqateCoordsFromSession : null\n\n    const [postcode, setPostcode] = useState(effectivePostcode)\n    const [loqateCoords, setLoqateCoords] = useState(effectiveLoqateCoords)\n    // Coords resolved when a Loqate suggestion is picked, held until the user\n    // clicks \"Find stores\" — so selection alone doesn't trigger the search.\n    const [pendingLoqateCoords, setPendingLoqateCoords] = useState(null)\n    // Picked Loqate suggestion whose `Type` drives zip/city search-type tracking.\n    const [selectedSuggestion, setSelectedSuggestion] = useState(null)\n    const [searchLabel, setSearchLabel] = useState(\n        effectivePostcode || effectiveLoqateCoords?.label || null\n    )\n    const [isDataLoaded, setIsDataLoaded] = useState(!!effectivePostcode || !!effectiveLoqateCoords)\n    const [trackingEvent, setTrackingEvent] = useState(null)\n\n    const intl = useIntl()\n    const location = useLocation()\n    const urlParams = new URLSearchParams(location.search)\n    const {site} = useMultiSite()\n    const countryCode = site?.clickAndCollect?.countryCode || ''\n\n    /* Feature flag for Loqate A/B test — market targeting is handled by LD */\n    const loqateEnabled = useVariant(LD_KEYS.enablePdpCncLoqateStoreSearch, false)\n\n    /* Gates clearing the \"no stores nearby\" banner on re-search */\n    const noStoresBannerResetEnabled = useVariant(LD_KEYS.enablePdpCncNoStoresBannerReset, false)\n\n    /* Loqate search hook */\n    const {\n        suggestions: loqateSuggestions,\n        fetchSuggestions,\n        selectSuggestion,\n        clearSuggestions\n    } = useLoqateSearch(countryCode)\n\n    /* Geolocation hook */\n    const {\n        isLocationReady,\n        location: currentLocation,\n        getLocation,\n        resetLocation,\n        error: geoLocationError\n    } = useGeolocation()\n\n    /* Store Preferences */\n    const storePrefs = useStorePreferences(isOpen)\n\n    // Determine which location source to use for the store search.\n    // Loqate coordinates take priority over geolocation when available.\n    const geoLocation = isLocationReady ? currentLocation : null\n    const effectiveLocation = loqateCoords || geoLocation\n\n    /* Store-search API */\n    const {storeData, isStoreError, isStoreLoading, storeError, searchDetails} = useSearchStore({\n        productIds,\n        urlParams,\n        postCode: loqateCoords ? null : postcode,\n        currentLocation: effectiveLocation,\n        storePrefs\n    })\n\n    // Loqate-search-only tracking. A selected suggestion drives the type by its Type;\n    // a typed post code submitted without a suggestion is still a zip search.\n    const searchMeta = useMemo(() => {\n        if (!loqateEnabled) return {}\n\n        if (selectedSuggestion) {\n            const suggestionText = selectedSuggestion.Text ?? ''\n            return selectedSuggestion.Type === LOQATE_POSTCODE_TYPE\n                ? {store_search_type: 'zip_code', store_search_zip: suggestionText}\n                : {store_search_type: 'city_name', store_search_city: suggestionText}\n        }\n\n        if (postcode) return {store_search_type: 'zip_code'}\n\n        return {}\n    }, [loqateEnabled, selectedSuggestion, postcode])\n\n    /* Handlers */\n\n    const handlePostcodeSubmit = (formData) => {\n        const rawValue = formData?.postalCode ?? ''\n        setIsDataLoaded(true)\n\n        if (pendingLoqateCoords) {\n            // A Loqate suggestion was selected — search by its coordinates.\n            setLoqateCoords(pendingLoqateCoords)\n            setPostcode(null)\n            setSearchLabel(rawValue)\n        } else {\n            // Post codes are uppercased; Loqate free text is left as typed.\n            const normalizedPostalCode = loqateEnabled ? rawValue : rawValue.toUpperCase()\n            setLoqateCoords(null)\n            setPostcode(normalizedPostalCode)\n            setSearchLabel(normalizedPostalCode)\n        }\n\n        setTrackingEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.SHOPSEARCH)\n    }\n\n    const handleLocationSubmit = useCallback(() => {\n        getLocation()\n            .then(() => {\n                setIsDataLoaded(true)\n                setPostcode(null)\n                setSearchLabel('')\n                setLoqateCoords(null)\n                setPendingLoqateCoords(null)\n                setSelectedSuggestion(null)\n            })\n            .catch((err) => {\n                console.error('Error getting location:', err)\n            })\n\n        setTrackingEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.USE_LOCATION)\n    }, [getLocation])\n\n    const handleSearchAgain = useCallback(() => {\n        setIsDataLoaded(false)\n        setPostcode(null)\n        setSearchLabel('')\n        setLoqateCoords(null)\n        setPendingLoqateCoords(null)\n        setSelectedSuggestion(null)\n        resetLocation()\n        clearSuggestions()\n\n        trackEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.SEARCHAGAIN, {\n            ...searchDetails,\n            ...searchMeta,\n            ...storeData,\n            data: []\n        })\n    }, [resetLocation, storeData, clearSuggestions, searchDetails, searchMeta])\n\n    const handleStoreDrawerClose = useCallback(() => {\n        onClose()\n\n        const defaultStoreData = {\n            data: [],\n            total: 0,\n            limit: 0\n        }\n        trackEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.CLOSESTORELOOKUP, {\n            ...searchDetails,\n            ...searchMeta,\n            ...(storeData ?? defaultStoreData)\n        })\n    }, [onClose, storeData, searchDetails, searchMeta])\n\n    // user confirms store selection from \"Select Store\" button\n    const handleConfirmStore = useCallback(\n        (currentStore = {}) => {\n            if (loqateCoords) {\n                setLoqateCoordsInSession({...loqateCoords, label: searchLabel})\n                setPostcodeInSession(null)\n            } else {\n                setPostcodeInSession(postcode)\n                setLoqateCoordsInSession(null)\n            }\n\n            const cookieValue = `${currentStore?.id}_${currentStore?.name}`\n\n            resetStoreInvCheck()\n            setActiveStore(currentStore)\n            setCookie(CUSTOM_SELECTED_STORE, encodeURIComponent(cookieValue))\n            setFavoriteStore(currentStore)\n\n            // Use onConfirmStoreSelection if provided, otherwise fall back to onStoreSelect\n            if (onConfirmStoreSelection) {\n                onConfirmStoreSelection(currentStore)\n            } else if (onStoreSelect) {\n                onStoreSelect(currentStore)\n            }\n\n            handleStoreDrawerClose()\n        },\n        [\n            resetStoreInvCheck,\n            onConfirmStoreSelection,\n            onStoreSelect,\n            setActiveStore,\n            setPostcodeInSession,\n            setLoqateCoordsInSession,\n            postcode,\n            loqateCoords,\n            searchLabel\n        ]\n    )\n\n    // user selects a store item\n    const handleStoreSelect = useCallback(\n        (store) => {\n            // Notify parent component about store selection\n            if (onStoreSelect) {\n                onStoreSelect(store)\n            }\n\n            trackEvent(\n                TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.SELECTSTORE,\n                {\n                    ...searchDetails,\n                    ...searchMeta,\n                    ...storeData\n                },\n                {store}\n            )\n\n            handleConfirmStore(store)\n        },\n        [onStoreSelect, storeData, searchDetails, searchMeta, trackEvent, handleConfirmStore]\n    )\n\n    const handleStorePhoneClick = useCallback(() => {\n        trackEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.CALLSTORE, {\n            ...searchDetails,\n            ...searchMeta,\n            ...storeData\n        })\n    }, [searchDetails, searchMeta, storeData])\n\n    const handleStoreInfoClick = useCallback(\n        (store) => {\n            trackEvent(\n                TEALIUM_CONSTANTS.ESTORE_EVENT.STORE.STOREDETAILS,\n                {\n                    ...searchDetails,\n                    ...searchMeta,\n                    ...storeData\n                },\n                {store}\n            )\n        },\n        [searchDetails, searchMeta, storeData]\n    )\n\n    /* Loqate handlers */\n    const handleLoqateInputChange = useCallback(\n        (value) => {\n            // Typing a new query invalidates any previously selected suggestion.\n            setPendingLoqateCoords(null)\n            setSelectedSuggestion(null)\n            fetchSuggestions(value)\n        },\n        [fetchSuggestions]\n    )\n\n    // Hide the \"no stores nearby\" banner the moment the user starts a new search. (DEL-7518)\n    const handleNoStoresReset = useCallback(() => {\n        setIsDataLoaded(false)\n    }, [])\n\n    const handleLoqateSuggestionSelect = useCallback(\n        async (suggestion) => {\n            // Resolve and hold the coordinates; the search runs when the user\n            // clicks \"Find stores\" (via handlePostcodeSubmit), not on select.\n            const coords = await selectSuggestion(suggestion)\n            if (coords) {\n                setPendingLoqateCoords(coords)\n                // Remember the picked suggestion so its Type drives search-type tracking.\n                setSelectedSuggestion(suggestion)\n            }\n            return coords\n        },\n        [selectSuggestion]\n    )\n\n    // This renders modal content on condition\n    // StorePickup form or StoresList\n    const renderBodyContent = () => {\n        if (isStoreLoading) {\n            /* @Todo replace with store skelton */\n            return <ProductListSkeleton limit={3} />\n        }\n\n        if (isDataLoaded && !isStoreError && !geoLocationError && storeData?.data?.length > 0) {\n            return (\n                <StoresList\n                    storeData={storeData}\n                    postcalCode={searchLabel}\n                    searchAgainHandler={handleSearchAgain}\n                    onStoreSelect={handleStoreSelect}\n                    onStoreInfoClick={handleStoreInfoClick}\n                    onStorePhoneClick={handleStorePhoneClick}\n                    loqateEnabled={loqateEnabled}\n                />\n            )\n        }\n\n        return (\n            <StorePickUp\n                submitHandler={handlePostcodeSubmit}\n                locationHandler={handleLocationSubmit}\n                isDeliveryOption={false}\n                isError={isStoreError || !!geoLocationError}\n                errorMessage={storeError?.message || geoLocationError || ''}\n                resetGeoLocation={resetLocation}\n                hasNoStores={isDataLoaded && storeData?.data?.length === 0}\n                storePrefs={storePrefs}\n                loqateEnabled={loqateEnabled}\n                loqateSuggestions={loqateSuggestions}\n                loqateSuggestionResolved={pendingLoqateCoords !== null}\n                onLoqateInputChange={handleLoqateInputChange}\n                onLoqateSuggestionSelect={handleLoqateSuggestionSelect}\n                onLoqateClear={clearSuggestions}\n                {...(noStoresBannerResetEnabled && {onNoStoresReset: handleNoStoresReset})}\n            />\n        )\n    }\n\n    useEffect(() => {\n        if (storeData && trackingEvent) {\n            trackEvent(trackingEvent, {\n                ...storeData,\n                ...searchDetails,\n                ...searchMeta\n            })\n\n            setTrackingEvent(null)\n        }\n    }, [storeData, searchDetails, searchMeta, trackEvent, trackingEvent])\n\n    return (\n        <FullDrawerSheet\n            sheetType={TEALIUM_CONSTANTS.DRAWER.TYPES.CLICK_AND_COLLECT}\n            isOpen={isOpen}\n            onClose={handleStoreDrawerClose}\n            headerText={intl.formatMessage({\n                id: 'product_details.store_pickup_dialog.heading',\n                defaultMessage: 'Pick up in-store'\n            })}\n            bodyContent={renderBodyContent()}\n            footerContent={null}\n            finalFocusRef={drawerRef}\n        />\n    )\n}\n\nStoreSelector.propTypes = {\n    productIds: PropTypes.string,\n    isOpen: PropTypes.bool,\n    onClose: PropTypes.func,\n    onStoreSelect: PropTypes.func,\n    onConfirmStoreSelection: PropTypes.func,\n    resetStoreInvCheck: PropTypes.func,\n    trackEvent: PropTypes.func,\n    drawerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({current: PropTypes.object})]),\n    setActiveStore: PropTypes.func\n}\n\nexport default StoreSelector\n","import {useEffect, useState} from 'react'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {getCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\nimport {useSearchStore} from 'pandora-shared-app/overrides/app/hooks/use-search-store'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {useStorePreferences} from 'pandora-shared-app/overrides/app/hooks/use-store-preferences'\nimport {\n    getFavoriteStore,\n    setFavoriteStore,\n    parseCookieStore\n} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {\n    CUSTOM_SELECTED_STORE,\n    SEARCHED_POSTAL_CODE\n} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\n\n/**\n * Reads the searchedPostalCode from localStorage.\n * Handles both plain string and JSON-encoded string (as written by useLocalStorage hook).\n */\nconst readSearchedPostalCode = () => {\n    try {\n        const value = window.localStorage.getItem(SEARCHED_POSTAL_CODE)\n        if (!value) return null\n        let postalCode\n        try {\n            const parsed = JSON.parse(value)\n            postalCode = typeof parsed === 'string' ? parsed : value\n        } catch {\n            postalCode = value\n        }\n        return postalCode ?? null\n    } catch {\n        return null\n    }\n}\n\n/**\n * Resolves a store selected on cart/checkout onto the PDP.\n *\n * Triggers a store-search API call when:\n *   - custom-selected-store cookie is present (store was selected on cart/checkout)\n *   - searchedPostalCode localStorage key is present (postal code carried from cart/checkout)\n *   - custom-selected-store localStorage is absent OR stale (its id no longer matches the\n *     cookie, i.e. the store was changed on cart/checkout); in-sync localStorage is skipped\n *\n * On success, persists the matched store to localStorage so the standard CnC flow\n * (traffic lights, inventory check, etc.) continues as normal.\n *\n * SEARCHED_POSTAL_CODE is consumed (cleared) once the search completes regardless of\n * outcome, making the cross-page handoff explicitly one-shot and preventing the resolver\n * from triggering again on subsequent PDP visits.\n *\n * Runs only for the primary product — the one-shot signal must not be consumed by\n * non-primary BuyBox instances (C&C drawer, variants).\n */\nexport const useCncStoreResolver = (productIds, isPrimaryProduct = false) => {\n    const enablePdpCncCartStoreRestore = useVariant(LD_KEYS.enablePdpCncCartStoreRestore)\n\n    // Computed once on mount; downstream gates key off shouldResolve.\n    const [resolveConfig] = useState(() => {\n        if (isServer || !isPrimaryProduct)\n            return {shouldResolve: false, cookieStore: null, postalCode: null}\n\n        const cookie = getCookie(CUSTOM_SELECTED_STORE)\n        const postalCode = readSearchedPostalCode()\n        const {store: storeFromLocalStorage} = getFavoriteStore()\n        const cookieStore = parseCookieStore(cookie)\n\n        if (!cookieStore || !postalCode) {\n            return {shouldResolve: false, cookieStore: null, postalCode: null}\n        }\n\n        // Resolve when localStorage is empty or stale; bail when it is in-sync with the cookie.\n        const inSync = storeFromLocalStorage && storeFromLocalStorage.id === cookieStore.storeId\n\n        if (inSync) {\n            return {shouldResolve: false, cookieStore: null, postalCode: null}\n        }\n\n        return {shouldResolve: true, cookieStore, postalCode}\n    })\n\n    const [resolvedStore, setResolvedStore] = useState(null)\n\n    // Fetch store preferences only when resolution is needed, matching the\n    // same trigger condition used to gate the resolver itself.\n    const storePrefs = useStorePreferences(\n        enablePdpCncCartStoreRestore && resolveConfig.shouldResolve\n    )\n\n    // Wait for productIds to be available before enabling the search.\n    // If productIds is absent on the first render (product still loading) and then arrives,\n    // the queryKey would change and React Query would fire two separate API calls.\n    // Holding postCode=null keeps shouldFetch=false in useSearchStore until both are ready.\n    const shouldSearch = enablePdpCncCartStoreRestore && resolveConfig.shouldResolve && !!productIds\n\n    const {storeData, isStoreLoading} = useSearchStore({\n        productIds: shouldSearch ? productIds : null,\n        urlParams: null,\n        postCode: shouldSearch ? resolveConfig.postalCode : null,\n        currentLocation: null,\n        storePrefs\n    })\n\n    useEffect(() => {\n        // storeData === undefined means the query hasn't run yet (React Query initial state\n        // before the first fetch fires, or when enabled=false). Guard against this to prevent\n        // premature SEARCHED_POSTAL_CODE removal before the actual search result arrives.\n        if (\n            !enablePdpCncCartStoreRestore ||\n            !resolveConfig.shouldResolve ||\n            isStoreLoading ||\n            storeData === undefined\n        )\n            return\n\n        // Consume the cross-page postal code regardless of outcome so subsequent\n        // PDP visits do not re-trigger the resolver with a stale value.\n        window.localStorage.removeItem(SEARCHED_POSTAL_CODE)\n\n        if (!storeData?.data?.length) return\n\n        const {storeId} = resolveConfig.cookieStore\n        const matched = storeData.data.find((store) => store.id === storeId)\n\n        if (matched) {\n            setFavoriteStore(matched)\n            setResolvedStore(matched)\n        }\n        // If not matched: leave activeStore as null — user sees \"Select a store\"\n        // and can open the StoreSelector drawer to search manually\n    }, [enablePdpCncCartStoreRestore, resolveConfig, isStoreLoading, storeData])\n\n    return {\n        resolvedStore,\n        isResolving: shouldSearch && isStoreLoading\n    }\n}\n","import {Box} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport React, {useEffect, useRef, useMemo, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {BuyBoxStyles} from './buy-box.styles'\nimport DeliveryEstimate from './partials/delivery-estimate'\nimport StoreAvailability from './partials/store-availability'\nimport {CUSTOM_SELECTED_STORE} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {useClickAndCollectAnalytics} from 'pandora-shared-app/overrides/app/hooks'\nimport StoreSelector from 'pandora-shared-app/overrides/app/components/store-selector'\nimport {\n    clearFavoriteStore,\n    getFavoriteStore,\n    parseCookieStore\n} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {getCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\nimport {useCncStoreResolver} from '../../hooks/use-cnc-store-resolver'\n\nconst BuyBox = ({\n    isDrawerOpenNew,\n    onOpen,\n    onClose,\n    productIds,\n    isSoldOut,\n    isNotifyMe,\n    openNotifyMe,\n    enableCnC,\n    productIsCncEligible,\n    product,\n    onStoreSelect,\n    onConfirmStoreSelection,\n    hideDeliveryAndCnC = false,\n    hasSizes = null,\n    isSizeSelected = null,\n    isSizeOrderableForFavStore = null,\n    resetStoreInvCheck = () => {},\n    isPrimaryProduct = false,\n    isProductLoading = false\n}) => {\n    const [activeStore, setActiveStore] = useState(null)\n    const clickAndCollectButtonRef = useRef(null)\n\n    const {trackEvent} = useClickAndCollectAnalytics(product)\n    const {resolvedStore} = useCncStoreResolver(productIds, isPrimaryProduct)\n    const enablePdpDeliverModuleLayoutShift = useVariant(LD_KEYS.enablePdpDeliverModuleLayoutShift)\n    const enablePdpCncCartStoreRestore = useVariant(LD_KEYS.enablePdpCncCartStoreRestore)\n\n    useEffect(() => {\n        const hasStoreInCookie = getCookie(CUSTOM_SELECTED_STORE)\n        const {store: storeFromLocalStorage} = getFavoriteStore() || {store: null}\n\n        if (!hasStoreInCookie && storeFromLocalStorage) {\n            // Cookie gone but localStorage still has a store — clear to stay in sync.\n            clearFavoriteStore()\n        } else if (hasStoreInCookie && storeFromLocalStorage) {\n            // Cookie is the fresh source of truth; drop the localStorage store when its id\n            // no longer matches so the stale store is never shown (resolver restores the new one).\n            // Gated on the same flag as the resolver so the whole behaviour is reversible via LD.\n            const cookieStore = enablePdpCncCartStoreRestore\n                ? parseCookieStore(hasStoreInCookie)\n                : null\n            if (cookieStore && cookieStore.storeId !== storeFromLocalStorage.id) {\n                clearFavoriteStore()\n            } else {\n                setActiveStore(storeFromLocalStorage)\n            }\n        }\n    }, [enablePdpCncCartStoreRestore])\n\n    const renderCnCDrawer = () => (\n        <Box>\n            <StoreAvailability\n                productIsCncEligible={productIsCncEligible}\n                setOpenDrawer={onOpen}\n                product={product}\n                clickAndCollectButtonRef={clickAndCollectButtonRef}\n                hasSizes={hasSizes}\n                isSizeSelected={isSizeSelected}\n                isSizeOrderableForFavStore={isSizeOrderableForFavStore}\n                selectedStore={activeStore ?? resolvedStore}\n                enablePdpDeliverModuleLayoutShift={enablePdpDeliverModuleLayoutShift}\n                isProductLoading={isProductLoading}\n                isPrimaryProduct={isPrimaryProduct}\n            />\n            {isDrawerOpenNew && (\n                <StoreSelector\n                    productIds={productIds}\n                    isOpen={isDrawerOpenNew}\n                    onClose={onClose}\n                    onStoreSelect={onStoreSelect}\n                    onConfirmStoreSelection={onConfirmStoreSelection}\n                    resetStoreInvCheck={resetStoreInvCheck}\n                    trackEvent={trackEvent}\n                    drawerRef={clickAndCollectButtonRef}\n                    setActiveStore={setActiveStore}\n                />\n            )}\n        </Box>\n    )\n\n    const deliverEstimateProps = useMemo(\n        () => ({\n            isSoldOut,\n            isNotifyMe,\n            openNotifyMe,\n            product,\n            isProductLoading\n        }),\n        [isSoldOut, isNotifyMe, openNotifyMe, product, isProductLoading]\n    )\n\n    const renderDeliveryEstimate = !isPrimaryProduct ? null : (\n        <DeliveryEstimate {...deliverEstimateProps} />\n    )\n\n    return (\n        <Box\n            {...BuyBoxStyles.container}\n            display={hideDeliveryAndCnC ? 'none' : 'block'}\n            data-testid=\"buy-box\"\n        >\n            {enablePdpDeliverModuleLayoutShift ? (\n                <>\n                    {renderDeliveryEstimate}\n                    {enableCnC && renderCnCDrawer()}\n                </>\n            ) : (\n                <>\n                    {enableCnC && renderCnCDrawer()}\n                    {renderDeliveryEstimate}\n                </>\n            )}\n        </Box>\n    )\n}\n\nBuyBox.propTypes = {\n    isDrawerOpenNew: PropTypes.bool,\n    onOpen: PropTypes.func,\n    onClose: PropTypes.func,\n    productIds: PropTypes.string,\n    isSoldOut: PropTypes.bool,\n    isNotifyMe: PropTypes.bool,\n    openNotifyMe: PropTypes.func,\n    enableCnC: PropTypes.bool,\n    productIsCncEligible: PropTypes.bool,\n    product: PropTypes.any,\n    isProductLoading: PropTypes.bool,\n    isPrimaryProduct: PropTypes.bool,\n    // Called when a store row is selected (highlighted in the list)\n    onStoreSelect: PropTypes.func,\n    // Called when the user confirms the selection by clicking the Select store button\n    onConfirmStoreSelection: PropTypes.func,\n    hideDeliveryAndCnC: PropTypes.bool,\n    // props used only when feature flag is ON\n    hasSizes: PropTypes.bool,\n    isSizeSelected: PropTypes.bool,\n    isSizeOrderableForFavStore: PropTypes.bool,\n    resetStoreInvCheck: PropTypes.func\n}\n\nexport default React.memo(BuyBox)\n","import {isFavStoreOrderable} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport {isGiftCard} from './product-type-utils'\nimport {\n    canAddToCart as checkCanAddToCart,\n    isOrderableBundleOrSet as checkOrderableBundleOrSet\n} from './product-eligibility-utils'\n\n/**\n * Validates variant and size selection, handles gift card amount validation\n * @param {boolean} isVariant - Whether the product is a variant\n * @param {Object} selectedSize - Selected size information\n * @param {string} giftCardType - Gift card type if applicable\n * @param {Object} selectedGiftCardOption - Selected gift card option\n * @param {Function} setAmountError - Function to set amount error\n * @param {Function} openSizeSelector - Function to open size selector\n * @returns {boolean} - True if validation passes, false if should return null\n */\nconst validateVariantSizeAndGiftCard = (\n    isVariant,\n    selectedSize,\n    giftCardType,\n    selectedGiftCardOption,\n    setAmountError,\n    openSizeSelector\n) => {\n    const isGiftCardProduct = giftCardType\n\n    // Check if we have a variant AND if a size has been selected\n    // For gift cards, we need to check if a gift card type is selected (not size)\n    if (isVariant && !selectedSize?.name) {\n        // For gift cards, check if a gift card type is selected\n        if (isGiftCardProduct && !selectedGiftCardOption) {\n            if (setAmountError) {\n                setAmountError(true)\n            }\n            return false\n        }\n        if (!isGiftCardProduct) {\n            // For regular products, open size selector\n            openSizeSelector()\n            return false\n        }\n    }\n\n    return true\n}\n\n/**\n * Validates gift card amount selection\n * @param {string} giftCardType - Gift card type if applicable\n * @param {Object} selectedGiftCardOption - Selected gift card option\n * @param {Function} setAmountError - Function to set amount error\n * @returns {boolean} - True if validation passes, false if should return null\n */\nconst validateGiftCardAmount = (giftCardType, selectedGiftCardOption, setAmountError) => {\n    const isGiftCardProduct = giftCardType\n\n    // Additional validation for gift card amount selection\n    if (isGiftCardProduct && !selectedGiftCardOption?.id) {\n        if (setAmountError) {\n            setAmountError(true)\n        }\n        return false\n    }\n\n    return true\n}\n\n/**\n * Handles adding items to cart or updating cart items\n * @param {Object} params - Parameters for cart operations\n * @param {Object} params.product - Product object\n * @param {boolean} params.isVariant - Whether the product is a variant\n * @param {Object} params.selectedSize - Selected size information\n * @param {Object} params.selectedGiftCardOption - Selected gift card option\n * @param {Function} params.giftCardFormSubmit - React Hook Form submit function\n * @param {Function} params.validateAndShowError - Validation function\n * @param {Function} params.getSelectedVariant - Function to get selected variant\n * @param {Function} params.addToCart - Add to cart function\n * @param {number} params.quantity - Quantity to add\n * @param {Function} params.onAddToCartModalOpen - Callback for opening add to cart modal\n * @param {Function} params.setAddToCartError - Function to set cart error\n * @param {Function} params.openSizeSelector - Function to open size selector\n * @returns {Promise<Object|null>} - Result of cart operation or null\n */\nexport const handleCartItem = async ({\n    product,\n    isVariant,\n    selectedSize,\n    selectedGiftCardOption,\n    giftCardFormSubmit,\n    validateAndShowError,\n    getSelectedVariant,\n    addToCart,\n    quantity,\n    onAddToCartModalOpen,\n    setAddToCartError,\n    openSizeSelector,\n    isSignUpToBuy,\n    handleEarlyAccessRedirect,\n    setAmountError\n}) => {\n    // Validate if user is required to be signed up to buy\n    if (isSignUpToBuy) {\n        handleEarlyAccessRedirect()\n        return null\n    }\n    // Validate variant, size, and gift card selection\n    const isGiftCardProduct = isGiftCard(product)\n    if (\n        !validateVariantSizeAndGiftCard(\n            isVariant,\n            selectedSize,\n            isGiftCardProduct,\n            selectedGiftCardOption,\n            setAmountError,\n            openSizeSelector\n        )\n    ) {\n        return null\n    }\n\n    // Validate gift card amount selection\n    if (!validateGiftCardAmount(isGiftCardProduct, selectedGiftCardOption, setAmountError)) {\n        return null\n    }\n\n    const hasValidSelection = validateAndShowError()\n\n    if (!hasValidSelection) {\n        return null\n    }\n\n    if (!addToCart) return null\n\n    // Prepare gift card data if this is a gift card product\n    let giftCardData = null\n    if (isGiftCardProduct) {\n        // Trigger form validation for electronic gift cards\n        const isElectronicGiftCard = product?.giftCardType === 'egc'\n        if (isElectronicGiftCard) {\n            const isFormValid = await giftCardFormSubmit.trigger()\n            if (!isFormValid) {\n                return null\n            }\n        }\n\n        // Get the selected amount from the selected option\n        const selectedAmount = selectedGiftCardOption?.id?.toString()\n\n        // Double-check that we have a valid amount selected\n        if (!selectedAmount) {\n            if (setAmountError) {\n                setAmountError(true)\n            }\n            return null\n        }\n\n        giftCardData = {\n            selectedAmount: selectedAmount\n        }\n\n        // Add form data for electronic gift cards\n        if (isElectronicGiftCard) {\n            const formData = giftCardFormSubmit.getValues()\n            giftCardData.formData = {\n                from: formData.yourName || '',\n                recipient: formData.recipientName || '',\n                recipientEmail: formData.recipientEmail || '',\n                confirmRecipientEmail: formData.confirmRecipientEmail || '',\n                message: formData.personalizeMessage || ''\n            }\n        }\n    }\n\n    try {\n        const selectedVariant = getSelectedVariant()\n        // Pass sizeGuideApplied from selectedSize to track ring sizer usage\n        const trackingOptions = {\n            sizeGuideApplied: selectedSize?.sizeGuideApplied === true\n        }\n        const itemsAdded = await addToCart(selectedVariant, quantity, giftCardData, trackingOptions)\n        // Open modal only when `addToCart` returns some data\n        // It's possible that the item has been added to cart, but we don't want to open the modal.\n        // See wishlist_primary_action for example.\n        if (itemsAdded) {\n            onAddToCartModalOpen({\n                product,\n                itemsAdded,\n                selectedQuantity: quantity\n            })\n            giftCardFormSubmit.reset()\n        }\n        return itemsAdded\n    } catch (e) {\n        setAddToCartError(e)\n        return null\n    }\n}\n\n/**\n * Handles out of stock add to bag click with form trigger for gift cards\n * @param {Object} params - Parameters for the function\n * @param {Object} params.product - Product object\n * @param {Function} params.giftCardFormSubmit - React Hook Form submit function\n * @param {Function} params.handleCartItem - Function to handle cart item\n * @param {Function} params.handleOutOfStockATBClick - Original out of stock handler\n * @returns {Promise<void>}\n */\nexport const handleOutOfStockATBClickWithFormTrigger = async ({\n    product,\n    giftCardFormSubmit,\n    handleCartItem,\n    handleOutOfStockATBClick,\n    selectedPrice,\n    setAmountError\n}) => {\n    // For gift cards, we need to handle them differently\n    const isGiftCardProduct = isGiftCard(product)\n    if (isGiftCardProduct) {\n        let hasErrors = false\n\n        // Check if no amount is selected (selectedPrice should have a value > 0)\n        if (!selectedPrice?.sales?.value || selectedPrice.sales.value <= 0) {\n            setAmountError(true)\n            hasErrors = true\n        }\n\n        // Trigger form validation for electronic gift cards\n        const isElectronicGiftCard = product?.giftCardType === 'egc'\n        if (isElectronicGiftCard) {\n            const isFormValid = await giftCardFormSubmit.trigger()\n            if (!isFormValid) {\n                hasErrors = true\n            }\n        }\n\n        // If there are any validation errors, don't proceed with add to cart\n        if (hasErrors) {\n            return\n        }\n\n        // For gift cards, proceed with add to cart directly\n        const result = await handleCartItem()\n        // Only reset form if item was successfully added to cart\n        if (result) {\n            giftCardFormSubmit.reset()\n        }\n        return\n    }\n\n    // For non-gift cards, use the original logic\n    giftCardFormSubmit.trigger()\n    handleOutOfStockATBClick()\n}\n\n/**\n * Validates product selection and shows errors if needed\n * @param {Object} params - Parameters for validation\n * @param {Object} params.product - Product object\n * @param {boolean} params.isProductLoading - Whether product is loading\n * @param {boolean} params.isVariant - Whether product is a variant\n * @param {Object} params.selectedSize - Selected size information\n * @param {number} params.quantity - Selected quantity\n * @param {number} params.stockLevel - Available stock level\n * @param {boolean} params.isProductPartOfSet - Whether product is part of a set\n * @param {boolean} params.isProductPartOfBundle - Whether product is part of a bundle\n * @param {Function} params.toggleShowOptionsMessage - Function to toggle options message\n * @param {Object} params.errorContainerRef - Reference to error container\n * @param {Function} params.getSelectedVariant - Function to get selected variant\n * @returns {boolean} - Whether validation passed\n */\nexport const validateAndShowError = (\n    {\n        product,\n        isProductLoading,\n        isVariant,\n        selectedSize,\n        quantity,\n        stockLevel,\n        isProductPartOfSet,\n        isProductPartOfBundle,\n        toggleShowOptionsMessage,\n        errorContainerRef,\n        getSelectedVariant\n    },\n    opts = {}\n) => {\n    const {scrollErrorIntoView = true} = opts\n    const selectedVariant = getSelectedVariant()\n    const isSizeOrderableForFavStore = isFavStoreOrderable()\n\n    // Validate that product can be added to cart\n    const hasValidSelection = checkCanAddToCart({\n        product,\n        isProductLoading,\n        selectedVariant,\n        quantity,\n        stockLevel,\n        isSizeOrderableForFavStore\n    })\n\n    // Only show error if we don't have a size selected AND this is a variant product.\n    const showError =\n        !isProductPartOfSet &&\n        !isProductPartOfBundle &&\n        !hasValidSelection &&\n        isVariant &&\n        !selectedSize?.name\n    const scrollToError = showError && scrollErrorIntoView\n\n    toggleShowOptionsMessage(showError)\n\n    if (scrollToError) {\n        if (errorContainerRef.current) {\n            errorContainerRef.current.scrollIntoView({\n                behavior: 'smooth',\n                block: 'center'\n            })\n        }\n    }\n\n    return hasValidSelection\n}\n\n/**\n * Returns true if a bundle or set is orderable based on selected sizes/variants\n * @param {Object} params\n * @param {Array} params.normalizedProducts - Array of child products (normalized)\n * @param {Object} params.combinedSelectedSizes - Map of childId -> { size, variant }\n * @returns {boolean}\n */\nexport const isOrderableBundleOrSet = ({normalizedProducts, combinedSelectedSizes}) => {\n    return checkOrderableBundleOrSet({normalizedProducts, combinedSelectedSizes})\n}\n\n/**\n * Validates bundle/set selection and loading/quantity conditions\n * @param {Object} params\n * @param {Array} params.normalizedProducts - Array of child products (normalized)\n * @param {Object} params.combinedSelectedSizes - Map of childId -> { size, variant }\n * @param {boolean} params.isProductLoading - Whether product is loading\n * @param {number} params.quantity - Selected quantity\n * @returns {boolean}\n */\nexport const validateAndShowErrorBundleNSet = ({\n    normalizedProducts,\n    combinedSelectedSizes,\n    isProductLoading,\n    quantity\n}) => {\n    const isSizeOrderableForFavStore = isFavStoreOrderable()\n    const notLoading = !isProductLoading\n    const isOrderable =\n        isSizeOrderableForFavStore ||\n        isOrderableBundleOrSet({normalizedProducts, combinedSelectedSizes})\n    const quantityValid = quantity > 0\n    const stockValid = isSizeOrderableForFavStore || quantityValid\n    return notLoading && isOrderable && stockValid\n}\n\n/**\n * Builds the selected child items payload for bundle/set ATB\n * @param {Object} params\n * @param {Array} params.normalizedProducts - Array of child products (normalized)\n * @param {Object} params.combinedSelectedSizes - Map of childId -> { size, variant }\n * @returns {Array<{productId: string, quantity: number}>}\n */\nexport const getSelectedBundleChildProducts = ({normalizedProducts, combinedSelectedSizes}) => {\n    const selectedPIDs = normalizedProducts.map((product) => {\n        const selected = combinedSelectedSizes?.[product.id]\n        const productId = selected?.variant?.productId ? selected.variant.productId : product.id\n        return {productId, quantity: 1}\n    })\n\n    return selectedPIDs\n}\n\n/**\n * Builds the selected child items payload for bundle/set ATB\n * @param {Object} params\n * @param {Array} params.normalizedProducts - Array of child products (normalized)\n * @param {Object} params.combinedSelectedSizes - Map of childId -> { size, variant }\n * @returns {Array<{productId: string, quantity: number}>}\n */\nexport const getSelectedSetChildProducts = ({normalizedProducts, combinedSelectedSizes}) => {\n    const selectedPIDs = normalizedProducts.reduce((acc, product, index) => {\n        const selected = combinedSelectedSizes?.[product.id]\n        const productId = selected?.variant?.productId ? selected.variant.productId : product.id\n\n        acc[index] = {\n            product: {productId},\n            quantity: 1\n        }\n\n        return acc\n    }, {})\n\n    return selectedPIDs\n}\n\n/**\n * Handles add to cart for bundle/set products\n * @param {Object} params - Parameters for handling bundle/set ATB\n * @param {boolean} params.shouldShowMultiSizeSelector - Whether multi-size selector is shown\n * @param {string} params.combinedSelectedSizesLabel - Combined label of selected sizes\n * @param {Function} params.openSizeSelector - Opens the size selector drawer\n * @param {Function} params.validateAndShowErrorBundleNSet - Validation fn for bundle/set\n * @param {Function} params.addToCart - Add to cart function\n * @param {boolean} params.isProductPartOfBundle - Whether product is part of a bundle\n * @param {Object} params.product - Product object\n * @param {number} params.quantity - Quantity to add\n * @param {Array} params.normalizedProducts - Child products\n * @param {Object} params.combinedSelectedSizes - Selected sizes map\n * @param {Function} params.onAddToCartModalOpen - Opens add-to-cart modal\n * @param {Function} params.setAddToCartError - Sets add-to-cart error\n * @returns {Promise<Object|null>} - Result of cart operation or null\n */\nexport const handleCartItemBundleOrSet = async ({\n    shouldShowMultiSizeSelector,\n    combinedSelectedSizesLabel,\n    openSizeSelector,\n    validateAndShowErrorBundleNSet,\n    addToCart,\n    isProductPartOfBundle,\n    product,\n    quantity,\n    normalizedProducts,\n    combinedSelectedSizes,\n    onAddToCartModalOpen,\n    setAddToCartError,\n    isClickAndCollectEnabled,\n    openBuyBoxDrawer,\n    isSignUpToBuy,\n    handleEarlyAccessRedirect,\n    enablePdpCnCProductSets = false\n}) => {\n    // Validate if user is required to be signed up to buy\n    if (isSignUpToBuy) {\n        handleEarlyAccessRedirect()\n        return null\n    }\n\n    // Ensure size selection when multi-size selector is enabled\n    if (shouldShowMultiSizeSelector && !combinedSelectedSizesLabel) {\n        openSizeSelector()\n        return null\n    }\n\n    const hasValidSelection = validateAndShowErrorBundleNSet()\n    // Enable CNC for SET products\n    const isSetProduct = product?.productType?.set ?? false\n    const isProductABundleOrSet = enablePdpCnCProductSets\n        ? isProductPartOfBundle || isSetProduct\n        : isProductPartOfBundle\n\n    if (!hasValidSelection) {\n        if (isProductABundleOrSet && isClickAndCollectEnabled) {\n            // Set ATB flag since this is triggered from Add to Bag click\n            openBuyBoxDrawer(true)\n        }\n        return null\n    }\n\n    if (!addToCart) return null\n\n    // Prepare child items for DOL ATB\n    let childItems = null\n    if (isProductPartOfBundle) {\n        childItems = getSelectedBundleChildProducts({\n            normalizedProducts,\n            combinedSelectedSizes\n        })\n    } else {\n        childItems = getSelectedSetChildProducts({\n            normalizedProducts,\n            combinedSelectedSizes\n        })\n    }\n\n    try {\n        let itemsAdded = null\n        if (isProductPartOfBundle) {\n            itemsAdded = await addToCart(product, quantity, childItems)\n        } else {\n            itemsAdded = await addToCart(childItems)\n        }\n        if (itemsAdded) {\n            onAddToCartModalOpen({\n                product,\n                itemsAdded,\n                selectedQuantity: quantity\n            })\n        }\n        return itemsAdded\n    } catch (e) {\n        setAddToCartError(e)\n        return null\n    }\n}\n","/**\n * Product Eligibility Utilities\n *\n * Centralized utilities for checking product eligibility, availability, and purchase conditions.\n * These utilities provide a single source of truth for all eligibility-related checks across the PDP.\n *\n * @module product-eligibility-utils\n */\n\nimport {isSet, isNonPurchasable, isGiftCard} from './product-type-utils'\n\n/**\n * Checks if a product is discontinued\n * @param {Object} product - Product object\n * @returns {boolean} True if product is discontinued\n */\nexport const isDiscontinued = (product) => {\n    return product?.custom?.status === 'discontinued'\n}\n\n/**\n * Checks if a product is a sneak peek product\n * @param {Object} product - Product object\n * @returns {boolean} True if product is sneak peek\n */\nexport const isSneakPeek = (product) => {\n    return product?.custom?.isSneakPeekProduct || false\n}\n\n/**\n * Checks if a product is an early access product\n * @param {Object} product - Product object\n * @returns {boolean} True if product is early access\n */\nexport const isEarlyAccess = (product) => {\n    return product?.custom?.isEarlyAccessProduct || false\n}\n\n/**\n * Checks if a product is a Physical Gift Card (PGC)\n * Matches 'pgc' and any variant including localized versions\n * @param {Object} product - Product object\n * @returns {boolean} True if product is a PGC\n */\nexport const isPGCGiftCard = (product) => {\n    return /\\bpgc\\w*/i.test(product?.giftCardType)\n}\n\n/**\n * Checks if a product is available for purchase\n * A product is available if it's not discontinued, not sneak peek, not non-purchasable, and not a set\n * @param {Object} product - Product object\n * @param {Object} options - Additional options\n * @param {boolean} options.excludePGC - Whether to exclude PGC gift cards (default: false)\n * @param {boolean} options.excludeDiscontinued - Whether to skip the discontinued check (default: false)\n * @returns {boolean} True if product is available\n */\nexport const isProductAvailable = (product, options = {}) => {\n    // Handle null/undefined product\n    if (!product) {\n        return false\n    }\n\n    const {excludePGC = false, excludeSet = true, excludeDiscontinued = false} = options\n\n    let baseAvailability =\n        (excludeDiscontinued || !isDiscontinued(product)) &&\n        !isSneakPeek(product) &&\n        !isNonPurchasable(product)\n\n    if (excludeSet) {\n        baseAvailability = baseAvailability && !isSet(product)\n    }\n\n    if (excludePGC) {\n        return baseAvailability && !isPGCGiftCard(product)\n    }\n\n    return baseAvailability\n}\n\n/**\n * Checks if a product's inventory is orderable\n * @param {Object} product - Product object\n * @returns {boolean} True if product inventory is orderable\n */\nexport const isProductOrderable = (product) => {\n    return product?.inventory?.orderable || false\n}\n\n/**\n * Checks if a variant is orderable\n * @param {Object} variant - Variant object\n * @returns {boolean} True if variant is orderable\n */\nexport const isVariantOrderable = (variant) => {\n    return variant?.orderable || false\n}\n\n/**\n * Checks if a size option is orderable\n * @param {Object} size - Size object with orderable property\n * @returns {boolean} True if size is orderable\n */\nexport const isSizeOrderable = (size) => {\n    return size?.orderable || false\n}\n\n/**\n * Checks if a product is available for \"Find in Store\" feature\n * Checks multiple possible paths for the field (custom, c_ prefix, or root level)\n * @param {Object} product - Product object\n * @returns {boolean} True if available for find in store\n */\nexport const isAvailableForFindInStore = (product) => {\n    // Check all possible paths for the field\n    // Default to true if not explicitly set to false\n    const customValue = product?.custom?.availableForFindInStore\n    const prefixedValue = product?.c_availableForFindInStore\n    const rootValue = product?.availableForFindInStore\n\n    // Use the first defined value, or default to true (not explicitly disabled)\n    const value = customValue ?? prefixedValue ?? rootValue\n    return value !== false\n}\n\n/**\n * Checks if a product is available for in-store pickup (Click & Collect)\n * Checks multiple possible paths for the field (custom, c_ prefix, or root level)\n * @param {Object} product - Product object\n * @returns {boolean} True if available for in-store pickup\n */\nexport const isAvailableForInStorePickup = (product) => {\n    // Check all possible paths for the field\n    const customValue = product?.custom?.availableForInStorePickup\n    const prefixedValue = product?.c_availableForInStorePickup\n    const rootValue = product?.availableForInStorePickup\n\n    // Return true if any of the paths is explicitly true\n    return customValue === true || prefixedValue === true || rootValue === true\n}\n\n/**\n * Checks if a product is eligible for Click & Collect\n * @param {Object} product - Product object\n * @param {Object} [options]\n * @param {boolean} [options.excludeFindInStore=false] - When true, skips the isAvailableForFindInStore\n *   check and relies solely on isAvailableForInStorePickup. Controlled by the\n *   `enable-pdp-cnc-exclude-find-in-store` LaunchDarkly flag.\n * @returns {boolean} True if product is C&C eligible\n */\nexport const isCncEligible = (product, {excludeFindInStore = false} = {}) => {\n    if (excludeFindInStore) {\n        return isAvailableForInStorePickup(product)\n    }\n    return isAvailableForFindInStore(product) && isAvailableForInStorePickup(product)\n}\n\n/**\n * Checks if a user can purchase an early access product\n * @param {Object} product - Product object\n * @param {boolean} isUserLoggedIn - Whether user is logged in\n * @returns {boolean} True if user can purchase the early access product\n */\nexport const canPurchaseEarlyAccessProduct = (product, isUserLoggedIn) => {\n    if (!isEarlyAccess(product)) {\n        return true // Not an early access product, can purchase\n    }\n    return isUserLoggedIn // Early access product, requires login\n}\n\n/**\n * Checks if all sizes in a size attribute are not orderable\n * Used to determine if a product has any orderable sizes\n * @param {Object} sizeAttr - Size attribute object with values array\n * @returns {boolean} True if all sizes are not orderable\n */\nexport const areAllSizesNotOrderable = (sizeAttr) => {\n    if (!sizeAttr?.values || !Array.isArray(sizeAttr.values)) {\n        return true\n    }\n    return sizeAttr.values.every((sizeValue) => !sizeValue.orderable)\n}\n\n/**\n * Checks if a product or variant is orderable based on various conditions\n * This is a comprehensive check that considers:\n * - Favorite store orderability (if applicable)\n * - Variant orderability\n * - Product inventory orderability\n * - Fallback product orderability\n *\n * @param {Object} options - Options for checking orderability\n * @param {Object} options.product - Product object\n * @param {Object} options.selectedVariant - Selected variant object\n * @param {boolean} options.isSizeOrderableForFavStore - Whether size is orderable for favorite store\n * @returns {boolean} True if orderable\n */\nexport const isOrderable = ({product, selectedVariant, isSizeOrderableForFavStore = false}) => {\n    if (isSizeOrderableForFavStore) {\n        return true\n    }\n\n    if (selectedVariant && isVariantOrderable(selectedVariant)) {\n        return true\n    }\n\n    return isProductOrderable(product)\n}\n\n/**\n * Checks if a bundle or set is orderable based on selected sizes/variants\n * @param {Object} options\n * @param {Array} options.normalizedProducts - Array of child products\n * @param {Object} options.combinedSelectedSizes - Map of childId -> { size, variant }\n * @returns {boolean} True if all products in bundle/set are orderable\n */\nexport const isOrderableBundleOrSet = ({normalizedProducts, combinedSelectedSizes}) => {\n    if (!normalizedProducts || !Array.isArray(normalizedProducts)) {\n        return false\n    }\n\n    return normalizedProducts.every((product) => {\n        const selected = combinedSelectedSizes?.[product.id]\n        const selectedVariant = selected?.variant\n\n        if (selectedVariant) {\n            return isVariantOrderable(selectedVariant)\n        }\n\n        const sizeAttr = product.variationAttributes?.find((attr) => attr.id === 'size')\n        if (sizeAttr && Array.isArray(sizeAttr.values)) {\n            return !areAllSizesNotOrderable(sizeAttr)\n        }\n\n        return isProductOrderable(product)\n    })\n}\n\n/**\n * Checks if product meets all criteria for adding to cart\n * Considers loading state, orderability, quantity, and stock\n * @param {Object} options\n * @param {Object} options.product - Product object\n * @param {boolean} options.isProductLoading - Whether product is loading\n * @param {Object} options.selectedVariant - Selected variant\n * @param {number} options.quantity - Quantity to add\n * @param {number} options.stockLevel - Available stock level\n * @param {boolean} options.isSizeOrderableForFavStore - Whether orderable for favorite store\n * @returns {boolean} True if product can be added to cart\n */\nexport const canAddToCart = ({\n    product,\n    isProductLoading,\n    selectedVariant,\n    quantity,\n    stockLevel,\n    isSizeOrderableForFavStore = false\n}) => {\n    const notLoading = !isProductLoading\n    const productIsOrderable = isOrderable({\n        product,\n        selectedVariant,\n        isSizeOrderableForFavStore\n    })\n    const quantityValid = quantity > 0\n    const stockValid = isSizeOrderableForFavStore || quantity <= stockLevel\n\n    return notLoading && productIsOrderable && quantityValid && stockValid\n}\n\n/**\n * Checks if a product should be excluded from direct Add-to-Bag from size selector\n * Used in the direct ATB feature to filter out products that require additional steps\n * @param {Object} product - Product object\n * @returns {boolean} True if product should be excluded from direct ATB\n */\nexport const shouldExcludeFromDirectATB = (product) => {\n    return isGiftCard(product) || isNonPurchasable(product)\n}\n","import {useCallback, useState, useEffect} from 'react'\n\n/**\n * Hook to manage PLP-specific product fetching and action handling\n * Extracts PLP logic from BuyFromTile to maintain separation of concerns\n *\n * @param {Object} options - Hook options\n * @param {boolean} options.isFromPlp - Whether the component is used from PLP\n * @param {string} options.selectedVariantId - Currently selected variant ID from swatch\n * @param {string} options.productId - Base product ID\n * @param {boolean} options.shouldFetchFullProduct - Whether full product fetch is triggered\n * @param {Function} options.setShouldFetchFullProduct - Function to trigger product fetch\n * @param {boolean} options.hasRealFullProductData - Whether we have real full product data\n * @param {boolean} options.isLoadingFullProduct - Whether product is loading\n * @param {boolean} options.isFetchingFullProduct - Whether product is being fetched\n * @param {boolean} options.isFullProductError - Whether product fetch encountered an error\n * @param {Object} options.fullProductError - Error object from product fetch\n * @param {Function} options.setPlpFetchError - Function to set PLP fetch error state for inline display\n * @param {Object} options.normalizedFullProduct - Normalized full product data\n * @param {Function} options.openMultiSizeDrawer - Function to open multi-size drawer\n * @param {Function} options.handleCartItemBundleOrSet - Handler for bundle/set add to cart\n * @param {Function} options.handleCartItem - Handler for simple product add to cart\n * @param {Function} options.handleOOSSimpleProduct - Handler for OOS simple products\n * @param {Function} options.setPendingDrawerOpen - Function to trigger drawer opening\n * @returns {Object} - PLP handler state and functions\n */\nexport const usePlpProductHandler = ({\n    isFromPlp,\n    selectedVariantId,\n    productId,\n    shouldFetchFullProduct,\n    setShouldFetchFullProduct,\n    hasRealFullProductData,\n    isLoadingFullProduct,\n    isFetchingFullProduct,\n    isFullProductError,\n    fullProductError,\n    setPlpFetchError,\n    normalizedFullProduct,\n    openMultiSizeDrawer,\n    handleCartItemBundleOrSet,\n    handleCartItem,\n    handleOOSSimpleProduct,\n    setPendingDrawerOpen\n}) => {\n    // Track that we're waiting for product data to complete the add-to-cart flow\n    const [pendingPlpAction, setPendingPlpAction] = useState(false)\n    // Track the variant ID that was last fetched to detect when we need to re-fetch\n    const [lastFetchedVariantId, setLastFetchedVariantId] = useState(null)\n\n    /**\n     * Reset PLP state when product changes\n     */\n    const resetPlpState = useCallback(() => {\n        setPendingPlpAction(false)\n        setLastFetchedVariantId(null)\n    }, [])\n\n    /**\n     * Handle product load completion for PLP products\n     * This effect runs when we have a pending PLP action and the full product data has loaded\n     */\n    useEffect(() => {\n        // Only proceed if we have a pending PLP action and data has loaded\n        if (!pendingPlpAction || !isFromPlp) return\n        if (isLoadingFullProduct || isFetchingFullProduct) return\n\n        // Handle product fetch error\n        if (isFullProductError) {\n            setPendingPlpAction(false)\n            if (setPlpFetchError) {\n                setPlpFetchError(\n                    fullProductError || new Error('Something went wrong. Please try again.')\n                )\n            }\n            return\n        }\n\n        if (!hasRealFullProductData) return\n\n        // Clear the pending action flag\n        setPendingPlpAction(false)\n\n        // Now we have full product data - determine what action to take\n        const productData = normalizedFullProduct\n\n        // Check if product is a bundle/set (based on full product data)\n        const isBundleProduct = productData?.productType?.bundle\n        const isSetProduct = productData?.productType?.set\n        const isBundleOrSetProduct = isBundleProduct || isSetProduct\n\n        if (isBundleOrSetProduct) {\n            // For bundles/sets, check if we have child products and need multi-size selection\n            const bundledProducts = productData?.bundledProducts || []\n            const setProducts = productData?.setProducts || []\n            const childProducts = bundledProducts.length > 0 ? bundledProducts : setProducts\n            const normalizedChildProducts = childProducts.map((item) => item.product || item)\n\n            // Check if any child products have size variants\n            const hasMultiSizeSelection = normalizedChildProducts.some(\n                (childProduct) =>\n                    Array.isArray(childProduct?.variationAttributes) &&\n                    childProduct.variationAttributes.some((attr) => attr.id === 'size')\n            )\n\n            if (hasMultiSizeSelection && openMultiSizeDrawer) {\n                openMultiSizeDrawer()\n            } else if (normalizedChildProducts.length > 0) {\n                // No size selection needed, add to cart directly\n                handleCartItemBundleOrSet()\n            }\n            return\n        }\n\n        // Check if product has size variants (for simple variant products only)\n        const productHasSizeVariants =\n            Array.isArray(productData?.variationAttributes) &&\n            productData.variationAttributes.some((attr) => attr.id === 'size')\n\n        if (productHasSizeVariants) {\n            // Need to open size selector drawer\n            // Set pending flag - the drawer-open effect will handle it once SizeSelectorDrawer renders\n            setPendingDrawerOpen(true)\n            return\n        }\n\n        // Simple product without size variants - add to cart directly or handle OOS\n        const isProductOrderable = productData?.inventory?.orderable\n\n        if (isProductOrderable) {\n            handleCartItem()\n        } else {\n            handleOOSSimpleProduct()\n        }\n    }, [\n        pendingPlpAction,\n        isFromPlp,\n        isLoadingFullProduct,\n        isFetchingFullProduct,\n        isFullProductError,\n        fullProductError,\n        setPlpFetchError,\n        hasRealFullProductData,\n        normalizedFullProduct,\n        openMultiSizeDrawer,\n        handleCartItemBundleOrSet,\n        handleCartItem,\n        handleOOSSimpleProduct,\n        setPendingDrawerOpen\n    ])\n\n    /**\n     * Handle PLP click - determines if we need to fetch product data\n     * @returns {Object} - { shouldReturn: boolean } - whether the caller should return early\n     */\n    const handlePlpClick = useCallback(() => {\n        if (!isFromPlp) {\n            return {shouldReturn: false}\n        }\n\n        // Calculate the current variant ID that needs to be fetched\n        const currentVariantId = selectedVariantId || productId\n        // Check if we need to re-fetch for a different variant\n        const needsRefetch = hasRealFullProductData && lastFetchedVariantId !== currentVariantId\n\n        if (!hasRealFullProductData || needsRefetch) {\n            // Trigger fetch of full product details for PLP products\n            if (!shouldFetchFullProduct || needsRefetch) {\n                setShouldFetchFullProduct(true)\n                setPendingPlpAction(true)\n                setLastFetchedVariantId(currentVariantId)\n            }\n            // Wait for product to load, the effect will handle the rest\n            return {shouldReturn: true}\n        }\n\n        // Check if still loading\n        if (isLoadingFullProduct || isFetchingFullProduct) {\n            return {shouldReturn: true}\n        }\n\n        return {shouldReturn: false}\n    }, [\n        isFromPlp,\n        selectedVariantId,\n        productId,\n        hasRealFullProductData,\n        lastFetchedVariantId,\n        shouldFetchFullProduct,\n        setShouldFetchFullProduct,\n        isLoadingFullProduct,\n        isFetchingFullProduct\n    ])\n\n    return {\n        // State (exposed for debugging/testing if needed)\n        pendingPlpAction,\n        lastFetchedVariantId,\n\n        // Functions\n        handlePlpClick,\n        resetPlpState\n    }\n}\n\nexport default usePlpProductHandler\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {MemoryRouter, Route} from 'react-router-dom'\n\n/**\n * PlpRoutingWrapper - Provides routing context for PDP components used in PLP\n *\n * PDP components like SizeOptions use useParams() to get the productId from the URL.\n * When these components are used in PLP context (where there's no :productId in the URL),\n * we need to simulate the routing context.\n *\n * This wrapper creates a MemoryRouter with a fake route that includes the productId,\n * allowing useParams() to work correctly.\n */\nexport const PlpRoutingWrapper = ({productId, children}) => {\n    if (!productId) {\n        console.warn('[PlpRoutingWrapper] No productId provided, rendering without routing context')\n        return children\n    }\n\n    return (\n        <MemoryRouter\n            initialEntries={[\n                {\n                    pathname: `/product/${productId}`,\n                    search: ''\n                }\n            ]}\n            initialIndex={0}\n        >\n            <Route path=\"/product/:productId\">{children}</Route>\n        </MemoryRouter>\n    )\n}\n\nPlpRoutingWrapper.propTypes = {\n    productId: PropTypes.string,\n    children: PropTypes.node.isRequired\n}\n","/**\n * Get product stock status based on product type\n *\n * This function determines the correct stock status for a product based on its type:\n * - Recommendation variants (swatches): Use inventory.orderable from Commerce API\n * - Master/Set/Bundle products: Use productInStock from Search API\n *\n * IMPORTANT: These sources NEVER mix - the function uses product type detection\n * to choose the appropriate source.\n *\n * @param {Object} activeProduct - The currently active/selected product\n * @param {Object} mainProduct - The main/master product for comparison\n * @returns {boolean} - True if product is in stock, false otherwise\n *\n * @example\n * // Recommendation variant (swatch selected)\n * const isInStock = getProductStockStatus(variantProduct, masterProduct)\n * // Returns: variantProduct.inventory.orderable\n *\n * @example\n * // Master product (no variant selected)\n * const isInStock = getProductStockStatus(masterProduct, masterProduct)\n * // Returns: masterProduct.productInStock\n */\nexport const getProductStockStatus = (activeProduct, mainProduct) => {\n    if (!activeProduct) {\n        return true // Default: assume in stock if no product provided\n    }\n\n    // Step 1: Detect product type by comparing IDs\n    // If the active product ID differs from main product ID, it's a recommendation variant\n    const activeId = activeProduct?.productId || activeProduct?.id\n    const mainId = mainProduct?.productId || mainProduct?.id\n    const isRecommendationVariant = activeId !== mainId\n\n    // Step 2: Use appropriate source based on product type\n\n    // Recommendation variant (swatch): Use inventory.orderable ONLY\n    // This data comes from Commerce API and is the single source of truth for variants\n    if (isRecommendationVariant && activeProduct?.inventory?.orderable !== undefined) {\n        return activeProduct.inventory.orderable\n    }\n\n    // Master/Set/Bundle: Use c_extend.productInStock ONLY\n    // This data comes from Search API and is the single source of truth for master products\n    if (!isRecommendationVariant && activeProduct?.productInStock !== undefined) {\n        return activeProduct.productInStock\n    }\n\n    // Default: Backward compatibility\n    // If neither source is available, assume in stock to maintain existing behavior\n    return true\n}\n\n/**\n * Reads the orderable flag of a simple product from whichever shape the tile data carries it in.\n *\n * Search hits carry the Search API truth in `productInStock` and a defaulted inventory block whose\n * `orderable` is false, so `productInStock` is read first. Commerce API products have no\n * `productInStock` and expose the authoritative `inventory` at the root; the carousel and Shop The\n * Look tile transforms keep it under `c_extend` and surface a flat `orderable`.\n *\n * @param {Object} product\n * @returns {boolean|undefined}\n */\nexport const getSimpleProductOrderable = (product) => {\n    const productInStock = product?.productInStock ?? product?.c_extend?.productInStock\n\n    if (productInStock !== undefined) {\n        return productInStock\n    }\n\n    if (product?.inventory?.orderable !== undefined) {\n        return product.inventory.orderable\n    }\n\n    if (product?.c_extend?.inventory?.orderable !== undefined) {\n        return product.c_extend.inventory.orderable\n    }\n\n    return product?.orderable\n}\n\nexport default getProductStockStatus\n","export const styles = {\n    addToBagButton: {\n        textStyle: 'label',\n        textTransform: 'none',\n        h: 'auto',\n        px: 0\n    }\n}\n","import React, {useCallback, useMemo, useState, useEffect, useRef} from 'react'\nimport {useIntl} from 'react-intl'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Button,\n    Text,\n    useBreakpointValue\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useCartErrorHandling} from 'product-details/overrides/app/pages/product-detail/hooks/use-cart-error-handling'\nimport {useDolBasketMutation} from 'pandora-shared-app/overrides/app/hooks/use-dol-basket-mutation'\nimport useEinstein from 'pandora-shared-app/overrides/app/hooks/use-einstein'\nimport {useAddToCartModalContext} from 'pandora-shared-app/overrides/app/contexts/add-to-cart'\nimport SizeSelectorDrawer from 'product-details/overrides/app/components/size-selector'\nimport SequentialSizeSelectorDrawer from 'product-details/overrides/app/components/sequential-size-selector'\nimport {useBuyBoxDrawer} from 'product-details/overrides/app/hooks/use-buy-box-drawer'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport BuyBox from 'product-details/overrides/app/components/buy-box'\nimport {getProductCnCStatus} from 'product-details/overrides/app/utils/product-cnc-utils'\nimport {\n    getSelectedBundleChildProducts,\n    getSelectedSetChildProducts,\n    validateAndShowErrorBundleNSet,\n    isOrderableBundleOrSet\n} from 'product-details/overrides/app/utils/handle-cart-item'\nimport {useProducts} from 'pandora-shared-app/overrides/app/hooks/use-products'\nimport NotifyMe from 'product-details/overrides/app/components/notify-me'\nimport {useAddToCartAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-add-to-cart-analytics'\nimport {usePixelAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-pixel-analytics'\nimport {PIXEL_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {usePlpProductHandler} from './hooks/use-plp-product-handler'\nimport {PlpRoutingWrapper} from './plp-routing-wrapper'\nimport {getProductStockStatus, getSimpleProductOrderable} from './utils/get-product-stock-status'\nimport {styles} from './buy-from-tile.styles'\n\n// Helper: Check if product matches any exclusion rule\n/* istanbul ignore next */\nconst isProductExcluded = (\n    product,\n    isProductABundleOrSet,\n    normalizedProducts = [],\n    enablePlpBuyFromTile = false\n) => {\n    if (product?.custom?.nonPurchasable) return true\n    if (product?.giftCardType) return true\n\n    // Exclude engravable products only when PLP Buy from Tile flag is not active\n    // When enablePlpBuyFromTile is true, the backend controls via buyFromTileEnabled=false,\n    // and product-tile-content.jsx shows \"View\" or \"Notify Me\" accordingly\n    if (!enablePlpBuyFromTile) {\n        if (product?.isEngravable || product?.c_engravable) return true\n\n        // For sets/bundles, check if any child products are engravable\n        if (isProductABundleOrSet && normalizedProducts.length > 0) {\n            const hasEngravableChild = normalizedProducts.some(\n                (child) => child?.isEngravable || child?.c_engravable\n            )\n            /* istanbul ignore next */\n            if (hasEngravableChild) return true\n        }\n    }\n\n    if (product?.stylingStudio?.braceletBuilder?.isEnabled) return true\n    return false\n}\n\n// Helper: Check if a simple (non-variant, non-bundle) product should be hidden\nconst shouldHideSimpleProduct = ({\n    productToUse,\n    enableNotifyMe,\n    isClickAndCollectEnabled,\n    isActuallyLoading\n}) => {\n    const isProductOrderable = getSimpleProductOrderable(productToUse)\n    const isNotifyMeEnabled = enableNotifyMe && productToUse?.custom?.isNotifyMe\n\n    return (\n        !isProductOrderable && !isClickAndCollectEnabled && !isNotifyMeEnabled && !isActuallyLoading\n    )\n}\n\n// Helper: Check if a product with size variants should be hidden (all sizes OOS)\nconst shouldHideForAllSizesOOS = ({\n    product,\n    productToUse,\n    enableNotifyMe,\n    isClickAndCollectEnabled,\n    isProductPartOfBundle,\n    isProductPartOfSet,\n    isProductABundleOrSet\n}) => {\n    const sizeAttr = product?.variationAttributes?.find((attr) => attr.id === 'size')\n    const allSizesOOS =\n        sizeAttr?.values?.length > 0 && sizeAttr.values.every((size) => !size.orderable)\n    const isNotifyMeEnabled = enableNotifyMe && productToUse?.custom?.isNotifyMe\n\n    if (!allSizesOOS || isNotifyMeEnabled) return false\n    // Sets have no C&C — always hide when all OOS\n    if (isProductPartOfSet) return true\n    // Bundles — hide only if no C&C available\n    if (isProductPartOfBundle) return !isClickAndCollectEnabled\n    // Regular products — hide if no C&C available\n    if (!isProductABundleOrSet) return !isClickAndCollectEnabled\n    return false\n}\n\n// Helper: Check if a bundle/set should be hidden because any child is fully OOS\nconst shouldHideForChildOOS = ({\n    normalizedProducts,\n    enableNotifyMe,\n    productToUse,\n    isClickAndCollectEnabled,\n    isProductPartOfSet,\n    isProductPartOfBundle\n}) => {\n    const isNotifyMeEnabled = enableNotifyMe && productToUse?.custom?.isNotifyMe\n\n    const anyChildFullyOOS = normalizedProducts.some((child) => {\n        const sizes = child?.variationAttributes?.find((attr) => attr.id === 'size')?.values\n        if (sizes?.length > 0) {\n            return sizes.every((s) => !s.orderable)\n        }\n        return child?.inventory?.orderable === false\n    })\n\n    if (!anyChildFullyOOS || isNotifyMeEnabled) return false\n    // Sets have no C&C — always hide when any child is fully OOS\n    if (isProductPartOfSet) return true\n    // Bundles — hide only if no C&C available\n    if (isProductPartOfBundle) return !isClickAndCollectEnabled\n    return false\n}\n\n/**\n * BuyFromTile component handles adding products to bag from product tiles in reczones\n * Supports:\n * - Simple products\n * - Variant products (color, metal, carat)\n * - Size variants\n * - Bundle products (with/without size selection for child products)\n * - Set products (with/without size selection for child products)\n */\n\n/** @typedef {import('pandora-shared-app/overrides/app/types/product').DOLProduct} DOLProduct */\n\nexport const BuyFromTile = ({\n    product,\n    /** @type {DOLProduct} */\n    productForTracking,\n    setAddToCartError,\n    isDisabled = false,\n    className = '',\n    hideDeliveryAndCnC = false,\n    productFindingMethod = null,\n    isFromPlp = false,\n    selectedVariantId = null,\n    buttonText = null,\n    plpSizeSelector = null,\n    dataAuto,\n    onAddToCart,\n    skipBloomreachAddToCartPixel = false,\n    isNotifyMeCta = false\n}) => {\n    const intl = useIntl()\n    const einstein = useEinstein()\n    const {submitAddItemToCart, isAddingItem} = useDolBasketMutation()\n    const {onOpen: openAddToCartModal} = useAddToCartModalContext()\n    const {trackAddToCart} = useAddToCartAnalytics()\n    const {getErrorMessage} = useCartErrorHandling()\n    const {handleAnalyticsEvent} = usePixelAnalytics()\n    const isBloomreachPixelEnabled = useVariant(LD_KEYS.enableGlobalBloomreachPixelTracking, false)\n    const isEnhancedPixelEnabled = useVariant(LD_KEYS.enablePdpBloomreachPixelEnhanced, false)\n\n    // State for PLP product fetch error (displayed inline like PDP)\n    const [plpFetchError, setPlpFetchError] = useState(null)\n\n    // State for size selection\n    const [selectedSize, setSelectedSize] = useState(null)\n    const [openSizeDrawer, setOpenSizeDrawer] = useState(null)\n    const [closeSizeDrawer, setCloseSizeDrawer] = useState(null)\n    // Flag to request drawer opening (used when drawer isn't ready yet)\n    const [pendingDrawerOpen, setPendingDrawerOpen] = useState(false)\n\n    // State for product ID to use in store search (master or variant)\n    // Use selectedVariantId (from swatch selection) if provided, otherwise use product's ID\n    const [productIdForStore, setProductIdForStore] = useState(\n        selectedVariantId || product?.productId\n    )\n\n    // Ref to track the current product ID synchronously (avoids React state batching issues)\n    // This ensures handleCartItem always uses the most current variant ID\n    // Updated during render phase (before effects) for immediate availability\n    const currentProductIdRef = useRef(selectedVariantId || product?.productId)\n    // Update ref synchronously during render - this happens BEFORE any click handlers\n    currentProductIdRef.current = selectedVariantId || product?.productId\n\n    // State for store selection (C&C)\n    const [selectedStore, setSelectedStore] = useState(null)\n\n    // State for bundle/set products\n    const [combinedSelectedSizes, setCombinedSelectedSizes] = useState({})\n    const [combinedSelectedSizesLabel, setCombinedSelectedSizesLabel] = useState('')\n    const [openMultiSizeDrawer, setOpenMultiSizeDrawer] = useState(() => {})\n    const [closeMultiSizeDrawer, setCloseMultiSizeDrawer] = useState(null)\n\n    // State to trigger fetching full product details for bundle/set\n    const [shouldFetchFullProduct, setShouldFetchFullProduct] = useState(false)\n    const [hasAutoOpenedDrawer, setHasAutoOpenedDrawer] = useState(false)\n\n    // State for notify me functionality\n    const [isNotifyMeOpen, setIsNotifyMeOpen] = useState(false)\n    const [isNotifyMeFormSubmitted, setIsNotifyMeFormSubmitted] = useState(false)\n    const [selectedVariantForNotifyMe, setSelectedVariantForNotifyMe] = useState(null)\n\n    // Helper: Add store information to DOL item - only uses explicitly passed store parameter (no fallback to selectedStore)\n    const addStoreInfoToItem = useCallback((item, store = null) => {\n        if (store?.id) {\n            item.storeId = store.id\n        }\n        if (store?.inventoryListId) {\n            item.inventoryList = store.inventoryListId\n        }\n        return item\n    }, [])\n\n    // Helper: Check if API result is successful\n    const isResultSuccessful = useCallback((result) => {\n        const isError = result.statusCode === 'error'\n        return !isError && (result.id || result.basketId)\n    }, [])\n\n    // Helper: Handle API error\n    const handleApiError = useCallback(\n        (result) => {\n            const errorMessage = result.statusMessage || result.message || 'Add to cart failed'\n            if (setAddToCartError) {\n                setAddToCartError(new Error(errorMessage))\n            }\n            return {status: 'error', message: errorMessage}\n        },\n        [setAddToCartError]\n    )\n\n    // Helper: Map product data for tracking (search/recommendation format -> PDP format)\n    const mapProductForTracking = useCallback(\n        (productId, selectedVariant = null) => {\n            if (!productForTracking) return product\n\n            // Build custom data - use variant's variation values for size if available\n            const baseCustom = productForTracking.custom || {}\n            const custom = selectedVariant?.variationValues?.size\n                ? {...baseCustom, size: selectedVariant.variationValues.size}\n                : baseCustom\n\n            return {\n                productId: productId,\n                name: productForTracking.productName,\n                price: {\n                    type: 'default',\n                    sales: {\n                        value:\n                            selectedVariant?.price ||\n                            productForTracking?.salePrice ||\n                            productForTracking?.price\n                    },\n                    list: {value: productForTracking.price}\n                },\n                slugUrl:\n                    productForTracking.productUrl || productForTracking.c_extend?.productUrl || '',\n                custom,\n                master: {masterId: productForTracking.productId},\n                ...(product?.memberPrice != null && {memberPrice: product.memberPrice})\n            }\n        },\n        [productForTracking, product]\n    )\n\n    // Track Bloomreach pixel ADD_TO_CART event\n    const trackBloomreachAddToCart = useCallback(\n        (productId, options = {}) => {\n            // Skip click-add when widget-add fires elsewhere for this action.\n            if (skipBloomreachAddToCartPixel) return\n            if (!isBloomreachPixelEnabled || !productId) return\n\n            const {masterId, prod_collection_id} = options\n            const payload = {\n                event: PIXEL_CONSTANTS.EVENT_TYPES.ADD_TO_CART,\n                pid: productId\n            }\n\n            if (isEnhancedPixelEnabled) {\n                const prodId = masterId || productId\n                let sku = productId\n                if (prodId === sku) {\n                    sku = `${productId}__generated`\n                }\n                payload.pid = prodId\n                payload.sku_id = sku\n            }\n\n            if (prod_collection_id) {\n                payload.prod_collection_id = prod_collection_id\n            }\n\n            handleAnalyticsEvent(payload)\n        },\n        [\n            skipBloomreachAddToCartPixel,\n            isBloomreachPixelEnabled,\n            isEnhancedPixelEnabled,\n            handleAnalyticsEvent\n        ]\n    )\n\n    const notifyMePlacement = useBreakpointValue({base: 'bottom', xl: 'right'})\n    const enableDrawerPlacementFix = useVariant(LD_KEYS.enableDrawerPlacementFix, false)\n\n    // Feature flags needed early for product fetch decision\n    const enableNotifyMe = useVariant(LD_KEYS.enablePdpNotifyMe, true)\n\n    // Determine if we should fetch full product (for bundles/sets to get latest C&C status,\n    // or for products with size variants when Notify Me is enabled but isNotifyMe is not in tile data)\n    const isBundleOrSet = product?.productType?.bundle || product?.productType?.set\n    // Check if we have size variants but missing/incorrect isNotifyMe data\n    // Tile data may not include isNotifyMe or may have stale false value\n    const hasSizeVariantsEarly = product?.variationAttributes?.some((attr) => attr.id === 'size')\n    const needsNotifyMeData = hasSizeVariantsEarly && enableNotifyMe && !product?.custom?.isNotifyMe\n    const shouldFetchProduct = shouldFetchFullProduct || isBundleOrSet || needsNotifyMeData\n\n    // Calculate which product ID to fetch - use selected variant ID if available (for swatch variants)\n    // This ensures we fetch the correct product data when user selects a swatch variant\n    const productIdToFetch = useMemo(() => {\n        return selectedVariantId || product?.productId\n    }, [selectedVariantId, product?.productId])\n\n    // Fetch full product details for bundle/set products when needed\n    const {\n        product: fullProduct,\n        isProductLoading: isLoadingFullProduct,\n        isProductFetching: isFetchingFullProduct,\n        isProductError: isFullProductError,\n        productError: fullProductError\n    } = useProducts(\n        shouldFetchProduct ? productIdToFetch : null,\n        new URLSearchParams(),\n        true // fetchSingleProductDetails\n    )\n\n    // Only show loading if we're actually fetching (query is enabled)\n    const isActuallyLoading = shouldFetchProduct && (isLoadingFullProduct || isFetchingFullProduct)\n\n    // Use full product data if available, otherwise use tile product\n    // Skeleton objects from useProducts when loading have structure: {productId: \"xxx\"} without other properties\n    // Check for multiple properties that a real product should have to ensure we have real product data\n    // Products may not have variationAttributes (simple products) or inventory might be nested differently\n    // DOL API response may use either 'id' or 'productId' depending on feature flags\n    const fullProductId = fullProduct?.productId || fullProduct?.id\n    /* istanbul ignore next */\n    const hasRealFullProductData =\n        fullProductId &&\n        (fullProduct?.name !== undefined ||\n            fullProduct?.productName !== undefined ||\n            fullProduct?.variationAttributes !== undefined ||\n            fullProduct?.inventory !== undefined ||\n            fullProduct?.price !== undefined ||\n            fullProduct?.prices !== undefined)\n\n    // Normalize fullProduct to always have productId (DOL might use 'id' instead)\n    const normalizedFullProduct = useMemo(() => {\n        if (!hasRealFullProductData || !fullProduct) return null\n        // If fullProduct uses 'id' instead of 'productId', normalize it\n        /* istanbul ignore next */\n        if (fullProduct.id && !fullProduct.productId) {\n            return {...fullProduct, productId: fullProduct.id}\n        }\n        return fullProduct\n    }, [fullProduct, hasRealFullProductData])\n\n    const productToUse = hasRealFullProductData ? normalizedFullProduct : product\n\n    // Buy from tile feature flags\n    // enablePdpBuyFromTile defaults to true for backwards compatibility with existing PDP/rec zone usage\n    const enablePdpBuyFromTile = useVariant(LD_KEYS.enablePdpBuyFromTile, true)\n    const enablePlpBuyFromTile = useVariant(LD_KEYS.enablePlpBuyFromTile, false)\n\n    // Check for size variants (same approach as product-view component)\n    // For PLP products, use fullProduct when available since tile product may not have variationAttributes\n    const hasSizeVariants = useMemo(() => {\n        // Use productToUse which includes fullProduct when available\n        const productToCheck = productToUse || product\n        const hasVariants =\n            Array.isArray(productToCheck?.variationAttributes) &&\n            productToCheck.variationAttributes.some((attr) => attr.id === 'size')\n\n        return hasVariants\n    }, [\n        product?.variationAttributes,\n        productToUse?.variationAttributes,\n        isFromPlp,\n        hasRealFullProductData,\n        product?.productId\n    ])\n\n    // Detect bundle/set products and their child products\n    const isProductPartOfBundle = productToUse?.productType?.bundle\n    const isProductPartOfSet = productToUse?.productType?.set\n    const isProductABundleOrSet = isProductPartOfBundle || isProductPartOfSet\n\n    // Normalize bundle/set child products\n    const normalizedProducts = useMemo(() => {\n        if (!isProductABundleOrSet) return []\n\n        const bundled = productToUse?.bundledProducts || []\n        const set = productToUse?.setProducts || []\n        const rawChildProducts = bundled.length > 0 ? bundled : set\n\n        return rawChildProducts.map((item) => item.product || item)\n    }, [\n        isProductABundleOrSet,\n        productToUse?.bundledProducts,\n        productToUse?.setProducts,\n        productToUse?.productId,\n        isProductPartOfBundle,\n        isProductPartOfSet\n    ])\n\n    // Check if any child products have size variants\n    const multiSizeVariantProducts = useMemo(() => {\n        if (!isProductABundleOrSet) return []\n\n        return normalizedProducts.filter((childProduct) => {\n            return (\n                Array.isArray(childProduct?.variationAttributes) &&\n                childProduct.variationAttributes.some((attr) => attr.id === 'size')\n            )\n        })\n    }, [isProductABundleOrSet, normalizedProducts])\n\n    const shouldShowMultiSizeSelector = multiSizeVariantProducts.length > 0\n\n    // Size selector pricing flag - determines product data source for SizeSelectorDrawer\n    const enablePdpSizeSelectorPricing = useVariant(LD_KEYS.enablePdpSizeSelectorPricing, false)\n    /** @type {DOLProduct} */\n    const dolProduct = productForTracking\n    const sizeDrawerProduct = enablePdpSizeSelectorPricing ? dolProduct : productToUse\n\n    // Click and collect functionality\n    const enableBuyBox = useVariant(LD_KEYS.enableBuyBox, true)\n    const enablePdpCncExcludeFindInStore = useVariant(LD_KEYS.enablePdpCncExcludeFindInStore, false)\n    const enablePdpCncForDiscontinued = useVariant(LD_KEYS.enablePdpCncForDiscontinued, false)\n\n    // Calculate C&C status using the same logic as PDP\n    // Use productToUse (fullProduct for bundles) to get updated C&C status\n    const {isClickAndCollectEnabled, productIsCncEligible} = getProductCnCStatus({\n        product: productToUse,\n        enableBuyBox,\n        enablePdpCnCProductSets: false,\n        excludeFindInStore: enablePdpCncExcludeFindInStore,\n        enableCncForDiscontinued: enablePdpCncForDiscontinued\n    })\n\n    // Determine if OOS variants should be disabled (when neither C&C nor Notify Me is available)\n    // Pass disableOOSVariants to SizeOptions — per-size logic in SizeOptions\n    // will keep \"Notify me\" and C&C sizes clickable, only disabling \"Sold out\" sizes\n    const disableOOSVariants = !isClickAndCollectEnabled\n\n    // Check if product should show BuyFromTile (exclude special product types)\n    const shouldShowBuyFromTile = useMemo(() => {\n        // Check the appropriate feature flag based on context\n        /* istanbul ignore next */\n        const isFeatureEnabled = isFromPlp ? enablePlpBuyFromTile : enablePdpBuyFromTile\n        /* istanbul ignore next */\n        if (!product || !isFeatureEnabled) return false\n\n        // For PLP: Check product-level buyFromTileEnabled attribute from search response\n        // This allows backend to disable buy-from-tile for specific product types.\n        // Exception: still render when isNotifyMe is enabled — Notify Me works independently of buyFromTileEnabled (AC1.3)\n        /* istanbul ignore next */\n        if (\n            isFromPlp &&\n            product?.buyFromTileEnabled === false &&\n            !(enableNotifyMe && productToUse?.custom?.isNotifyMe)\n        ) {\n            return false\n        }\n\n        const isProductPartOfBundle = productToUse?.productType?.bundle\n        const isProductPartOfSet = productToUse?.productType?.set\n        const isProductABundleOrSet = isProductPartOfBundle || isProductPartOfSet\n\n        // Check if product is excluded (gift card, engravable, etc.)\n        // For sets/bundles, also check if any child products are engravable\n        if (\n            isProductExcluded(\n                product,\n                isProductABundleOrSet,\n                normalizedProducts,\n                isFromPlp && enablePlpBuyFromTile\n            )\n        )\n            return false\n\n        // For PLP products, use product type based stock detection\n        // This checks the appropriate source (inventory.orderable vs productInStock)\n        // based on whether it's a recommendation variant or master/set/bundle\n        /* istanbul ignore next */\n        if (isFromPlp) {\n            if (!hasSizeVariants && !isProductABundleOrSet) {\n                const isProductInStock = getProductStockStatus(productToUse, product)\n                const isNotifyMeEnabled = enableNotifyMe && productToUse?.custom?.isNotifyMe\n\n                // If product is OOS and no C&C or notify me available, hide the button\n                if (!isProductInStock && !isClickAndCollectEnabled && !isNotifyMeEnabled) {\n                    return false\n                }\n            }\n            return true\n        }\n\n        // For PDP/Rec zones: Check if simple product should be hidden\n        const shouldHideSimple = shouldHideSimpleProduct({\n            productToUse,\n            enableNotifyMe,\n            isClickAndCollectEnabled,\n            isActuallyLoading\n        })\n\n        // Only apply OOS check to simple products (no size variants, not bundle/set)\n        if (!hasSizeVariants && !isProductABundleOrSet && shouldHideSimple) {\n            return false\n        }\n\n        // For products with size variants: hide button if ALL sizes are OOS\n        if (hasSizeVariants && !isActuallyLoading) {\n            if (\n                shouldHideForAllSizesOOS({\n                    product,\n                    productToUse,\n                    enableNotifyMe,\n                    isClickAndCollectEnabled,\n                    isProductPartOfBundle,\n                    isProductPartOfSet,\n                    isProductABundleOrSet\n                })\n            ) {\n                return false\n            }\n        }\n\n        // For set/bundle products: if ANY child is fully OOS, the whole set/bundle\n        // is unpurchasable (all children are required to complete the purchase)\n        if (isProductABundleOrSet && !isActuallyLoading && normalizedProducts.length > 0) {\n            if (\n                shouldHideForChildOOS({\n                    normalizedProducts,\n                    enableNotifyMe,\n                    productToUse,\n                    isClickAndCollectEnabled,\n                    isProductPartOfSet,\n                    isProductPartOfBundle\n                })\n            ) {\n                return false\n            }\n        }\n\n        return true\n    }, [\n        product,\n        enablePdpBuyFromTile,\n        enablePlpBuyFromTile,\n        isFromPlp,\n        productToUse,\n        enableNotifyMe,\n        isActuallyLoading,\n        isClickAndCollectEnabled,\n        hasSizeVariants,\n        normalizedProducts\n    ])\n\n    // Buy box drawer for click and collect\n    const {isBuyBoxDrawerOpen, openBuyBoxDrawer, closeBuyBoxDrawer, resetShowStorePickupFlag} =\n        useBuyBoxDrawer({\n            isFindYourSizeBtnEnabled: hasSizeVariants,\n            hasNoSelectedSize: !selectedSize?.name,\n            openSizeSelector: openSizeDrawer\n        })\n\n    // Reset selectedStore when BuyBox drawer opens to ensure fresh selection (no localStorage dependency)\n    useEffect(() => {\n        if (isBuyBoxDrawerOpen) {\n            setSelectedStore(null)\n        }\n    }, [isBuyBoxDrawerOpen])\n\n    // Helper to get child items for bundle or set\n    const getChildItems = useCallback(() => {\n        if (isProductPartOfBundle) {\n            return getSelectedBundleChildProducts({\n                normalizedProducts,\n                combinedSelectedSizes\n            })\n        } else {\n            return getSelectedSetChildProducts({\n                normalizedProducts,\n                combinedSelectedSizes\n            })\n        }\n    }, [isProductPartOfBundle, normalizedProducts, combinedSelectedSizes])\n\n    // Helper to create DOL items from child items\n    const createDolItemsFromChildren = useCallback(\n        (childItems, store = null) => {\n            if (isProductPartOfBundle) {\n                const bundleItem = {\n                    itemId: productToUse.productId,\n                    productId: productToUse.productId,\n                    quantity: 1,\n                    bundledProductItems: childItems,\n                    // Add product finding method for tracking\n                    ...(productFindingMethod && {productFindingMethod})\n                }\n                return [addStoreInfoToItem(bundleItem, store)]\n            } else {\n                return Object.values(childItems).map(({product: childProd}) => {\n                    const setItem = {\n                        itemId: childProd.productId,\n                        productId: childProd.productId,\n                        quantity: 1,\n                        // Add product finding method for tracking\n                        ...(productFindingMethod && {productFindingMethod})\n                    }\n                    return addStoreInfoToItem(setItem, store)\n                })\n            }\n        },\n        [isProductPartOfBundle, productToUse, addStoreInfoToItem, productFindingMethod]\n    )\n\n    // Helper to send Einstein analytics for bundle/set\n    const sendBundleOrSetAnalytics = useCallback(\n        (childItems) => {\n            if (isProductPartOfBundle) {\n                einstein.sendAddToCart([\n                    {\n                        id: productToUse.productId,\n                        price: productToUse.price?.sales?.value || productToUse.price,\n                        quantity: 1,\n                        bundledProductItems: childItems\n                    }\n                ])\n            } else {\n                einstein.sendAddToCart(\n                    Object.values(childItems).map(({product: childProd}) => ({\n                        id: childProd.productId,\n                        price: childProd.price?.sales?.value || childProd.price,\n                        quantity: 1\n                    }))\n                )\n            }\n        },\n        [isProductPartOfBundle, productToUse, einstein]\n    )\n\n    // Helper to find variant by size\n    // For PLP products, use productToUse which has full product data from API\n    const findVariantBySize = useCallback(\n        (size) => {\n            // Use productToUse for accurate variant data (includes fullProduct when available)\n            const productData = productToUse || product\n            if (!productData?.variants || !size.value) {\n                return productData?.productId\n            }\n\n            // Try PDP approach first: match by variationValues.size\n            let variant = productData.variants.find(\n                (v) => v.variationValues?.size === size.value.toString()\n            )\n\n            // Fallback for tile data: match by index\n            if (!variant && productData.variationAttributes) {\n                const sizeAttr = productData.variationAttributes.find((attr) => attr.id === 'size')\n                if (sizeAttr?.values) {\n                    const sizeIndex = sizeAttr.values.findIndex((v) => v.value === size.value)\n                    if (sizeIndex !== -1 && productData.variants[sizeIndex]) {\n                        variant = productData.variants[sizeIndex]\n                    }\n                }\n            }\n\n            return variant?.productId || productData?.productId\n        },\n        [product, productToUse]\n    )\n\n    // Create DOL item structure for add to cart API\n    const createDolItem = useCallback(\n        (productId, quantity = 1, store = null) => {\n            if (!productId) {\n                throw new Error('Product ID is required')\n            }\n\n            const dolItem = {\n                itemId: productId,\n                productId,\n                quantity,\n                // Add product finding method for tracking\n                ...(productFindingMethod && {productFindingMethod})\n            }\n\n            // Add store information for click and collect\n            return addStoreInfoToItem(dolItem, store)\n        },\n        [addStoreInfoToItem, productFindingMethod]\n    )\n\n    // Handle add to cart with specific size\n    const handleCartItemWithSize = useCallback(\n        async (variantId, storeOverride = null) => {\n            if (isAddingItem) return null\n\n            // Use store from parameter (C&C flow) or fall back to state (regular flow)\n            const storeToUse = storeOverride || selectedStore\n\n            try {\n                // Use the variant ID passed directly from handleSizeSelect\n                const dolItems = [createDolItem(variantId, 1, storeToUse)]\n\n                // Submit to DOL API\n                const result = await submitAddItemToCart(dolItems)\n\n                // Check if successful\n                if (isResultSuccessful(result)) {\n                    // Show confirmation modal using context\n                    openAddToCartModal({\n                        product: product,\n                        itemsAdded: [\n                            {\n                                product: product,\n                                quantity: 1\n                            }\n                        ]\n                    })\n\n                    // Send Einstein event\n                    einstein.sendAddToCart([\n                        {\n                            id: variantId,\n                            price: product.price?.sales?.value || product.price,\n                            quantity: 1\n                        }\n                    ])\n\n                    // Track add to cart with Tealium if productFindingMethod is provided\n                    if (productFindingMethod) {\n                        const selectedVariant = productForTracking?.variants?.find(\n                            (v) => v.productId === variantId\n                        )\n                        const mappedProduct = mapProductForTracking(variantId, selectedVariant)\n                        await trackAddToCart(mappedProduct, 1, productFindingMethod)\n                    }\n\n                    // Track Bloomreach pixel ADD_TO_CART event\n                    trackBloomreachAddToCart(variantId, {\n                        masterId: product?.productId\n                    })\n\n                    // Emit add-to-cart event to consumer (analytics/pixels handled there)\n                    onAddToCart?.(product, {sku: variantId})\n\n                    return {status: 'success'}\n                } else {\n                    return handleApiError(result)\n                }\n            } catch (error) {\n                if (setAddToCartError) {\n                    setAddToCartError(error)\n                }\n                return {status: 'error', message: error.message}\n            }\n        },\n        [\n            isAddingItem,\n            product,\n            createDolItem,\n            submitAddItemToCart,\n            einstein,\n            openAddToCartModal,\n            isResultSuccessful,\n            handleApiError,\n            productFindingMethod,\n            trackAddToCart,\n            trackBloomreachAddToCart,\n            onAddToCart,\n            selectedStore\n        ]\n    )\n\n    // Handle add to cart\n    const handleCartItem = useCallback(\n        async (storeOverride = null) => {\n            if (isAddingItem) return null\n\n            // Use store from parameter (C&C flow) or fall back to state (regular flow)\n            const storeToUse = storeOverride || selectedStore\n\n            try {\n                // Use the ref to get the current product ID - this ensures we always use the\n                // most up-to-date variant ID, even if React state hasn't been updated yet\n                const productIdToAdd = currentProductIdRef.current || productIdForStore\n\n                const dolItems = [createDolItem(productIdToAdd, 1, storeToUse)]\n\n                // Submit to DOL API\n                const result = await submitAddItemToCart(dolItems)\n\n                // Check if successful\n                if (isResultSuccessful(result)) {\n                    // Show confirmation modal using context\n                    openAddToCartModal({\n                        product: product,\n                        itemsAdded: [\n                            {\n                                product: product,\n                                quantity: 1\n                            }\n                        ]\n                    })\n\n                    // Send Einstein event\n                    einstein.sendAddToCart([\n                        {\n                            id: productIdToAdd,\n                            price: product.price?.sales?.value || product.price,\n                            quantity: 1\n                        }\n                    ])\n\n                    // Track add to cart with Tealium if productFindingMethod is provided\n                    if (productFindingMethod) {\n                        const mappedProduct = mapProductForTracking(productIdToAdd)\n                        await trackAddToCart(mappedProduct, 1, productFindingMethod)\n                    }\n\n                    // Track Bloomreach pixel ADD_TO_CART event\n                    trackBloomreachAddToCart(productIdToAdd, {\n                        masterId: product?.productId\n                    })\n\n                    // Emit add-to-cart event to consumer (analytics/pixels handled there)\n                    onAddToCart?.(product, {sku: productIdToAdd})\n\n                    return {status: 'success'}\n                } else {\n                    return handleApiError(result)\n                }\n            } catch (error) {\n                if (setAddToCartError) {\n                    setAddToCartError(error)\n                }\n                return {status: 'error', message: error.message}\n            }\n        },\n        [\n            isAddingItem,\n            product,\n            productIdForStore,\n            createDolItem,\n            submitAddItemToCart,\n            einstein,\n            openAddToCartModal,\n            isResultSuccessful,\n            handleApiError,\n            productFindingMethod,\n            trackAddToCart,\n            trackBloomreachAddToCart,\n            onAddToCart,\n            selectedStore\n        ]\n    )\n\n    // Validate bundle/set selection - extracted to reduce cognitive complexity\n    const validateBundleOrSetSelection = useCallback(\n        (storeToUse) => {\n            if (storeToUse) {\n                return true // Store provided from C&C flow\n            }\n            const isOrderable = isOrderableBundleOrSet({\n                normalizedProducts,\n                combinedSelectedSizes\n            })\n            const notLoading = !isLoadingFullProduct && !isFetchingFullProduct\n            return notLoading && isOrderable\n        },\n        [normalizedProducts, combinedSelectedSizes, isLoadingFullProduct, isFetchingFullProduct]\n    )\n\n    // Handle invalid selection - extracted to reduce cognitive complexity\n    const handleInvalidBundleOrSetSelection = useCallback(\n        (storeToUse) => {\n            // If validation fails and it's a bundle with C&C enabled, open buy box drawer\n            if (isProductPartOfBundle && isClickAndCollectEnabled && !storeToUse && !isFromPlp) {\n                // Set productIds to child product IDs for bundle without sizes (matches PDP behavior)\n                if (!shouldShowMultiSizeSelector && normalizedProducts.length > 0) {\n                    const childProductIds = normalizedProducts\n                        .map((childProduct) => childProduct?.id || childProduct?.productId)\n                        .filter(Boolean)\n                        .join(',')\n                    if (childProductIds) {\n                        setProductIdForStore(childProductIds)\n                    }\n                }\n                openBuyBoxDrawer()\n            } else if (isFromPlp) {\n                setPlpFetchError(\n                    new Error(\n                        intl.formatMessage({\n                            id: 'buy_from_tile.error.set_unavailable',\n                            defaultMessage:\n                                'One or more products in this set are currently unavailable'\n                        })\n                    )\n                )\n            }\n        },\n        [\n            isProductPartOfBundle,\n            isClickAndCollectEnabled,\n            shouldShowMultiSizeSelector,\n            normalizedProducts,\n            setProductIdForStore,\n            openBuyBoxDrawer,\n            isFromPlp,\n            setPlpFetchError\n        ]\n    )\n\n    // Handle successful add to cart - extracted to reduce cognitive complexity\n    const handleSuccessfulBundleOrSetAdd = useCallback(\n        async (childItems) => {\n            // Show confirmation modal\n            openAddToCartModal({\n                product: productToUse,\n                itemsAdded: isProductPartOfBundle\n                    ? [{product: productToUse, quantity: 1}]\n                    : Object.values(childItems).map(({product: childProd}) => ({\n                          product: childProd,\n                          quantity: 1\n                      })),\n                selectedQuantity: 1\n            })\n\n            // Send Einstein analytics\n            sendBundleOrSetAnalytics(childItems)\n\n            // Track add to cart with Tealium if productFindingMethod is provided\n            if (productFindingMethod) {\n                const mappedProduct = mapProductForTracking(productForTracking.productId)\n                await trackAddToCart(mappedProduct, 1, productFindingMethod)\n            }\n\n            // Track Bloomreach pixel ADD_TO_CART event\n            trackBloomreachAddToCart(productForTracking?.productId, {\n                masterId: product?.productId\n            })\n\n            // Emit add-to-cart event to consumer (analytics/pixels handled there)\n            onAddToCart?.(product, {sku: productForTracking?.productId})\n        },\n        [\n            openAddToCartModal,\n            productToUse,\n            isProductPartOfBundle,\n            sendBundleOrSetAnalytics,\n            productFindingMethod,\n            mapProductForTracking,\n            productForTracking,\n            trackAddToCart,\n            trackBloomreachAddToCart,\n            onAddToCart,\n            product\n        ]\n    )\n\n    // Validate and prepare child items - extracted to reduce cognitive complexity\n    const validateAndPrepareChildItems = useCallback(() => {\n        const childItems = getChildItems()\n\n        // Validate that we have child items\n        if (\n            !childItems ||\n            (Array.isArray(childItems) && childItems.length === 0) ||\n            (typeof childItems === 'object' && Object.keys(childItems).length === 0)\n        ) {\n            return {error: {status: 'error', message: 'No child items prepared'}}\n        }\n\n        return {childItems}\n    }, [getChildItems])\n\n    // Handle add to cart for bundle/set products\n    const handleCartItemBundleOrSet = useCallback(\n        async (storeOverride = null) => {\n            if (isAddingItem) return null\n\n            // Use store from parameter (C&C flow) or fall back to state (regular flow)\n            const storeToUse = storeOverride || selectedStore\n\n            // Ensure size selection when multi-size selector is enabled\n            if (shouldShowMultiSizeSelector && !combinedSelectedSizesLabel) {\n                if (openMultiSizeDrawer) {\n                    openMultiSizeDrawer()\n                }\n                return null\n            }\n\n            // Validate bundle/set selection\n            const hasValidSelection = validateBundleOrSetSelection(storeToUse)\n            if (!hasValidSelection) {\n                handleInvalidBundleOrSetSelection(storeToUse)\n                return null\n            }\n\n            // Ensure we have selected sizes for bundle/set products with size variants\n            if (shouldShowMultiSizeSelector && Object.keys(combinedSelectedSizes).length === 0) {\n                return {status: 'error', message: 'No sizes selected'}\n            }\n\n            try {\n                // Validate and prepare child items\n                const validationResult = validateAndPrepareChildItems()\n                if (validationResult.error) {\n                    return validationResult.error\n                }\n                const {childItems} = validationResult\n\n                // Pass storeToUse to ensure store info is added to DOL items\n                const dolItems = createDolItemsFromChildren(childItems, storeToUse)\n\n                // Submit to DOL API\n                const result = await submitAddItemToCart(dolItems)\n\n                // Check if successful\n                if (isResultSuccessful(result)) {\n                    await handleSuccessfulBundleOrSetAdd(childItems)\n                    return {status: 'success'}\n                } else {\n                    return handleApiError(result)\n                }\n            } catch (error) {\n                if (setAddToCartError) {\n                    setAddToCartError(error)\n                }\n                return {status: 'error', message: error.message}\n            }\n        },\n        [\n            isAddingItem,\n            shouldShowMultiSizeSelector,\n            combinedSelectedSizesLabel,\n            openMultiSizeDrawer,\n            combinedSelectedSizes,\n            selectedStore,\n            validateBundleOrSetSelection,\n            handleInvalidBundleOrSetSelection,\n            validateAndPrepareChildItems,\n            createDolItemsFromChildren,\n            submitAddItemToCart,\n            isResultSuccessful,\n            handleSuccessfulBundleOrSetAdd,\n            handleApiError,\n            setAddToCartError\n        ]\n    )\n\n    // Handle store row selection from BuyBox - just store the selection, don't add to cart yet\n    const handleStoreRowSelect = useCallback((store) => {\n        setSelectedStore(store)\n        // Don't add to cart here - wait for \"Select Store\" button click\n    }, [])\n\n    // Handle \"Select Store\" button click in BuyBox - add to cart with selected store\n    const handleConfirmStoreSelection = useCallback(\n        async (storeFromParam = null) => {\n            // Use store from parameter (StoreSelector) or fall back to state\n            const store = storeFromParam || selectedStore\n\n            if (!store) {\n                return\n            }\n\n            // Validate store has required properties for C&C\n            if (!store.id || !store.inventoryListId) {\n                // Store is missing required properties - this shouldn't happen, but handle gracefully\n                return\n            }\n\n            // Update state with the selected store\n            setSelectedStore(store)\n\n            // Check if store has inventory\n            if (!store?.hasStock) {\n                // Store doesn't have inventory - reset size selection and close drawer\n                setSelectedSize(null)\n                // Reset to selected variant (from swatch) if available, otherwise to product's ID\n                setProductIdForStore(selectedVariantId || product?.productId)\n                setSelectedStore(null)\n                closeBuyBoxDrawer()\n                return\n            }\n\n            // Store has inventory - add to cart using appropriate handler\n            let result\n            if (isProductABundleOrSet) {\n                // For bundle/set products, ensure we have selected sizes before adding to cart\n                if (shouldShowMultiSizeSelector && !combinedSelectedSizesLabel) {\n                    // Sizes not selected yet - this shouldn't happen, but handle gracefully\n                    return\n                }\n                result = await handleCartItemBundleOrSet(store)\n            } else {\n                result = await handleCartItem(store)\n            }\n\n            // Handle result\n            if (result?.status === 'success') {\n                // Close drawer and reset state after successful add to cart\n                closeBuyBoxDrawer()\n                setSelectedStore(null)\n                // Reset size selections for bundles/sets\n                if (isProductABundleOrSet) {\n                    setCombinedSelectedSizesLabel('')\n                    setCombinedSelectedSizes({})\n                } else {\n                    setSelectedSize(null)\n                }\n                // Reset to selected variant (from swatch) if available, otherwise to product's ID\n                setProductIdForStore(selectedVariantId || product?.productId)\n            } else if (result?.status === 'error') {\n                // Error occurred - don't close drawer so user can try again\n                // Error is already set via setAddToCartError in handleCartItemBundleOrSet\n            }\n        },\n        [\n            handleCartItem,\n            handleCartItemBundleOrSet,\n            isProductABundleOrSet,\n            shouldShowMultiSizeSelector,\n            combinedSelectedSizesLabel,\n            product?.productId,\n            selectedVariantId,\n            closeBuyBoxDrawer,\n            selectedStore,\n            setCombinedSelectedSizesLabel,\n            setCombinedSelectedSizes\n        ]\n    )\n\n    // Handle notify me functionality\n    const handleNotifyMeClose = useCallback(() => {\n        setIsNotifyMeOpen(false)\n        setSelectedVariantForNotifyMe(null)\n        setIsNotifyMeFormSubmitted(false)\n        // Close the size selector drawer when notify me is closed\n        if (closeSizeDrawer) {\n            closeSizeDrawer()\n        }\n    }, [closeSizeDrawer])\n\n    const handleNotifyMeBack = useCallback(() => {\n        setIsNotifyMeOpen(false)\n        setSelectedVariantForNotifyMe(null)\n        setIsNotifyMeFormSubmitted(false)\n        // Don't close the size selector drawer when going back - user should return to size selection\n    }, [])\n\n    // Handle multi-size drawer close (for bundles/sets)\n    const handleMultiSizeDrawerClose = useCallback(() => {\n        // Reset the size selections when drawer is closed without completing\n        setCombinedSelectedSizes({})\n        setCombinedSelectedSizesLabel('')\n    }, [])\n\n    // Helper to get image sequence for NotifyMe\n    const getNotifyMeImageSequence = useCallback(\n        (variant) => {\n            // Try variant's imageSequence first\n            if (variant.imageSequence) {\n                return variant.imageSequence\n            }\n\n            // Try variant's primaryImage\n            if (variant.primaryImage) {\n                return [\n                    {\n                        viewType: 'main_rect_center',\n                        disBaseLink: variant.primaryImage.disBaseLink,\n                        alt: variant.primaryImage.alt\n                    }\n                ]\n            }\n\n            // Try productToUse's imageSequence\n            if (productToUse?.imageSequence) {\n                return productToUse.imageSequence\n            }\n\n            // Try productToUse's primaryImage\n            if (productToUse?.primaryImage) {\n                return [\n                    {\n                        viewType: 'main_rect_center',\n                        disBaseLink: productToUse.primaryImage.disBaseLink,\n                        alt: productToUse.primaryImage.alt\n                    }\n                ]\n            }\n\n            // Try variant's imageSrc\n            if (variant.imageSrc) {\n                return [\n                    {\n                        viewType: 'main_rect_center',\n                        disBaseLink: variant.imageSrc\n                            .replaceAll('main_rect_base', 'main_rect_center')\n                            .replaceAll('[&sw={width}]', '')\n                            .replaceAll('&amp;', '&'),\n                        alt: variant.imageAlt\n                    }\n                ]\n            }\n\n            // Finally try productToUse's imageSrc\n            if (productToUse?.imageSrc) {\n                return [\n                    {\n                        viewType: 'main_rect_center',\n                        disBaseLink: productToUse.imageSrc\n                            .replaceAll('main_rect_base', 'main_rect_center')\n                            .replaceAll('[&sw={width}]', '')\n                            .replaceAll('&amp;', '&'),\n                        alt: productToUse.imageAlt\n                    }\n                ]\n            }\n\n            return []\n        },\n        [productToUse]\n    )\n\n    // Helper to get name details for NotifyMe\n    const getNotifyMeNameDetails = useCallback(\n        (variant) => {\n            return (\n                variant.nameDetails ||\n                productToUse?.nameDetails ||\n                productToUse?.c_nameDetails ||\n                variant.c_nameDetails ||\n                variant.shortDescription ||\n                productToUse?.shortDescription ||\n                variant.custom?.metalName?.[0] ||\n                productToUse?.custom?.metalName?.[0] ||\n                variant.custom?.metalGroup?.[0] ||\n                productToUse?.custom?.metalGroup?.[0] ||\n                null\n            )\n        },\n        [productToUse]\n    )\n\n    const handleNotifyMeClick = useCallback(\n        (variant) => {\n            // For simple products, ensure the size information is properly set\n            const productWithSize = {\n                ...variant,\n                // Ensure size information is available for NotifyMe form\n                custom: {\n                    ...variant.custom,\n                    size: variant.custom?.size || variant.size || 'one size'\n                },\n                // Ensure product name is available (tiles use different structure than PDP)\n                name:\n                    variant.name ||\n                    variant.productName ||\n                    productToUse?.name ||\n                    productToUse?.productName,\n                // Ensure image sequence is available for NotifyMe\n                imageSequence: getNotifyMeImageSequence(variant),\n                // Ensure name details are available\n                nameDetails: getNotifyMeNameDetails(variant)\n            }\n\n            setSelectedVariantForNotifyMe(productWithSize)\n            setIsNotifyMeOpen(true)\n            setIsNotifyMeFormSubmitted(false)\n        },\n        [productToUse, getNotifyMeImageSequence, getNotifyMeNameDetails]\n    )\n\n    // Helper to handle OOS simple product (C&C or Notify Me)\n    // For PLP: Skip CnC drawer and only show Notify Me - customer can select store at checkout\n    const handleOOSSimpleProduct = useCallback(() => {\n        // For PLP products, skip C&C drawer to simplify the flow\n        // Customer can select store pickup option during checkout instead\n        if (isFromPlp) {\n            if (enableNotifyMe && productToUse?.custom?.isNotifyMe) {\n                handleNotifyMeClick(productToUse)\n            }\n            // If Notify Me is not available, do nothing - product is just OOS\n            return\n        }\n\n        // For PDP/Rec zones: Full C&C or Notify Me flow\n        if (isClickAndCollectEnabled && productIsCncEligible) {\n            setProductIdForStore(productToUse?.productId)\n            openBuyBoxDrawer()\n        } else if (enableNotifyMe && productToUse?.custom?.isNotifyMe) {\n            handleNotifyMeClick(productToUse)\n        }\n    }, [\n        isFromPlp,\n        isClickAndCollectEnabled,\n        productIsCncEligible,\n        enableNotifyMe,\n        productToUse,\n        openBuyBoxDrawer,\n        handleNotifyMeClick\n    ])\n\n    // PLP-specific product handling (separated for maintainability)\n    const {handlePlpClick, resetPlpState} = usePlpProductHandler({\n        isFromPlp,\n        selectedVariantId,\n        productId: product?.productId,\n        shouldFetchFullProduct,\n        setShouldFetchFullProduct,\n        hasRealFullProductData,\n        isLoadingFullProduct,\n        isFetchingFullProduct,\n        isFullProductError,\n        fullProductError,\n        setPlpFetchError,\n        normalizedFullProduct,\n        openMultiSizeDrawer,\n        handleCartItemBundleOrSet,\n        handleCartItem,\n        handleOOSSimpleProduct,\n        setPendingDrawerOpen\n    })\n\n    // Track previous product ID to detect actual product changes vs just variant selection changes\n    const prevProductIdRef = useRef(product?.productId)\n\n    // Update product ID for store when product or variant selection changes\n    useEffect(() => {\n        const isProductChange = prevProductIdRef.current !== product?.productId\n\n        // Use selectedVariantId (from swatch) if available, otherwise use product's ID\n        setProductIdForStore(selectedVariantId || product?.productId)\n\n        // Only reset all states when the actual product changes (not just variant selection)\n        if (isProductChange) {\n            setSelectedSize(null)\n            // Reset auto-open flag and selections when product changes\n            setHasAutoOpenedDrawer(false)\n            setShouldFetchFullProduct(false)\n            setPendingDrawerOpen(false)\n            setCombinedSelectedSizes({})\n            setCombinedSelectedSizesLabel('')\n            // Reset PLP-specific state\n            resetPlpState()\n            setPlpFetchError(null)\n            // Reset notify me state when product changes\n            setIsNotifyMeOpen(false)\n            setSelectedVariantForNotifyMe(null)\n            setIsNotifyMeFormSubmitted(false)\n\n            prevProductIdRef.current = product?.productId\n        }\n    }, [product?.productId, selectedVariantId, resetPlpState])\n\n    // Auto-open size drawer when full product loads for bundle/set (only once)\n    useEffect(() => {\n        if (\n            shouldFetchFullProduct &&\n            !hasAutoOpenedDrawer &&\n            !isLoadingFullProduct &&\n            !isFetchingFullProduct &&\n            fullProduct &&\n            isProductABundleOrSet &&\n            normalizedProducts.length > 0\n        ) {\n            // Mark that we've auto-opened to prevent reopening\n            setHasAutoOpenedDrawer(true)\n\n            // Product loaded successfully, now open the appropriate UI\n            if (shouldShowMultiSizeSelector && openMultiSizeDrawer) {\n                openMultiSizeDrawer()\n            } else {\n                // No size selection needed, add to cart directly\n                handleCartItemBundleOrSet()\n            }\n        }\n    }, [\n        shouldFetchFullProduct,\n        hasAutoOpenedDrawer,\n        isLoadingFullProduct,\n        isFetchingFullProduct,\n        fullProduct,\n        isProductABundleOrSet,\n        normalizedProducts.length,\n        shouldShowMultiSizeSelector,\n        openMultiSizeDrawer,\n        handleCartItemBundleOrSet\n    ])\n\n    // Open size drawer when it becomes ready (handles timing issue for PLP)\n    // This runs when pendingDrawerOpen is true AND openSizeDrawer becomes available\n    /* istanbul ignore next */\n    useEffect(() => {\n        if (pendingDrawerOpen) {\n            // If global PLP context is available, use it\n            if (isFromPlp && plpSizeSelector?.openSizeSelector && hasRealFullProductData) {\n                const productToOpen = normalizedFullProduct || productToUse || product\n\n                plpSizeSelector.openSizeSelector(\n                    productToOpen,\n                    async (selectedVariant) => {\n                        // Set the selected size\n                        setSelectedSize(selectedVariant)\n\n                        // Find the variant product ID that matches the selected size\n                        const variantProduct = productToOpen.variants?.find(\n                            (v) => v.variationValues?.size === selectedVariant.value\n                        )\n\n                        const productIdToAdd = variantProduct?.productId || productToOpen.productId\n\n                        // Add to cart using DOL item structure\n                        const dolItems = [createDolItem(productIdToAdd, 1)]\n\n                        try {\n                            const result = await submitAddItemToCart(dolItems)\n\n                            if (isResultSuccessful(result)) {\n                                // Track analytics\n                                const productForAnalytics = mapProductForTracking(\n                                    productIdToAdd,\n                                    variantProduct\n                                )\n                                trackAddToCart(productForAnalytics, 1, productFindingMethod)\n                                einstein.sendAddToCart([\n                                    {\n                                        id: productIdToAdd,\n                                        price: variantProduct?.price || productToOpen.price,\n                                        quantity: 1\n                                    }\n                                ])\n\n                                // Open confirmation modal with product data\n                                // Create a variant product object for the modal\n                                const variantForModal = {\n                                    ...productToOpen,\n                                    productId: productIdToAdd,\n                                    selectedSize: selectedVariant.name,\n                                    price: variantProduct?.price || productToOpen.price\n                                }\n\n                                openAddToCartModal({\n                                    product: productToOpen,\n                                    itemsAdded: [\n                                        {\n                                            product: variantForModal,\n                                            quantity: 1\n                                        }\n                                    ]\n                                })\n\n                                // Track Bloomreach pixel ADD_TO_CART event\n                                trackBloomreachAddToCart(productIdToAdd, {\n                                    masterId: productToOpen.productId\n                                })\n                            } else {\n                                handleApiError(result)\n                            }\n                        } catch (error) {\n                            if (setAddToCartError) {\n                                setAddToCartError(error)\n                            }\n                        }\n                    },\n                    handleOutOfStockSizeSelection\n                )\n\n                setPendingDrawerOpen(false)\n            }\n            // Otherwise use the inline drawer (PDP/reczone behavior)\n            else if (openSizeDrawer) {\n                openSizeDrawer()\n                setPendingDrawerOpen(false)\n            }\n        }\n    }, [\n        pendingDrawerOpen,\n        openSizeDrawer,\n        isFromPlp,\n        plpSizeSelector,\n        hasSizeVariants,\n        hasRealFullProductData,\n        normalizedFullProduct,\n        productToUse,\n        product,\n        createDolItem,\n        submitAddItemToCart,\n        isResultSuccessful,\n        mapProductForTracking,\n        trackAddToCart,\n        trackBloomreachAddToCart,\n        einstein,\n        openAddToCartModal,\n        handleApiError,\n        setAddToCartError,\n        productFindingMethod\n    ])\n\n    // Handle out of stock size selection for click and collect\n    const handleOutOfStockSizeSelection = useCallback(\n        (selectedName, {isNotifyMeForSize} = {}) => {\n            // Use productToUse for accurate data (includes fullProduct when available)\n            const productData = productToUse || product\n            const selected = productData?.variationAttributes\n                ?.find((attr) => attr.id === 'size')\n                ?.values?.find((size) => size.name === selectedName.name)\n\n            if (selected) {\n                setSelectedSize(selected)\n\n                // Find and update the variant productId for store search\n                if (productData?.variants && selected.value) {\n                    // Try matching by variationValues.size first (PDP data)\n                    let variant = productData.variants.find(\n                        (v) => v.variationValues?.size === selected.value\n                    )\n\n                    // Fallback: match by productId suffix (tile data)\n                    if (!variant) {\n                        const sizeFromValue = selected.value.toString().slice(0, -2) // \"4400\" -> \"44\"\n                        variant = productData.variants.find((v) => {\n                            const parts = v.productId?.split('-') || []\n                            return parts.at(-1) === sizeFromValue\n                        })\n                    }\n\n                    if (variant?.productId) {\n                        setProductIdForStore(variant.productId)\n                    }\n                }\n            }\n\n            // Check if C&C or notify me is available (same logic as handleSizeSelect)\n            // For PLP: Skip C&C, only show Notify Me - customer can select store at checkout\n            const shouldOpenCnC = !isFromPlp && isClickAndCollectEnabled && productIsCncEligible\n\n            // Use per-variant notify me status from size-selector if available\n            const isNotifyMeEnabled =\n                enableNotifyMe &&\n                (isNotifyMeForSize === undefined\n                    ? productData?.custom?.isNotifyMe\n                    : isNotifyMeForSize)\n\n            if (shouldOpenCnC) {\n                // Open C&C modal for out-of-stock C&C eligible products (PDP/Rec zones only)\n                openBuyBoxDrawer()\n            } else if (isNotifyMeEnabled) {\n                // Open notify me modal for out-of-stock products with notify me enabled\n                const variantForNotifyMe =\n                    productData?.variants?.find((v) => v.productId === productIdForStore) ||\n                    productData\n                handleNotifyMeClick(variantForNotifyMe)\n            } else {\n                closeBuyBoxDrawer()\n            }\n        },\n        [\n            product,\n            productToUse,\n            isFromPlp,\n            enableNotifyMe,\n            isClickAndCollectEnabled,\n            productIsCncEligible,\n            openBuyBoxDrawer,\n            closeBuyBoxDrawer,\n            productIdForStore,\n            handleNotifyMeClick\n        ]\n    )\n\n    // Helper: Prepare child items for bundle/set\n    const prepareChildItems = useCallback(\n        (selectedSizes) => {\n            if (isProductPartOfBundle) {\n                return getSelectedBundleChildProducts({\n                    normalizedProducts,\n                    combinedSelectedSizes: selectedSizes\n                })\n            }\n            return getSelectedSetChildProducts({\n                normalizedProducts,\n                combinedSelectedSizes: selectedSizes\n            })\n        },\n        [isProductPartOfBundle, normalizedProducts]\n    )\n\n    // Helper: Prepare DOL items for bundle/set\n    const prepareDolItems = useCallback(\n        (childItems) => {\n            if (isProductPartOfBundle) {\n                return [\n                    {\n                        itemId: productToUse.productId,\n                        productId: productToUse.productId,\n                        quantity: 1,\n                        bundledProductItems: childItems,\n                        // Add product finding method for tracking\n                        ...(productFindingMethod && {productFindingMethod})\n                    }\n                ]\n            }\n            // For sets, transform child items to DOL format\n            return Object.values(childItems).map(({product: childProd}) => ({\n                itemId: childProd.productId,\n                productId: childProd.productId,\n                quantity: 1,\n                // Add product finding method for tracking\n                ...(productFindingMethod && {productFindingMethod})\n            }))\n        },\n        [isProductPartOfBundle, productToUse, productFindingMethod]\n    )\n\n    // Handle multi-size selection for bundle/set products\n    const handleOnMultiSizeSelect = useCallback(\n        async (selectedSizes = {}, shouldOpenBuyBoxForOOS = false) => {\n            const sizes = Object.values(selectedSizes).map(({size}) => size.name)\n            setCombinedSelectedSizesLabel(sizes.join('/'))\n            setCombinedSelectedSizes(selectedSizes)\n\n            // If we should open BuyBox for OOS items, update productIds for C&C and open drawer\n            // For PLP: Skip C&C drawer for bundle/set products - customer can select store at checkout\n            if (shouldOpenBuyBoxForOOS && openBuyBoxDrawer && !isFromPlp) {\n                // Update productIdForStore with combined variant IDs for C&C store search\n                const variantIds = Object.values(selectedSizes)\n                    .map((selection) => selection?.variant?.productId)\n                    .filter(Boolean)\n                    .join(',')\n\n                if (variantIds) {\n                    setProductIdForStore(variantIds)\n                }\n\n                openBuyBoxDrawer()\n                return\n            }\n\n            // For PLP with OOS bundle/set: Close drawer and show error on tile\n            // Customer can visit PDP for C&C options or checkout for store selection\n            // This triggers when ANY item in the set has an OOS size selected (partial or full OOS)\n            // Note: Check OOS directly from selectedSizes, not just shouldOpenBuyBoxForOOS\n            // (shouldOpenBuyBoxForOOS only triggers when CnC is enabled)\n            if (isFromPlp) {\n                const hasAnyOosSelected = Object.values(selectedSizes).some(\n                    (selection) => selection?.size && !selection.size.orderable\n                )\n\n                if (hasAnyOosSelected) {\n                    // Close the multi-size drawer\n                    if (closeMultiSizeDrawer) {\n                        closeMultiSizeDrawer()\n                    }\n                    // Show error message on the tile\n                    setPlpFetchError(\n                        new Error(\n                            intl.formatMessage({\n                                id: 'buy_from_tile.error.sizes_unavailable',\n                                defaultMessage:\n                                    'One or more selected sizes are currently unavailable'\n                            })\n                        )\n                    )\n                    return\n                }\n            }\n\n            if (isAddingItem) return\n\n            // Validate bundle/set selection\n            const hasValidSelection = validateAndShowErrorBundleNSet({\n                normalizedProducts,\n                combinedSelectedSizes: selectedSizes,\n                isProductLoading: false,\n                quantity: 1\n            })\n\n            if (!hasValidSelection) return\n\n            try {\n                const childItems = prepareChildItems(selectedSizes)\n                const dolItems = prepareDolItems(childItems)\n                const result = await submitAddItemToCart(dolItems)\n\n                if (isResultSuccessful(result)) {\n                    openAddToCartModal({\n                        product: productToUse,\n                        itemsAdded: isProductPartOfBundle\n                            ? [{product: productToUse, quantity: 1}]\n                            : Object.values(childItems).map(({product: childProd}) => ({\n                                  product: childProd,\n                                  quantity: 1\n                              })),\n                        selectedQuantity: 1\n                    })\n\n                    if (isProductPartOfBundle) {\n                        einstein.sendAddToCart([\n                            {\n                                id: productToUse.productId,\n                                price: productToUse.price?.sales?.value || productToUse.price,\n                                quantity: 1,\n                                bundledProductItems: childItems\n                            }\n                        ])\n                    } else {\n                        einstein.sendAddToCart(\n                            Object.values(childItems).map(({product: childProd}) => ({\n                                id: childProd.productId,\n                                price: childProd.price?.sales?.value || childProd.price,\n                                quantity: 1\n                            }))\n                        )\n                    }\n\n                    if (productFindingMethod) {\n                        const mappedProduct = mapProductForTracking(productForTracking.productId)\n                        await trackAddToCart(mappedProduct, 1, productFindingMethod)\n                    }\n\n                    // Track Bloomreach pixel ADD_TO_CART event\n                    trackBloomreachAddToCart(productForTracking?.productId, {\n                        masterId: product?.productId\n                    })\n\n                    // Emit add-to-cart event to consumer (analytics/pixels handled there)\n                    onAddToCart?.(product, {sku: productForTracking?.productId})\n                } else {\n                    handleApiError(result)\n                }\n            } catch (error) {\n                if (setAddToCartError) {\n                    setAddToCartError(error)\n                }\n            }\n        },\n        [\n            isAddingItem,\n            normalizedProducts,\n            isProductPartOfBundle,\n            productToUse,\n            submitAddItemToCart,\n            openAddToCartModal,\n            einstein,\n            isResultSuccessful,\n            handleApiError,\n            setAddToCartError,\n            productFindingMethod,\n            isFromPlp,\n            closeMultiSizeDrawer,\n            trackAddToCart,\n            trackBloomreachAddToCart,\n            onAddToCart,\n            prepareChildItems,\n            prepareDolItems,\n            openBuyBoxDrawer,\n            mapProductForTracking,\n            productForTracking\n        ]\n    )\n\n    // Handle size selection\n    // For PLP products, use productToUse which has full product data from API\n    const handleSizeSelect = useCallback(\n        (size) => {\n            setSelectedSize(size)\n\n            // Find the variant productId for this size\n            const variantId = findVariantBySize(size)\n            setProductIdForStore(variantId)\n\n            // Reset the show store pickup flag\n            resetShowStorePickupFlag?.()\n\n            // Use productToUse for accurate data (includes fullProduct when available)\n            const productData = productToUse || product\n\n            // Handle size selection based on C&C eligibility\n            if (size.orderable) {\n                // In-stock size - add to cart directly\n                handleCartItemWithSize(variantId)\n            } else {\n                // Out-of-stock size - check if C&C or notify me is available\n                // For PLP: Skip C&C, only show Notify Me - customer can select store at checkout\n                const shouldOpenCnC = !isFromPlp && isClickAndCollectEnabled && productIsCncEligible\n\n                // Use isNotifyMeForSize from size-selector if available\n                const isNotifyMeEnabled =\n                    enableNotifyMe &&\n                    (size.isNotifyMeForSize === undefined\n                        ? productData?.custom?.isNotifyMe\n                        : size.isNotifyMeForSize)\n\n                if (shouldOpenCnC) {\n                    // Open C&C modal for out-of-stock C&C eligible products (PDP/Rec zones only)\n                    openBuyBoxDrawer()\n                } else if (isNotifyMeEnabled) {\n                    // Open notify me modal for out-of-stock products with notify me enabled\n                    const variant =\n                        productData?.variants?.find((v) => v.productId === variantId) || productData\n                    handleNotifyMeClick(variant)\n                }\n            }\n        },\n        [\n            findVariantBySize,\n            handleCartItemWithSize,\n            resetShowStorePickupFlag,\n            isFromPlp,\n            isClickAndCollectEnabled,\n            productIsCncEligible,\n            enableNotifyMe,\n            product,\n            productToUse,\n            openBuyBoxDrawer,\n            handleNotifyMeClick\n        ]\n    )\n\n    // Handle click based on product state\n    const handleClick = useCallback(\n        async (event) => {\n            // ALWAYS prevent navigation to PDP - must be first, before any conditionals\n            event.stopPropagation()\n            event.preventDefault()\n\n            if (isAddingItem) {\n                return\n            }\n\n            // The tile renders this button as \"Notify me\" only for products that are out of stock,\n            // so it opens the Notify Me form instead of a size list with nothing to select.\n            if (isNotifyMeCta && enableNotifyMe && productToUse?.custom?.isNotifyMe) {\n                handleNotifyMeClick(productToUse)\n                return\n            }\n\n            // Clear any previous PLP fetch error on retry\n            if (isFromPlp && plpFetchError) {\n                setPlpFetchError(null)\n            }\n\n            // Handle PLP-specific logic (fetching full product data)\n            const {shouldReturn} = handlePlpClick()\n            if (shouldReturn) {\n                return\n            }\n\n            // Handle bundle/set products\n            if (isProductABundleOrSet) {\n                // Check if we have child products data\n                // Product tiles from recommendation zones don't include full bundle/set data\n                if (normalizedProducts.length === 0) {\n                    // Trigger fetch of full product details\n                    if (\n                        !shouldFetchFullProduct &&\n                        !isLoadingFullProduct &&\n                        !isFetchingFullProduct\n                    ) {\n                        setShouldFetchFullProduct(true)\n                    }\n                    // Wait for product to load, the effect below will handle opening drawer\n                    return\n                }\n\n                if (shouldShowMultiSizeSelector) {\n                    // Open multi-size selector if child products have size variants\n                    if (openMultiSizeDrawer) {\n                        openMultiSizeDrawer()\n                    }\n                } else {\n                    // No size selection needed, add to cart directly\n                    await handleCartItemBundleOrSet()\n                }\n                return\n            }\n\n            // Handle simple/variant products with size variants\n            if (hasSizeVariants) {\n                // Always use pendingDrawerOpen mechanism for reliability\n                // This ensures the drawer opens via the effect, avoiding potential stale closure issues\n                // when calling openSizeDrawer directly\n                setPendingDrawerOpen(true)\n                return\n            }\n\n            // For simple products (no size variants):\n            // Check if product is orderable using product type based detection\n            // When full PDP product data is available on PLP (second click), use inventory.orderable directly —\n            // PDP API doesn't include productInStock so getProductStockStatus would return true (default)\n            // For initial PLP tile data (no full product yet), use getProductStockStatus (productInStock-based)\n            // For PDP: uses inventory.orderable directly (backward compatibility)\n            let isProductOrderable\n            if (isFromPlp && hasRealFullProductData) {\n                isProductOrderable = productToUse?.inventory?.orderable\n            } else if (isFromPlp) {\n                isProductOrderable = getProductStockStatus(productToUse, product)\n            } else {\n                isProductOrderable = getSimpleProductOrderable(productToUse)\n            }\n\n            if (isProductOrderable) {\n                // In-stock simple product - add to cart directly\n                await handleCartItem()\n            } else {\n                // Out-of-stock simple product - check for C&C or notify me\n                handleOOSSimpleProduct()\n            }\n        },\n        [\n            isAddingItem,\n            isNotifyMeCta,\n            enableNotifyMe,\n            isFromPlp,\n            plpFetchError,\n            handleNotifyMeClick,\n            handlePlpClick,\n            isProductABundleOrSet,\n            normalizedProducts.length,\n            shouldShowMultiSizeSelector,\n            openMultiSizeDrawer,\n            handleCartItemBundleOrSet,\n            hasSizeVariants,\n            handleCartItem,\n            shouldFetchFullProduct,\n            isLoadingFullProduct,\n            isFetchingFullProduct,\n            productToUse,\n            product,\n            handleOOSSimpleProduct,\n            hasRealFullProductData\n        ]\n    )\n\n    // Helper to get productImg for NotifyMe modal\n    const getNotifyMeProductImg = useMemo(() => {\n        if (!selectedVariantForNotifyMe) return null\n\n        const mainRectImage = selectedVariantForNotifyMe.imageSequence?.find(\n            (img) => img.viewType === 'main_rect_center'\n        )\n\n        if (mainRectImage) {\n            return {\n                disBaseLink: mainRectImage.disBaseLink\n                    ?.replaceAll('[&sw={width}]', '')\n                    .replaceAll('&amp;', '&'),\n                title: mainRectImage.alt || selectedVariantForNotifyMe?.name\n            }\n        }\n\n        if (selectedVariantForNotifyMe.primaryImage) {\n            return {\n                disBaseLink: selectedVariantForNotifyMe.primaryImage.disBaseLink,\n                title:\n                    selectedVariantForNotifyMe.primaryImage.alt || selectedVariantForNotifyMe?.name\n            }\n        }\n\n        if (selectedVariantForNotifyMe.imageSrc) {\n            return {\n                disBaseLink: selectedVariantForNotifyMe.imageSrc\n                    .replaceAll('main_rect_base', 'main_rect_center')\n                    .replaceAll('[&sw={width}]', '')\n                    .replaceAll('&amp;', '&'),\n                title: selectedVariantForNotifyMe.imageAlt || selectedVariantForNotifyMe?.name\n            }\n        }\n\n        return null\n    }, [selectedVariantForNotifyMe])\n\n    const buttonStatus =\n        buttonText ||\n        intl.formatMessage({id: 'product_view.button.add_to_bag', defaultMessage: 'Add to Bag'})\n\n    // Don't render if no product or product should not show BuyFromTile\n    if (!product || !shouldShowBuyFromTile) {\n        return null\n    }\n\n    return (\n        <Box className={className} data-testid=\"buy-from-tile-container\">\n            <Button\n                onClick={handleClick}\n                isDisabled={isDisabled || isAddingItem || isActuallyLoading}\n                variant=\"link\"\n                style={styles.addToBagButton}\n                data-testid=\"buy-from-tile-button\"\n                data-auto={dataAuto || 'buy-from-tile-button'}\n            >\n                {buttonStatus}\n            </Button>\n\n            {/* PLP Product Fetch Error - displayed inline like PDP */}\n            {/* Use error.message directly for PLP-specific errors, fall back to getErrorMessage for API errors */}\n            {isFromPlp && plpFetchError && (\n                <Box mt={2} data-testid=\"plp-fetch-error\">\n                    <Text color=\"red.500\" textStyle=\"bodySm\" fontSize=\"xs\">\n                        {plpFetchError?.message || getErrorMessage(plpFetchError)}\n                    </Text>\n                </Box>\n            )}\n\n            {/* Size Selector Drawer - for simple/variant products with size variants */}\n            {/* For PLP products, use productToUse (fullProduct) when available for accurate size data */}\n            {/* IMPORTANT: Only render when needed to avoid portal conflicts with multiple tiles */}\n            {(() => {\n                const shouldRenderSizeSelector = hasSizeVariants && !isProductABundleOrSet\n\n                // For PLP with global context: Don't render inline drawer at all\n                // The global drawer in PlpSizeSelectorProvider handles all size selection\n                if (isFromPlp && plpSizeSelector) {\n                    return null\n                }\n\n                // For PLP without global context: Only render drawer when it's about to open or is open\n                // This prevents 20-30 Drawer components from conflicting in the portal\n                const shouldMount = isFromPlp\n                    ? shouldRenderSizeSelector && (pendingDrawerOpen || openSizeDrawer !== null)\n                    : shouldRenderSizeSelector\n\n                return shouldMount ? (\n                    <SizeSelectorDrawer\n                        productSizes={\n                            sizeDrawerProduct?.variationAttributes?.filter(\n                                ({id}) => id === 'size'\n                            ) || []\n                        }\n                        selectedSize={selectedSize}\n                        onSizeSelect={handleSizeSelect}\n                        setOpenDrawer={setOpenSizeDrawer}\n                        setCloseDrawer={setCloseSizeDrawer}\n                        productId={sizeDrawerProduct?.productId}\n                        productName={sizeDrawerProduct?.name || product?.name}\n                        productImg={\n                            sizeDrawerProduct?.imageSequence?.find(\n                                (img) => img.viewType === 'main_rect_center'\n                            ) ||\n                            product?.imageSequence?.find(\n                                (img) => img.viewType === 'main_rect_center'\n                            )\n                        }\n                        isNotifyMe={sizeDrawerProduct?.custom?.isNotifyMe}\n                        variants={sizeDrawerProduct?.variants}\n                        isClickAndCollect={isFromPlp ? false : isClickAndCollectEnabled}\n                        openBuyBoxDrawer={isFromPlp ? null : openBuyBoxDrawer}\n                        closeBuyBoxDrawer={closeBuyBoxDrawer}\n                        handleOutOfStockSizeSelection={handleOutOfStockSizeSelection}\n                        hideFindYourSizeButton={hideDeliveryAndCnC}\n                        digitalSizeGroup={sizeDrawerProduct?.digitalSizeGroup}\n                        placement=\"right\"\n                    />\n                ) : null\n            })()}\n\n            {/* Multi-Size Selector Drawer - for bundle/set products with size variants */}\n            {shouldShowMultiSizeSelector &&\n                isProductABundleOrSet &&\n                multiSizeVariantProducts.length > 0 &&\n                (() => {\n                    const drawerComponent = (\n                        <SequentialSizeSelectorDrawer\n                            products={multiSizeVariantProducts}\n                            setOpenDrawer={setOpenMultiSizeDrawer}\n                            setCloseDrawer={setCloseMultiSizeDrawer}\n                            onConfirmMultiSizeSelection={handleOnMultiSizeSelect}\n                            onDrawerClose={handleMultiSizeDrawerClose}\n                            combinedSelectedSizesLabel={combinedSelectedSizesLabel}\n                            isClickAndCollect={isFromPlp ? false : isClickAndCollectEnabled}\n                            openBuyBoxDrawer={isFromPlp ? null : openBuyBoxDrawer}\n                            closeBuyBoxDrawer={closeBuyBoxDrawer}\n                            isProductPartOfBundle={isProductPartOfBundle}\n                            isProductPartOfSet={isProductPartOfSet}\n                            isNotifyMe={enableNotifyMe && productToUse?.custom?.isNotifyMe}\n                            onNotifyMeClick={handleNotifyMeClick}\n                            hideFindYourSizeButton={hideDeliveryAndCnC}\n                            disableOOSVariants={disableOOSVariants}\n                            resetShowStorePickupFlag={resetShowStorePickupFlag}\n                            placement=\"right\"\n                        />\n                    )\n\n                    // For PLP, wrap in routing context so useParams() works in child drawers\n                    return isFromPlp ? (\n                        <PlpRoutingWrapper productId={product?.productId}>\n                            {drawerComponent}\n                        </PlpRoutingWrapper>\n                    ) : (\n                        drawerComponent\n                    )\n                })()}\n\n            {/* Click and Collect BuyBox */}\n            <BuyBox\n                isDrawerOpenNew={isBuyBoxDrawerOpen}\n                onOpen={openBuyBoxDrawer}\n                onClose={closeBuyBoxDrawer}\n                productIds={productIdForStore}\n                enableCnC={isClickAndCollectEnabled}\n                productIsCncEligible={productIsCncEligible}\n                product={product}\n                onStoreSelect={handleStoreRowSelect}\n                onConfirmStoreSelection={handleConfirmStoreSelection}\n                hideDeliveryAndCnC={hideDeliveryAndCnC}\n            />\n\n            {/* Notify Me Modal */}\n            {isNotifyMeOpen && selectedVariantForNotifyMe && (\n                <NotifyMe\n                    isNotifyMeDrawerOpen={isNotifyMeOpen}\n                    handleDrawerClose={handleNotifyMeClose}\n                    handleDrawerBack={handleNotifyMeBack}\n                    productName={selectedVariantForNotifyMe?.name}\n                    productImg={getNotifyMeProductImg}\n                    secondaryProductName={selectedVariantForNotifyMe?.nameDetails}\n                    isNotifyMeFormSubmitted={isNotifyMeFormSubmitted}\n                    setIsNotifyMeFormSubmitted={setIsNotifyMeFormSubmitted}\n                    product={selectedVariantForNotifyMe}\n                    placement={enableDrawerPlacementFix ? notifyMePlacement : undefined}\n                />\n            )}\n        </Box>\n    )\n}\n\nBuyFromTile.propTypes = {\n    product: PropTypes.shape({\n        productId: PropTypes.string.isRequired,\n        name: PropTypes.string,\n        dataAuto: PropTypes.string,\n        price: PropTypes.oneOfType([\n            PropTypes.number,\n            PropTypes.shape({\n                sales: PropTypes.shape({\n                    value: PropTypes.number\n                })\n            })\n        ]),\n        image: PropTypes.shape({\n            disBaseLink: PropTypes.string,\n            alt: PropTypes.string\n        }),\n        imageSequence: PropTypes.arrayOf(\n            PropTypes.shape({\n                viewType: PropTypes.string,\n                disBaseLink: PropTypes.string,\n                alt: PropTypes.string\n            })\n        ),\n        inventory: PropTypes.shape({\n            orderable: PropTypes.bool\n        }),\n        orderable: PropTypes.bool,\n        discontinued: PropTypes.bool,\n        buyFromTileEnabled: PropTypes.bool,\n        digitalSizeGroup: PropTypes.string,\n        custom: PropTypes.shape({\n            isNotifyMe: PropTypes.bool,\n            isEarlyAccess: PropTypes.bool,\n            nonPurchasable: PropTypes.bool,\n            status: PropTypes.string,\n            isSneakPeekProduct: PropTypes.bool,\n            availableForFindInStore: PropTypes.bool,\n            availableForInStorePickup: PropTypes.bool\n        }),\n        c_availableForFindInStore: PropTypes.bool,\n        c_availableForInStorePickup: PropTypes.bool,\n        availableForFindInStore: PropTypes.bool,\n        availableForInStorePickup: PropTypes.bool,\n        productType: PropTypes.shape({\n            variant: PropTypes.bool,\n            set: PropTypes.bool,\n            bundle: PropTypes.bool\n        }),\n        bundledProducts: PropTypes.arrayOf(\n            PropTypes.shape({\n                product: PropTypes.object,\n                quantity: PropTypes.number\n            })\n        ),\n        setProducts: PropTypes.arrayOf(PropTypes.object),\n        variationAttributes: PropTypes.arrayOf(\n            PropTypes.shape({\n                id: PropTypes.string,\n                values: PropTypes.arrayOf(\n                    PropTypes.shape({\n                        value: PropTypes.any,\n                        name: PropTypes.string,\n                        orderable: PropTypes.bool\n                    })\n                )\n            })\n        ),\n        variants: PropTypes.arrayOf(\n            PropTypes.shape({\n                productId: PropTypes.string,\n                orderable: PropTypes.bool,\n                variationValues: PropTypes.object\n            })\n        ),\n        variations: PropTypes.arrayOf(\n            PropTypes.shape({\n                variationAttributes: PropTypes.arrayOf(\n                    PropTypes.shape({\n                        id: PropTypes.string,\n                        values: PropTypes.arrayOf(\n                            PropTypes.shape({\n                                value: PropTypes.any,\n                                name: PropTypes.string,\n                                orderable: PropTypes.bool\n                            })\n                        )\n                    })\n                )\n            })\n        ),\n        c_extend: PropTypes.shape({\n            size: PropTypes.string\n        }),\n        c_size: PropTypes.string,\n        size: PropTypes.string,\n        giftCardType: PropTypes.string,\n        isEngravable: PropTypes.bool,\n        c_engravable: PropTypes.bool,\n        stylingStudio: PropTypes.shape({\n            braceletBuilder: PropTypes.shape({\n                isEnabled: PropTypes.bool\n            })\n        }),\n        memberPrice: PropTypes.oneOfType([PropTypes.number, PropTypes.object])\n    }),\n    productForTracking: PropTypes.object,\n    onAddToCartModalOpen: PropTypes.func,\n    setAddToCartError: PropTypes.func,\n    isDisabled: PropTypes.bool,\n    className: PropTypes.string,\n    hideDeliveryAndCnC: PropTypes.bool,\n    productFindingMethod: PropTypes.string,\n    isFromPlp: PropTypes.bool,\n    isFromPdpRecZone: PropTypes.bool,\n    selectedVariantId: PropTypes.string,\n    buttonText: PropTypes.string,\n    plpSizeSelector: PropTypes.shape({\n        openSizeSelector: PropTypes.func,\n        closeSizeSelector: PropTypes.func\n    }),\n    dataAuto: PropTypes.string,\n    onAddToCart: PropTypes.func,\n    skipBloomreachAddToCartPixel: PropTypes.bool,\n    isNotifyMeCta: PropTypes.bool\n}\n\nexport default BuyFromTile\n","import {\n    isProductAvailable as checkProductAvailable,\n    isCncEligible\n} from './product-eligibility-utils'\n\n/**\n * Retrieves the Click and Collect (CnC) status for a given product based on its properties\n * and specific flags (e.g., discontinued, sneak peek, etc.).\n *\n * @param {Object} product - The product object containing details about the product.\n * @param {boolean} enableBuyBox - Flag indicating whether the buy box(CnC) is enabled.\n * @param {boolean} [enablePdpCnCProductSets=false] - Whether sets are eligible for CnC.\n * @param {boolean} [excludeFindInStore=false] - When true, the isAvailableForFindInStore check is\n *   skipped when determining CnC eligibility. Controlled by the\n *   `enable-pdp-cnc-exclude-find-in-store` LaunchDarkly flag.\n *\n * @returns {Object} An object containing statuses related to CnC eligibility and visibility.\n * @returns {boolean} return.showCnC - Whether Click and Collect (CnC) should be shown based on product status and buy box.\n * @returns {boolean} return.isClickAndCollectEnabled - Whether Click and Collect is enabled for the product based on eligibility.\n * @returns {boolean} return.productIsCncEligible - Whether the product is eligible for Click and Collect based on store availability.\n *\n */\n\nexport const getProductCnCStatus = ({\n    product,\n    enableBuyBox,\n    enablePdpCnCProductSets = false,\n    excludeFindInStore = false,\n    enableCncForDiscontinued = false\n}) => {\n    // Check product availability excluding PGC gift cards\n    const isProductAvailable = checkProductAvailable(product, {\n        excludePGC: true,\n        excludeSet: !enablePdpCnCProductSets,\n        excludeDiscontinued: enableCncForDiscontinued\n    })\n\n    // Check if product is C&C eligible\n    const productIsCncEligible = isCncEligible(product, {excludeFindInStore})\n\n    const showCnC = enableBuyBox && isProductAvailable\n    const isClickAndCollectEnabled = isProductAvailable && productIsCncEligible\n\n    return {\n        showCnC,\n        productIsCncEligible,\n        isClickAndCollectEnabled\n    }\n}\n","import {useState, useRef, useCallback} from 'react'\nimport {getFavoriteStore} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\n\n/**\n * Custom hook to manage the Buy Box Drawer state and behavior.\n *\n * @param {Object} options\n * @param {boolean} options.isFindYourSizeBtnEnabled - Whether the size is hidden.\n * @param {Object|null} options.hasNoSelectedSize - Whether is size is not selected.\n * @param {Function} [options.openSizeSelector] - Optional callback to open the size selector UI.\n * @param {Function} [options.triggerStoreInventoryFetch] - callback to trigger store inventory status.\n *\n * @returns {{\n *   isBuyBoxDrawerOpen: boolean,\n *   openBuyBoxDrawer: () => void,\n *   closeBuyBoxDrawer: () => void,\n *   showStorePickupIfNoSizeSelected: React.MutableRefObject<boolean>,\n *   resetShowStorePickupFlag: () => void,\n *   handleBuyBoxToggle: () => void\n * }}\n */\nexport const useBuyBoxDrawer = ({\n    isFindYourSizeBtnEnabled,\n    hasNoSelectedSize,\n    openSizeSelector,\n    triggerStoreInventoryFetch\n}) => {\n    const {storeInventoryId} = getFavoriteStore()\n\n    const [isBuyBoxDrawerOpen, setIsBuyBoxDrawerOpen] = useState(false)\n    const showStorePickupIfNoSizeSelected = useRef(false)\n    // Track if the BuyBox drawer was opened from the Add-to-Bag flow\n    // This is used to determine if auto-ATB should happen when a store is selected\n    const openedFromAtbFlow = useRef(false)\n\n    const openBuyBoxFromCnC = useCallback(() => {\n        // This is triggered when user clicks \"Select a Store\" link - NOT from ATB flow\n        openedFromAtbFlow.current = false\n        if (isFindYourSizeBtnEnabled && hasNoSelectedSize) {\n            showStorePickupIfNoSizeSelected.current = true\n            openSizeSelector?.()\n        } else {\n            setIsBuyBoxDrawerOpen(true)\n        }\n    }, [isFindYourSizeBtnEnabled, hasNoSelectedSize, openSizeSelector])\n\n    const openBuyBoxDrawer = useCallback((setAtbFlag = false) => {\n        // Only set the ATB flow flag if explicitly requested by the caller\n        // This allows callers to control whether auto-ATB should happen when a store is selected\n        // Previously, this always set the flag to true, which caused issues when the drawer\n        // was opened from non-ATB flows (e.g., clicking \"Find your sizes\" directly)\n        if (setAtbFlag) {\n            openedFromAtbFlow.current = true\n        }\n        setIsBuyBoxDrawerOpen(true)\n    }, [])\n\n    // Closes the Buy Box Drawer.\n    const closeBuyBoxDrawer = useCallback(() => setIsBuyBoxDrawerOpen(false), [])\n\n    // Resets the showStorePickupIfNoSizeSelected flag to false.\n    const resetShowStorePickupFlag = () => {\n        showStorePickupIfNoSizeSelected.current = false\n    }\n\n    // Callback to open BuyBox drawer on size selection if size OOS for online\n    const handleBuyBoxToggle = useCallback(() => {\n        const shouldOpenDrawer = !isBuyBoxDrawerOpen && showStorePickupIfNoSizeSelected.current\n\n        if (storeInventoryId) {\n            triggerStoreInventoryFetch()\n        } else if (shouldOpenDrawer) {\n            // When opening from handleBuyBoxToggle (triggered by \"Select a Store\" flow),\n            // do NOT set the ATB flow flag since this is NOT an ATB-initiated flow\n            openBuyBoxDrawer(false)\n            resetShowStorePickupFlag()\n        }\n    }, [\n        isBuyBoxDrawerOpen,\n        showStorePickupIfNoSizeSelected,\n        storeInventoryId,\n        triggerStoreInventoryFetch,\n        openBuyBoxDrawer,\n        resetShowStorePickupFlag\n    ])\n\n    return {\n        isBuyBoxDrawerOpen,\n        openBuyBoxFromCnC,\n        openBuyBoxDrawer,\n        closeBuyBoxDrawer,\n        handleBuyBoxToggle,\n        resetShowStorePickupFlag,\n        showStorePickupIfNoSizeSelected,\n        openedFromAtbFlow\n    }\n}\n","import React, {useEffect, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {\n    Stack,\n    Text,\n    useMultiStyleConfig,\n    Box,\n    Button,\n    useBreakpointValue\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {ImageTile, ImageTileCarousel, Swatches, CaratMessage, ColorMessage, Price} from '.'\nimport {Grid, GridItem} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PdpLink from './pdp-link'\nimport {useIntersectionObserver} from 'pandora-shared-app/overrides/app/hooks'\nimport {IMAGE_CONF, PRODUCT_MAIN_IMAGE_WIDTHS} from '../../../constants'\nimport BuyFromTile from '../../buy-from-tile'\nimport {transformImageUrl} from '../../../utils/transformImageUrl'\nimport useNavigation from '@salesforce/retail-react-app/app/hooks/use-navigation'\nimport {getProductStockStatus} from '../../buy-from-tile/utils/get-product-stock-status'\n\n/**\n * The ProductTileContent is a simple visual representation of a\n * product component. It will show it's default image, name and price.\n * It is dumb component and does not contain business logic\n * and all the functions, actions, properties are passed from parent component.\n */\n\nexport const ProductTileContent = ({\n    activeProduct,\n    mainProduct,\n    originalProduct,\n    index,\n    handleClick,\n    dynamicImageProps = {},\n    enableFavourite,\n    isInWishlist,\n    handleFavouriteClick,\n    price,\n    handleVariantClick,\n    isHovered,\n    handleMouseEnter,\n    handleMouseLeave,\n    flags = {},\n    currentImage,\n    setCurrentImage,\n    startXRef,\n    isProductEmphasised,\n    isShopTheLook,\n    isInGrid,\n    hideSwatches = false,\n    showBuyFromTile = false,\n    isBuyFromTileAvailable = false,\n    productFindingMethod = null,\n    section = 'PLP',\n    plpSizeSelector = null,\n    isFromPdpRecZone = false,\n    instanceId,\n    onAddToCart,\n    skipBloomreachAddToCartPixel = false,\n    rest\n}) => {\n    const {cgid, ...restWithoutCgid} = rest || {}\n    const styles = useMultiStyleConfig('ProductTile')\n    const intl = useIntl()\n    const inGridColSpan = isShopTheLook ? {base: 3, xl: 2} : 3\n    const {formatMessage} = intl\n\n    const {isEUPricingEnabled, enableOptimisticNavigation, enablePlpPdpImageSync} = flags\n    const enableProductImageCarousel = !!activeProduct.imageSrc\n    const isAskedForHeroImage = useRef(false)\n    const [setRef, isInteresting] = useIntersectionObserver({threshold: 0.1})\n    const imageWidth = useBreakpointValue(PRODUCT_MAIN_IMAGE_WIDTHS)?.replace('px', '')\n    const navigate = useNavigation()\n\n    // Check if buy from tile is enabled for this product (from product-search API response)\n    // This is product-type level, so read from originalProduct\n    // Default to true for backward compatibility; backend can explicitly set to false to disable\n    const buyFromTileEnabled = originalProduct?.buyFromTileEnabled ?? true\n\n    // Check if product is in stock (VARIANT-SPECIFIC, updates when swatch is selected)\n    // ⚠︝ IMPORTANT: These object paths align with getProductStockStatus utility and DOL response structure.\n    // When DOL provides the updated response format, verify these paths still match the new structure.\n    const productInStock = getProductStockStatus(activeProduct, mainProduct)\n\n    // Check if Notify Me is enabled for this product\n    // This is product-level, so read from originalProduct\n    // Default to false; backend explicitly sets to true when Notify Me is available\n    const isNotifyMe = originalProduct?.isNotifyMe ?? false\n\n    // Check if product is engravable — engravable products always show \"View\"\n    // (engraving requires PDP flow, so \"Add to Bag\" and \"Notify Me\" are not applicable)\n    const isEngravable = activeProduct?.isEngravable || mainProduct?.isEngravable\n\n    // Determine which button to show based on scenarios:\n    // 1. productInStock=true && buyFromTileEnabled=true && !isEngravable → \"Add to Bag\"\n    // 2. productInStock=false && isNotifyMe=true && !isEngravable → \"Notify me\"\n    // 3. isEngravable=true → \"View\" (always, regardless of stock/flags)\n    // 4. productInStock=true && buyFromTileEnabled=false → \"View\"\n    // 5. productInStock=false && isNotifyMe=false → \"View\"\n\n    const showAddToBag = productInStock && buyFromTileEnabled && !isEngravable\n    const showNotifyMe = !productInStock && isNotifyMe && !isEngravable\n    const showView = !showAddToBag && !showNotifyMe\n\n    // Calculate PDP path for \"View\" button navigation\n    /* istanbul ignore next */\n    const getPdpPath = () => {\n        if (!activeProduct?.productUrl) return ''\n        try {\n            // Split URL into path and query parts\n            const [path, query] = activeProduct.productUrl.split('?')\n            const pathSegments = path.split('/').filter(Boolean)\n            // Remove locale prefix (first segment) and reconstruct path\n            const cleanPath = '/' + pathSegments.slice(1).join('/')\n            return query ? `${cleanPath}?${query}` : cleanPath\n        } catch {\n            return ''\n        }\n    }\n\n    // Handle \"View\" button click - navigate to PDP\n    const handleViewClick = (event) => {\n        // Prevent both the React synthetic event and the native anchor href from firing\n        event.preventDefault()\n        event.nativeEvent?.preventDefault()\n        event.stopPropagation()\n        event.nativeEvent?.stopImmediatePropagation()\n        handleClick(event) // Trigger any tracking from parent\n        const pdpPath = getPdpPath()\n        if (pdpPath) {\n            navigate(pdpPath)\n        }\n    }\n\n    const shouldRenderSwatches = () => {\n        const hasVariants = mainProduct.variants?.length > 0\n        const shouldHide = hideSwatches\n        const isRecZoneWithSize = mainProduct.variationAttributes?.some(\n            (attr) => attr.id === 'size'\n        )\n\n        return hasVariants && !shouldHide && !isRecZoneWithSize\n    }\n\n    const renderProductContent = () => {\n        const imageComponent = enableProductImageCarousel ? (\n            <ImageTileCarousel\n                isShopTheLook={isShopTheLook}\n                isHovered={isHovered}\n                handleMouseEnter={handleMouseEnter}\n                handleMouseLeave={handleMouseLeave}\n                imageSrc={activeProduct.imageSrc}\n                secondaryImageSrc={activeProduct.secondaryImageSrc}\n                secondaryImageAlt={activeProduct.secondaryImageAlt}\n                dynamicImageProps={dynamicImageProps}\n                imageAlt={activeProduct.imageAlt}\n                hitType={activeProduct.hitType}\n                productType={activeProduct.productType}\n                enableFavourite={enableFavourite}\n                isInWishlist={isInWishlist}\n                handleFavouriteClick={handleFavouriteClick}\n                collabBadge={activeProduct.collabBadge}\n                productId={activeProduct.productId}\n                currentImage={currentImage}\n                setCurrentImage={setCurrentImage}\n                startXRef={startXRef}\n                index={index}\n                flags={flags}\n            />\n        ) : (\n            <ImageTile\n                imageSrc={activeProduct.imageSrc}\n                dynamicImageProps={dynamicImageProps}\n                imageAlt={activeProduct.imageAlt}\n                hitType={activeProduct.hitType}\n                productType={activeProduct.productType}\n                enableFavourite={enableFavourite}\n                isInWishlist={isInWishlist}\n                handleFavouriteClick={handleFavouriteClick}\n                collabBadge={activeProduct.collabBadge}\n                productId={activeProduct.productId}\n                index={index}\n                flags={flags}\n            />\n        )\n\n        return (\n            <Stack\n                spacing={2.5}\n                itemScope\n                itemType=\"https://schema.org/SomeProducts\"\n                itemID=\"#product\"\n                data-auto=\"divPLPProductTileSEO\"\n                ref={setRef}\n            >\n                {isProductEmphasised ? (\n                    <Box {...styles.productTileEmphasised}>{imageComponent}</Box>\n                ) : (\n                    imageComponent\n                )}\n                {/* Swatch selector */}\n                {/* Hide swatches for rec zones with size variants since BuyFromTile handles size selection */}\n                {/* Also hide if explicitly requested via hideSwatches prop (e.g., in modals) */}\n                {shouldRenderSwatches() && (\n                    <Swatches\n                        mainProduct={mainProduct}\n                        activeProduct={activeProduct}\n                        handleVariantClick={handleVariantClick}\n                    />\n                )}\n\n                {activeProduct.isEngravable && (\n                    <Text {...styles.blacklabel} itemProp=\"label\" data-auto=\"lblTileEngravable\">\n                        {formatMessage({\n                            defaultMessage: 'Engravable',\n                            id: 'product_tile.label.engravable'\n                        })}\n                    </Text>\n                )}\n\n                {activeProduct.badge && (\n                    <Text {...styles.blacklabel} itemProp=\"label\" data-auto=\"lblTileBadge\">\n                        {activeProduct.badge}\n                    </Text>\n                )}\n\n                <Text {...styles.title} data-auto=\"btnPLPProductName\" itemProp=\"name\">\n                    {activeProduct.name ?? activeProduct.productName}\n                </Text>\n\n                {activeProduct.diamondCaratWeight && (\n                    <CaratMessage diamondCaratWeight={activeProduct.diamondCaratWeight} />\n                )}\n\n                {activeProduct.availableColors && (\n                    <ColorMessage availableColors={activeProduct.availableColors} />\n                )}\n\n                <Price\n                    data-testid=\"product-tile-price\"\n                    data-auto=\"lblProductPrice\"\n                    total-price={price.originalPrice}\n                    price={price.value}\n                    minPrice={price.minPrice}\n                    maxPrice={price.maxPrice}\n                    originalPrice={price.originalPrice}\n                    originalMinPrice={price.originalMinPrice}\n                    discountPercentage={price.discountPercentage}\n                    currency={price.currency}\n                    isLoading={price.loading}\n                    showLowestPrice={isEUPricingEnabled && Boolean(price.lowestPrice?.value)}\n                    lowestPrice={price.lowestPrice}\n                    memberPrice={price.memberPrice}\n                    showMemberPrice={price.showMemberPrice}\n                    flags={flags}\n                />\n\n                {!productInStock && (\n                    <Text\n                        {...styles.oosLabel}\n                        data-auto=\"lblTileOutOfStock\"\n                        data-testid=\"oos-label\"\n                    >\n                        {formatMessage({\n                            defaultMessage: 'Out of stock online',\n                            id: 'product_tile.label.out_of_stock_online'\n                        })}\n                    </Text>\n                )}\n\n                {/* Show \"Add to Bag\" button if product is available and enabled */}\n                {showBuyFromTile && isBuyFromTileAvailable && showAddToBag && (\n                    <BuyFromTile\n                        product={mainProduct}\n                        productForTracking={originalProduct}\n                        isDisabled={rest.isDisabled}\n                        hideDeliveryAndCnC={true}\n                        productFindingMethod={productFindingMethod}\n                        isFromPlp={section === 'PLP' || section === 'plp_search'}\n                        isFromPdpRecZone={isFromPdpRecZone}\n                        plpSizeSelector={plpSizeSelector}\n                        dataAuto=\"product_tile.add_to_bag\"\n                        buttonText={formatMessage({\n                            id: 'product_view.button.add_to_bag',\n                            defaultMessage: 'Add to Bag'\n                        })}\n                        selectedVariantId={\n                            // Handle both 'productId' and 'id' field names for variants\n                            // Some data sources use 'id' instead of 'productId'\n                            (() => {\n                                /* istanbul ignore next */\n                                const activeId = activeProduct?.productId || activeProduct?.id\n                                const mainId = mainProduct?.productId || mainProduct?.id\n                                return activeId === mainId ? null : activeId\n                            })()\n                        }\n                        onAddToCart={onAddToCart}\n                        skipBloomreachAddToCartPixel={skipBloomreachAddToCartPixel}\n                    />\n                )}\n\n                {/* Show \"Notify me\" link if product is OOS and Notify Me is enabled */}\n                {showBuyFromTile && isBuyFromTileAvailable && showNotifyMe && (\n                    <Box data-testid=\"notify-me-button-container\">\n                        <BuyFromTile\n                            product={mainProduct}\n                            productForTracking={originalProduct}\n                            isDisabled={rest.isDisabled}\n                            hideDeliveryAndCnC={true}\n                            isFromPlp={section === 'PLP' || section === 'plp_search'}\n                            isFromPdpRecZone={isFromPdpRecZone}\n                            plpSizeSelector={plpSizeSelector}\n                            dataAuto=\"product_tile.notify_me\"\n                            isNotifyMeCta={true}\n                            buttonText={formatMessage({\n                                id: 'product_tile.notify_me',\n                                defaultMessage: 'Notify me'\n                            })}\n                            selectedVariantId={(() => {\n                                /* istanbul ignore next */\n                                const activeId = activeProduct?.productId || activeProduct?.id\n                                const mainId = mainProduct?.productId || mainProduct?.id\n                                return activeId === mainId ? null : activeId\n                            })()}\n                            onAddToCart={onAddToCart}\n                            skipBloomreachAddToCartPixel={skipBloomreachAddToCartPixel}\n                        />\n                    </Box>\n                )}\n\n                {/* Show \"View\" button as fallback */}\n                {showBuyFromTile && isBuyFromTileAvailable && showView && (\n                    <Box data-testid=\"view-product-button-container\">\n                        <Button\n                            onClick={handleViewClick}\n                            variant=\"link\"\n                            textStyle=\"label\"\n                            textTransform=\"none\"\n                            h=\"auto\"\n                            px={0}\n                            minW=\"0\"\n                            width=\"fit-content\"\n                            data-testid=\"view-product-button\"\n                        >\n                            {formatMessage({\n                                id: 'product_tile.view',\n                                defaultMessage: 'View'\n                            })}\n                        </Button>\n                    </Box>\n                )}\n            </Stack>\n        )\n    }\n\n    const sectionPrefix = instanceId ? `${section}_${instanceId}` : section\n    const productTileCsId =\n        typeof index === 'number'\n            ? `${sectionPrefix}_product_tile_${index + 1}`\n            : `${sectionPrefix}_product_tile`\n\n    useEffect(() => {\n        // Skip preloading when enablePlpPdpImageSync is enabled - PDP will use same URL as PLP\n        if (enablePlpPdpImageSync) return\n\n        const imageToPreload =\n            originalProduct?.heroImage?.disBaseLink ||\n            originalProduct?.secondaryImage?.disBaseLink ||\n            originalProduct?.primaryImage?.disBaseLink\n        if (\n            !enableOptimisticNavigation ||\n            !imageToPreload ||\n            !isInteresting ||\n            !imageWidth ||\n            isAskedForHeroImage.current\n        )\n            return\n\n        const img = new Image()\n        img.decoding = 'async'\n        img.loading = 'eager'\n        img.src = transformImageUrl({\n            url: imageToPreload,\n            q: IMAGE_CONF.quality,\n            sw: imageWidth\n        })\n\n        isAskedForHeroImage.current = true\n    }, [\n        enableOptimisticNavigation,\n        enablePlpPdpImageSync,\n        isInteresting,\n        originalProduct?.heroImage?.disBaseLink,\n        originalProduct?.secondaryImage?.disBaseLink,\n        originalProduct?.primaryImage?.disBaseLink,\n        imageWidth\n    ])\n\n    if (isProductEmphasised) {\n        return (\n            <GridItem {...styles.emphasizedWrapper}>\n                <Grid {...styles.emphasizedGrid}>\n                    <GridItem\n                        {...styles.emphasizedGridItem}\n                        colStart={{\n                            base: 0,\n                            md: 2,\n                            xl: index === 9 ? 3 : 1\n                        }}\n                    >\n                        <PdpLink\n                            styles={styles}\n                            rest={restWithoutCgid}\n                            cgid={cgid}\n                            activeProduct={activeProduct}\n                            handleClick={handleClick}\n                            renderProductContent={renderProductContent}\n                            data-auto=\"divPLPProductTile\"\n                            data-pid={activeProduct.productId}\n                            data-testid=\"product-tile\"\n                            data-cs-override-id={productTileCsId}\n                            isProductEmphasised={isProductEmphasised}\n                        />\n                    </GridItem>\n                </Grid>\n            </GridItem>\n        )\n    }\n\n    if (isInGrid) {\n        return (\n            <GridItem colSpan={inGridColSpan}>\n                <PdpLink\n                    styles={styles}\n                    rest={restWithoutCgid}\n                    cgid={cgid}\n                    activeProduct={activeProduct}\n                    handleClick={handleClick}\n                    renderProductContent={renderProductContent}\n                    data-auto=\"divPLPProductTile\"\n                    data-pid={activeProduct.productId}\n                    data-testid=\"product-tile\"\n                    data-cs-override-id={productTileCsId}\n                />\n            </GridItem>\n        )\n    }\n\n    return (\n        <PdpLink\n            styles={styles}\n            rest={restWithoutCgid}\n            cgid={cgid}\n            activeProduct={activeProduct}\n            handleClick={handleClick}\n            renderProductContent={renderProductContent}\n            data-auto=\"divPLPProductTile\"\n            data-pid={activeProduct.productId}\n            data-testid=\"product-tile\"\n            data-cs-override-id={productTileCsId}\n        />\n    )\n}\n\nProductTileContent.displayName = 'ProductTileContent'\nProductTileContent.propTypes = {\n    activeProduct: PropTypes.shape({\n        imageSrc: PropTypes.string.isRequired,\n        secondaryImageSrc: PropTypes.string,\n        secondaryImageAlt: PropTypes.string,\n        productId: PropTypes.string.isRequired,\n        id: PropTypes.string,\n        imageAlt: PropTypes.string,\n        hitType: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.object\n        ]),\n        productType: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.object\n        ]),\n        collabBadge: PropTypes.string,\n        badge: PropTypes.string,\n        isEngravable: PropTypes.bool,\n        diamondCaratWeight: PropTypes.string,\n        availableColors: PropTypes.arrayOf(PropTypes.string),\n        name: PropTypes.string,\n        productName: PropTypes.string,\n        productUrl: PropTypes.string.isRequired,\n        inventory: PropTypes.shape({\n            orderable: PropTypes.bool\n        }),\n        productInStock: PropTypes.bool,\n        c_extend: PropTypes.object\n    }).isRequired,\n    mainProduct: PropTypes.shape({\n        productId: PropTypes.string,\n        id: PropTypes.string,\n        isEngravable: PropTypes.bool,\n        variants: PropTypes.arrayOf(\n            PropTypes.shape({\n                id: PropTypes.string,\n                label: PropTypes.string,\n                imageSrc: PropTypes.string\n            })\n        ),\n        variationAttributes: PropTypes.arrayOf(\n            PropTypes.shape({\n                id: PropTypes.string\n            })\n        )\n    }).isRequired,\n    originalProduct: PropTypes.shape({\n        buyFromTileEnabled: PropTypes.bool,\n        isNotifyMe: PropTypes.bool,\n        heroImage: PropTypes.shape({\n            disBaseLink: PropTypes.string\n        }),\n        secondaryImage: PropTypes.shape({\n            disBaseLink: PropTypes.string\n        }),\n        primaryImage: PropTypes.shape({\n            disBaseLink: PropTypes.string\n        })\n    }),\n    handleClick: PropTypes.func,\n    dynamicImageProps: PropTypes.object,\n    enableFavourite: PropTypes.bool,\n    isInWishlist: PropTypes.bool,\n    handleFavouriteClick: PropTypes.func,\n    price: PropTypes.shape({\n        value: PropTypes.number,\n        minPrice: PropTypes.number,\n        maxPrice: PropTypes.number,\n        originalPrice: PropTypes.number,\n        originalMinPrice: PropTypes.number,\n        discountPercentage: PropTypes.number,\n        currency: PropTypes.string.isRequired,\n        loading: PropTypes.bool,\n        totalPrice: PropTypes.number,\n        lowestPrice: PropTypes.any,\n        memberPrice: PropTypes.any,\n        showMemberPrice: PropTypes.bool\n    }).isRequired,\n    index: PropTypes.number,\n    handleVariantClick: PropTypes.func,\n    isHovered: PropTypes.bool,\n    handleMouseEnter: PropTypes.func,\n    handleMouseLeave: PropTypes.func,\n    // Hoisted feature flags passed down from ProductTile (see use-product-tile-flags)\n    flags: PropTypes.object.isRequired,\n    currentImage: PropTypes.number,\n    setCurrentImage: PropTypes.func,\n    startXRef: PropTypes.shape({current: PropTypes.any}),\n    isProductEmphasised: PropTypes.bool,\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    onAddToCartModalOpen: PropTypes.func,\n    hideSwatches: PropTypes.bool,\n    showBuyFromTile: PropTypes.bool,\n    // Computed once per container via useProductCapabilities (see ProductTile)\n    isBuyFromTileAvailable: PropTypes.bool,\n    productFindingMethod: PropTypes.string,\n    section: PropTypes.string,\n    isFromPdpRecZone: PropTypes.bool,\n    plpSizeSelector: PropTypes.shape({\n        openSizeSelector: PropTypes.func,\n        closeSizeSelector: PropTypes.func\n    }),\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    onAddToCart: PropTypes.func,\n    skipBloomreachAddToCartPixel: PropTypes.bool,\n    rest: PropTypes.object\n}\n","import {discountPercent} from '../../../utils/price'\n\n/**\n * OG-8149: For logged-in members on range-type products, surface the member range as\n * the primary \"From X to Y\" minPrice and push the regular range into originalMinPrice\n * so <Price> renders the isRangePromo treatment (red main + strikethrough + Save X%).\n *\n * Returned as a small struct so the caller stays flat — keeps ProductTile's cognitive\n * complexity within Sonar limits.\n *\n * @param {object} args\n * @param {boolean} args.enablePdpPricingAndMemberDisplay - LD flag gating the feature\n * @param {boolean} args.isCustomerLoggedIn - Whether the customer is registered\n * @param {object} [args.memberPrice] - The product's memberPrice object (any shape)\n * @param {number} [args.sfccMinPrice] - The regular range minimum price\n * @param {boolean} args.isEffectiveRangePromo - True when a regular promo wins (member skips)\n * @returns {{useMemberRange: boolean, memberRangeMin: number|undefined, memberRangeDiscount: number|undefined}}\n */\nexport const computeMemberRangePricing = ({\n    enablePdpPricingAndMemberDisplay,\n    isCustomerLoggedIn,\n    memberPrice,\n    sfccMinPrice,\n    isEffectiveRangePromo\n}) => {\n    const useMemberRange =\n        enablePdpPricingAndMemberDisplay &&\n        isCustomerLoggedIn &&\n        memberPrice?.type === 'range' &&\n        memberPrice?.min?.value != null &&\n        !isEffectiveRangePromo\n\n    if (!useMemberRange) {\n        return {useMemberRange: false, memberRangeMin: undefined, memberRangeDiscount: undefined}\n    }\n\n    const memberRangeMin = memberPrice.min.value\n    const memberRangeDiscount =\n        sfccMinPrice && memberRangeMin ? discountPercent(sfccMinPrice, memberRangeMin) : undefined\n    return {useMemberRange, memberRangeMin, memberRangeDiscount}\n}\n\n/**\n * Pick the minPrice value to display in <Price> based on which pricing scenario is\n * active. Order of precedence: member range > effective range promo > regular range min.\n * Extracted to avoid a nested ternary in the refinedPrice literal.\n *\n * @param {object} args\n * @param {boolean} args.useMemberRange\n * @param {number} [args.memberRangeMin]\n * @param {boolean} args.isEffectiveRangePromo\n * @param {number} [args.rangePromoDisplayMin]\n * @param {number} [args.sfccMinPrice]\n * @returns {number|undefined}\n */\nexport const pickDisplayedMinPrice = ({\n    useMemberRange,\n    memberRangeMin,\n    isEffectiveRangePromo,\n    rangePromoDisplayMin,\n    sfccMinPrice\n}) => {\n    if (useMemberRange) return memberRangeMin\n    if (isEffectiveRangePromo) return rangePromoDisplayMin\n    return sfccMinPrice\n}\n","import React, {memo, useCallback, useMemo, useRef, useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {productUrlBuilder} from '@salesforce/retail-react-app/app/utils/url'\nimport {useCurrency} from '@salesforce/retail-react-app/app/hooks'\nimport {IMAGE_CONF} from '../../constants'\nimport {onSale, discountPercent} from '../../utils/price'\nimport {transformImageUrl} from '../../utils/transformImageUrl'\nimport {ProductTileContent} from './partials/product-tile-content'\nimport {useLDClient} from '@launchdarkly/react-sdk'\nimport {getEnhancedPrice} from '../../hooks/use-promotional-pricing'\nimport {getVariantEnhancedPrice} from '../../hooks/use-variant-promotional-pricing'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {computeMemberRangePricing, pickDisplayedMinPrice} from './helpers/member-range-pricing'\n\n/** @typedef {import('./use-product-tile-flags').ProductTileFlags} ProductTileFlags */\n\n/**\n * The ProductTile is a simple visual representation of a\n * product object. It will show it's default image, name and price.\n * It also supports favourite products, controlled by a heart icon.\n *\n * Feature flags are NOT read per tile: the parent container reads them once\n * via `useProductTileFlags` and passes the memoized object down as `flags`.\n */\nconst ProductTile = ({\n    product: mainProduct,\n    /** @type {ProductTileFlags} */\n    flags = {},\n    enableFavourite = false,\n    onFavouriteToggle,\n    dynamicImageProps = {},\n    onClick,\n    wishlist,\n    index,\n    isProductEmphasised,\n    isShopTheLook,\n    isInGrid,\n    promotionalPricing,\n    variantPromotionalPricing,\n    directImageUrl = false,\n    hideSwatches = false,\n    showBuyFromTile = false,\n    isBuyFromTileAvailable = false,\n    productFindingMethod = null,\n    section = 'PLP',\n    plpSizeSelector = null,\n    isFromPdpRecZone = false,\n    instanceId,\n    onAddToCart,\n    skipBloomreachAddToCartPixel = false,\n    ...rest\n}) => {\n    const {locale} = useIntl()\n    const {currency: activeCurrency} = useCurrency()\n    const isFavouriteLoadingRef = useRef(false)\n    const [isHovered, setIsHovered] = useState(false)\n    const [selectedVariant, setSelectedVariant] = useState(null)\n    const [currentImage, setCurrentImage] = useState(0)\n    const startXRef = useRef(null)\n    const {\n        isBloomreachEnabled,\n        enableNewEarlyAccessJourney,\n        isContextEnabled,\n        enableOptimisticNavigation,\n        enableStandardPriceTest,\n        enablePlpPriceRangeDisplay,\n        enableMemberPricing,\n        enablePdpPricingAndMemberDisplay,\n        enablePlpFindingMethod,\n        enableCarouselLowestPriceFallback,\n        enableCarouselPromotionalPricing\n    } = flags\n\n    const {data: customer} = useCurrentCustomer()\n    const isCustomerLoggedIn = customer?.isRegistered\n    const {link} = useTealium()\n\n    const client = useLDClient()\n\n    const handleMouseEnter = () => setIsHovered(true)\n    const handleMouseLeave = () => setIsHovered(false)\n\n    const [isClient, setIsClient] = useState(false)\n    useEffect(() => {\n        setIsClient(true)\n    }, [])\n\n    useEffect(() => {\n        if (isCustomerLoggedIn && enableMemberPricing && mainProduct?.memberPrice != null) {\n            link({\n                estore_event: 'member_pricing_applied',\n                login_status: 'logged_in',\n                promotion_id: 'member_pricing'\n            })\n        }\n    }, [isCustomerLoggedIn, enableMemberPricing, mainProduct?.memberPrice, link])\n\n    const getImageSrc = (imageUrl = '', directImageUrl = false, quality = 50) => {\n        if (directImageUrl) {\n            return imageUrl\n        }\n        return transformImageUrl({\n            url: imageUrl,\n            q: enableOptimisticNavigation ? IMAGE_CONF.quality : quality\n        })\n    }\n\n    const productToTileMapping = (product, includeVariants = false, locale, currentSection) => {\n        // NOSONAR - complexity will decrease when enableCarouselLowestPriceFallback flag is removed\n        // Get promotional price for this product\n        const enhancedPricing = getEnhancedPrice(\n            product,\n            promotionalPricing?.promotionalPrices,\n            promotionalPricing?.isLoading,\n            {enableCarouselPromotionalPricing}\n        )\n\n        // Helper function to check if a promotion has standardPriceTest flag\n        const hasStandardPriceTest = (promo) => promo?.standardPriceTest === true\n\n        // Check for standardPriceTest from enhanced pricing promotions OR from product's c_extend\n        const isPriceTesting =\n            isContextEnabled &&\n            (enhancedPricing?.promotions?.some(hasStandardPriceTest) ||\n                (product?.c_extend?.promotions?.length > 0 &&\n                    product.c_extend.promotions[0].standardPriceTest) ||\n                product?.c_extend?.priceInfo?.promotionPrice?.promoDetails?.[0]?.standardPriceTest)\n\n        // Use price from c_extend.priceInfo if available and from recommendation component\n        // FIX: When standardPriceTest is true and feature flag is enabled, use enhancedPricing.salePrice\n        let price =\n            isPriceTesting && enableStandardPriceTest\n                ? enhancedPricing?.salePrice || product?.salePrice\n                : enhancedPricing?.price || product?.price\n        let salePrice = enhancedPricing?.salePrice || product?.salePrice\n        // When standardPriceTest is true, set listPrice equal to price to prevent strikethrough display.\n        // FIND-5838 (gated by enableProductCarouselPromotionalPricing): when DOL has responded,\n        // trust enhancedPricing.listPrice as-is — including null/undefined (\"no regular pricebook\"),\n        // which must not regress to product.price and trigger a phantom strikethrough. With the flag\n        // off, fall back to the legacy `enhancedPricing?.listPrice || product?.price` expression.\n        let listPrice\n        if (isPriceTesting && enableStandardPriceTest) {\n            listPrice = price\n        } else if (enableCarouselPromotionalPricing) {\n            listPrice = enhancedPricing ? enhancedPricing.listPrice : product?.price\n        } else {\n            listPrice = enhancedPricing?.listPrice || product?.price\n        }\n        let currency = product?.currency\n\n        const isProductASet = !!(product?.type?.set || product?.productType?.set)\n\n        if (productFindingMethod && product?.c_extend?.priceInfo && isProductASet) {\n            const priceInfo = product.c_extend.priceInfo\n            const recommendationPrice =\n                priceInfo?.salePrice?.value ??\n                priceInfo?.salesPrice?.value ??\n                priceInfo?.promotionPrice?.value\n            const recommendationListPrice =\n                priceInfo?.originalPrice?.value ?? priceInfo?.listPrice?.value\n\n            if (recommendationPrice !== undefined) {\n                price = recommendationPrice\n                salePrice = recommendationPrice\n            }\n            if (recommendationListPrice !== undefined) {\n                listPrice = recommendationListPrice\n            }\n            currency =\n                priceInfo?.salePrice?.currency ?? priceInfo?.promotionPrice?.currency ?? currency\n        }\n\n        let finalProductUrl =\n            product?.c_extend?.productUrl ||\n            (product?.productId ? productUrlBuilder({id: product.productId}, locale) : undefined)\n\n        const shouldAppendFindingMethod =\n            currentSection &&\n            finalProductUrl &&\n            (currentSection !== 'PLP' || enablePlpFindingMethod)\n        if (shouldAppendFindingMethod) {\n            const separator = finalProductUrl.includes('?') ? '&' : '?'\n            finalProductUrl = `${finalProductUrl}${separator}product_finding_method=${currentSection.toLowerCase()}`\n        }\n\n        const baseMapping = {\n            imageSrc: getImageSrc(product?.primaryImage?.disBaseLink, directImageUrl, 50),\n            imageAlt: product?.primaryImage?.alt,\n            secondaryImageSrc: getImageSrc(\n                product?.secondaryImage?.disBaseLink,\n                directImageUrl,\n                40\n            ),\n            secondaryImageAlt: product?.secondaryImage?.alt,\n            // Handle both 'productId' and 'id' field names (variants may use 'id')\n            productId: product?.productId || product?.id,\n            name: product?.name,\n            productName: product?.productName,\n            price,\n            salePrice,\n            listPrice,\n            promotions: enhancedPricing?.promotions || [],\n            hitType: product?.hitType,\n            collabBadge: product?.c_extend?.custom?.collabBadge,\n            badge: product?.c_extend?.custom?.badge,\n            isEngravable: product?.c_extend?.isEngravable,\n            diamondCaratWeight: product?.c_extend?.custom?.diamondCaratWeight,\n            availableColors: product?.c_extend?.recommendation?.availableColors,\n            metalGroupId: product?.c_extend?.custom?.metalGroupId,\n            lowestPrice:\n                enhancedPricing?.lastLowestPrice ||\n                product?.c_extend?.lastLowestPrice ||\n                (enableCarouselLowestPriceFallback &&\n                    product?.c_extend?.priceInfo?.lastLowestPrice),\n            enhancedMin: enhancedPricing?.min,\n            enhancedMax: enhancedPricing?.max,\n            enhancedPriceType: enhancedPricing?.type,\n            productUrl: finalProductUrl,\n            productType: product?.productType || product?.type,\n            variationAttributes: product?.variationAttributes || [],\n            variants: product?.variants || [],\n            inventory: product?.c_extend?.inventory || product?.inventory,\n            custom: product?.c_extend?.custom || product?.custom,\n            productInStock: product?.c_extend?.productInStock ?? product?.productInStock,\n            buyFromTileEnabled:\n                product?.buyFromTileEnabled ?? product?.c_extend?.buyFromTileEnabled,\n            currency,\n            c_price: product?.c_price,\n            memberPrice: enablePdpPricingAndMemberDisplay\n                ? enhancedPricing?.memberPrice ?? product?.c_price?.memberPrice\n                : enhancedPricing?.memberPrice\n        }\n\n        if (includeVariants) {\n            if (!isBloomreachEnabled) {\n                return {\n                    ...baseMapping,\n                    variants: product?.c_extend?.variants?.map((v) =>\n                        productToTileMapping(v, false, locale, currentSection)\n                    )\n                }\n            }\n\n            return {\n                ...baseMapping,\n                variants: (product?.c_extend?.variants || []).map((variant) => {\n                    // Use variant promotional pricing specifically for variants\n                    const variantEnhancedPricing = getVariantEnhancedPrice(\n                        variant,\n                        variantPromotionalPricing?.variantPromotionalPrices,\n                        variantPromotionalPricing?.isLoading,\n                        isContextEnabled,\n                        {enableStandardPriceTest, enableCarouselPromotionalPricing}\n                    )\n\n                    // FIND-5838 invariant (gated by enableProductCarouselPromotionalPricing):\n                    // when DOL has responded, the variant listPrice is authoritative — `null`\n                    // means \"no regular pricebook on this variant\" and must not fall back to\n                    // variant.price (which would draw a phantom strikethrough on the swatch-\n                    // selected variant). With the flag off, retain legacy `|| variant.price`.\n                    const dolHasResponded = Boolean(variantEnhancedPricing)\n                    const dolListPriceWhenResponded = dolHasResponded\n                        ? variantEnhancedPricing.listPrice\n                        : variant.price\n                    const legacyListPrice = variantEnhancedPricing.listPrice || variant.price\n                    const variantListPrice = enableCarouselPromotionalPricing\n                        ? dolListPriceWhenResponded\n                        : legacyListPrice\n\n                    return {\n                        ...productToTileMapping(variant, false, locale, currentSection),\n                        price: variantEnhancedPricing.price || variant.price,\n                        salePrice: variantEnhancedPricing.salePrice || variant.salePrice,\n                        listPrice: variantListPrice,\n                        promotions: variantEnhancedPricing.promotions || [],\n                        memberPrice: variantEnhancedPricing.memberPrice\n                    }\n                })\n            }\n        }\n\n        return baseMapping\n    }\n\n    const refinedMainProduct = useMemo(\n        () => productToTileMapping(mainProduct, true, locale, section),\n        [\n            mainProduct,\n            promotionalPricing,\n            variantPromotionalPricing,\n            section,\n            locale,\n            isContextEnabled,\n            productFindingMethod,\n            directImageUrl,\n            enableNewEarlyAccessJourney,\n            isBloomreachEnabled,\n            enableOptimisticNavigation,\n            enableStandardPriceTest,\n            enablePlpFindingMethod,\n            enableCarouselLowestPriceFallback,\n            enableCarouselPromotionalPricing\n        ]\n    )\n\n    const activeProduct = selectedVariant || refinedMainProduct\n\n    const handleVariantClick = useCallback((event, variant) => {\n        event.preventDefault()\n        event.stopPropagation()\n        setSelectedVariant(variant)\n    }, [])\n\n    const isInWishlist = useMemo(() => {\n        return Boolean(\n            wishlist?.customerProductListItems?.find(\n                (item) => item.productId === activeProduct.productId\n            )\n        )\n    }, [wishlist, activeProduct.productId])\n\n    const handleFavouriteClick = async (event, productId) => {\n        event.preventDefault()\n        event.stopPropagation()\n\n        if (isFavouriteLoadingRef.current) {\n            return\n        }\n\n        try {\n            isFavouriteLoadingRef.current = true\n\n            await onFavouriteToggle(productId, !isInWishlist, mainProduct)\n        } finally {\n            isFavouriteLoadingRef.current = false\n        }\n    }\n\n    const handleClick = (event) => {\n        if (client) {\n            const productId = activeProduct.productId\n            const productName = activeProduct.productName\n            const productUrl = activeProduct.productUrl\n            client.track('product-tile-click', {\n                productId,\n                productName,\n                productUrl,\n                isProductEmphasised\n            })\n        }\n        event.preventDefault()\n        if (onClick) {\n            onClick(mainProduct)\n        }\n    }\n\n    // Check if we're waiting for promotional pricing\n    const isWaitingForPromotionalPrice =\n        isBloomreachEnabled &&\n        ((activeProduct.price === null && mainProduct.hasProductPromotions) ||\n            promotionalPricing?.isLoading)\n\n    // Use original product price when waiting for promotional pricing\n    const displayPrice = isWaitingForPromotionalPrice ? mainProduct.price : activeProduct.price\n    const salePrice = activeProduct.salePrice\n    // Don't override listPrice if it was explicitly set to match displayPrice (standardPriceTest case)\n    const listPrice = activeProduct.listPrice !== undefined ? activeProduct.listPrice : displayPrice\n    const lowestPrice = activeProduct.lastLowestPrice || activeProduct.lowestPrice\n    const isOnSale = onSale(displayPrice, salePrice)\n\n    const discountPercentage = useMemo(() => {\n        // If promotional pricing is available, calculate discount from list price\n        if (activeProduct.listPrice && activeProduct.price !== activeProduct.listPrice) {\n            return discountPercent(activeProduct.listPrice, activeProduct.price)\n        }\n        // Otherwise use standard sale price calculation\n        return discountPercent(displayPrice, salePrice)\n    }, [displayPrice, salePrice, activeProduct.listPrice, activeProduct.price])\n\n    const customPrice = activeProduct.c_price\n    const isRangePrice =\n        customPrice?.type === 'range' ||\n        (enablePlpPriceRangeDisplay && activeProduct.enhancedPriceType === 'range')\n\n    const hasRangePromo =\n        isRangePrice && enablePlpPriceRangeDisplay && (activeProduct.promotions?.length ?? 0) > 0\n\n    const sfccMinPrice =\n        customPrice?.min?.sales?.value ??\n        activeProduct.enhancedMin?.list?.value ??\n        activeProduct.enhancedMin?.sales?.value\n    // AC2.1: Use lowest price from promotions[] array when available\n    const promotionPrices = hasRangePromo\n        ? activeProduct.promotions.map((p) => p?.price).filter((p) => p != null)\n        : []\n    const lowestPromotionPrice =\n        promotionPrices.length > 0 ? Math.min(...promotionPrices) : undefined\n    const promoMinPrice = lowestPromotionPrice ?? activeProduct.enhancedMin?.sales?.value\n    // AC2.2: If range min is lower than promotion price, use range min\n    const rangePromoDisplayMin =\n        promoMinPrice != null && sfccMinPrice != null\n            ? Math.min(promoMinPrice, sfccMinPrice)\n            : sfccMinPrice\n\n    // AC2.2: Only show promo styling when promo actually lowers the price below range min\n    const isEffectiveRangePromo = hasRangePromo && rangePromoDisplayMin < sfccMinPrice\n\n    // AC2.1: For range promos, calculate discount from original min vs promotional min\n    const rangeDiscountPercentage =\n        isEffectiveRangePromo && sfccMinPrice && rangePromoDisplayMin\n            ? discountPercent(sfccMinPrice, rangePromoDisplayMin)\n            : undefined\n\n    const {useMemberRange, memberRangeMin, memberRangeDiscount} = computeMemberRangePricing({\n        enablePdpPricingAndMemberDisplay,\n        isCustomerLoggedIn,\n        memberPrice: activeProduct.memberPrice,\n        sfccMinPrice,\n        isEffectiveRangePromo\n    })\n\n    const refinedPrice = {\n        totalPrice: isOnSale ? salePrice : displayPrice,\n\n        value: isOnSale ? salePrice : displayPrice,\n\n        originalPrice: listPrice,\n        discountPercentage: memberRangeDiscount ?? rangeDiscountPercentage ?? discountPercentage,\n        currency: activeProduct.currency || activeCurrency,\n        loading: !isClient || isWaitingForPromotionalPrice,\n        lowestPrice: lowestPrice,\n        ...((isRangePrice || useMemberRange) && {\n            minPrice: pickDisplayedMinPrice({\n                useMemberRange,\n                memberRangeMin,\n                isEffectiveRangePromo,\n                rangePromoDisplayMin,\n                sfccMinPrice\n            })\n        }),\n        ...((isEffectiveRangePromo || useMemberRange) && {\n            originalMinPrice: sfccMinPrice\n        }),\n        memberPrice: activeProduct.memberPrice,\n        showMemberPrice:\n            enableMemberPricing && !isCustomerLoggedIn && activeProduct.memberPrice != null\n    }\n\n    return (\n        <ProductTileContent\n            isShopTheLook={isShopTheLook}\n            activeProduct={activeProduct}\n            mainProduct={refinedMainProduct}\n            originalProduct={mainProduct}\n            index={index}\n            handleClick={handleClick}\n            dynamicImageProps={dynamicImageProps}\n            enableFavourite={enableFavourite}\n            isInWishlist={isInWishlist}\n            handleFavouriteClick={handleFavouriteClick}\n            price={refinedPrice}\n            handleVariantClick={handleVariantClick}\n            isHovered={isHovered}\n            handleMouseEnter={handleMouseEnter}\n            handleMouseLeave={handleMouseLeave}\n            flags={flags}\n            currentImage={currentImage}\n            setCurrentImage={setCurrentImage}\n            startXRef={startXRef}\n            isProductEmphasised={isProductEmphasised}\n            isInGrid={isInGrid}\n            hideSwatches={hideSwatches}\n            showBuyFromTile={showBuyFromTile}\n            isBuyFromTileAvailable={isBuyFromTileAvailable}\n            productFindingMethod={productFindingMethod}\n            plpSizeSelector={plpSizeSelector}\n            section={section}\n            isFromPdpRecZone={isFromPdpRecZone}\n            instanceId={instanceId}\n            onAddToCart={onAddToCart}\n            skipBloomreachAddToCartPixel={skipBloomreachAddToCartPixel}\n            rest={rest}\n        />\n    )\n}\n\nProductTile.displayName = 'ProductTile'\n// propTypes live on the inner component so React validates through the memo\n// wrapper and eslint react/prop-types can associate them with the props.\nProductTile.propTypes = {\n    // Hoisted feature flags from useProductTileFlags — REQUIRED. Every consumer\n    // must call the hook once per container and pass the memoized object down;\n    // ProductTile never reads LaunchDarkly flags itself.\n    flags: PropTypes.object.isRequired,\n    product: PropTypes.shape({\n        currency: PropTypes.string,\n        image: PropTypes.shape({\n            alt: PropTypes.string,\n            disBaseLink: PropTypes.string,\n            link: PropTypes.string\n        }),\n        primaryImage: PropTypes.shape({\n            alt: PropTypes.string,\n            disBaseLink: PropTypes.string,\n            link: PropTypes.string\n        }),\n        price: PropTypes.number,\n        // `name` is present and localized when `product` is provided by a RecommendedProducts component\n        // (from Shopper Products `getProducts` endpoint), but is not present when `product` is\n        // provided by a ProductList component.\n        // See: https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-products?meta=getProducts\n        name: PropTypes.string,\n        // `productName` is localized when provided by a ProductList component (from Shopper Search\n        // `productSearch` endpoint), but is NOT localized when provided by a RecommendedProducts\n        // component (from Einstein Recommendations `getRecommendations` endpoint).\n        // See: https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-search?meta=productSearch\n        // See: https://developer.salesforce.com/docs/commerce/einstein-api/references/einstein-api-quick-start-guide?meta=getRecommendations\n        // Note: useEinstein() transforms snake_case property names from the API response to camelCase\n        productName: PropTypes.string,\n        productId: PropTypes.string,\n        hitType: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.arrayOf(PropTypes.string),\n            PropTypes.object\n        ]),\n        hasProductPromotions: PropTypes.bool,\n        c_extend: PropTypes.object,\n        memberPrice: PropTypes.oneOfType([PropTypes.number, PropTypes.object])\n    }),\n    enableFavourite: PropTypes.bool,\n    // (productId, isFavourite, product) — the tile passes its own product back\n    onFavouriteToggle: PropTypes.func,\n    dynamicImageProps: PropTypes.object,\n    // (product) — the tile passes its own product back\n    onClick: PropTypes.func,\n    wishlist: PropTypes.object,\n    isProductEmphasised: PropTypes.bool,\n    index: PropTypes.number,\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    promotionalPricing: PropTypes.object,\n    variantPromotionalPricing: PropTypes.object,\n    directImageUrl: PropTypes.bool,\n    hideSwatches: PropTypes.bool,\n    showBuyFromTile: PropTypes.bool,\n    // Computed ONCE per container via useProductCapabilities and passed down,\n    // instead of every tile re-reading the 12 capability flags itself\n    isBuyFromTileAvailable: PropTypes.bool,\n    productFindingMethod: PropTypes.string,\n    section: PropTypes.string,\n    isFromPdpRecZone: PropTypes.bool,\n    plpSizeSelector: PropTypes.shape({\n        openSizeSelector: PropTypes.func,\n        closeSizeSelector: PropTypes.func\n    }),\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    onAddToCart: PropTypes.func,\n    skipBloomreachAddToCartPixel: PropTypes.bool\n}\n\n// Export the memoized wrapper under the public name `ProductTile` via an alias so the\n// inner definition (above) can keep the same name — see the note on the component.\nconst MemoizedProductTile = memo(ProductTile)\nMemoizedProductTile.displayName = 'ProductTile'\n\nexport {MemoizedProductTile as ProductTile}\n","import {ProductTile} from './product-tile'\nexport {ProductTile}\nexport {useProductTileFlags} from './use-product-tile-flags'\n// RRA 9.1 internals (product-scroller, etc.) import ProductTile as default.\nexport default ProductTile\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"warranty-pictogram\",\n  \"use\": \"warranty-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 64 64\\\" id=\\\"warranty-pictogram\\\">\\n    <path fill=\\\"currentColor\\\" d=\\\"M31.75 2.08c2.03.83 6.28 2.66 10.78 4.6 5.09 2.19 10.86 4.67 14.27 6.08l.31.13v.33c0 7.03-1.64 20.19-4.62 25.6-6.58 11.97-20.51 22.09-20.65 22.19l-.29.21.01-.01-.29-.21c-.16-.114-14.064-10.219-20.65-22.19C7.65 33.41 6 20.24 6 13.21v-.33l.31-.13c3.41-1.41 9.17-3.88 14.26-6.07 4.51-1.94 8.77-3.77 10.8-4.6l.19-.08.19.08Zm-.21 1c-2.09.86-6.23 2.64-10.6 4.52C16 9.72 10.43 12.11 6.98 13.54H7c.05 7.15 1.75 19.81 4.49 24.79 5.95 10.81 18.03 20.12 20.06 21.64 2.03-1.52 14.12-10.83 20.06-21.64 2.74-4.98 4.44-17.64 4.49-24.78-3.45-1.43-9.03-3.83-13.98-5.96-4.36-1.88-8.49-3.65-10.58-4.51ZM52.27 23.8c-.6 5.26-1.83 9.83-3.39 12.56-5.32 9.31-16.579 17.17-16.69 17.25v-.01l-.57-.82c.11-.08 11.18-7.81 16.39-16.92 1.49-2.61 2.68-7.05 3.27-12.17l.99.11Zm-20.71-7.03c6.55 0 11.88 5.33 11.88 11.88 0 6.55-5.33 11.88-11.88 11.88-6.55 0-11.88-5.33-11.88-11.88 0-6.55 5.33-11.88 11.88-11.88Zm0 1.01c-6 0-10.88 4.88-10.88 10.88 0 6 4.88 10.88 10.88 10.88 6 0 10.88-4.88 10.88-10.88 0-6-4.88-10.88-10.88-10.88Zm5.86 5.67-6.88 11.07-4.75-4.35.68-.74 3.86 3.53 6.24-10.04.85.53ZM32.09 7.69c1.63.65 5.06 2.06 8.69 3.56 4.11 1.7 8.77 3.63 11.53 4.72l.32.13v.34c0 .71-.11 2.82-.16 3.72l-.01-.01h-1v-.05c.04-.77.13-2.45.16-3.33-2.8-1.12-7.26-2.96-11.22-4.6-3.49-1.44-6.8-2.81-8.49-3.48-1.69.67-5 2.04-8.49 3.48-4.12 1.7-8.78 3.63-11.54 4.73l-.37-.93c2.76-1.1 7.42-3.02 11.53-4.72 3.63-1.5 7.05-2.92 8.69-3.56l.18-.07.18.07Z\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"mandalorian_white\",\n  \"use\": \"mandalorian_white-usage\",\n  \"viewBox\": \"0 0 512 113\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 113\\\" id=\\\"mandalorian_white\\\"><path fill=\\\"#FFFFFF\\\" d=\\\"M287.2,10.1H512v3.1H287.2V10.1z M270.4,4.8h10.4v3.3h-10.4V10h10.3v3.2h-14.4V0h14.5v3.1h-10.4V4.8z M257.7,8.2h-8.6v5h-4.1V0h4.1v4.7h8.6V0h4.1v13.2h-4.1V8.2z M235.4,13.2h-4.1V3.3h-5.7V0h15.5v3.3h-5.7V13.2z M0,10.1h224.8v3.1H0 V10.1z M199,108.4c-3.2,2.9-7.7,4.6-12.4,4.6h-26.1v-4.6v-0.9v-0.3v-0.6v-0.1v-0.4v-0.3v-0.2v-0.7v-1.5V27.2h25.7 c11.5,0,17.9,7.1,17.9,17.5v52.5c0,2.2-0.5,4.2-1.3,6.1c0,0-0.7,1.3-0.9,1.6c-0.1,0.2-0.3,0.4-0.4,0.6l-0.3,0.4 c0,0.1-0.1,0.1-0.1,0.2l-0.2,0.2c0,0.1-0.1,0.1-0.1,0.2l-0.8,0.9c-0.1,0.1-0.1,0.1-0.2,0.2L199,108.4z M391.8,108.5l1.6,4.3h-15.8 l-1.6-4.5l-0.4-1.1l-0.2-0.5l-0.7-1.9l-0.3-0.9l-8.7-24.5V61l8.3,0V43h-11.6v60.6v1.3v1.8v0.5v0.2v1.1v4.4h-16v-4.4v-1.1V107v-0.4 v-1.7l0-1.1c0,0,0-76.7,0-76.7h30.8c11.9,0,12.8,4.3,12.8,9.8v26.7c0,5.4-1.1,13.1-7.9,13.1h-2.1l10.1,27.3l0.3,0.8l0.6,1.8 l0.2,0.4l0.2,0.5L391.8,108.5z M465.3,104.9l1.8,8.1h-16.6l-1.6-8.1l-0.4-2l-8.2-41.6l-8.5,42.7l-0.2,0.9l-1.6,8.1h-16.4l1-4.7 l0.1-0.3l0.7-3.1l0.1-0.6l0-0.2L432,27.2h16.5l16.5,76L465.3,104.9z M512,104.9v3.4v0.6v4.1h-12.8l-3.3-8.1l-1.2-3l-11-26.8v28.1 v1.7v8.1h-15.3v-8.1v-1.7V27.2h12.2l16.2,40.5V27.2H512v71.3V104.9z M411.9,104.9v8.1h-16v-4.5v-0.8v-0.4v-0.7v-1.7V104V27.2h16 v77.2V104.9z M211.7,92.8L211.7,92.8C211.7,92.8,211.7,92.8,211.7,92.8z M206.9,106.5C207,106.5,207,106.5,206.9,106.5 C207,106.5,206.9,106.5,206.9,106.5C206.9,106.5,206.9,106.5,206.9,106.5z M254.5,104.9l0.4,1.8l0.1,0.6l0.1,0.5l0.2,0.9l1,4.4 h-16.7l-10.2-51.8L219,113h-16.3l1-4.5l0.2-1.1l0.1-0.3l0.1-0.4l0-0.2l0.1-0.4l0-0.2l0.1-0.2l0.1-0.7l0.4-1.7l16.4-76h16.5 l16.4,75.7L254.5,104.9z M257.6,106.2v-1.3v-1.7v-76h16v69.9h20.3v7.3v0.5v0.6v0.3v0.3v0.4v0.2v0.6v0.1v1v4.6h-36.3v-4.6v-0.7v-0.6 v-0.5v-0.3V106.2z M297.4,106.1c0-0.1,0-0.2,0-0.2 M185.3,43.1h-8.9v54h8.1c1.6,0,3.4-0.9,3.4-2.6V45.8 C188,44.1,187,43.1,185.3,43.1z M106.8,104.8l0.1,0.6l0.1,0.3l0.1,0.2l0,0.2l0.1,0.5l0.1,0.6l0,0.2l0.2,0.8l1,4.7H91.9l-0.8-3.8 l-0.3-1.6l-0.1-0.4l-0.1-0.7l-0.1-0.6l0-0.1l-0.2-0.9l-0.2-1.2l-8.4-42.5l-8.5,42.3l-0.3,1.3l-0.1,0.6l-0.1,0.7l-0.1,0.4l-0.1,0.4 l-0.1,0.3l-0.2,1.2l-0.9,4.5H54.9l0.9-4.4l0.2-0.9l0.1-0.4l0.2-0.8l0-0.1l0.2-0.7l0.1-0.6l0.3-1.2L73.4,27h16.5l16.5,76.3 L106.8,104.8z M37.8,107.6v-0.3v-0.8v-0.2V106v-0.1v-0.3v0v-0.8v-1.2V69.9l-11,24.5L15.3,69.9v32.9v2.1v0.6v0.2v0.3v0.2v0.6v0.5 v0.5v0.8v4.4H0v-4.4v-0.8v-0.5v-0.6v-1.7v-2.2V27h14l12.4,30.8L39.5,27h13.2l0,77c0,0,0-0.3,0-0.3l0,1.2v0.7v0.4v0.1v0.3v0.2v0.5 v0.3v1.2v4.3H37.8v-4.4V107.6z M153.7,105.6v0.5 M137.1,103.8L125.3,75v28.6v1.2v0.7v1.6v0.2v0.9v4.6h-15.3v-4.4v-0.9v-0.4v-0.5 v-0.3v-0.2v-0.4v-0.2v-0.7V104V27.1h12.2l16.3,40.4V27.1h15.2v76.4v1.4v0.7v0.7v0.4v0.6v0.4v0.7v4.4h-12.8l-1.8-4.4l-0.4-0.9 l-0.2-0.5l-0.2-0.6l-0.1-0.3l-0.1-0.2l-0.5-1.2L137.1,103.8z M340.1,108.4c0,0.1,0,0.1-0.1,0.2c0,0,0,0,0,0c0,0,0,0,0,0 c-1.4,3.3-4.6,4.4-10.6,4.4h-21.8c-5.4,0-8.2-1.2-9.5-4.4c-0.2-0.5-0.4-1.3-0.4-1.3c0,0,0-0.1,0-0.1l-0.1-0.6c0-0.1,0-0.3-0.1-0.4 l0-0.4c0-0.3-0.1-0.6-0.1-1l0-0.4c0-0.4,0-0.9,0-1.3V37.7c0-7.4,3.1-10.5,11.3-10.5h21.1c8.4,0,11.2,2.7,11.2,9.8v66.1 c0,0.4,0,0.8,0,1.2l0,0.7c0,0.3,0,0.5-0.1,0.7l0,0.1c0,0.1,0,0.2,0,0.4l0,0.2c0,0.1,0,0.2-0.1,0.3l-0.1,0.3c0,0.1-0.1,0.2-0.1,0.4 C340.4,107.4,340.3,108,340.1,108.4z M324.9,43.1h-11.6v54h11.6V43.1z\\\" /><polyline fill=\\\"#FFFFFF\\\" points=\\\"204,106.3 204.2,105.5 204.3,104.9 204.6,103.7 221.1,27.2 237.6,27.2 254.2,103.4 254.5,104.9 254.6,105.5 254.7,105.7 254.7,106 254.8,106.2 254.9,106.7 255,107.3 255,107.5 255.2,108.3 256.2,113 239.6,113 238.8,109.2 238.5,107.6 238.4,107.1 238.3,106.5 238.2,105.9 238.2,105.8 238,104.9 237.8,103.7 229.3,61.2 220.9,103.6 220.6,104.9 220.5,105.5 220.3,106.2 220.3,106.6 220.2,107 220.1,107.3 219.9,108.5 219,113 202.6,113 203.5,108.6 203.7,107.7 203.8,107.2 204,106.4 204,106.3\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"starwars_x_pandora\",\n  \"use\": \"starwars_x_pandora-usage\",\n  \"viewBox\": \"0 0 200.23 34.05\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 200.23 34.05\\\" id=\\\"starwars_x_pandora\\\"><g id=\\\"starwars_x_pandora_Layer_2\\\" data-name=\\\"Layer 2\\\"><g id=\\\"starwars_x_pandora_Layer_1-2\\\" data-name=\\\"Layer 1\\\"><polygon points=\\\"102.03 10.62 97 15.77 91.96 10.62 90.92 11.65 95.96 16.81 90.92 21.96 91.96 23 97 17.84 102.03 23 103.07 21.96 98.01 16.81 103.07 11.65 102.03 10.62\\\" fill=\\\"#fff\\\" /><polygon points=\\\"168.56 8.5 168.91 8.5 168.93 8.48 168.63 5.45 168.61 5.43 168.52 5.43 168.51 5.45 168.19 8.48 168.21 8.5 168.56 8.5\\\" fill=\\\"#fff\\\" /><polygon points=\\\"170.27 8.69 170.29 8.67 170.8 5.96 170.78 5.94 170.69 5.92 170.68 5.94 169.55 8.51 169.56 8.53 170.27 8.69\\\" fill=\\\"#fff\\\" /><path d=\\\"M169.74 9.85a.41.41 0 0 0 .41-.42.42.42 0 0 0-.41-.41.42.42 0 1 0 0 .83ZM168.56 9.73a.42.42 0 1 0-.42-.42A.41.41 0 0 0 168.56 9.73Z\\\" fill=\\\"#fff\\\" /><polygon points=\\\"166.85 8.69 167.55 8.53 167.57 8.51 166.44 5.94 166.43 5.92 166.34 5.94 166.32 5.96 166.83 8.67 166.85 8.69\\\" fill=\\\"#fff\\\" /><path d=\\\"M167 9.43a.42.42 0 0 0 .43.42.42.42 0 0 0 0-.83A.42.42 0 0 0 167 9.43ZM118.84 10.61h-3.6v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.33c.32 0 1 .07 1.29.07 2.43 0 4.51-1.48 4.51-4S121.26 10.61 118.84 10.61Zm-.11 5.77a9.53 9.53 0 0 1-1.19-.09V12.64h1.37c1.22 0 2.19.49 2.19 1.78S120.25 16.38 118.73 16.38ZM130.1 11.62a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.16 10a6.6 6.6 0 0 1-.71 1.31H125a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.43 1.12.43 1.12h2.45a9.3 9.3 0 0 1-.71-1.31ZM127 17.91l1.75-4.35h0l1.89 4.35ZM147.38 10.63l0 0h-2.15l0 0s.09.86.09 2.36V19.2h0l-6.66-8.59h-2.37v0a3.39 3.39 0 0 1 .4 1.22v8.72c0 1.5-.09 2.37-.09 2.37h2.19s-.09-.87-.09-2.37V14.24h0l6.7 8.71h2s-.09-.87-.09-2.37V13C147.29 11.49 147.38 10.63 147.38 10.63ZM154.08 10.61H150l0 0s.09.86.09 2.36v7.58c0 1.5-.09 2.37-.09 2.37h1.29c.83 0 1.76.11 2.82.11a6.16 6.16 0 0 0 6.47-6.26A6.05 6.05 0 0 0 154.08 10.61ZM153.94 21a7.2 7.2 0 0 1-1.47-.1c-.19-.06-.23-.13-.23-.46V12.62h1.64a4.09 4.09 0 0 1 4.37 4.2A4.1 4.1 0 0 1 153.94 21ZM168.56 10.44a6.24 6.24 0 0 0-6.33 6.32 6.33 6.33 0 1 0 12.66 0A6.21 6.21 0 0 0 168.56 10.44Zm0 10.63a4.13 4.13 0 0 1-4.07-4.31 4.09 4.09 0 1 1 8.16 0A4.14 4.14 0 0 1 168.56 21.07ZM183.69 18.76a2.23 2.23 0 0 0-1.22-1v0A3.53 3.53 0 0 0 185 14.45a3.83 3.83 0 0 0-4-3.84H177v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.21c1.18 0 1.63.23 2.06.9l1 1.62a16.15 16.15 0 0 1 1.18 2.21h2.84a22.16 22.16 0 0 1-1.51-2.21Zm-3.26-2.51a6.13 6.13 0 0 1-1.11-.07V12.62h1.35a1.85 1.85 0 0 1 2 1.85C182.7 15.41 182 16.25 180.43 16.25ZM199.52 21.63l-4.39-10a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.17 10a6.32 6.32 0 0 1-.7 1.31h2.45a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.42 1.12.42 1.12h2.46A9.3 9.3 0 0 1 199.52 21.63ZM192 17.91l1.74-4.35h0l1.89 4.35ZM36.87 17.78a.2.2 0 0 0-.18-.15H27.87a.2.2 0 0 0-.18.15S22.81 33.87 22.81 33.9a.15.15 0 0 0 .15.15h5.82a.16.16 0 0 0 .1-.11l.68-2.17a.15.15 0 0 1 .13-.1h5.38a.15.15 0 0 1 .13.1l.69 2.17a.17.17 0 0 0 .09.11h5.74a.15.15 0 0 0 .15-.14S36.87 17.78 36.87 17.78Zm-3.24 9.43h-2.4c-.08 0-.14-.1-.14-.19s1.28-4.15 1.28-4.15c0-.16.05-.16.06-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S33.71 27.21 33.63 27.21ZM70.67 23h8.11V17.63H68.35a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.85 5.85 0 0 0 1.11 3.26c.57.71 2 2.18 2 2.18a.22.22 0 0 1 0 .14.19.19 0 0 1-.2.19h-8c-1 0-1-.4-1-.45s.12-.17.12-.17a8.67 8.67 0 0 0 1.12-.76A4.69 4.69 0 0 0 60.19 23a4.91 4.91 0 0 0-1.77-3.93 6.38 6.38 0 0 0-3.69-1.46H43.26V34a.1.1 0 0 0 .1.1h6.38V29.47c0-.08.13 0 .13 0l3.32 3.34a5.08 5.08 0 0 0 3.14 1.24H68.9a5 5 0 0 0 3.67-1.5A5.09 5.09 0 0 0 74 29a5 5 0 0 0-1.32-3.53c-.35-.43-1.75-1.91-2-2.22a.14.14 0 0 1-.06-.12A.16.16 0 0 1 70.67 23Zm-17.18 1.4H49.91a.13.13 0 0 1-.1-.13V22.41a.15.15 0 0 1 .1-.14h3.28a1.08 1.08 0 0 1 1.16 1.08A1 1 0 0 1 53.49 24.35ZM19.9 34.05S20 34 20 34l4.94-16.24a.09.09 0 0 0-.06-.1H18.77s-.05 0-.06.06l-1.26 4.22s0 .06-.06.06-.05 0-.06-.06L16 17.69a.06.06 0 0 0-.05-.06H9.23a.08.08 0 0 0 0 0L8 21.91S8 22 8 22a.06.06 0 0 1-.06 0L6.64 17.68s0-.05 0-.05H.1a.09.09 0 0 0-.1.1v0S5 34 5 34s0 .08.08.08h5.39s.07 0 .08-.08l1.87-6h0s0-.06.06-.06a.06.06 0 0 1 .06.05L14.39 34a.07.07 0 0 0 .07.06ZM15.21 0a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.82 5.82 0 0 0 1.12 3.26c.57.71 2 2.19 2 2.19a.18.18 0 0 1 .06.14.19.19 0 0 1-.2.19H0v5.8H15.76a5 5 0 0 0 5.08-5.07 5.09 5.09 0 0 0-1.31-3.54c-.36-.43-1.76-1.9-2.05-2.21a.14.14 0 0 1-.06-.12.16.16 0 0 1 .11-.16h7.59v11.1H31V5.35h7.09V0ZM70.85 10.61c-1 0-1-.4-1-.45s.12-.17.12-.17A9.11 9.11 0 0 0 71 9.23a4.69 4.69 0 0 0 1.78-3.84 4.91 4.91 0 0 0-1.77-3.93A6.38 6.38 0 0 0 67.36 0H55.89V16.32a.1.1 0 0 0 .1.1h6.39V11.84c0-.08.12 0 .12 0l3.33 3.34A5.06 5.06 0 0 0 69 16.42h9.82V10.61ZM66.13 6.72H62.54a.13.13 0 0 1-.09-.13V4.78a.14.14 0 0 1 .09-.14h3.29A1.07 1.07 0 0 1 67 5.72 1 1 0 0 1 66.13 6.72ZM49.81.14A.18.18 0 0 0 49.63 0H40.81a.18.18 0 0 0-.18.14s-4.87 16.1-4.87 16.13a.15.15 0 0 0 .14.15h5.83a.16.16 0 0 0 .09-.11l.68-2.18a.16.16 0 0 1 .13-.09H48a.15.15 0 0 1 .13.1l.7 2.17a.14.14 0 0 0 .09.11h5.74a.15.15 0 0 0 .14-.15S49.81.14 49.81.14ZM46.58 9.58h-2.4c-.09 0-.15-.1-.15-.19s1.28-4.15 1.28-4.15c0-.16.06-.16.07-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S46.67 9.58 46.58 9.58Z\\\" fill=\\\"#fff\\\" /><polygon points=\\\"74.01 33.21 74.01 33.32 74.29 33.32 74.29 34.05 74.4 34.05 74.4 33.32 74.68 33.32 74.68 33.21 74.01 33.21\\\" fill=\\\"#fff\\\" /><polygon points=\\\"74.77 33.21 74.77 34.05 74.88 34.05 74.88 33.38 75.1 34.05 75.22 34.05 75.44 33.38 75.44 34.05 75.55 34.05 75.55 33.21 75.4 33.21 75.16 33.9 74.92 33.21 74.77 33.21\\\" fill=\\\"#fff\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useMemo, useCallback, useEffect, useState, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {useLocation, useHistory} from 'react-router-dom'\n\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\nimport {useServerContext} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\n\nimport {useDolApi} from '../../apis/dol'\nimport {useVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\n\nimport {getCookie, setCookie, deleteCookie, getTimestampFromVse} from '../../utils/amplience'\n\nexport const AmplienceContext = React.createContext()\n\n// Explicit commerce-preview params (everything except the VSE epoch, which is\n// already carried by the `vse` param/cookie). These are persisted in cookies\n// and re-injected into the URL so a preview selected on the visualization\n// landing page survives client-side navigation to PLP/PDP/etc.\nconst PREVIEW_PARAM_KEYS = ['effectiveDateTime', 'sourceCode', 'customerGroup']\n\n// Marker written by Reset so the same VSE-derived date is not re-applied on the\n// next render. The VSE value is stored instead of a boolean so opening a newer\n// Amplience preview in the same session automatically activates its date.\nexport const PREVIEW_RESET_COOKIE = 'previewContextReset'\n\n// Written by Reset unconditionally (unlike PREVIEW_RESET_COOKIE, which only\n// applies when a `vse` is present). Without this, Reset on a preview opened\n// without a VSE domain (a copied preview URL, or Apply on a plain storefront\n// URL) only stripped query params/cookies client-side and never told\n// use-custom-shopper-context.js to clear the stored SCAPI shopper context —\n// every subsequent page kept rendering the previously-applied future-dated\n// commerce data with no way to tell. This marker is intentionally left set\n// after a successful clear (it is session-scoped and the clear itself is\n// deduped per usid via sessionStorage), it only needs to survive long enough\n// for the reset-triggered reload to run the clear effect once.\nexport const PREVIEW_CLEAR_PENDING_COOKIE = 'previewClearPending'\n\n// Legacy preview param removed from PREVIEW_PARAM_KEYS below (Shopper Context\n// has no promotion field), kept here only so an already-set cookie from\n// before that change is still cleaned up on Reset/tab-close.\nconst LEGACY_PREVIEW_COOKIE_KEYS = ['promotionId']\n\nconst readPreviewCookie = (key) => {\n    if (typeof document === 'undefined') return undefined\n    const raw = getCookie(key)\n    if (!raw) return undefined\n    try {\n        return decodeURIComponent(raw)\n    } catch {\n        return raw\n    }\n}\n\nconst GetCombinedParams = () => {\n    const {search, hash} = useLocation()\n\n    const params = new URLSearchParams(search)\n\n    if (hash) {\n        const hashParamsString = hash.startsWith('#') ? hash.slice(1) : hash\n\n        const [, queryString] = hashParamsString.split('?')\n        if (queryString) {\n            const hashParams = new URLSearchParams(queryString)\n            for (const [key, value] of hashParams) {\n                params.set(key, value)\n            }\n        } else {\n            console.warn('No valid query string in hash:', hashParamsString)\n        }\n    }\n\n    return params\n}\n\nconst useQueryParam = (key) => {\n    const {req} = useServerContext()\n\n    // Parse client and server parameters once\n    const clientParams = GetCombinedParams()\n    const serverParams = req?.query\n\n    // Retrieve the parameter value based on the environment\n    return isServer ? serverParams?.[key] : clientParams.get(key)\n}\n\nconst parseCookieHeader = (header, key) => {\n    if (!header) return undefined\n    const match = header.split(';').find((part) => part.trim().startsWith(`${key}=`))\n    return match ? match.trim().slice(key.length + 1) : undefined\n}\n\nconst decodeCookieValue = (value) => {\n    try {\n        return decodeURIComponent(value || '')\n    } catch {\n        return value || ''\n    }\n}\n\n/**\n * Reads a cookie on both the server (request header) and the client (document),\n * so values used during render produce identical SSR and hydration output.\n */\nconst useCookieValue = (key) => {\n    const {req} = useServerContext()\n\n    if (isServer) return parseCookieHeader(req?.headers?.cookie, key)\n\n    return getCookie(key) ?? undefined\n}\n\nconst redirectToVisualization = (vseCookie, globalCookie, history) => {\n    let visualizationUrl = `/visualization/`\n    if (vseCookie) visualizationUrl += `?vse=${vseCookie}`\n    if (globalCookie) visualizationUrl += `&global=${globalCookie}`\n    history.replace(visualizationUrl)\n}\n\nconst updateUrlWithCookies = (currentUrl, vseCookie, globalCookie, history) => {\n    if (vseCookie) currentUrl.searchParams.set('vse', vseCookie)\n    if (globalCookie) currentUrl.searchParams.set('global', globalCookie)\n\n    const normalizedHash = currentUrl.hash.includes('?')\n        ? currentUrl.hash.split('?')[0]\n        : currentUrl.hash\n\n    const newUrl = currentUrl.pathname + normalizedHash + currentUrl.search\n    history.replace(newUrl)\n}\n\nconst RESET_SEGMENT = ''\n\nexport const AmplienceContextProvider = ({children}) => {\n    const {locale, site} = useMultiSite()\n    const [segment, setSegment] = useState(RESET_SEGMENT)\n    const [forceUpdate, setForceUpdate] = useState(0)\n    const history = useHistory()\n\n    const isCommercePreviewEnabled = useVariant(LD_KEYS.enableContentCommercePreviewToolbar, false)\n\n    // Deferred until after mount so SSR output stays URL-only (cookies are a\n    // client-only concern) and hydration matches the server markup.\n    const [isMounted, setIsMounted] = useState(false)\n    useEffect(() => {\n        setIsMounted(true)\n    }, [])\n\n    const deliveryKey = useQueryParam('deliveryKey')\n    const contentId = useQueryParam('contentId')\n    const vse = useQueryParam('vse')\n    const global = useQueryParam('global') ?? false\n    const realtime = useQueryParam('realtime')\n    const siteId = global ? 'global' : site?.id\n    const localeId = useQueryParam('locale') ?? locale.id\n\n    // Commerce preview params are gated behind the enable-content-commerce-preview-toolbar flag.\n    // When the flag is off, these params are ignored — preventing unauthenticated users from\n    // triggering preview mode by appending query parameters.\n    // Hooks must be called unconditionally (rules-of-hooks); the flag gates the value, not the call.\n    const effectiveDateTimeRaw = useQueryParam('effectiveDateTime')\n    const siteDateRaw = useQueryParam('__siteDate')\n    const timestampRaw = useQueryParam('__previewTimestamp')\n    const sourceCodeRaw = useQueryParam('sourceCode')\n    const customerGroupRaw = useQueryParam('customerGroup')\n\n    // Cookie fallbacks recover an explicitly-selected preview after the URL\n    // params are dropped on client-side navigation. Reads are gated on mount\n    // (client-only) and on the preview flag.\n    const previewCookiesEnabled = isCommercePreviewEnabled && isMounted\n    const cookieEffectiveDateTime = previewCookiesEnabled\n        ? readPreviewCookie('effectiveDateTime')\n        : undefined\n    const cookieSourceCode = previewCookiesEnabled ? readPreviewCookie('sourceCode') : undefined\n    const cookieCustomerGroup = previewCookiesEnabled\n        ? readPreviewCookie('customerGroup')\n        : undefined\n\n    // Explicit date from a URL param or persisted cookie, kept separate from the\n    // VSE-derived epoch so the epoch is never written to the cookie/URL.\n    const explicitEffectiveDateTime =\n        effectiveDateTimeRaw || siteDateRaw || timestampRaw || cookieEffectiveDateTime || ''\n\n    // Amplience has no visualization URL token for the preview date, so when no\n    // explicit date param is supplied we recover it from the time-machine epoch\n    // baked into the VSE domain — letting Amplience's native time machine drive\n    // SFCC/DOL commerce time-travel automatically.\n    // After an explicit Reset the VSE epoch must not be re-applied, otherwise the\n    // session immediately falls back into a future-dated commerce context.\n    const resetMarker = useCookieValue(PREVIEW_RESET_COOKIE)\n    const clearPendingMarker = useCookieValue(PREVIEW_CLEAR_PENDING_COOKIE)\n    const isPreviewResetPending =\n        isCommercePreviewEnabled &&\n        ((!!vse && decodeCookieValue(resetMarker) === vse) ||\n            decodeCookieValue(clearPendingMarker) === '1')\n\n    const vseTimestamp = isPreviewResetPending ? undefined : getTimestampFromVse(vse)\n    const effectiveDateTimeParam = isCommercePreviewEnabled\n        ? explicitEffectiveDateTime || vseTimestamp || ''\n        : ''\n    const sourceCodeParam = isCommercePreviewEnabled ? sourceCodeRaw || cookieSourceCode || '' : ''\n    const customerGroupParam = isCommercePreviewEnabled\n        ? customerGroupRaw || cookieCustomerGroup || ''\n        : ''\n\n    const [previewEffectiveDateTime, setPreviewEffectiveDateTime] = useState(effectiveDateTimeParam)\n    const [previewSourceCode, setPreviewSourceCode] = useState(sourceCodeParam)\n    const [previewCustomerGroup, setPreviewCustomerGroup] = useState(customerGroupParam)\n    const [previewStatus, setPreviewStatus] = useState(null)\n\n    const isPreviewMode = !!(previewEffectiveDateTime || previewSourceCode || previewCustomerGroup)\n\n    // `beforeunload` also fires on same-tab navigation, so the tab-close cleanup\n    // would wipe the preview cookies (including the reset marker) during the very\n    // reload that Apply/Reset triggers. Deliberate preview navigations opt out.\n    const isPreviewNavigationRef = useRef(false)\n\n    const initialPreviewRef = useRef({\n        effectiveDateTime: effectiveDateTimeParam,\n        sourceCode: sourceCodeParam,\n        customerGroup: customerGroupParam\n    })\n\n    useEffect(() => {\n        const prev = initialPreviewRef.current\n        if (\n            effectiveDateTimeParam !== prev.effectiveDateTime ||\n            sourceCodeParam !== prev.sourceCode ||\n            customerGroupParam !== prev.customerGroup\n        ) {\n            setPreviewEffectiveDateTime(effectiveDateTimeParam)\n            setPreviewSourceCode(sourceCodeParam)\n            setPreviewCustomerGroup(customerGroupParam)\n            initialPreviewRef.current = {\n                effectiveDateTime: effectiveDateTimeParam,\n                sourceCode: sourceCodeParam,\n                customerGroup: customerGroupParam\n            }\n        }\n    }, [effectiveDateTimeParam, sourceCodeParam, customerGroupParam])\n\n    const updatePreviewContext = useCallback(\n        ({sourceCode, customerGroup, effectiveDateTime} = {}) => {\n            const currentUrl = new URL(window.location.href)\n            const setOrDelete = (key, val) =>\n                val ? currentUrl.searchParams.set(key, val) : currentUrl.searchParams.delete(key)\n            setOrDelete('sourceCode', sourceCode)\n            setOrDelete('customerGroup', customerGroup)\n            setOrDelete('effectiveDateTime', effectiveDateTime)\n            currentUrl.searchParams.delete('promotionId')\n            currentUrl.searchParams.delete('__siteDate')\n            currentUrl.searchParams.delete('__previewTimestamp')\n            // A new explicit preview supersedes any earlier Reset.\n            deleteCookie(PREVIEW_RESET_COOKIE)\n            deleteCookie(PREVIEW_CLEAR_PENDING_COOKIE)\n            LEGACY_PREVIEW_COOKIE_KEYS.forEach((key) => deleteCookie(key))\n            setPreviewStatus(null)\n            isPreviewNavigationRef.current = true\n            window.location.assign(currentUrl.toString())\n        },\n        []\n    )\n\n    const resetPreviewContext = useCallback(() => {\n        const currentUrl = new URL(window.location.href)\n        ;[\n            'effectiveDateTime',\n            '__siteDate',\n            '__previewTimestamp',\n            'sourceCode',\n            'customerGroup',\n            'promotionId'\n        ].forEach((p) => currentUrl.searchParams.delete(p))\n        // Clear the persisted preview cookies too, otherwise the persistence\n        // effect would immediately resurrect the params after the reload.\n        PREVIEW_PARAM_KEYS.forEach((key) => deleteCookie(key))\n        LEGACY_PREVIEW_COOKIE_KEYS.forEach((key) => deleteCookie(key))\n        if (vse) setCookie(PREVIEW_RESET_COOKIE, encodeURIComponent(vse))\n        else deleteCookie(PREVIEW_RESET_COOKIE)\n        // Written unconditionally (unlike the VSE-keyed marker above) so the\n        // stored SCAPI shopper context is always cleared on Reset, even when\n        // this preview session has no VSE domain.\n        setCookie(PREVIEW_CLEAR_PENDING_COOKIE, '1')\n        setPreviewEffectiveDateTime('')\n        setPreviewSourceCode('')\n        setPreviewCustomerGroup('')\n        setPreviewStatus(null)\n        isPreviewNavigationRef.current = true\n        window.location.assign(currentUrl.toString())\n    }, [vse])\n\n    const updateSegment = useCallback((newSegment) => {\n        setSegment(newSegment)\n        setForceUpdate((prev) => prev + 1)\n\n        // Update global cm_p13n object to keep it in sync\n        if (window.cm_p13n) {\n            window.cm_p13n.userSegment = newSegment\n        }\n    }, [])\n\n    // Initialize cm_p13n object\n    useEffect(() => {\n        if (!window.cm_p13n) {\n            window.cm_p13n = {\n                userSegment: segment,\n                pushSegment: (userSegment) => {\n                    if (window.cm_p13n) {\n                        window.cm_p13n.userSegment = userSegment\n                        updateSegment(userSegment)\n                    }\n                }\n            }\n        }\n\n        // Cleanup function\n        return () => {\n            // Only delete if it exists and we're unmounting the root provider\n            if (window.cm_p13n) {\n                const currentPushSegment = window.cm_p13n.pushSegment\n                // Preserve the pushSegment function for future use\n                window.cm_p13n = {\n                    userSegment: RESET_SEGMENT,\n                    pushSegment: currentPushSegment\n                }\n            }\n        }\n    }, [segment, updateSegment])\n\n    // Sync segment with cm_p13n on mount\n    useEffect(() => {\n        if (window.cm_p13n?.userSegment && window.cm_p13n.userSegment !== segment) {\n            updateSegment(window.cm_p13n.userSegment)\n        }\n    }, [segment, updateSegment])\n\n    useEffect(() => {\n        if (vse) setCookie('vse', vse)\n        if (global) setCookie('global', global)\n\n        const vseCookie = getCookie('vse')\n        const globalCookie = getCookie('global')\n\n        if (!vse && !vseCookie && !globalCookie) return\n\n        const currentUrl = new URL(window.location.href)\n        const urlVseParam = currentUrl.searchParams.get('vse')\n        const urlGlobalParam = currentUrl.searchParams.get('global')\n        const isHomepage = currentUrl.pathname === '/'\n\n        if (isHomepage && (vseCookie || globalCookie)) {\n            redirectToVisualization(vseCookie, globalCookie, history)\n            return\n        }\n\n        const needsVse = vseCookie && urlVseParam !== vseCookie\n        const needsGlobal = globalCookie && urlGlobalParam !== globalCookie\n        if (needsVse || needsGlobal) {\n            updateUrlWithCookies(currentUrl, vseCookie, globalCookie, history)\n        }\n    }, [vse, history, global])\n\n    // Persist explicit preview context (date, campaign, customer group,\n    // promotion) to cookies and re-inject it into the URL, mirroring how `vse`\n    // is persisted above. Without this, these params are lost on the first\n    // client-side navigation and the session silently falls back to the VSE\n    // epoch date. The VSE-derived timestamp is intentionally excluded — `vse`\n    // already carries it. Gated by the preview flag.\n    useEffect(() => {\n        if (!isCommercePreviewEnabled) return\n\n        const entries = [\n            ['effectiveDateTime', explicitEffectiveDateTime],\n            ['sourceCode', sourceCodeParam],\n            ['customerGroup', customerGroupParam]\n        ]\n\n        entries.forEach(([key, value]) => {\n            if (value) setCookie(key, encodeURIComponent(value))\n        })\n\n        const currentUrl = new URL(window.location.href)\n        let urlChanged = false\n        entries.forEach(([key, value]) => {\n            if (value && currentUrl.searchParams.get(key) !== value) {\n                currentUrl.searchParams.set(key, value)\n                urlChanged = true\n            }\n        })\n\n        if (urlChanged) {\n            const normalizedHash = currentUrl.hash.includes('?')\n                ? currentUrl.hash.split('?')[0]\n                : currentUrl.hash\n            history.replace(currentUrl.pathname + normalizedHash + currentUrl.search)\n        }\n    }, [\n        isCommercePreviewEnabled,\n        explicitEffectiveDateTime,\n        sourceCodeParam,\n        customerGroupParam,\n        history\n    ])\n\n    useEffect(() => {\n        const handleTabClose = () => {\n            if (isPreviewNavigationRef.current) return\n            document.cookie = 'vse=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC; SameSite=Lax'\n            document.cookie = 'global=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC; SameSite=Lax'\n            PREVIEW_PARAM_KEYS.forEach((key) => deleteCookie(key))\n            LEGACY_PREVIEW_COOKIE_KEYS.forEach((key) => deleteCookie(key))\n            // The reset marker deliberately outlives ordinary navigations: while a\n            // `vse` param is still around it is the only thing stopping the VSE epoch\n            // from re-arming a future-dated commerce context. Apply clears it, and it\n            // is a session cookie, so it does not leak beyond the browsing session.\n        }\n\n        window.addEventListener('beforeunload', handleTabClose)\n\n        return () => {\n            window.removeEventListener('beforeunload', handleTabClose)\n        }\n    }, [])\n\n    // Use Hook-based API\n    const dolClient = useDolApi(localeId, vse)\n\n    const contextValue = useMemo(\n        () => ({\n            dolClient,\n            deliveryKey,\n            contentId,\n            vse,\n            siteId,\n            localeId,\n            realtime,\n            segment,\n            updateSegment,\n            forceUpdate,\n            RESET_SEGMENT,\n            previewEffectiveDateTime,\n            previewSourceCode,\n            previewCustomerGroup,\n            updatePreviewContext,\n            resetPreviewContext,\n            isPreviewMode,\n            isPreviewResetPending,\n            previewStatus,\n            setPreviewStatus\n        }),\n        [\n            dolClient,\n            deliveryKey,\n            contentId,\n            vse,\n            siteId,\n            localeId,\n            realtime,\n            segment,\n            updateSegment,\n            forceUpdate,\n            global,\n            previewEffectiveDateTime,\n            previewSourceCode,\n            previewCustomerGroup,\n            updatePreviewContext,\n            resetPreviewContext,\n            isPreviewMode,\n            isPreviewResetPending,\n            previewStatus\n        ]\n    )\n\n    return <AmplienceContext.Provider value={contextValue}>{children}</AmplienceContext.Provider>\n}\n\nAmplienceContextProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n","/**\n * Handles click on a product tile with optional tracking for search results.\n * Navigation is handled by PdpLink (soft SPA navigation) — this handler is for\n * tracking side-effects only.\n *\n * @param {Object} options\n * @param {Object} options.product - The product object.\n * @param {boolean} options.isSearch - Whether the click was from a search context.\n * @param {Object} [options.productSearchResult] - The product search result (optional).\n * @param {boolean} [options.isBloomreachEnabled] - Whether Bloomreach tracking is enabled.\n * @param {Function} [options.trackSearchEvents] - Function to track search events.\n */\nexport const onProductClick = async ({\n    product,\n    isSearch,\n    productSearchResult,\n    isBloomreachEnabled,\n    trackSearchEvents\n}) => {\n    const productUrl = product?.c_extend?.productUrl || ''\n\n    if (!productUrl) {\n        console.error('No product URL available')\n        return\n    }\n\n    try {\n        if (isSearch && productSearchResult?.query && productSearchResult?.total) {\n            if (typeof trackSearchEvents === 'function') {\n                trackSearchEvents(\n                    'productTile',\n                    productSearchResult.query,\n                    productSearchResult.total,\n                    isBloomreachEnabled\n                )\n                // Optional: wait briefly to ensure tracking completes\n                await new Promise((resolve) => setTimeout(resolve, 1000))\n            }\n        }\n    } catch (error) {\n        console.error('Error during navigation:', error)\n        window.location.href = productUrl\n    }\n}\n","import {useCallback} from 'react'\nimport {useWishList} from 'pandora-shared-app/overrides/app/contexts/wish-list'\nimport {\n    useAddItemToWishlist,\n    useRemoveItemFromWishlist\n} from 'pandora-shared-app/overrides/app/hooks/use-wishlist-items'\nimport {onProductClick} from '../handlers/on-product-click'\nimport useNavigation from '@salesforce/retail-react-app/app/hooks/use-navigation'\n\nexport const useProductListInteractions = (urlState, data, analytics, isBloomreachEnabled) => {\n    const {isSearch} = urlState\n    const {productSearchResult} = data\n    const {trackSearchEvents} = analytics\n    const navigate = useNavigation()\n\n    // Wishlist hooks\n    const {data: wishlist} = useWishList()\n    const addItemToWishlist = useAddItemToWishlist()\n    const removeItemFromWishlist = useRemoveItemFromWishlist()\n\n    // Product click handler — tracking side-effects only.\n    // Navigation is handled by PdpLink (soft SPA navigation).\n    const handleProductClick = useCallback(\n        (product) => {\n            onProductClick({\n                product,\n                isSearch,\n                trackSearchEvents: isSearch ? trackSearchEvents : null,\n                productSearchResult: isSearch ? productSearchResult : null,\n                isBloomreachEnabled\n            })\n        },\n        [isSearch, productSearchResult, trackSearchEvents, isBloomreachEnabled]\n    )\n\n    return {\n        wishlist,\n        addItemToWishlist,\n        removeItemFromWishlist,\n        handleProductClick,\n        navigate\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useMemo} from 'react'\nimport {useLocation} from 'react-router-dom'\n\n// Utils\nimport {buildUrlSet} from '@salesforce/retail-react-app/app/utils/url'\n\n// Hooks\nimport {useSearchParams} from '@salesforce/retail-react-app/app/hooks/use-search-params'\n\n/*\n * Generate a memoized list of page size urls. Chaning the page size will reset\n * the offset to zero to simplify things.\n */\nexport const usePageUrls = ({total = 0, limit}) => {\n    const location = useLocation()\n    const [searchParams] = useSearchParams()\n    const _limit = limit || searchParams.limit\n\n    return useMemo(() => {\n        const pageCount = Math.ceil(total / _limit)\n\n        return buildUrlSet(\n            `${location.pathname}${location.search}`,\n            'offset',\n            new Array(pageCount).fill(0).map((_, index) => index * _limit)\n        )\n    }, [location.pathname, location.search, _limit, total])\n}\n","import {useState, useEffect, useRef} from 'react'\n\nexport const useLoadOnView = (isInView) => {\n    const [hasLoaded, setHasLoaded] = useState(false)\n    const hasLoadedRef = useRef(false)\n\n    useEffect(() => {\n        if (isInView && !hasLoadedRef.current) {\n            hasLoadedRef.current = true\n            setHasLoaded(true)\n        } else if (hasLoadedRef.current) {\n            // If we've loaded before, immediately set state to true\n            setHasLoaded(true)\n        }\n    }, [isInView])\n\n    return hasLoaded\n}\n","import {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n/**\n * This hook is used to make sure that the animation property is not applied on the server.\n * @param {Object} animationProperty - The animation property to apply.\n * @returns {Object} The animation property.\n */\nexport const useSsrSafeAnimation = (animationProperty) => {\n    return isServer ? {} : animationProperty || {}\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst DIM_VARIANTS = ['corner', 'radial', 'cyberMonday', 'blackFriday']\n\nexport const ContentDim = (props) => {\n    const {variant} = props\n    const {container, radialDotAnimation} = useMultiStyleConfig('ContentDim', {variant})\n\n    // Check if the variant is valid\n    if (!DIM_VARIANTS.includes(variant)) {\n        return null // Do not render anything if the variant is invalid\n    }\n\n    return (\n        <Box data-auto={`${variant}Dim`} data-testid={`${variant}Dim`} sx={container}>\n            {(variant === 'cyberMonday' || variant === 'blackFriday') && (\n                <Box sx={radialDotAnimation} />\n            )}\n        </Box>\n    )\n}\n\nContentDim.propTypes = {\n    variant: PropTypes.string\n}\n\nContentDim.displayName = 'ContentDim'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ContentDim} from 'content/overrides/app/components/shared/content-dim'\n\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {\n    VideoType,\n    diImageType,\n    CopyrightType,\n    AprimoAssetType,\n    AprimoVideoType\n} from 'pandora-shared-app/overrides/app/utils/types'\n\nconst mediaConfig = {\n    controlWrapperPosition: {\n        bottom: 0,\n        right: {base: 0, md: 12, xl: 16}\n    },\n    copyrightTextPosition: 'video-controller-right',\n    dataAuto: 'fullScreenMediaTile',\n    aspectRatio: 'none',\n    mediaCss: {\n        height: '100%'\n    }\n}\n\nexport const FullScreenMediaTileMedia = (props) => {\n    const {\n        desktopImg,\n        mobileImg,\n        desktopVideo,\n        mobileVideo,\n        aprimoDesktopImg,\n        aprimoMobileImg,\n        aprimoDesktopVideo,\n        aprimoMobileVideo,\n        mediaType,\n        copyright,\n        active,\n        hasFirstPanelAnimatedOnce,\n        isFirstPanel,\n        isVideo,\n        isFMT,\n        componentIndex,\n        overlay = true\n    } = props\n\n    const media = {\n        desktopImg,\n        mobileImg,\n        desktopVideo,\n        mobileVideo,\n        aprimoDesktopImg,\n        aprimoMobileImg,\n        aprimoDesktopVideo,\n        aprimoMobileVideo,\n        mediaType,\n        copyright,\n        isVideo\n    }\n\n    const {container} = useMultiStyleConfig('FullScreenMediaTile')\n\n    return (\n        <Box\n            style={container}\n            data-testid={'fullScreenPartialMedia'}\n            data-auto={'fullScreenPartialMedia'}\n            data-cs-override-id={`home_banner${componentIndex}`}\n        >\n            {overlay && <ContentDim variant={isFirstPanel ? 'radial' : 'corner'} />}\n            <Media\n                media={media}\n                mediaConfig={mediaConfig}\n                isActive={active}\n                isLazyLoad={false}\n                isFirstPanel={isFirstPanel}\n                hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                isFMT={isFMT}\n                componentIndex={componentIndex}\n            />\n        </Box>\n    )\n}\n\nFullScreenMediaTileMedia.displayName = 'FullScreenMediaTileMedia'\n\nFullScreenMediaTileMedia.propTypes = {\n    desktopImg: diImageType,\n    mobileImg: diImageType,\n    desktopVideo: VideoType,\n    mobileVideo: VideoType,\n    aprimoDesktopImg: AprimoAssetType,\n    aprimoMobileImg: AprimoAssetType,\n    aprimoDesktopVideo: AprimoVideoType,\n    aprimoMobileVideo: AprimoVideoType,\n    mediaType: PropTypes.string,\n    copyright: CopyrightType,\n    active: PropTypes.bool.isRequired,\n    hasFirstPanelAnimatedOnce: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    isVideo: PropTypes.bool,\n    isFMT: PropTypes.bool,\n    componentIndex: PropTypes.number,\n    overlay: PropTypes.bool\n}\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {\n    AfterpayWhiteIcon,\n    AfterpayBlackIcon,\n    ClearpayWhiteIcon,\n    ClearpayMintIcon,\n    ClearpayBlackIcon,\n    DisneyPandoraIcon,\n    DisneyPandoraWhiteIcon,\n    GotPandoraWhiteIcon,\n    GotPandoraBlackIcon,\n    HpPandoraIcon,\n    HpPandoraBlackIcon,\n    KlarnaWhiteIcon,\n    KlarnaBlackIcon,\n    MandalorianWhiteIcon,\n    MandalorianBlackIcon,\n    MarvelPandoraWhiteIcon,\n    MarvelPandoraBlackIcon,\n    MyPandoraWhiteIcon,\n    MyPandoraBlackIcon,\n    PandoraBridgertonWhiteIcon,\n    PandoraBridgertonBlackIcon,\n    PandoraDiamondsWhiteIcon,\n    PandoraDiamondsBlackIcon,\n    PandoraDiamondsWhiteFrIcon,\n    PandoraDiamondsBlackFrIcon,\n    PandoraMeHorizontalWhiteIcon,\n    PandoraMeHorizontalBlackIcon,\n    PandoraMeFestivalWhiteIcon,\n    PandoraMeFestivalBlackIcon,\n    PixarWhiteIcon,\n    PixarBlackIcon,\n    StarWarsIcon,\n    StarWarsBlackIcon,\n    StarWarsCollectorsIcon,\n    PandoraUnicefWhiteIcon,\n    PandoraUnicefBlackIcon,\n    PandoraUnicefWhiteBlueIcon,\n    PandoraUnicefBlackBlueIcon,\n    PandoraNetflixWhiteIcon,\n    PandoraNetflixBlackIcon,\n    PandoraPatMcGrathWhiteIcon,\n    PandoraPatMcGrathBlackIcon\n} from '../icons'\n\nexport const collaborationIcons = {\n    // Disney\n    disney: DisneyPandoraIcon,\n    'disney-white': DisneyPandoraWhiteIcon,\n    'disney-black': DisneyPandoraIcon,\n    // Harry Potter\n    'harry-potter': HpPandoraIcon,\n    'harry-potter-white': HpPandoraIcon,\n    'harry-potter-black': HpPandoraBlackIcon,\n    harrypotter: HpPandoraIcon,\n    // Star Wars\n    'star-wars': StarWarsIcon,\n    'star-wars-black': StarWarsBlackIcon,\n    'star-wars-white': StarWarsIcon,\n    starwars: StarWarsIcon,\n    // Star Wars Collectors Edition\n    'star-wars-collectors-edition': StarWarsCollectorsIcon,\n    'star-wars-collectors-edition-black': StarWarsCollectorsIcon,\n    'star-wars-collectors-edition-white': StarWarsCollectorsIcon,\n    // Unicef\n    unicef: PandoraUnicefBlackIcon,\n    'unicef-black': PandoraUnicefBlackIcon,\n    'unicef-white': PandoraUnicefWhiteIcon,\n    'unicef-blue': PandoraUnicefBlackBlueIcon,\n    'unicef-black-blue': PandoraUnicefBlackBlueIcon,\n    'unicef-white-blue': PandoraUnicefWhiteBlueIcon,\n    // Klarna\n    klarna: KlarnaBlackIcon,\n    'klarna-black': KlarnaBlackIcon,\n    'klarna-white': KlarnaWhiteIcon,\n    // Afterpay\n    afterpay: AfterpayBlackIcon,\n    'afterpay-black': AfterpayBlackIcon,\n    'afterpay-white': AfterpayWhiteIcon,\n    // Clearpay\n    clearpay: ClearpayBlackIcon,\n    'clearpay-black': ClearpayBlackIcon,\n    'clearpay-mint': ClearpayMintIcon,\n    'clearpay-white': ClearpayWhiteIcon,\n    // Mandalorian\n    mandalorian: MandalorianBlackIcon,\n    'mandalorian-black': MandalorianBlackIcon,\n    'mandalorian-white': MandalorianWhiteIcon,\n    // Marvel\n    marvel: MarvelPandoraBlackIcon,\n    'marvel-black': MarvelPandoraBlackIcon,\n    'marvel-white': MarvelPandoraWhiteIcon,\n    // MyPandora\n    mypandora: MyPandoraBlackIcon,\n    'mypandora-black': MyPandoraBlackIcon,\n    'mypandora-white': MyPandoraWhiteIcon,\n    // Pandora Bridgerton\n    pandorabridgerton: PandoraBridgertonBlackIcon,\n    'pandora_bridgerton-black': PandoraBridgertonBlackIcon,\n    'pandora_bridgerton-white': PandoraBridgertonWhiteIcon,\n    // Pixar\n    pixar: PixarBlackIcon,\n    'pixar-black': PixarBlackIcon,\n    'pixar-white': PixarWhiteIcon,\n    // Pandora Me Festival\n    'pandora-me-festival': PandoraMeFestivalBlackIcon,\n    'pandora-me-festival-black': PandoraMeFestivalBlackIcon,\n    'pandora-me-festival-white': PandoraMeFestivalWhiteIcon,\n    // Pandora Me\n    'pandora-me': PandoraMeHorizontalBlackIcon,\n    'pandora-me-black': PandoraMeHorizontalBlackIcon,\n    'pandora-me-white': PandoraMeHorizontalWhiteIcon,\n    // Game of Thrones\n    'game-of-thrones': GotPandoraBlackIcon,\n    'game-of-thrones-black': GotPandoraBlackIcon,\n    'game-of-thrones-white': GotPandoraWhiteIcon,\n    gameofthrones: GotPandoraBlackIcon,\n    // Pandora Diamonds\n    'pandora-diamonds': PandoraDiamondsBlackIcon,\n    'pandora-diamonds-black': PandoraDiamondsBlackIcon,\n    'pandora-diamonds-white': PandoraDiamondsWhiteIcon,\n    // Pandora Diamonds French\n    'pandora-diamonds-french': PandoraDiamondsBlackFrIcon,\n    'pandora-diamonds-french-black': PandoraDiamondsBlackFrIcon,\n    'pandora-diamonds-french-white': PandoraDiamondsWhiteFrIcon,\n    // Pandora Netflix Stranger Things\n    'pandora-netflix-landscape': PandoraNetflixBlackIcon,\n    'pandora-netflix-landscape-black': PandoraNetflixBlackIcon,\n    'pandora-netflix-landscape-white': PandoraNetflixWhiteIcon,\n    strangerthings: PandoraNetflixBlackIcon,\n    // Pat McGrath\n    'pat-mcgrath-black': PandoraPatMcGrathBlackIcon,\n    'pat-mcgrath-white': PandoraPatMcGrathWhiteIcon\n}\n\nexport const CollaborationLogo = (props) => {\n    const {collabLogo, size = 'small', sx: sxProp, ...rest} = props\n    const IconComponent = collaborationIcons[collabLogo]\n    const styles = useMultiStyleConfig('CollaborationLogo')\n\n    // Merged so a consumer's `sx` overrides the base style instead of replacing it.\n    // Must stay above the early return — hooks cannot be called conditionally.\n    const boxStyle = useMemo(() => ({...styles?.box, ...sxProp}), [styles?.box, sxProp])\n\n    if (!IconComponent) {\n        return null\n    }\n\n    // Determine the height using the size\n    let height\n    switch (size) {\n        case 'mini':\n            height = 4\n            break\n        case 'medium-large':\n            height = 7\n            break\n        case 'small':\n        default:\n            height = 6\n            break\n    }\n\n    return (\n        collabLogo && (\n            <Box\n                sx={boxStyle}\n                data-testid={`collaboration-logo-${collabLogo}`}\n                height={height}\n                {...rest}\n            >\n                <IconComponent aria-label={IconComponent.displayName} width=\"auto\" height=\"100%\" />\n            </Box>\n        )\n    )\n}\n\nCollaborationLogo.displayName = 'CollaborationLogo'\n\nCollaborationLogo.propTypes = {\n    collabLogo: PropTypes.string.isRequired,\n    color: PropTypes.string,\n    size: PropTypes.string,\n    sx: PropTypes.object\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n/**\n * An eyebrow headline comes second in the typographic hierarchy and\n * sits above the main headline (like your eyebrow sits above your eye).\n */\nexport const EyebrowText = (props) => {\n    const {text} = props\n    const styles = useMultiStyleConfig('EyebrowText')\n\n    if (!text) return null\n\n    return (\n        <Text\n            textStyle=\"bodySm\"\n            data-testid={'inputEyeBrow'}\n            data-auto={'inputEyeBrow'}\n            sx={{...styles?.text}}\n        >\n            {text}\n        </Text>\n    )\n}\n\nEyebrowText.displayName = 'EyebrowText'\n\nEyebrowText.propTypes = {\n    text: PropTypes.string\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {PromoVariants} from 'content/overrides/app/constants'\n\nexport const ContentPromoMessage = (props) => {\n    const {\n        label,\n        variant = PromoVariants.DEFAULT,\n        marginTop,\n        marginBottom,\n        marginLeft,\n        marginRight,\n        dataAuto\n    } = props\n\n    const styles = useMultiStyleConfig('ContentPromoMessage', {variant})\n\n    if (!label) return null\n\n    return (\n        <Text\n            sx={{\n                ...styles.label,\n                mt: marginTop,\n                mb: marginBottom,\n                ml: marginLeft,\n                mr: marginRight\n            }}\n            textStyle=\"bodySm\"\n            data-auto={dataAuto}\n        >\n            {label}\n        </Text>\n    )\n}\n\nContentPromoMessage.displayName = 'ContentPromoMessage'\n\nContentPromoMessage.propTypes = {\n    label: PropTypes.string,\n    dataAuto: PropTypes.string,\n    marginTop: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]),\n    marginBottom: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]),\n    marginLeft: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]),\n    marginRight: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]),\n    variant: PropTypes.oneOf([\n        PromoVariants.NONE,\n        PromoVariants.EARLY_ACCESS,\n        PromoVariants.DEFAULT,\n        PromoVariants.ADDED_MESSAGING,\n        PromoVariants.MAXIMUM_ESCALATION\n    ])\n}\n","// React Core\nimport React, {useState, useRef, useEffect, memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {\n    GridItem,\n    Heading,\n    useMultiStyleConfig,\n    Box,\n    Flex,\n    Grid\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Third-Party Libraries\nimport {motion} from 'framer-motion'\n\n// Motion Tokens\nimport {\n    delayStandard2,\n    durationExtended1,\n    easeStandard,\n    easeStandardDecelerate,\n    delayExtended4\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\n// Shared Components\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\nimport {EyebrowText} from 'pandora-shared-app/overrides/app/components/eyebrow-text'\nimport {ContentPromoMessage} from 'content/overrides/app/components/shared/content-promo-message'\n\n// Constants\nimport {PromoVariants} from 'content/overrides/app/constants'\n\nconst promoHeaderStyle = {\n    gap: 2.5,\n    mb: {base: 2, md: 3},\n\n    p: {\n        mb: 0,\n        minHeight: 7,\n        display: 'inline-flex',\n        alignItems: 'center'\n    }\n}\n\n// Opts this surface out of the CollaborationLogo base style's `svg { max-width: 100% }`\n// clamp, preserving the full-screen media tile's original behaviour.\nconst collabLogoStyle = {\n    svg: {\n        maxWidth: 'unset'\n    }\n}\n\nconst DIRECTION = {\n    ROW: 'row',\n    COLUMN: 'column'\n}\n\nconst ELEMENTS_HEIGHT = 32\n\n/**\n * PromoHeaderRow Component\n * Renders a flexible layout that switches to column if content overflows.\n * Dynamically determines layout direction based on measured element heights.\n */\nexport const PromoHeaderRow = memo(({eyebrow, promoMessage, promoVariant}) => {\n    const containerRef = useRef(null)\n    const contentRef = useRef(null)\n    const promoRef = useRef(null)\n    const [isColumnDirection, setIsColumnDirection] = useState(false)\n\n    useEffect(() => {\n        const updateWrap = () => {\n            const promoHeight = promoRef.current?.offsetHeight || 0\n            const eyebrowHeight = contentRef.current?.offsetHeight || 0\n\n            if (eyebrow?.collabLogo) {\n                setIsColumnDirection(promoHeight > ELEMENTS_HEIGHT)\n            } else if (eyebrow?.text) {\n                setIsColumnDirection(\n                    eyebrowHeight > ELEMENTS_HEIGHT || promoHeight > ELEMENTS_HEIGHT\n                )\n            } else {\n                setIsColumnDirection(false)\n            }\n        }\n\n        const timeoutRef = {current: null}\n        const debouncedUpdate = () => {\n            clearTimeout(timeoutRef.current)\n            timeoutRef.current = setTimeout(updateWrap, 100)\n        }\n\n        const rafId = requestAnimationFrame(() => {\n            timeoutRef.current = setTimeout(updateWrap, 100)\n        })\n\n        window.addEventListener('resize', debouncedUpdate)\n\n        return () => {\n            cancelAnimationFrame(rafId)\n            clearTimeout(timeoutRef.current)\n            window.removeEventListener('resize', debouncedUpdate)\n        }\n    }, [])\n\n    return (\n        <Flex\n            ref={containerRef}\n            direction={isColumnDirection ? DIRECTION.COLUMN : DIRECTION.ROW}\n            data-testid=\"promo-header-row\"\n            sx={promoHeaderStyle}\n        >\n            {(eyebrow?.collabLogo || eyebrow?.text) && (\n                <Box ref={contentRef}>\n                    {eyebrow?.collabLogo ? (\n                        <CollaborationLogo collabLogo={eyebrow.collabLogo} sx={collabLogoStyle} />\n                    ) : (\n                        eyebrow?.text && <EyebrowText text={eyebrow.text} />\n                    )}\n                </Box>\n            )}\n\n            {promoMessage && promoVariant !== PromoVariants.DEFAULT && (\n                <Box ref={promoRef}>\n                    <ContentPromoMessage\n                        label={promoMessage}\n                        variant={promoVariant}\n                        dataAuto=\"lblFullScreenMediaTileModulePromoMessage\"\n                    />\n                </Box>\n            )}\n        </Flex>\n    )\n})\n\nPromoHeaderRow.propTypes = {\n    eyebrow: PropTypes.shape({\n        collabLogo: PropTypes.string,\n        text: PropTypes.string\n    }),\n    promoMessage: PropTypes.string,\n    promoVariant: PropTypes.string\n}\n\nPromoHeaderRow.displayName = 'PromoHeaderRow'\n\n/**\n * FullScreenMediaTileTitle Component\n * Renders the motion-wrapped title area with optional eyebrow and promo message.\n * Uses animation based on panel position and animation state.\n *\n * @param {*} props\n * @returns\n */\nexport const FullScreenMediaTileTitle = (props) => {\n    const {\n        eyebrow,\n        title,\n        promoMessage,\n        promoVariant,\n        active,\n        hasFirstPanelAnimatedOnce,\n        isFirstPanel,\n        textColorBlack\n    } = props\n\n    // The title and the eyebrow text are white by default; the Amplience `textColorBlack`\n    // toggle switches them to Pandora Black-1. The style config resolves the colour on the\n    // title itself so it does not depend on inheritance, and on the container so the eyebrow\n    // text follows it.\n    const {\n        title: {\n            baseStyle: {container, titleStyle, grid, gridItem}\n        }\n    } = useMultiStyleConfig('FullScreenMediaTile', {textColorBlack})\n\n    const motionStylesVariants = {\n        hidden: {\n            opacity: 0,\n            y: 50,\n            transition: {\n                delay: 0,\n                opacity: {\n                    delay: 0,\n                    duration: durationExtended1,\n                    ease: easeStandard\n                },\n                y: {\n                    delay: delayStandard2,\n                    duration: durationExtended1,\n                    ease: easeStandardDecelerate\n                }\n            }\n        },\n        visible: {\n            opacity: 1,\n            y: 0,\n            transition: {\n                opacity: {\n                    duration: durationExtended1,\n                    delay:\n                        isFirstPanel && !hasFirstPanelAnimatedOnce\n                            ? delayExtended4\n                            : delayStandard2,\n                    ease: easeStandard\n                },\n                y: {\n                    delay:\n                        isFirstPanel && !hasFirstPanelAnimatedOnce\n                            ? delayExtended4\n                            : delayStandard2,\n                    duration: durationExtended1,\n                    ease: easeStandardDecelerate\n                }\n            }\n        }\n    }\n\n    return (\n        <motion.div\n            style={container}\n            variants={\n                isFirstPanel\n                    ? {visible: {opacity: 1, y: 0}, hidden: {opacity: 1, y: 0}}\n                    : motionStylesVariants\n            }\n            initial=\"visible\"\n            animate={active ? 'visible' : 'hidden'}\n            transition={isFirstPanel ? {duration: 0} : undefined}\n            data-testid={'title'}\n        >\n            <Grid {...grid}>\n                <GridItem {...gridItem}>\n                    {(eyebrow?.collabLogo || eyebrow?.text || promoMessage) && (\n                        <PromoHeaderRow\n                            eyebrow={eyebrow}\n                            promoMessage={promoMessage}\n                            promoVariant={promoVariant}\n                        />\n                    )}\n                    {title && (\n                        <Heading {...titleStyle} data-auto={'inputTitleHeroFullScreen'}>\n                            {title}\n                        </Heading>\n                    )}\n                </GridItem>\n            </Grid>\n        </motion.div>\n    )\n}\n\nFullScreenMediaTileTitle.propTypes = {\n    eyebrow: PropTypes.shape({\n        collabLogo: PropTypes.string,\n        text: PropTypes.string\n    }),\n    title: PropTypes.string,\n    promoMessage: PropTypes.string,\n    promoVariant: PropTypes.string,\n    active: PropTypes.bool,\n    readyToAnimate: PropTypes.bool,\n    hasFirstPanelAnimatedOnce: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    textColorBlack: PropTypes.bool\n}\n\nFullScreenMediaTileTitle.displayName = 'FullScreenMediaTileTitle'\n","import React, {useMemo, useState, useCallback, useRef, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\n\nimport {\n    easeStandardDecelerate,\n    durationStandard2,\n    delayStandard1,\n    delayStandard2,\n    delayExtended3,\n    delayExtended4\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {\n    Box,\n    useMultiStyleConfig,\n    Button,\n    useTheme\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {useLoadOnView} from 'content/overrides/app/hooks/use-load-on-view'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {LinkType} from 'pandora-shared-app/overrides/app/utils/types'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\n\nimport {FullScreenMediaTileMedia} from './partials/full-screen-media-tile-media'\nimport {FullScreenMediaTileTitle} from './partials/full-screen-media-tile-title'\n\nconst MotionBox = motion(Box)\n\nexport const FullScreenMediaTile = (props) => {\n    const {data, active, panelNumber, isInView, componentIndex = 0} = props\n    const {\n        promoVariantBlock: {promoMessage = '', promoVariant = ''} = {},\n        media,\n        eyebrow,\n        title,\n        cta,\n        _meta,\n        overlayAndTextColor: {overlay = true, textColorBlack = false} = {}\n    } = data\n    const ctaRef = useRef(null)\n    const [ctaBgWidth, setCtaBgWidth] = useState('auto')\n    const theme = useTheme()\n    // Variable used to track if the module is a Full Screen Media Tile - for performance reasons\n    const isFMT = true\n\n    const {container, content, ctaWrapper, ctaStyle, linkStyle, ctaBgStyle} = useMultiStyleConfig(\n        'FullScreenMediaTile',\n        {direction: theme.direction}\n    )\n    const hasLoaded = useLoadOnView(isInView)\n\n    const mediaProps = {\n        ...media,\n        cta,\n        _meta,\n        active,\n        panelNumber,\n        overlay\n    }\n\n    const [hasFirstPanelAnimatedOnce, setHasFirstPanelAnimatedOnce] = useState(false)\n\n    const isFirstPanel = Boolean(panelNumber === 0)\n\n    const ctaMotionDiv = useMemo(\n        () => ({\n            transitionValue: {\n                ease: easeStandardDecelerate,\n                duration: durationStandard2,\n                delay: isFirstPanel && !hasFirstPanelAnimatedOnce ? delayExtended4 : delayStandard2\n            },\n            initialValue: {y: 65},\n            animateValue: {y: 0}\n        }),\n        [isFirstPanel, hasFirstPanelAnimatedOnce]\n    )\n\n    const ctaBgMotionDiv = useMemo(\n        () => ({\n            transitionValue: {\n                ease: easeStandardDecelerate,\n                duration: durationStandard2,\n                delay: isFirstPanel && !hasFirstPanelAnimatedOnce ? delayExtended3 : delayStandard1\n            },\n            initialValue: {y: 65},\n            animateValue: {y: 0}\n        }),\n        [isFirstPanel, hasFirstPanelAnimatedOnce]\n    )\n\n    const initialMotionValue = useSsrSafeAnimation(ctaMotionDiv?.initialValue)\n\n    useEffect(() => {\n        if (active) {\n            if (ctaRef?.current) setCtaBgWidth(ctaRef?.current?.offsetWidth - 2)\n        }\n    }, [ctaRef, active])\n\n    const handleAnimationComplete = useCallback(() => {\n        if (isFirstPanel && !hasFirstPanelAnimatedOnce) {\n            setHasFirstPanelAnimatedOnce(true)\n        }\n    }, [isFirstPanel, hasFirstPanelAnimatedOnce])\n\n    const FullScreenContent = useMemo(\n        () => (\n            <Box style={content}>\n                <FullScreenMediaTileMedia\n                    {...mediaProps}\n                    hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                    isFirstPanel={isFirstPanel}\n                    isFMT={isFMT}\n                    componentIndex={componentIndex}\n                />\n                <FullScreenMediaTileTitle\n                    promoMessage={promoMessage}\n                    promoVariant={promoVariant}\n                    eyebrow={eyebrow}\n                    title={title}\n                    active={active}\n                    hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                    isFirstPanel={isFirstPanel}\n                    textColorBlack={textColorBlack}\n                />\n                {cta?.text && cta?.type && (\n                    <Box sx={ctaWrapper}>\n                        <MotionBox\n                            sx={{...ctaBgStyle, width: ctaBgWidth}}\n                            transition={\n                                isFirstPanel ? {duration: 0} : ctaBgMotionDiv?.transitionValue\n                            }\n                            initial={\n                                isFirstPanel\n                                    ? ctaBgMotionDiv?.animateValue\n                                    : ctaBgMotionDiv?.initialValue\n                            }\n                            animate={\n                                active ? ctaBgMotionDiv?.animateValue : ctaBgMotionDiv?.initialValue\n                            }\n                        />\n                        <MotionBox\n                            ref={ctaRef}\n                            sx={ctaStyle}\n                            transition={\n                                isFirstPanel ? {duration: 0} : ctaMotionDiv?.transitionValue\n                            }\n                            initial={isFirstPanel ? ctaMotionDiv?.animateValue : initialMotionValue}\n                            animate={\n                                active ? ctaMotionDiv?.animateValue : ctaMotionDiv?.initialValue\n                            }\n                            onAnimationComplete={isFirstPanel && handleAnimationComplete}\n                        >\n                            <Button\n                                variant=\"emphasized\"\n                                data-testid=\"contentCta\"\n                                data-cs-override-id={`home_CTA_button${componentIndex}`}\n                                aria-label={title ? `${cta?.text}, ${title}` : cta?.text}\n                            >\n                                {cta?.text}\n                            </Button>\n                        </MotionBox>\n                    </Box>\n                )}\n            </Box>\n        ),\n        [\n            content,\n            hasLoaded,\n            mediaProps,\n            eyebrow,\n            title,\n            textColorBlack,\n            active,\n            ctaWrapper,\n            ctaStyle,\n            panelNumber,\n            ctaBgWidth,\n            initialMotionValue\n        ]\n    )\n\n    return (\n        <Box data-testid=\"fullScreenMediaTile\" sx={container}>\n            {cta?.type ? (\n                <ContentLink\n                    rootStyles={linkStyle}\n                    linkData={cta}\n                    contentMeta={_meta}\n                    variant=\"none\"\n                >\n                    {FullScreenContent}\n                </ContentLink>\n            ) : (\n                FullScreenContent\n            )}\n        </Box>\n    )\n}\n\nFullScreenMediaTile.displayName = 'FullScreenMediaTile'\n\nFullScreenMediaTile.propTypes = {\n    data: PropTypes.shape({\n        promoVariantBlock: PropTypes.shape({\n            promoMessage: PropTypes.string,\n            promoVariant: PropTypes.string\n        }),\n        _meta: PropTypes.shape({\n            name: PropTypes.string,\n            schema: PropTypes.string,\n            deliveryId: PropTypes.string\n        }).isRequired,\n        media: PropTypes.object,\n        eyebrow: PropTypes.object,\n        title: PropTypes.string,\n        cta: LinkType,\n        overlayAndTextColor: PropTypes.shape({\n            overlay: PropTypes.bool,\n            textColorBlack: PropTypes.bool\n        })\n    }).isRequired,\n    active: PropTypes.bool,\n    panelNumber: PropTypes.number,\n    isInView: PropTypes.bool,\n    componentIndex: PropTypes.number\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\n\nimport {Heading, Text, chakra} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {useTitleAnimations} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-title-animation'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\n\nconst MotionHeading = motion(chakra(Heading))\nconst MotionText = motion(Text)\n\nexport const KcpFeatureTileMsg = ({textStyle, data, dataAuto, isHeading = true}) => {\n    const {motionInitial, motionWhileInView, xTransition, opacityTransition} = useTitleAnimations()\n    const MotionComponent = isHeading ? MotionHeading : MotionText\n\n    return (\n        <MotionComponent\n            initial={useSsrSafeAnimation(motionInitial)}\n            whileInView={motionWhileInView}\n            transition={{...xTransition, opacity: opacityTransition}}\n            textStyle={textStyle}\n            data-auto={dataAuto}\n        >\n            {data}\n        </MotionComponent>\n    )\n}\n\nKcpFeatureTileMsg.propTypes = {\n    textStyle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    data: PropTypes.string.isRequired,\n    dataAuto: PropTypes.string,\n    isHeading: PropTypes.bool\n}\n\nKcpFeatureTileMsg.displayName = 'KcpFeatureTileMsg'\n","import {useMemo} from 'react'\nimport {\n    easeStandardDecelerate,\n    easeStandard,\n    durationExtended1,\n    delayNone\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const useTitleAnimations = () => {\n    const xTransition = useMemo(\n        () => ({\n            ease: easeStandardDecelerate,\n            duration: durationExtended1,\n            delay: delayNone\n        }),\n        []\n    )\n\n    const opacityTransition = useMemo(\n        () => ({\n            ease: easeStandard,\n            duration: durationExtended1,\n            delay: delayNone\n        }),\n        []\n    )\n\n    const motionInitial = {y: '64px', opacity: 0}\n    const motionWhileInView = {y: 0, opacity: 1}\n\n    return {\n        motionInitial,\n        motionWhileInView,\n        xTransition,\n        opacityTransition\n    }\n}\n","import React from 'react'\nimport {KcpFeatureTileMsg} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg'\nimport PropTypes from 'prop-types'\n\nconst defaultTextStyles = {\n    base: 'headingLg',\n    md: 'headingLg',\n    xl: 'headingXl'\n}\n\nconst compactTextStyles = {\n    base: 'headingMd',\n    md: 'headingMd',\n    xl: 'headingXl'\n}\n\nexport const KcpFeatureTileMsgLine1 = ({data, useCompactStyle = false}) => {\n    const textStyles = useCompactStyle ? compactTextStyles : defaultTextStyles\n\n    return (\n        <KcpFeatureTileMsg\n            dataAuto=\"lblKCPMessageLineone\"\n            data={data}\n            textStyle={textStyles}\n            isHeading={true}\n        />\n    )\n}\n\nKcpFeatureTileMsgLine1.displayName = 'KcpFeatureTileMsgLine1'\nKcpFeatureTileMsgLine1.propTypes = {\n    data: PropTypes.string.isRequired,\n    useCompactStyle: PropTypes.bool\n}\n","import React from 'react'\nimport {KcpFeatureTileMsg} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg'\nimport PropTypes from 'prop-types'\n\nconst defaultTextStyles = {\n    base: 'headingLgLight',\n    md: 'headingLgLight',\n    xl: 'headingXlLight'\n}\n\nconst compactTextStyles = {\n    base: 'headingMdLight',\n    md: 'headingMdLight',\n    xl: 'headingXlLight'\n}\n\nexport const KcpFeatureTileMsgLine2 = ({data, useCompactStyle = false}) => {\n    const textStyles = useCompactStyle ? compactTextStyles : defaultTextStyles\n\n    return (\n        <KcpFeatureTileMsg\n            dataAuto=\"lblKCPMessageLinetwo\"\n            data={data}\n            textStyle={textStyles}\n            isHeading={false}\n        />\n    )\n}\n\nKcpFeatureTileMsgLine2.displayName = 'KcpFeatureTileMsgLine2'\nKcpFeatureTileMsgLine2.propTypes = {\n    data: PropTypes.string.isRequired,\n    useCompactStyle: PropTypes.bool\n}\n","import {\n    easeStandard,\n    durationExtended1,\n    delayExtended1\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const useOpacityAnimation = (delayAfter = 0) => {\n    const opacityTransition = {\n        ease: easeStandard,\n        duration: durationExtended1,\n        delay: delayExtended1 + delayAfter\n    }\n\n    const motionInitial = {opacity: 0}\n    const motionWhileInView = {opacity: 1}\n\n    return {\n        opacityTransition,\n        motionInitial,\n        motionWhileInView\n    }\n}\n","import React from 'react'\nimport {Text, Box, Grid, GridItem} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useOpacityAnimation} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-opacity-animation'\nimport {motion} from 'framer-motion'\nimport PropTypes from 'prop-types'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\n\nconst MotionBox = motion(Box)\nconst textStyles = {base: 'bodyMd', xl: 'bodyLg'}\nconst wrapperStyles = {base: 6}\nconst colSpan = {base: 6, md: 3, xl: 5}\nconst gridStyles = {mx: 0}\n\nexport const KcpFeatureTileDescription = ({data}) => {\n    const {motionInitial, motionWhileInView, opacityTransition} = useOpacityAnimation()\n\n    return (\n        <MotionBox\n            initial={useSsrSafeAnimation(motionInitial)}\n            whileInView={motionWhileInView}\n            transition={opacityTransition}\n            mt={wrapperStyles}\n            data-auto=\"lblKCPFeatureMessageDescription\"\n        >\n            <Grid data-testid=\"description-section\" sx={gridStyles}>\n                <GridItem colSpan={colSpan} colStart={1}>\n                    <Text textStyle={textStyles} data-testid=\"description-text\">\n                        {data}\n                    </Text>\n                </GridItem>\n            </Grid>\n        </MotionBox>\n    )\n}\n\nKcpFeatureTileDescription.displayName = 'KcpFeatureTileDescription'\nKcpFeatureTileDescription.propTypes = {\n    data: PropTypes.string.isRequired\n}\n","import {useMemo} from 'react'\nimport {\n    easeEmphasizedDecelerate,\n    durationStandard2,\n    delayExtended2\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const useCtaAnimations = () => {\n    const transition = useMemo(\n        () => ({\n            ease: easeEmphasizedDecelerate,\n            duration: durationStandard2,\n            delay: delayExtended2\n        }),\n        []\n    )\n\n    const motionInitial = {\n        scaleY: 0,\n        transformOrigin: 'bottom'\n    }\n\n    const motionWhileInView = {\n        scaleY: 1,\n        transformOrigin: 'bottom'\n    }\n\n    return {\n        motionInitial,\n        motionWhileInView,\n        transition\n    }\n}\n","import React from 'react'\nimport {Button, Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\nimport {useCtaAnimations} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-cta-animation'\nimport {useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\n\nexport const KcpFeatureTileCta = ({data}) => {\n    const {motionInitial, motionWhileInView, transition} = useCtaAnimations()\n\n    const {\n        KcpFeatureTileCta: {\n            baseStyle: {button}\n        }\n    } = useMultiStyleConfig('KcpFeatureTile')\n\n    return (\n        <motion.div\n            data-auto=\"btnKCPFeatureCtaButton\"\n            initial={useSsrSafeAnimation(motionInitial)}\n            whileInView={motionWhileInView}\n            transition={transition}\n        >\n            <Button\n                variant=\"emphasized\"\n                data-testid=\"contentCta\"\n                colorScheme=\"light\"\n                sx={button}\n                data-cs-override-id=\"homepage_kcp_button\"\n            >\n                <Text textStyle=\"caption\">{data?.text}</Text>\n            </Button>\n        </motion.div>\n    )\n}\n\nKcpFeatureTileCta.displayName = 'KcpFeatureTileCta'\n\nKcpFeatureTileCta.propTypes = {\n    data: PropTypes.shape({\n        url: PropTypes.string,\n        text: PropTypes.string,\n        type: PropTypes.oneOf(['url', 'home', 'product', 'category', 'search']).isRequired,\n        target: PropTypes.bool\n    }).isRequired,\n    contentMeta: PropTypes.shape({\n        deliveryId: PropTypes.string,\n        name: PropTypes.string,\n        schema: PropTypes.string\n    })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const KcpFeatureTileTermsAndConditionsItem = ({data, styles, dataAuto}) => {\n    if (!data) {\n        return null\n    }\n\n    return (\n        <Text sx={styles} mb=\"1\" display=\"inline-block\" textStyle=\"caption\" data-auto={dataAuto}>\n            {data}\n        </Text>\n    )\n}\n\nKcpFeatureTileTermsAndConditionsItem.propTypes = {\n    data: PropTypes.string,\n    styles: PropTypes.object,\n    dataAuto: PropTypes.string\n}\n\nKcpFeatureTileTermsAndConditionsItem.displayName = 'KcpFeatureTileTermsAndConditionsItem'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nexport const KcpFeatureTileTermsAndConditionsLink = ({data, contentMeta, linkTheme}) => {\n    return (\n        <ContentLink\n            data-cs-override-id=\"homepage_kcp_link\"\n            linkData={data}\n            contentMeta={contentMeta}\n            data-auto=\"btnKCPFeatureLink\"\n            size=\"small\"\n            stopPropagation={true}\n            colorScheme={linkTheme}\n        />\n    )\n}\n\nKcpFeatureTileTermsAndConditionsLink.propTypes = {\n    data: PropTypes.object.isRequired,\n    contentMeta: PropTypes.object,\n    linkTheme: PropTypes.string\n}\n\nKcpFeatureTileTermsAndConditionsLink.displayName = 'KcpFeatureTileTermsAndConditionsLink'\n","import React from 'react'\nimport {\n    Box,\n    useMultiStyleConfig,\n    useTheme\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {KcpFeatureTileTermsAndConditionsItem} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions-item'\nimport {KcpFeatureTileTermsAndConditionsLink} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions-link'\nimport {motion} from 'framer-motion'\nimport {useOpacityAnimation} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-opacity-animation'\nimport PropTypes from 'prop-types'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\n\nconst MotionBox = motion(Box)\n\nconst hasAuthoredValue = (value) =>\n    typeof value === 'string' ? value.trim().length > 0 : Boolean(value)\n\nexport const KcpFeatureTileTermsAndConditions = ({\n    data = {},\n    contentMeta,\n    linkTheme,\n    hasVideoControls = false\n}) => {\n    const hasTermsStatements1 = hasAuthoredValue(data?.termsStatements1)\n    const hasTermsStatements2 = hasAuthoredValue(data?.termsStatements2)\n    const hasTermsStatements3 = hasAuthoredValue(data?.termsStatements3)\n    const hasTermsLink = hasAuthoredValue(data?.termsLink?.text)\n    const hasFirstColumnContent = hasTermsStatements1 || hasTermsStatements2\n    const hasSecondColumnContent = hasTermsStatements3 || hasTermsLink\n    const hasBothTermsColumns = hasFirstColumnContent && hasSecondColumnContent\n    const theme = useTheme()\n    const {\n        KcpFeatureTileTermsAndConditions: {\n            baseStyle: {container, firstColumn, column, rightColumn}\n        }\n    } = useMultiStyleConfig('KcpFeatureTile', {\n        direction: theme.direction,\n        hasVideoControls,\n        hasBothTermsColumns\n    })\n\n    const {motionInitial, motionWhileInView, opacityTransition} = useOpacityAnimation()\n    const safeMotionInitial = useSsrSafeAnimation(motionInitial)\n\n    const themeValue = linkTheme ? 'dark' : 'light'\n\n    if (!hasFirstColumnContent && !hasSecondColumnContent) {\n        return null\n    }\n\n    return (\n        <MotionBox\n            initial={safeMotionInitial}\n            whileInView={motionWhileInView}\n            transition={opacityTransition}\n            sx={container}\n        >\n            {hasFirstColumnContent && (\n                <Box sx={{...firstColumn, ...column}}>\n                    {hasTermsStatements1 && (\n                        <KcpFeatureTileTermsAndConditionsItem\n                            dataAuto=\"divKCPFeatureTermsOne\"\n                            data={data.termsStatements1}\n                        />\n                    )}\n                    {hasTermsStatements2 && (\n                        <KcpFeatureTileTermsAndConditionsItem\n                            dataAuto=\"divKCPFeatureTermsTwo\"\n                            data={data.termsStatements2}\n                        />\n                    )}\n                </Box>\n            )}\n            {hasSecondColumnContent && (\n                <Box sx={{...column, ...rightColumn}}>\n                    {hasTermsStatements3 && (\n                        <KcpFeatureTileTermsAndConditionsItem\n                            dataAuto=\"divKCPFeatureTermsThree\"\n                            data={data.termsStatements3}\n                        />\n                    )}\n                    {hasTermsLink && (\n                        <KcpFeatureTileTermsAndConditionsLink\n                            data={data.termsLink}\n                            contentMeta={contentMeta}\n                            linkTheme={themeValue}\n                        />\n                    )}\n                </Box>\n            )}\n        </MotionBox>\n    )\n}\n\nKcpFeatureTileTermsAndConditions.displayName = 'KcpFeatureTileTermsAndConditions'\nKcpFeatureTileTermsAndConditions.propTypes = {\n    data: PropTypes.object,\n    contentMeta: PropTypes.object,\n    linkTheme: PropTypes.bool,\n    hasVideoControls: PropTypes.bool\n}\n","const DARK_THEMES_MAP = {\n    'black friday': 'blackFriday',\n    'cyber monday': 'cyberMonday',\n    sale: 'sale',\n    'summer sale image': 'summerSale',\n    'summer sale video': 'summerSale'\n}\n\nconst LIGHT_THEMES_MAP = {\n    promo: 'promo'\n}\n\nconst THEMES_MAP = {\n    ...LIGHT_THEMES_MAP,\n    ...DARK_THEMES_MAP\n}\n\nexport const mapContentThemeToDimVariant = (theme) => {\n    const normalizedTheme = theme?.toLowerCase().trim()\n\n    return THEMES_MAP?.[normalizedTheme]\n}\n\nexport const isDarkTheme = (theme) =>\n    Object.values(DARK_THEMES_MAP)?.includes(mapContentThemeToDimVariant(theme))\n","import {useIntl} from 'react-intl'\n\n// Shared Hook\nimport {useCountdown} from 'pandora-shared-app/overrides/app/components/_app/partials/hooks/use-countdown'\n\nexport const countdownMessages = {\n    days: {id: 'countdown.days', defaultMessage: '{value}d'},\n    hours: {id: 'countdown.hours', defaultMessage: '{value}h'},\n    minutes: {id: 'countdown.minutes', defaultMessage: '{value}m'},\n    seconds: {id: 'countdown.seconds', defaultMessage: '{value}s'}\n}\n\nconst ONE_DAY_IN_MS = 24 * 60 * 60 * 1000\n\nexport const useKcpFeatureTileCountdown = (dateTime) => {\n    const {formatMessage} = useIntl()\n\n    const now = new Date()\n    const end = new Date(dateTime)\n    const timeUntilEnd = end.getTime() - now.getTime()\n\n    const includeSeconds = timeUntilEnd <= ONE_DAY_IN_MS\n    const clientRemainingTime = useCountdown(dateTime, includeSeconds)\n\n    const isCountdownExpired = timeUntilEnd <= 0 || !clientRemainingTime\n\n    return {\n        countdownText: isCountdownExpired\n            ? null\n            : `${formatMessage({\n                  id: 'sale.ends.in',\n                  defaultMessage: 'Sale ends in'\n              })} ${clientRemainingTime}`,\n        isCountdownExpired\n    }\n}\n","import {useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst CHAR_LIMITS = {\n    base: 40,\n    md: 60\n}\n\nexport const useCompactTextStyles = (msg1, msg2) => {\n    const currentBreakpoint = useBreakpointValue({base: 'base', md: 'md', xl: 'xl'})\n\n    if (currentBreakpoint === 'xl') {\n        return {useCompactMsg1: false, useCompactMsg2: false}\n    }\n\n    const limit = CHAR_LIMITS[currentBreakpoint] || CHAR_LIMITS.base\n    const isMsg1Long = msg1?.length > limit\n    const isMsg2Long = msg2?.length > limit\n\n    return {\n        useCompactMsg1: isMsg1Long,\n        useCompactMsg2: isMsg1Long || isMsg2Long\n    }\n}\n","export const SUMMER_SALE_IMAGE_THEME = 'Summer Sale Image'\nexport const SUMMER_SALE_VIDEO_THEME = 'Summer Sale Video'\nexport const KCP_FEATURE_TILE_CONTROL_WRAPPER_POSITION = {\n    right: {base: 0, md: 12, xl: 16},\n    bottom: 0\n}\n\nconst AMPLIENCE_HOST = 'cdn.media.amplience.net'\nconst AMPLIENCE_ENDPOINT = 'pandora'\n\nconst makeImage = (name) => ({\n    diImage: {\n        query: '',\n        image: {\n            id: name,\n            name,\n            endpoint: AMPLIENCE_ENDPOINT,\n            defaultHost: AMPLIENCE_HOST,\n            mimeType: 'image/jpeg'\n        }\n    }\n})\n\nconst makeVideo = (name) => ({\n    id: name,\n    name,\n    endpoint: AMPLIENCE_ENDPOINT,\n    defaultHost: AMPLIENCE_HOST,\n    mimeType: 'video/mp4'\n})\n\nconst ASSET_NAMES = {\n    imageDesktop: 'kcp-summer-sale-image-desktop',\n    imageMobile: 'kcp-summer-sale-image-mobile',\n    videoDesktop: 'kcp-summer-sale-video-desktop',\n    videoMobile: 'kcp-summer-sale-video-mobile'\n}\n\nexport const SUMMER_SALE_MEDIA_BY_THEME = {\n    [SUMMER_SALE_IMAGE_THEME]: {\n        mediaType: 'image',\n        imageAltText: 'Summer Sale image',\n        copyright: {},\n        desktopImg: makeImage(ASSET_NAMES.imageDesktop),\n        mobileImg: makeImage(ASSET_NAMES.imageMobile)\n    },\n    [SUMMER_SALE_VIDEO_THEME]: {\n        mediaType: 'video',\n        imageAltText: 'Summer Sale video',\n        copyright: {},\n        desktopVideo: makeVideo(ASSET_NAMES.videoDesktop),\n        mobileVideo: makeVideo(ASSET_NAMES.videoMobile)\n    }\n}\n\nexport const isSummerSaleTheme = (theme) =>\n    theme === SUMMER_SALE_IMAGE_THEME || theme === SUMMER_SALE_VIDEO_THEME\n","import {\n    useMultiStyleConfig,\n    GridItem,\n    Grid,\n    Box,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport React, {useRef} from 'react'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {KcpFeatureTileMsgLine1} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg-line1'\nimport {KcpFeatureTileMsgLine2} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-msg-line2'\nimport {KcpFeatureTileDescription} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-description'\nimport {KcpFeatureTileCta} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-cta'\nimport {KcpFeatureTileTermsAndConditions} from 'content/overrides/app/components/kcp-feature-tile/partials/kcp-feature-tile-terms-and-conditions'\nimport {ContentDim} from 'content/overrides/app/components/shared/content-dim'\nimport {\n    mapContentThemeToDimVariant,\n    isDarkTheme\n} from 'content/overrides/app/utils/mapContentThemeToDimVariant'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nimport {useKcpFeatureTileCountdown} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-kcp-feature-tile-count-down'\nimport {useLodBannerPresence} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-lod-banner-presence'\nimport {useCompactTextStyles} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-compact-text-style'\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {useKcpSummerSaleMedia} from 'content/overrides/app/components/kcp-feature-tile/hooks/use-kcp-summer-sale-media'\n\nconst colSpan = {base: 6, md: 6, xl: 12}\n\nexport const KcpFeatureTile = ({data, active, panelNumber}) => {\n    const {\n        msgLine1 = '',\n        msgLine2 = '',\n        description = '',\n        cta: linkData = {},\n        _meta = {},\n        KCPTheme = '',\n        termsAndConditions = {},\n        dateTime = ''\n    } = data\n\n    const isFirstPanel = panelNumber === 0\n\n    const isSsrPosterEnabledRaw = useVariant(LD_KEYS.enableGlobalVideoSsrPosterFrame, false)\n    const isSsrPosterEnabledRef = useRef(isSsrPosterEnabledRaw)\n    const isSsrPosterEnabled = isSsrPosterEnabledRef.current\n\n    const {isSummerSale, media, mediaConfig, effectiveTheme, hasVideoControls} =\n        useKcpSummerSaleMedia(KCPTheme)\n    const heightValue = useBreakpointValue({base: '100%'})\n    const hasLodBanner = useLodBannerPresence()\n    const {useCompactMsg1, useCompactMsg2} = useCompactTextStyles(msgLine1, msgLine2)\n    const styles = useMultiStyleConfig('KcpFeatureTile', {\n        heightValue,\n        KCPTheme: effectiveTheme,\n        hasLodBanner,\n        isSsrPosterEnabled\n    })\n    const {countdownText, isCountdownExpired} = useKcpFeatureTileCountdown(dateTime)\n\n    const rawDimVariant = mapContentThemeToDimVariant(effectiveTheme)\n    const summerSaleDimVariant = isFirstPanel ? 'radial' : 'corner'\n    const variant = rawDimVariant === 'summerSale' ? summerSaleDimVariant : rawDimVariant\n    const displayMsgLine1 = countdownText ?? msgLine1\n    const msg1Key = isCountdownExpired ? 'expired' : 'countdown'\n\n    const customCSS = {\n        label: 'KcpFeatureTile-innerContainer',\n        ...styles.innerContainer\n    }\n\n    const FeatureTileContent = (\n        <Box __css={customCSS} data-auto=\"divKCPFeatureContainer\">\n            <Box sx={styles.centerSection} data-cs-override-id=\"homepage_kcp_tile\">\n                <KcpFeatureTileMsgLine1\n                    data-key={msg1Key}\n                    key={msg1Key}\n                    data={displayMsgLine1}\n                    useCompactStyle={useCompactMsg1}\n                />\n                <KcpFeatureTileMsgLine2 data={msgLine2} useCompactStyle={useCompactMsg2} />\n                <KcpFeatureTileDescription data={description} />\n                <KcpFeatureTileCta data={linkData} />\n            </Box>\n            <KcpFeatureTileTermsAndConditions\n                data={termsAndConditions}\n                contentMeta={_meta}\n                linkTheme={isDarkTheme(effectiveTheme)}\n                hasVideoControls={hasVideoControls}\n            />\n        </Box>\n    )\n\n    return (\n        <Box sx={styles.container}>\n            {isSummerSale && media && (\n                <Box sx={styles.mediaLayer} aria-hidden=\"true\">\n                    <Media\n                        media={media}\n                        mediaConfig={mediaConfig}\n                        isActive={active}\n                        isLazyLoad={false}\n                        isFirstPanel={isFirstPanel}\n                    />\n                </Box>\n            )}\n            <ContentDim variant={variant} />\n\n            <Grid sx={styles.grid}>\n                <GridItem sx={styles.gridItem} colSpan={colSpan}>\n                    {linkData?.type ? (\n                        <ContentLink\n                            rootStyles={styles.contentLinkStyle}\n                            linkData={linkData}\n                            contentMeta={_meta}\n                        >\n                            {FeatureTileContent}\n                        </ContentLink>\n                    ) : (\n                        FeatureTileContent\n                    )}\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n}\nKcpFeatureTile.displayName = 'KcpFeatureTile'\nKcpFeatureTile.propTypes = {\n    data: PropTypes.object.isRequired,\n    active: PropTypes.bool,\n    panelNumber: PropTypes.number\n}\n","import {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'content/overrides/app/api_keys/ld-keys'\nimport {\n    KCP_FEATURE_TILE_CONTROL_WRAPPER_POSITION,\n    SUMMER_SALE_MEDIA_BY_THEME,\n    isSummerSaleTheme\n} from 'content/overrides/app/components/kcp-feature-tile/utils/kcp-summer-sale-media'\n\n// When the LaunchDarkly flag is off, summer-sale themes fall back to the\n// existing `Sale` (red) theme so the tile still renders as a regular KCP\n// instead of disappearing.\nconst SUMMER_SALE_FALLBACK_THEME = 'Sale'\n\n/**\n * Combines Summer Sale theme detection with the LaunchDarkly flag.\n *\n * Returns a deterministic object so the consuming component can branch on\n * booleans instead of re-deriving logic.\n *\n * @param {string} KCPTheme - The raw theme value from the Amplience content item.\n * @returns {{\n *   isSummerSale: boolean,\n *   isEnabled: boolean,\n *   effectiveTheme: string,\n *   media: object | null\n * }}\n */\nexport const useKcpSummerSaleMedia = (KCPTheme) => {\n    const isEnabled = useVariant(LD_KEYS.kcpFeatureTileSummerSaleMedia, false)\n    const isSummerSale = isSummerSaleTheme(KCPTheme)\n    const isActive = isSummerSale && isEnabled\n    const media = isActive ? SUMMER_SALE_MEDIA_BY_THEME[KCPTheme] : null\n    const hasVideoControls = media?.mediaType === 'video'\n\n    return {\n        isSummerSale,\n        isEnabled,\n        effectiveTheme: isSummerSale && !isEnabled ? SUMMER_SALE_FALLBACK_THEME : KCPTheme,\n        media,\n        mediaConfig: {\n            dataAuto: 'kcpFeatureTile',\n            controlWrapperPosition: KCP_FEATURE_TILE_CONTROL_WRAPPER_POSITION\n        },\n        hasVideoControls\n    }\n}\n","import {useState, useEffect} from 'react'\n\nexport const useLodBannerPresence = () => {\n    const [isLodBannerPresent, setIsLodBannerPresent] = useState(false)\n\n    useEffect(() => {\n        const lodBanner = document.querySelector('[data-testid=\"lod-banner\"]')\n        setIsLodBannerPresent(!!lodBanner)\n    }, [])\n\n    return isLodBannerPresent\n}\n","import {useAnimation} from 'framer-motion'\nimport {useEffect, useRef} from 'react'\nimport {\n    durationQuick2,\n    durationStandard2,\n    easeStandard,\n    easeStandardDecelerate,\n    delayNone\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const useImageAnimation = (dependencies, condition) => {\n    const controls = useAnimation()\n    const ref = useRef(null)\n\n    useEffect(() => {\n        if (condition) {\n            controls.set({opacity: 0, scale: 1.05})\n            controls.start({\n                opacity: 1,\n                scale: 1,\n                transition: {\n                    opacity: {\n                        duration: durationQuick2,\n                        ease: easeStandard,\n                        delay: delayNone\n                    },\n                    scale: {\n                        duration: durationStandard2,\n                        ease: easeStandardDecelerate,\n                        delay: delayNone\n                    }\n                }\n            })\n        } else {\n            controls.start({opacity: 0, scale: 1.05})\n        }\n    }, [...dependencies, controls])\n\n    return [ref, controls]\n}\n","import {useMotionValueEvent, useScroll} from 'framer-motion'\nimport {useMediaQuery} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useRef} from 'react'\nimport {isStorybook} from 'pandora-shared-app/overrides/app/utils/is-storybook'\n\nconst isStorybookEnv = isStorybook()\n\nexport const useEntryPointsLinkItem = (index, setSelectedItemIndex) => {\n    const ref = useRef(null)\n\n    const {scrollYProgress} = useScroll({\n        target: ref,\n        offset: ['start 0.67', 'end 0.67']\n    })\n\n    // Get the actual pointer device status\n    const [actualIsPointerDevice] = useMediaQuery('(hover: hover) and (pointer: fine)', {\n        ssr: true\n    })\n\n    // Override isPointerDevice to false in Storybook\n    const isPointerDevice = isStorybookEnv ? false : actualIsPointerDevice\n\n    const linkNumber = index - 1\n\n    useMotionValueEvent(scrollYProgress, 'change', (latest) => {\n        if (isPointerDevice || latest === 0) return\n        setSelectedItemIndex(linkNumber)\n    })\n\n    return {ref, linkNumber}\n}\n","import React, {useEffect, useRef, useState} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Box,\n    chakra,\n    useMultiStyleConfig,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {durationQuick2, timingStandard} from 'pandora-shared-app/overrides/app/utils/motion'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nimport {useEntryPointsLinkItem} from './use-entry-points-link-item'\n\nexport const EntryPointsLinkItem = ({\n    index,\n    item,\n    active,\n    setSelectedItemIndex,\n    KCPTheme,\n    contentMeta,\n    componentIndex\n}) => {\n    const isDesktop = useBreakpointValue({base: false, xl: true})\n    const {ref, linkNumber} = useEntryPointsLinkItem(index, setSelectedItemIndex)\n    const textRef = useRef(null)\n    const [lines, setLines] = useState([])\n    const {link: {text = ''} = {}} = item || {}\n\n    const {\n        EntryPointsLinkItem: {\n            baseStyle: {container, link, underlineLine}\n        }\n    } = useMultiStyleConfig('EntryPointsTile', {KCPTheme})\n\n    useEffect(() => {\n        const el = textRef.current\n        const textNode = el?.firstChild\n        if (textNode?.nodeType !== Node.TEXT_NODE) {\n            setLines([])\n            return undefined\n        }\n        const measure = () => {\n            const range = document.createRange()\n            range.selectNodeContents(textNode)\n            const origin = el.getBoundingClientRect()\n            setLines(\n                [...range.getClientRects()]\n                    .filter((r) => r.width > 0)\n                    .map((r) => ({\n                        top: `${r.bottom - origin.top}px`,\n                        left: `${r.left - origin.left}px`,\n                        width: `${r.width}px`\n                    }))\n            )\n        }\n        measure()\n        const observer = new ResizeObserver(measure)\n        observer.observe(el)\n        return () => observer.disconnect()\n    }, [text])\n\n    const handleMouseEnter = () => {\n        if (linkNumber !== -1) setSelectedItemIndex(linkNumber)\n    }\n\n    return (\n        <Box as=\"h2\" ref={ref} mb={5} sx={container}>\n            <ContentLink\n                rootStyles={link}\n                onMouseEnter={isDesktop ? handleMouseEnter : undefined}\n                textStyle=\"bodyLg\"\n                linkData={item?.link}\n                contentMeta={contentMeta}\n                data-cs-override-id={`home_button_image${componentIndex}_${index}${\n                    KCPTheme ? '_KCP' : ''\n                }`}\n            >\n                <chakra.span ref={textRef} sx={{position: 'relative'}}>\n                    {text}\n                    {lines.map((line, idx) => (\n                        <chakra.span\n                            key={`${line.top}-${line.left}`}\n                            data-testid=\"EntryPointsLinkItem-underline\"\n                            sx={{\n                                ...underlineLine,\n                                ...line,\n                                transform: active ? 'scaleX(1)' : 'scaleX(0)',\n                                transition: `transform ${durationQuick2}s ${timingStandard} ${\n                                    active ? idx * durationQuick2 : 0\n                                }s`\n                            }}\n                        />\n                    ))}\n                </chakra.span>\n            </ContentLink>\n        </Box>\n    )\n}\n\nEntryPointsLinkItem.displayName = 'EntryPointsLinkItem'\nEntryPointsLinkItem.propTypes = {\n    index: PropTypes.number.isRequired,\n    item: PropTypes.object,\n    active: PropTypes.bool.isRequired,\n    setSelectedItemIndex: PropTypes.func.isRequired,\n    KCPTheme: PropTypes.string,\n    contentMeta: PropTypes.object,\n    componentIndex: PropTypes.number\n}\n","import {motion} from 'framer-motion'\nimport {Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {EntryPointsLinkItem} from './entry-points-link-item'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\nimport {\n    delayQuick1,\n    delayStandard1,\n    durationQuick2,\n    durationStandard1,\n    easeEmphasizedDecelerate,\n    easeStandard\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const EntryPointLink = ({\n    index,\n    item,\n    active,\n    setSelectedItemIndex,\n    KCPTheme,\n    contentMeta,\n    componentIndex\n}) => {\n    const opacityTransition = useMemo(\n        () => ({\n            ease: easeStandard,\n            duration: durationQuick2,\n            delay: delayQuick1 * index + delayStandard1\n        }),\n        [index]\n    )\n\n    const yTransition = useMemo(\n        () => ({\n            ease: easeEmphasizedDecelerate,\n            duration: durationStandard1,\n            delay: delayQuick1 * index + delayStandard1\n        }),\n        [index]\n    )\n\n    const motionTransition = useMemo(\n        () => ({\n            opacity: opacityTransition,\n            y: yTransition\n        }),\n        [opacityTransition, yTransition]\n    )\n\n    const motionInitial = {y: -2.5, opacity: 0}\n    const motionWhileInView = {y: 0, opacity: 1}\n\n    return (\n        <motion.div\n            initial={useSsrSafeAnimation(motionInitial)}\n            whileInView={motionWhileInView}\n            transition={motionTransition}\n        >\n            {typeof item === 'string' ? (\n                <Text\n                    data-auto={`lbl${KCPTheme ? 'KCP' : ''}EntryPointsEyebrow`}\n                    textStyle=\"bodySm\"\n                    mb=\"5\"\n                >\n                    {item}\n                </Text>\n            ) : (\n                <EntryPointsLinkItem\n                    data-auto=\"lblEntryPointsItem\"\n                    index={index}\n                    item={item}\n                    active={active}\n                    KCPTheme={KCPTheme}\n                    setSelectedItemIndex={setSelectedItemIndex}\n                    contentMeta={contentMeta}\n                    componentIndex={componentIndex}\n                />\n            )}\n        </motion.div>\n    )\n}\n\nEntryPointLink.displayName = 'EntryPointLink'\nEntryPointLink.propTypes = {\n    index: PropTypes.number.isRequired,\n    item: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n    active: PropTypes.bool,\n    setSelectedItemIndex: PropTypes.func,\n    KCPTheme: PropTypes.string,\n    contentMeta: PropTypes.object,\n    componentIndex: PropTypes.number\n}\n","import React, {useState, useEffect, useMemo, useRef} from 'react'\nimport {useImageAnimation} from './hooks/use-image-animation'\nimport {EntryPointLink} from './partials/entry-points-link'\nimport {generateConsistentImageUrl} from 'pandora-shared-app/overrides/app/utils/media'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {v4 as uuidv4} from 'uuid'\nimport {useBreakpointValue, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst ASPECT_RATIO_STRING = '3:4'\n\nexport const useEntryPointsTile = ({data, itemsContainer, KCPTheme, componentIndex, active}) => {\n    const [selectedItemIndex, setSelectedItemIndex] = useState(-1)\n    const [isInView, setIsInView] = useState(false)\n    const isDesktop = useBreakpointValue({base: false, xl: true})\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const [desktopImageRef, desktopImageControls] = useImageAnimation([isInView], isInView)\n    const [selectedItemImageRef, selectedItemImageControls] = useImageAnimation(\n        [isInView, selectedItemIndex],\n        isInView\n    )\n\n    const activationSetRef = useRef(false)\n\n    useEffect(() => {\n        if (active && !activationSetRef.current) {\n            activationSetRef.current = true\n            setIsInView(true)\n            setSelectedItemIndex(0)\n        }\n    }, [active])\n\n    const {imageUrl: desktopImageUrl, copyright: desktopCopyright} =\n        generateConsistentImageUrl(data?.largeImage, 'img', ASPECT_RATIO_STRING, undefined, {\n            aprimoPrimary\n        }) || {}\n\n    const desktopFixedImage = desktopImageUrl\n        ? {\n              src: desktopImageUrl,\n              alt: '',\n              copyright: desktopCopyright || {}\n          }\n        : null\n\n    const eyebrowText = data?.eyebrowText\n    const entryPoints = data?.entryPoints || []\n\n    const entryPointsItems = [eyebrowText, ...entryPoints]\n    const uuids = useRef(entryPointsItems.map(() => uuidv4()))\n\n    const Items = useMemo(\n        () => (\n            <Box sx={itemsContainer}>\n                {entryPointsItems.map((item, index) => {\n                    const linkNumber = index - 1\n                    const itemActive = selectedItemIndex === linkNumber\n                    return (\n                        <EntryPointLink\n                            key={uuids.current[index]}\n                            KCPTheme={KCPTheme}\n                            index={index}\n                            item={item}\n                            active={itemActive}\n                            setSelectedItemIndex={setSelectedItemIndex}\n                            data-testid={`mock-item-${index}`}\n                            contentMeta={data._meta}\n                            componentIndex={componentIndex}\n                        />\n                    )\n                })}\n            </Box>\n        ),\n        [entryPoints, selectedItemIndex, eyebrowText, itemsContainer, KCPTheme]\n    )\n\n    const imageIndex = selectedItemIndex === -1 ? 0 : selectedItemIndex\n    const selectedEntryPoint = entryPoints[imageIndex]\n    const {\n        imageUrl: selectedImageUrl,\n        altText: selectedAltText,\n        copyright: selectedCopyright\n    } = generateConsistentImageUrl(\n        selectedEntryPoint?.smallImage,\n        'img',\n        ASPECT_RATIO_STRING,\n        undefined,\n        {aprimoPrimary}\n    ) || {}\n\n    const selectedItemImage = selectedImageUrl\n        ? {\n              src: selectedImageUrl,\n              alt: selectedAltText ?? selectedEntryPoint?.link?.text ?? '',\n              copyright: selectedCopyright || {}\n          }\n        : null\n\n    return {\n        state: {\n            isInView,\n            selectedItemImage,\n            isDesktop,\n            selectedItemIndex\n        },\n        refs: {\n            desktopImageRef,\n            selectedItemImageRef\n        },\n        controls: {\n            desktopImageControls,\n            selectedItemImageControls\n        },\n        components: {\n            Items\n        },\n        data: {\n            desktopFixedImage,\n            entryPointsItems,\n            contentMeta: data._meta\n        }\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {motion} from 'framer-motion'\nimport {durationQuick2, easeStandard} from 'pandora-shared-app/overrides/app/utils/motion'\nconst MotionOverlay = motion(Box)\n\nexport const EntryPointsImageOverlay = ({isInView, 'data-testid': dataTestId}) => {\n    const {\n        EntryPointsImageOverlay: {\n            baseStyle: {container}\n        }\n    } = useMultiStyleConfig('EntryPointsTile')\n\n    return (\n        <MotionOverlay\n            initial={{opacity: 0.5}}\n            animate={isInView ? {opacity: 0} : {opacity: 0.5}}\n            transition={{duration: durationQuick2, ease: easeStandard}}\n            sx={container}\n            data-testid={dataTestId}\n        />\n    )\n}\n\nEntryPointsImageOverlay.propTypes = {\n    isInView: PropTypes.bool.isRequired,\n    'data-testid': PropTypes.string\n}\n","import React, {forwardRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {chakra, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {motion} from 'framer-motion'\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\n\nconst MotionBox = chakra(motion.div)\n\nexport const EntryPointImageTemplate = forwardRef(\n    (\n        {\n            controls,\n            image,\n            dataAuto,\n            'data-testid': dataTestId,\n            qWidth,\n            'data-cs-override-id': dataCsOverrideId\n        },\n        ref\n    ) => {\n        const motionInitial = {opacity: 0, scale: 1.05}\n        return (\n            <MotionBox\n                ref={ref}\n                initial={motionInitial}\n                animate={controls}\n                width=\"100%\"\n                data-testid={dataTestId}\n                data-cs-override-id={dataCsOverrideId}\n            >\n                {image ? (\n                    <ImageCard\n                        src={image.src}\n                        alt={image.alt}\n                        aspectRatio={3 / 4}\n                        lazyLoadHeight={200}\n                        lazyLoadOffset={100}\n                        dataAuto={dataAuto}\n                        copyright={image?.copyright}\n                        qWidth={qWidth}\n                    />\n                ) : (\n                    <Box></Box>\n                )}\n            </MotionBox>\n        )\n    }\n)\n\nEntryPointImageTemplate.displayName = 'EntryPointImageTemplate'\nEntryPointImageTemplate.propTypes = {\n    controls: PropTypes.object.isRequired,\n    image: PropTypes.shape({\n        src: PropTypes.string.isRequired,\n        alt: PropTypes.string.isRequired,\n        copyright: PropTypes.object\n    }),\n    dataAuto: PropTypes.string,\n    qWidth: PropTypes.number,\n    'data-testid': PropTypes.string,\n    'data-cs-override-id': PropTypes.string\n}\n","import React, {forwardRef} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nimport {EntryPointImageTemplate} from '../entry-points-image-template'\n\nconst getImageLink = (index, data) => {\n    return data[index + 1]?.link\n}\n\nexport const EntryPointsItemImage = forwardRef(\n    (\n        {\n            selectedIndex,\n            entryPointsLinkData,\n            contentMeta,\n            linkStyles,\n            controls,\n            image,\n            'data-testid': dataTestId,\n            'data-cs-override-id': dataCsOverrideId\n        },\n        ref\n    ) => {\n        const linkData = getImageLink(selectedIndex, entryPointsLinkData)\n\n        return linkData?.type && linkData?.value ? (\n            <ContentLink\n                key={selectedIndex}\n                rootStyles={linkStyles}\n                linkData={linkData}\n                contentMeta={contentMeta}\n            >\n                <EntryPointImageTemplate\n                    dataAuto=\"imgEntryPointsSmall\"\n                    ref={ref}\n                    controls={controls}\n                    image={image}\n                    data-testid={dataTestId}\n                    data-cs-override-id={dataCsOverrideId}\n                    qWidth={600} // we need to add a better value here\n                />\n            </ContentLink>\n        ) : (\n            <EntryPointImageTemplate\n                dataAuto=\"imgEntryPointsSmall\"\n                ref={ref}\n                controls={controls}\n                image={image}\n                data-testid={dataTestId}\n                data-cs-override-id={dataCsOverrideId}\n                qWidth={600} // we need to add a better value here\n            />\n        )\n    }\n)\n\nEntryPointsItemImage.propTypes = {\n    controls: PropTypes.object.isRequired,\n    image: PropTypes.shape({\n        src: PropTypes.string.isRequired,\n        alt: PropTypes.string.isRequired\n    }),\n    'data-testid': PropTypes.string,\n    selectedIndex: PropTypes.number,\n    entryPointsLinkData: PropTypes.array,\n    contentMeta: PropTypes.object,\n    linkStyles: PropTypes.object,\n    'data-cs-override-id': PropTypes.string\n}\n\nEntryPointsItemImage.displayName = 'EntryPointsItemImage'\n","import React, {forwardRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {EntryPointImageTemplate} from '../entry-points-image-template'\n\nexport const EntryPointsFixedImage = forwardRef(\n    ({controls, image, 'data-testid': dataTestId}, ref) => {\n        return (\n            <EntryPointImageTemplate\n                dataAuto=\"imgEntryPointsLarge\"\n                ref={ref}\n                controls={controls}\n                image={image}\n                data-testid={dataTestId}\n                qWidth={1000} // we need to add a better value here\n            />\n        )\n    }\n)\n\nEntryPointsFixedImage.displayName = 'EntryPointsFixedImage'\n\nEntryPointsFixedImage.propTypes = {\n    controls: PropTypes.object.isRequired,\n    image: PropTypes.shape({\n        src: PropTypes.string.isRequired,\n        alt: PropTypes.string.isRequired\n    }).isRequired,\n    'data-testid': PropTypes.string\n}\n","import {\n    Box,\n    GridItem,\n    Grid,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {useEntryPointsTile} from './use-entry-points-tile'\nimport {EntryPointsImageOverlay} from './partials/entry-points-images/entry-points-image-overlay/index'\nimport {EntryPointsItemImage} from './partials/entry-points-images/entry-points-item-image'\nimport {EntryPointsFixedImage} from './partials/entry-points-images/entry-points-fixed-image'\nimport {Assurance, ICON_VARIANTS} from 'pandora-shared-app/overrides/app/components/assurance'\nimport {isStorybook} from 'pandora-shared-app/overrides/app/utils/is-storybook'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'content/overrides/app/api_keys/ld-keys'\n\nconst isStorybookEnv = isStorybook()\n\nconst colSpanItems = 3\nconst colSpanFixedImage = {base: 0, md: 0, xl: 5}\nconst colStartFixedImage = {xl: 5}\nconst colSpanItemImage = 3\nconst colStartItemImage = {base: 4, md: 4, xl: 10}\n\nexport const EntryPointsTile = ({componentIndex = 0, active = false, ...rest}) => {\n    const {data} = rest\n    const kcpAssuranceText = data?.kcpAssurance?.text\n    const kcpAssuranceIcon = data?.kcpAssurance?.icon\n    const rawKCPTheme = data?.KCPTheme || ''\n    const isBlueSaleEnabled = useVariant(LD_KEYS.kcpEntryPointsBlueSaleTheme, true)\n    const isBlueSaleTheme =\n        typeof rawKCPTheme === 'string' && rawKCPTheme.toLowerCase().trim() === 'blue sale'\n    const KCPTheme = isBlueSaleTheme && !isBlueSaleEnabled ? 'sale' : rawKCPTheme\n    const isLightKCPTheme = isBlueSaleTheme && isBlueSaleEnabled\n    const assuranceIconColor = isLightKCPTheme ? 'black1' : 'white'\n\n    const styles = useMultiStyleConfig('EntryPointsTile', {KCPTheme})\n\n    const {\n        state: {isInView, selectedItemImage, isDesktop, selectedItemIndex},\n        refs: {desktopImageRef, selectedItemImageRef},\n        controls: {desktopImageControls, selectedItemImageControls},\n        components: {Items},\n        data: {desktopFixedImage, entryPointsItems, contentMeta}\n    } = useEntryPointsTile({\n        ...rest,\n        active,\n        itemsContainer: styles.itemsContainer,\n        KCPTheme,\n        componentIndex\n    })\n\n    const browserCompatibleHeight = {\n        minHeight: '95vh',\n        '@supports (height: 95svh)': {\n            minHeight: isStorybookEnv ? '650px' : '95svh'\n        }\n    }\n\n    return (\n        <div>\n            <Box\n                sx={{...styles.container, ...browserCompatibleHeight}}\n                data-auto={`div${KCPTheme ? 'KCP' : ''}EntryPoints`}\n                data-testid=\"EntryPoints\"\n            >\n                <Grid sx={styles.grid}>\n                    <GridItem colStart={1} colSpan={colSpanItems} sx={styles.itemsGridItem}>\n                        {Items}\n                        {kcpAssuranceText && (\n                            <Assurance\n                                text={kcpAssuranceText}\n                                icon={kcpAssuranceIcon}\n                                iconColor={assuranceIconColor}\n                                withDefaultText\n                                KCPTheme={KCPTheme}\n                                iconVariant={ICON_VARIANTS.PICTOGRAM}\n                            />\n                        )}\n                    </GridItem>\n                    {isDesktop && (\n                        <GridItem\n                            colSpan={colSpanFixedImage}\n                            colStart={colStartFixedImage}\n                            sx={styles.fixedImageGridItem}\n                        >\n                            <Box sx={styles.fixedImageContainer}>\n                                <EntryPointsImageOverlay\n                                    isInView={isInView}\n                                    data-testid=\"entry-points-image-overlay-desktop\"\n                                />\n                                <EntryPointsFixedImage\n                                    ref={desktopImageRef}\n                                    controls={desktopImageControls}\n                                    image={desktopFixedImage}\n                                    data-testid=\"entry-points-fixed-image\"\n                                />\n                            </Box>\n                        </GridItem>\n                    )}\n                    <GridItem\n                        colSpan={colSpanItemImage}\n                        colStart={colStartItemImage}\n                        sx={styles.itemImageGridItem}\n                    >\n                        <Box sx={styles.itemImageContainer}>\n                            <EntryPointsImageOverlay\n                                isInView={isInView}\n                                data-testid=\"entry-points-image-overlay\"\n                            />\n                            <EntryPointsItemImage\n                                selectedIndex={selectedItemIndex}\n                                entryPointsLinkData={entryPointsItems}\n                                contentMeta={contentMeta}\n                                linkStyles={styles.imageLinkStyles}\n                                ref={selectedItemImageRef}\n                                controls={selectedItemImageControls}\n                                image={selectedItemImage}\n                                data-testid=\"entry-points-item-image\"\n                                data-cs-override-id={`home_banner_image${componentIndex}${\n                                    KCPTheme ? '_KCP' : ''\n                                }`}\n                            />\n                        </Box>\n                    </GridItem>\n                </Grid>\n            </Box>\n        </div>\n    )\n}\n\nEntryPointsTile.displayName = 'EntryPointsTile'\nEntryPointsTile.propTypes = {\n    componentIndex: PropTypes.number,\n    active: PropTypes.bool\n}\n","import {useMemo} from 'react'\n\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {generateConsistentImageUrl} from 'pandora-shared-app/overrides/app/utils/media'\n\n/**\n * Hook that wraps generateConsistentImageUrl and reads the Aprimo DAM priority\n * feature flag automatically, so callers don't need to thread the flag value.\n *\n * @param {Object} imageData - CMS image data object (may contain both Amplience & Aprimo fields)\n * @param {string} imageKey - Breakpoint key (e.g. 'img', 'desktop', 'mobile')\n * @param {string} [aspectRatio] - Aspect ratio string (e.g. '3:4') or number\n * @param {number} [width] - Desired image width in pixels\n * @returns {{imageUrl: string|null, altText?: string, copyright?: Object}}\n */\nexport const useConsistentImageUrl = (imageData, imageKey, aspectRatio, width) => {\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n    return useMemo(\n        () => generateConsistentImageUrl(imageData, imageKey, aspectRatio, width, {aprimoPrimary}),\n        [imageData, imageKey, aspectRatio, width, aprimoPrimary]\n    )\n}\n","import {\n    Box,\n    AspectRatio,\n    Flex,\n    useMultiStyleConfig,\n    useBreakpointValue,\n    GridItem,\n    Text,\n    Grid\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport React, {useState, useMemo, useEffect, useContext} from 'react'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {getVideoDataDesktopPreferred} from 'pandora-shared-app/overrides/app/components/media/utils'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\nimport {useInView} from 'react-intersection-observer'\nimport {VideoPlayer} from 'pandora-shared-app/overrides/app/components/video-player'\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {\n    delayNone,\n    durationQuick2,\n    durationStandard2,\n    easeStandard,\n    easeStandardDecelerate\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {useLoadOnView} from '../../hooks/use-load-on-view'\nimport {DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION} from 'pandora-shared-app/overrides/app/utils/media'\nimport {useConsistentImageUrl} from 'pandora-shared-app/overrides/app/hooks/use-consistent-image-url'\nimport {AmplienceContext} from 'pandora-shared-app/overrides/app/contexts/amplience'\nimport {useSsrSafeAnimation} from 'pandora-shared-app/overrides/app/hooks/use-ssr-safe-animation'\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\n\nconst MotionBox = motion(Box)\n\nconst titleLinkTransition = {\n    ease: easeStandard,\n    duration: durationStandard2,\n    delay: delayNone\n}\n\nconst defaultTransition = {\n    ease: easeStandard,\n    duration: durationQuick2,\n    delay: delayNone\n}\n\nconst decelerateTransition = {\n    ease: easeStandardDecelerate,\n    duration: durationStandard2,\n    delay: delayNone\n}\n\nconst motionBoxTransitionConfig = {\n    opacity: {\n        ...defaultTransition\n    },\n    scale: decelerateTransition\n}\n\nconst initialMotionValues = {\n    opacity: 0,\n    scale: 1.05\n}\n\nconst titleLinkMotionInitial = {opacity: 0}\n\nconst buttonTestIds = {\n    playId: 'btnInsetModulePause',\n    muteId: 'btnInsetModuleAudio'\n}\n\nconst ASPECT_RATIO_STRING = '3:4'\n\n// Image branches are extracted into child components so useConsistentImageUrl\n// only runs when the branch is actually rendered (e.g. the large image hook is\n// skipped entirely when the tile renders a video).\nconst SmallImageCard = ({smallImage}) => {\n    const {imageUrl} =\n        useConsistentImageUrl(\n            smallImage,\n            'img',\n            ASPECT_RATIO_STRING,\n            DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MIN_WIDTH\n        ) || {}\n    return (\n        <Box position={'relative'}>\n            <AspectRatio ratio={8 / 9} mt={4}>\n                <ImageCard\n                    src={imageUrl}\n                    alt={smallImage?.imageAltText}\n                    copyright={smallImage?.copyright}\n                    qWidth={DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MIN_WIDTH}\n                    aspectRatio={8 / 9}\n                />\n            </AspectRatio>\n        </Box>\n    )\n}\n\nSmallImageCard.propTypes = {\n    smallImage: PropTypes.object.isRequired\n}\n\nconst LargeImageCard = ({largeMedia, containerStyles}) => {\n    const {imageUrl} = useConsistentImageUrl(largeMedia, 'img', ASPECT_RATIO_STRING) || {}\n    return (\n        <Box sx={containerStyles}>\n            <ImageCard\n                src={imageUrl}\n                alt={largeMedia?.imageAltText}\n                copyright={largeMedia?.copyright}\n                aspectRatio={8 / 9}\n            />\n        </Box>\n    )\n}\n\nLargeImageCard.propTypes = {\n    largeMedia: PropTypes.object.isRequired,\n    containerStyles: PropTypes.object\n}\n\nexport const InsetMediaTile = ({data, active, isInView, componentIndex = 0}) => {\n    const {collabLogo, smallImage, largeMedia, title, link, _meta} = data\n    const isMobile = useBreakpointValue({base: false, sm: true})\n    const styles = useMultiStyleConfig('InsetMediaTile')\n\n    const hasLoaded = useLoadOnView(isInView)\n    const [hasAnimated, setHasAnimated] = useState(false)\n\n    const {contentId} = useContext(AmplienceContext)\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const resolvedVideo = useMemo(() => {\n        // Map largeMedia fields to the shape getVideoDataDesktopPreferred expects\n        const videoMedia = {\n            desktopVideo: largeMedia?.video || undefined,\n            aprimoVideo: largeMedia?.aprimoVideo || undefined\n        }\n        const resolved = getVideoDataDesktopPreferred(videoMedia, {aprimoPrimary})\n        if (!resolved) return null\n\n        // Flatten aprimoData to top level for VideoPlayer\n        const aprimoData = resolved?.aprimoData\n        const video = aprimoData?.cdnUrl\n            ? {cdnUrl: aprimoData.cdnUrl, thumbnail: aprimoData.thumbnail}\n            : resolved\n        if (largeMedia?.copyright) {\n            return {...video, copyright: largeMedia.copyright}\n        }\n        return video\n    }, [largeMedia, aprimoPrimary])\n\n    // Intersection observer for 20% of the element\n    const {ref, inView} = useInView({\n        threshold: 0.2,\n        triggerOnce: true\n    })\n\n    const titleLinkMotionAnimate = useMemo(() => isInView && {opacity: 1}, [isInView])\n\n    const animateMotionValues = useMemo(() => {\n        const values = {\n            opacity: contentId ? 1 : 0,\n            scale: contentId ? 1 : 1.05\n        }\n        if (inView && !active) {\n            values.opacity = 0.5\n            values.scale = 1.0\n        }\n        if (active && inView) {\n            values.opacity = 1\n            values.scale = 1.0\n        }\n        return values\n    }, [inView, active, contentId])\n\n    // Separate style values when animation is complete\n    const staticStyles = useMemo(() => {\n        let opacity = 0\n        if (inView && !active) {\n            opacity = 0.5\n        }\n        if (active && inView) {\n            opacity = 1\n        }\n        return {\n            opacity,\n            scale: 1.0\n        }\n    }, [inView, active])\n\n    useEffect(() => {\n        if (active) {\n            setHasAnimated(true)\n        }\n    }, [active])\n\n    return (\n        <Box\n            data-testid={'inset-media-tile'}\n            data-auto=\"divInsetModule\"\n            sx={styles.container}\n            data-cs-override-id={`homepage_inset_module${componentIndex}`}\n        >\n            <ContentLink\n                rootStyles={styles.contentLinkContainer}\n                linkData={link}\n                contentMeta={_meta}\n                variant=\"none\"\n            >\n                <Grid sx={styles.grid} data-test=\"first-grid\">\n                    <GridItem colSpan={{base: 4, xl: 6}} colStart={{base: 2, xl: 1}} h={'full'}>\n                        <Flex sx={styles.flexContent} data-test=\"first-flex\">\n                            <motion.div\n                                initial={useSsrSafeAnimation(titleLinkMotionInitial)}\n                                animate={titleLinkMotionAnimate}\n                                transition={titleLinkTransition}\n                            >\n                                {collabLogo && (\n                                    <CollaborationLogo\n                                        data-testid=\"collaboration-logo\"\n                                        collabLogo={collabLogo}\n                                        mb={8}\n                                    />\n                                )}\n                                {title && (\n                                    <Text\n                                        data-auto=\"lblInsetModuleTitle\"\n                                        textStyle=\"headingSm\"\n                                        paddingBottom={4}\n                                    >\n                                        {title}\n                                    </Text>\n                                )}\n                                <ContentLink\n                                    data-auto=\"btnInsetModuleLink\"\n                                    rootStyles={styles?.link}\n                                    linkData={link}\n                                    contentMeta={_meta}\n                                    stopPropagation={true}\n                                    data-cs-override-id={`homepage_inset_module_link${componentIndex}`}\n                                />\n                            </motion.div>\n                            {hasLoaded && <SmallImageCard smallImage={smallImage} />}\n                        </Flex>\n                    </GridItem>\n                    <Box sx={styles.largeMediaBox}>\n                        <MotionBox\n                            ref={ref}\n                            data-testid=\"motion-box\"\n                            sx={styles.largeMediaMotionBox}\n                            initial={useSsrSafeAnimation(initialMotionValues)}\n                            animate={!hasAnimated ? animateMotionValues : staticStyles}\n                            transition={motionBoxTransitionConfig}\n                        >\n                            {(largeMedia?.mediaType === 'video' || largeMedia?.isVideo) &&\n                            resolvedVideo ? (\n                                <VideoPlayer\n                                    data-testid=\"video-player\"\n                                    data-auto=\"divInsetModuleMedia\"\n                                    video={resolvedVideo}\n                                    active={active}\n                                    isMobile={isMobile}\n                                    buttonTestIds={buttonTestIds}\n                                />\n                            ) : (\n                                <LargeImageCard\n                                    largeMedia={largeMedia}\n                                    containerStyles={styles?.imageContainer}\n                                />\n                            )}\n                        </MotionBox>\n                    </Box>\n                </Grid>\n            </ContentLink>\n        </Box>\n    )\n}\n\nInsetMediaTile.propTypes = {\n    data: PropTypes.shape({\n        smallImage: PropTypes.object.isRequired,\n        largeMedia: PropTypes.object.isRequired,\n        title: PropTypes.string.isRequired,\n        link: PropTypes.object.isRequired,\n        collabLogo: PropTypes.string,\n        _meta: PropTypes.shape({\n            deliveryId: PropTypes.string,\n            name: PropTypes.string,\n            schema: PropTypes.string\n        })\n    }).isRequired,\n    active: PropTypes.bool,\n    isInView: PropTypes.bool,\n    componentIndex: PropTypes.number\n}\n","import React, {useMemo} from 'react'\nimport {Text, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks'\nimport {useMFERegistry} from 'pandora-shared-app/overrides/app/contexts/mfe-registry'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nimport {ContentPromoMessage} from 'content/overrides/app/components/shared/content-promo-message'\n\nexport const PromoTileTexts = ({\n    label,\n    heading,\n    description,\n    link,\n    stylingStudio,\n    promoVariant,\n    styles,\n    _meta,\n    componentIndex,\n    modulePage,\n    tabName\n}) => {\n    const {link: tealiumLink} = useTealium()\n    const {locale} = useMultiSite()\n    const enableBraceletEditorPLP = useVariant(LD_KEYS.enableBraceletEditorPLP, false)\n    const isStudioTile = Boolean(\n        stylingStudio && typeof stylingStudio === 'string' && stylingStudio.length > 0\n    )\n\n    const productIDs = useMemo(\n        () =>\n            isStudioTile\n                ? stylingStudio\n                      .split(',')\n                      .map((s) => s.trim())\n                      .filter(Boolean)\n                : [],\n        [isStudioTile, stylingStudio]\n    )\n\n    // Register the bracelet-editor MFE so window.pcp.braceletEditor is available on\n    // PLP/content pages where this tile renders (the PDP registers it separately).\n    useMFERegistry(\n        'braceletEditor',\n        {\n            remoteApp: 'braceletEditor',\n            remoteComponentId: 'BraceletEditor',\n            remoteAppId: 'braceletEditor',\n            productId: productIDs[0],\n            locale\n        },\n        enableBraceletEditorPLP && isStudioTile\n    )\n\n    const handleBraceletEditorDrawer = (event) => {\n        event.preventDefault()\n        tealiumLink({estore_event: 'button_clicked', button_id: 'styling_studio_open_plp'})\n        window?.pcp?.braceletEditor?.showModal({productIDs})\n    }\n\n    return (\n        <Box>\n            <ContentPromoMessage\n                label={label}\n                variant={promoVariant}\n                marginBottom={4}\n                dataAuto=\"lblPromoInsetModuleLabel\"\n            />\n            {heading && (\n                <Text\n                    sx={styles.heading}\n                    textStyle={{base: 'headingMd', lg: 'headingLg'}}\n                    data-auto=\"lblPromoInsetModuleTitle\"\n                >\n                    {heading}\n                </Text>\n            )}\n            <Box>\n                {description && (\n                    <Text\n                        data-auto=\"lblPromoInsetModuleDescription\"\n                        textStyle=\"bodySm\"\n                        sx={styles.description}\n                    >\n                        {parseDescription(description, _meta)}\n                    </Text>\n                )}\n            </Box>\n            {isStudioTile && link && (\n                <ContentLink\n                    data-auto=\"btnPromoInsetModuleLink\"\n                    rootStyles={styles?.link}\n                    linkData={link}\n                    contentMeta={_meta}\n                    customClickHandler={handleBraceletEditorDrawer}\n                />\n            )}\n            {!isStudioTile && link && (\n                <ContentLink\n                    data-auto=\"btnPromoInsetModuleLink\"\n                    data-cs-override-id={`${modulePage}${\n                        tabName ? `_${tabName}` : ''\n                    }_promo_link${componentIndex}`}\n                    rootStyles={styles?.link}\n                    linkData={link}\n                    contentMeta={_meta}\n                />\n            )}\n        </Box>\n    )\n}\n\nconst parseDescription = (description, _meta) => {\n    const linkRegex = /\\[([^[\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)(?:\\s+\"[^\"]*\")?\\)/g\n    const parts = []\n    let lastIndex = 0\n    let match\n\n    while ((match = linkRegex.exec(description)) !== null) {\n        // Push the text before the link\n        if (match.index > lastIndex) {\n            parts.push(description.substring(lastIndex, match.index))\n        }\n\n        // Extract the URL and ensure it has a proper scheme\n        let url = match[2]?.trim()\n\n        const linkData = {\n            value: url,\n            target: true,\n            type: 'url',\n            text: match?.[1]\n        }\n\n        parts.push(\n            <ContentLink\n                key={match.index}\n                linkData={linkData}\n                contentMeta={_meta}\n                data-auto=\"linkPromoInsetTileDescription\"\n                rel=\"noopener noreferrer\"\n            />\n        )\n        lastIndex = linkRegex.lastIndex\n    }\n\n    // Push any remaining text after the last link\n    if (lastIndex < description.length) {\n        parts.push(description.substring(lastIndex))\n    }\n\n    return parts\n}\n\nPromoTileTexts.propTypes = {\n    label: PropTypes.string,\n    heading: PropTypes.string,\n    description: PropTypes.string,\n    promoVariant: PropTypes.string,\n    link: PropTypes.shape({\n        type: PropTypes.string,\n        text: PropTypes.string,\n        target: PropTypes.bool,\n        value: PropTypes.string\n    }),\n    stylingStudio: PropTypes.string,\n    styles: PropTypes.object,\n    _meta: PropTypes.object,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string\n}\n","import {Box, useMultiStyleConfig, Skeleton, AspectRatio} from '@chakra-ui/react'\nimport {Grid, GridItem} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\nimport {\n    DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION,\n    generateConsistentImageUrl\n} from 'pandora-shared-app/overrides/app/utils/media'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\nimport {PromoTileTexts} from './partials/promo-tile-texts'\nimport {Autoplay} from 'swiper/modules'\nimport {\n    delayStandard2,\n    durationStandard1,\n    easeStandard\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {v4 as uuidv4} from 'uuid'\nimport {useIntersectionObserver} from 'pandora-shared-app/overrides/app/hooks'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Grid layout for the full-width variant (default): on desktop the text and\n// image sit side by side within a 12-column grid.\nexport const FULL_WIDTH_LAYOUT = {\n    gridTemplateColumns: {base: 'repeat(6, 1fr)', xl: 'repeat(12, 1fr)'},\n    textColSpan: {base: 6, md: 4, xl: 5},\n    textColStart: {base: 1, md: 2, xl: 7},\n    imageColSpan: {base: 6, md: 4, xl: 4},\n    imageColStart: {base: 1, md: 2, xl: 2},\n    textOrder: {base: 1, xl: 2},\n    imageOrder: {base: 2, xl: 1}\n}\n\n// Grid layout for the half-width in-grid variant (2 product cards wide on\n// desktop, INS-4948): a 6-column grid with the first and last columns left\n// empty, so the title/text and picture stack within the middle 4 columns.\n// Mobile stays full width (all 6 columns), matching the full-width variant.\n// On desktop the text sits below the image (INS-5249); mobile keeps text first.\nexport const HALF_WIDTH_LAYOUT = {\n    gridTemplateColumns: 'repeat(6, 1fr)',\n    textColSpan: {base: 6, xl: 4},\n    textColStart: {base: 1, xl: 2},\n    imageColSpan: {base: 6, xl: 4},\n    imageColStart: {base: 1, xl: 2},\n    textOrder: {base: 1, xl: 2},\n    imageOrder: {base: 2, xl: 1}\n}\n\nconst swiperModules = [Autoplay]\n\nconst ASPECT_RATIO_STRING = '3:4'\n\nexport const PromoInsetTile = ({\n    data,\n    componentIndex = 0,\n    modulePage = '',\n    tabName = '',\n    isInGrid = false,\n    isHalfWidthInGrid = false\n}) => {\n    const {\n        promoVariantBlock: {promoMessage: label = '', promoVariant = ''} = {},\n        heading,\n        description,\n        link,\n        stylingStudio,\n        productImagesCarousel,\n        _meta,\n        context\n    } = data\n    const [promoTileRef, isIntersecting] = useIntersectionObserver({threshold: 0.5})\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const isFullWidth = !(isInGrid && isHalfWidthInGrid)\n    const layout = isFullWidth ? FULL_WIDTH_LAYOUT : HALF_WIDTH_LAYOUT\n\n    const styles = useMultiStyleConfig('PromoInsetTile', {promoVariant, context, isFullWidth})\n\n    const prepSlides = useMemo(() => {\n        return productImagesCarousel\n            .map((slide) => {\n                const {imageUrl} =\n                    generateConsistentImageUrl(slide, 'img', ASPECT_RATIO_STRING, undefined, {\n                        aprimoPrimary\n                    }) || {}\n                if (!imageUrl) return null\n\n                return {\n                    id: uuidv4(),\n                    url: imageUrl,\n                    alt: slide.imageAltText,\n                    copyright: slide.copyright\n                }\n            })\n            .filter(Boolean)\n    }, [productImagesCarousel, aprimoPrimary])\n\n    const autoPlayConfig = useMemo(\n        () => ({\n            disableOnInteraction: false,\n            delay: 3000,\n            pauseOnMouseEnter: true\n        }),\n        []\n    )\n\n    const transitionProps = {\n        transitionConfig: {\n            opacity: {\n                ease: easeStandard,\n                duration: durationStandard1,\n                delay: delayStandard2\n            }\n        },\n        initialMotionValues: {opacity: 0},\n        animateMotionValues: {opacity: 1}\n    }\n\n    const memoizedSwiperModules = useMemo(() => swiperModules, [])\n\n    const renderSlide = (slide, index) => (\n        <ImageCard\n            src={slide?.url}\n            alt={slide?.alt || `slide-${index}`}\n            copyright={slide?.copyright}\n            aspectRatio={3 / 4}\n            lazyLoadHeight={200}\n            lazyLoadOffset={100}\n            qWidth={DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MIN_WIDTH}\n        />\n    )\n\n    return (\n        <Box\n            ref={promoTileRef}\n            data-testid={'promo-inset-media-tile'}\n            data-auto=\"divPromoInsetModule\"\n            data-is-in-grid={String(Boolean(isInGrid))}\n            data-is-half-width-in-grid={String(Boolean(isHalfWidthInGrid))}\n            data-is-full-width-in-grid={String(Boolean(isFullWidth))}\n            sx={styles.container}\n        >\n            <Grid\n                sx={styles.grid}\n                data-test=\"first-grid\"\n                templateColumns={layout.gridTemplateColumns}\n                alignItems=\"center\"\n            >\n                <GridItem\n                    colSpan={layout.textColSpan}\n                    colStart={layout.textColStart}\n                    order={layout.textOrder}\n                >\n                    <PromoTileTexts\n                        promoVariant={promoVariant}\n                        label={label}\n                        heading={heading}\n                        description={description}\n                        link={link}\n                        stylingStudio={stylingStudio}\n                        styles={styles}\n                        _meta={_meta}\n                        componentIndex={componentIndex}\n                        modulePage={modulePage}\n                        tabName={tabName}\n                    />\n                </GridItem>\n\n                <GridItem\n                    colSpan={layout.imageColSpan}\n                    colStart={layout.imageColStart}\n                    order={layout.imageOrder}\n                >\n                    <ContentLink\n                        rootStyles={styles?.contentLinkContainer}\n                        linkData={link}\n                        contentMeta={_meta}\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_promo_carousel${componentIndex}`}\n                    >\n                        {isServer ? (\n                            <AspectRatio ratio={3 / 4} width=\"100%\">\n                                <Skeleton\n                                    data-testid=\"skeleton\"\n                                    width=\"100%\"\n                                    height=\"100%\"\n                                    startColor=\"#e2e8f0\"\n                                    endColor=\"#f7fafc\"\n                                />\n                            </AspectRatio>\n                        ) : (\n                            <Carousel\n                                modules={memoizedSwiperModules}\n                                slides={prepSlides}\n                                data-auto=\"imgPromoInsetModule\"\n                                data-testid=\"carousel\"\n                                data-intersecting={isIntersecting}\n                                renderSlide={renderSlide}\n                                onSwiper={(swiper) => {\n                                    swiper.autoplay.start()\n                                }}\n                                autoPlay={autoPlayConfig}\n                                showControls={false}\n                                showPlayPause={Object.keys(prepSlides).length > 1}\n                                loop={Object.keys(prepSlides).length > 1}\n                                isIntersecting={isIntersecting}\n                                spaceBetween={'10%'}\n                                animatedCarousel={true}\n                                animatedCarouselTransitions={transitionProps}\n                            />\n                        )}\n                    </ContentLink>\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n}\n\nPromoInsetTile.propTypes = {\n    data: PropTypes.shape({\n        promoVariantBlock: PropTypes.shape({\n            promoMessage: PropTypes.string,\n            promoVariant: PropTypes.string\n        }),\n        heading: PropTypes.string,\n        description: PropTypes.string,\n        link: PropTypes.shape({\n            type: PropTypes.string,\n            text: PropTypes.string,\n            target: PropTypes.bool,\n            value: PropTypes.string\n        }),\n        stylingStudio: PropTypes.string,\n        productImagesCarousel: PropTypes.arrayOf(\n            PropTypes.shape({\n                img: PropTypes.shape({\n                    diImage: PropTypes.shape({\n                        image: PropTypes.shape({\n                            _meta: PropTypes.shape({\n                                schema: PropTypes.string\n                            }),\n                            id: PropTypes.string,\n                            name: PropTypes.string,\n                            endpoint: PropTypes.string,\n                            defaultHost: PropTypes.string,\n                            mimeType: PropTypes.string\n                        })\n                    })\n                }),\n                imageAltText: PropTypes.string,\n                copyright: PropTypes.shape({\n                    color: PropTypes.string,\n                    text: PropTypes.string\n                })\n            })\n        ),\n        _meta: PropTypes.object,\n        context: PropTypes.string\n    }),\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    isInGrid: PropTypes.bool,\n    isHalfWidthInGrid: PropTypes.bool\n}\n","import React, {useMemo} from 'react'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {CopyrightText} from 'pandora-shared-app/overrides/app/components/copyright-text'\nimport {Helmet} from 'react-helmet'\n\nimport PropTypes from 'prop-types'\nimport {\n    BREAKPOINT_VALUES,\n    getPageCoverImageUrls\n} from 'pandora-shared-app/overrides/app/utils/page-cover'\nimport {\n    generateConsistentImageUrl,\n    DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION\n} from 'pandora-shared-app/overrides/app/utils/media'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// FIND-6627 LCP hero: real responsive <picture>/<img fetchPriority=\"high\" loading=\"eager\">.\nconst PageCoverLcp = ({data}) => {\n    const styles = useMultiStyleConfig('PageCover')\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const image = data?.image\n\n    // Single source of truth for the hero URLs — the layout-level PageCoverPreload uses the\n    // same util, so the preloaded URL matches the rendered one and only one image is fetched.\n    const imageUrls = useMemo(\n        () => (image ? getPageCoverImageUrls(image, {aprimoPrimary}) : []),\n        [image, aprimoPrimary]\n    )\n\n    if (!image) return null\n\n    const sources = imageUrls.filter((entry) => entry.imageUrl)\n    // The desktop crop is the <img> fallback; mobile/tablet are provided as <source> art direction.\n    const desktopEntry = sources.find((entry) => entry.screenSize === 'desktop')\n    const fallbackEntry = desktopEntry || sources[sources.length - 1]\n    const artDirectionSources = sources.filter((entry) => entry.screenSize !== 'desktop')\n\n    const altText = image?.imageAltText\n    const copyright = image?.copyright\n\n    const containerStyle = {\n        width: '100%',\n        height: '100%',\n        aspectRatio: {\n            base: BREAKPOINT_VALUES.sm.aspectRatio, // Mobile: 3/4\n            md: BREAKPOINT_VALUES.md.aspectRatio, // Tablet: 4/5\n            xl: BREAKPOINT_VALUES.xl.aspectRatio // Desktop: 5/2\n        },\n        position: 'relative'\n    }\n\n    return (\n        <Box\n            sx={styles.container}\n            data-auto=\"divPLPPageCoverImage\"\n            data-testid=\"page-cover-box\"\n            data-cs-override-id=\"PLP_page_cover\"\n        >\n            <Box sx={containerStyle}>\n                {fallbackEntry?.imageUrl && (\n                    <picture>\n                        {artDirectionSources.map((entry) => (\n                            <source\n                                key={entry.screenSize}\n                                media={entry.media}\n                                srcSet={entry.imageUrl}\n                            />\n                        ))}\n                        <Box\n                            as=\"img\"\n                            sx={styles.image}\n                            src={fallbackEntry.imageUrl}\n                            alt={altText || ''}\n                            data-auto=\"imgPLPPageCoverImage\"\n                            data-testid=\"imgPLPPageCoverImageImage\"\n                            fetchPriority=\"high\"\n                            loading=\"eager\"\n                            decoding=\"async\"\n                        />\n                    </picture>\n                )}\n\n                {copyright?.text && (\n                    <Box position=\"absolute\" bottom={0} left={0} right={0}>\n                        <CopyrightText dataAuto=\"imgPLPPageCoverImage\" {...copyright} />\n                    </Box>\n                )}\n            </Box>\n        </Box>\n    )\n}\n\nPageCoverLcp.propTypes = {\n    data: PropTypes.shape({image: PropTypes.object})\n}\n\n// -----------------------------------------------------------------------------\n// Legacy pre-FIND-6627 behaviour, preserved for the flag-OFF path so the rollout\n// can be reverted 1:1 without a redeploy. Do not \"improve\" this branch.\n// -----------------------------------------------------------------------------\nconst LEGACY_BREAKPOINT_VALUES = {\n    sm: {\n        screenSize: 'mobile',\n        aspectRatio: 3 / 4,\n        aspectRatioString: '3:4',\n        imageKey: 'mobile',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE\n    },\n    md: {\n        screenSize: 'tablet',\n        aspectRatio: 4 / 5,\n        aspectRatioString: '4:5',\n        imageKey: 'mobile',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET\n    },\n    xl: {\n        screenSize: 'desktop',\n        aspectRatio: 5 / 2,\n        aspectRatioString: '5:2',\n        imageKey: 'desktop',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n    }\n}\n\n// URL sanitization to prevent XSS in CSS injection\nconst sanitizeUrlForCSS = (url) => {\n    if (!url || typeof url !== 'string') return null\n    return url.replace(/['\"\\\\()]/g, '').trim()\n}\n\n// Original PageCover `image` style (background-image based). FIND-6627 repurposed the shared\n// `styles.image` theme slot to objectFit for the <img>, which does not apply to a background\n// <div>. The legacy path keeps its own background-cover style so flag-OFF is byte-for-byte.\nconst LEGACY_IMAGE_STYLE = {\n    width: '100%',\n    height: '100%',\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    backgroundSize: 'cover',\n    backgroundPosition: 'center center',\n    backgroundRepeat: 'no-repeat'\n}\n\nconst PageCoverLegacy = ({data}) => {\n    const styles = useMultiStyleConfig('PageCover')\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const imageClassName = 'page-cover-responsive'\n\n    const imageUrls = useMemo(() => {\n        if (!data.image) return null\n\n        const flagOpts = {aprimoPrimary}\n        const urls = {}\n\n        // Generate mobile image URL\n        try {\n            urls.mobile = generateConsistentImageUrl(\n                data.image,\n                LEGACY_BREAKPOINT_VALUES.sm.imageKey,\n                LEGACY_BREAKPOINT_VALUES.sm.aspectRatioString,\n                LEGACY_BREAKPOINT_VALUES.sm.width,\n                flagOpts\n            )\n        } catch (error) {\n            console.warn('Failed to generate mobile image URL:', error.message)\n            urls.mobile = null\n        }\n\n        // Generate tablet image URL\n        try {\n            urls.tablet = generateConsistentImageUrl(\n                data.image,\n                LEGACY_BREAKPOINT_VALUES.md.imageKey,\n                LEGACY_BREAKPOINT_VALUES.md.aspectRatioString,\n                LEGACY_BREAKPOINT_VALUES.md.width,\n                flagOpts\n            )\n        } catch (error) {\n            console.warn('Failed to generate tablet image URL:', error.message)\n            urls.tablet = null\n        }\n\n        // Generate desktop image URL\n        try {\n            urls.desktop = generateConsistentImageUrl(\n                data.image,\n                LEGACY_BREAKPOINT_VALUES.xl.imageKey,\n                LEGACY_BREAKPOINT_VALUES.xl.aspectRatioString,\n                LEGACY_BREAKPOINT_VALUES.xl.width,\n                flagOpts\n            )\n        } catch (error) {\n            console.warn('Failed to generate desktop image URL:', error.message)\n            urls.desktop = null\n        }\n\n        return urls\n    }, [data.image, aprimoPrimary])\n\n    const responsiveCSS = useMemo(() => {\n        const mobileUrl = sanitizeUrlForCSS(imageUrls?.mobile?.imageUrl)\n        const tabletUrl = sanitizeUrlForCSS(imageUrls?.tablet?.imageUrl)\n        const desktopUrl = sanitizeUrlForCSS(imageUrls?.desktop?.imageUrl)\n\n        return `\n            /* Mobile-first default */\n            .${imageClassName} {\n                background-image: ${mobileUrl ? `url(\"${mobileUrl}\")` : 'none'};\n            }\n\n            /* Tablet breakpoint */\n            @media (min-width: 768px) and (max-width: 1199px) {\n                .${imageClassName} {\n                    background-image: ${tabletUrl ? `url(\"${tabletUrl}\")` : 'none'};\n                }\n            }\n\n            /* Desktop breakpoint */\n            @media (min-width: 1200px) {\n                .${imageClassName} {\n                    background-image: ${desktopUrl ? `url(\"${desktopUrl}\")` : 'none'};\n                }\n            }\n        `\n    }, [\n        imageClassName,\n        imageUrls?.mobile?.imageUrl,\n        imageUrls?.tablet?.imageUrl,\n        imageUrls?.desktop?.imageUrl\n    ])\n\n    if (!data.image) return null\n\n    const altText = data.image?.imageAltText\n    const copyright = data.image?.copyright\n\n    const containerStyle = {\n        width: '100%',\n        height: '100%',\n        aspectRatio: {\n            base: LEGACY_BREAKPOINT_VALUES.sm.aspectRatio, // Mobile: 3/4\n            md: LEGACY_BREAKPOINT_VALUES.md.aspectRatio, // Tablet: 4/5\n            xl: LEGACY_BREAKPOINT_VALUES.xl.aspectRatio // Desktop: 5/2\n        },\n        position: 'relative'\n    }\n\n    return (\n        <>\n            {/* Mobile-first preload for LCP optimization */}\n            <Helmet>\n                {imageUrls?.mobile?.imageUrl && (\n                    <link\n                        rel=\"preload\"\n                        as=\"image\"\n                        href={imageUrls.mobile.imageUrl}\n                        fetchPriority=\"high\"\n                    />\n                )}\n            </Helmet>\n\n            <Box\n                sx={styles.container}\n                data-auto=\"divPLPPageCoverImage\"\n                data-testid=\"page-cover-box\"\n                data-cs-override-id=\"PLP_page_cover\"\n            >\n                {/* Inject responsive CSS with sanitized URLs */}\n                <style dangerouslySetInnerHTML={{__html: responsiveCSS}} />\n\n                <Box sx={containerStyle}>\n                    <Box\n                        className={imageClassName}\n                        sx={LEGACY_IMAGE_STYLE}\n                        aria-label={altText || 'Page cover image'}\n                        data-auto=\"imgPLPPageCoverImage\"\n                        data-testid=\"imgPLPPageCoverImageImage\"\n                    />\n\n                    {copyright?.text && (\n                        <Box position=\"absolute\" bottom={0} left={0} right={0}>\n                            <CopyrightText dataAuto=\"imgPLPPageCoverImage\" {...copyright} />\n                        </Box>\n                    )}\n                </Box>\n            </Box>\n        </>\n    )\n}\n\nPageCoverLegacy.propTypes = {\n    data: PropTypes.shape({image: PropTypes.object})\n}\n\nexport const PageCover = ({data}) => {\n    // FIND-6627 rollout flag. OFF = legacy behaviour (byte-for-byte), ON = LCP hero.\n    const enablePlpHeroLcp = useVariant(LD_KEYS.enablePlpHeroLcp, false)\n\n    return enablePlpHeroLcp ? <PageCoverLcp data={data} /> : <PageCoverLegacy data={data} />\n}\n\nPageCover.propTypes = {\n    data: PropTypes.shape({\n        image: PropTypes.shape({\n            mobile: PropTypes.object.isRequired,\n            desktop: PropTypes.object.isRequired,\n            imageAltText: PropTypes.string,\n            copyright: PropTypes.shape({\n                text: PropTypes.string,\n                color: PropTypes.string\n            }).isRequired\n        }).isRequired\n    }).isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    useMultiStyleConfig,\n    Text,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const Description = ({rootStyles, description, textStyle, dataAuto, ...rest}) => {\n    const styles = useMultiStyleConfig('Description')\n    const isSmallScreen = useBreakpointValue({base: true, xl: false})\n    const textStyleDefault = isSmallScreen ? 'bodySm' : 'bodyLg'\n    const textStyleValue = textStyle ?? textStyleDefault\n\n    const combinedStyles = {\n        ...styles.container,\n        ...rootStyles\n    }\n\n    return (\n        <Text\n            {...combinedStyles}\n            textStyle={textStyleValue}\n            data-auto={`lbl${dataAuto || ''}Description`}\n            {...rest}\n        >\n            {description}\n        </Text>\n    )\n}\n\nDescription.propTypes = {\n    rootStyles: PropTypes.object,\n    description: PropTypes.string,\n    textStyle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    dataAuto: PropTypes.string\n}\n\nDescription.displayName = 'Description'\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Box,\n    Grid,\n    GridItem,\n    useMultiStyleConfig,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {VideoPlayer} from 'pandora-shared-app/overrides/app/components/video-player'\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {Description} from 'pandora-shared-app/overrides/app/components/description'\n\nexport const FeatureVideo = ({\n    data,\n    active,\n    componentIndex = 0,\n    isHalfWidthInGrid = false,\n    isInGrid = false\n}) => {\n    const isFullWidthInGrid = isInGrid && !isHalfWidthInGrid\n    const styles = useMultiStyleConfig('FeatureVideo', {isHalfWidthInGrid, isInGrid})\n    const isDesktop = useBreakpointValue({base: false, xl: true})\n    const aspectRatio = useBreakpointValue({base: 3 / 4, xl: isHalfWidthInGrid ? 3 / 4 : 16 / 9})\n\n    const videoData =\n        isDesktop && !isHalfWidthInGrid\n            ? {\n                  ...(data?.video?.desktop || data?.video?.mobile),\n                  ...(data?.video?.copyright && {copyright: data?.video?.copyright})\n              }\n            : {\n                  ...(data?.video?.mobile || data?.video?.desktop),\n                  ...(data?.video?.copyright && {copyright: data?.video?.copyright})\n              }\n\n    const description = data?.description\n    const linkData = {\n        value: data?.link?.value,\n        text: data?.link?.text,\n        target: data?.link?.target,\n        type: data?.link?.type\n    }\n\n    const controlWrapperPosition = useMemo(\n        () => ({\n            bottom: 0,\n            right: 0\n        }),\n        []\n    )\n\n    const colSpanValue = useMemo(\n        () => (isHalfWidthInGrid ? {base: 6, xl: 4} : {base: 6, lg: 5}),\n        [isHalfWidthInGrid]\n    )\n    const colStartValue = useMemo(\n        () => (isHalfWidthInGrid ? {base: 1, xl: 2} : undefined),\n        [isHalfWidthInGrid]\n    )\n\n    return (\n        <Box\n            {...styles?.container}\n            data-testid=\"feature-video-container\"\n            data-auto=\"divFeatureVideo\"\n            data-is-in-grid={String(Boolean(isInGrid))}\n            data-is-half-width-in-grid={String(Boolean(isHalfWidthInGrid))}\n            data-is-full-width-in-grid={String(Boolean(isFullWidthInGrid))}\n        >\n            <Box\n                {...styles.videoContainer}\n                data-cs-override-id={`PLP_discover_video${componentIndex}`}\n            >\n                <VideoPlayer\n                    video={videoData}\n                    isMobile={!isDesktop}\n                    active={active ?? true}\n                    controlWrapperPosition={controlWrapperPosition}\n                    copyrightTextPosition={'plp-video-controller-right'}\n                    aspectRatio={aspectRatio}\n                    dataCsOverrideId={`PLP_discover_video_buttons${componentIndex}`}\n                />\n            </Box>\n\n            <Grid {...styles?.descriptionGrid}>\n                <GridItem\n                    colSpan={colSpanValue}\n                    {...(colStartValue ? {colStart: colStartValue} : {})}\n                    {...styles?.descriptionContainer}\n                >\n                    {data?.collabLogo && (\n                        <Box {...styles.collabLogoContainer}>\n                            <CollaborationLogo\n                                data-testid=\"FeatureVideo-collaboration-logo\"\n                                collabLogo={data?.collabLogo}\n                                data-auto=\"lblFeatureVideoCollab\"\n                            />\n                        </Box>\n                    )}\n                    {description && (\n                        <Description\n                            description={description}\n                            data-auto=\"lblFeatureVideoCaption\"\n                            textStyle=\"bodySm\"\n                            componentIndex={componentIndex}\n                            data-cs-override-id={`PLP_discover_video_description${componentIndex}`}\n                        />\n                    )}\n\n                    <ContentLink\n                        data-cs-override-id={`PLP_discover_video_link${componentIndex}`}\n                        rootStyles={styles.link}\n                        linkData={linkData}\n                        contentMeta={data?._meta}\n                        data-auto=\"lblFeatureVideoLink\"\n                    />\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n}\n\nFeatureVideo.propTypes = {\n    data: PropTypes.shape({\n        video: PropTypes.shape({\n            desktop: PropTypes.object,\n            mobile: PropTypes.object,\n            copyright: PropTypes.shape({\n                color: PropTypes.string,\n                text: PropTypes.string\n            }).isRequired\n        }).isRequired,\n        description: PropTypes.string,\n        link: PropTypes.shape({\n            type: PropTypes.string.isRequired,\n            text: PropTypes.string,\n            target: PropTypes.bool,\n            value: PropTypes.string.isRequired\n        }),\n        collabLogo: PropTypes.string,\n        _meta: PropTypes.shape({\n            deliveryId: PropTypes.string,\n            name: PropTypes.string,\n            schema: PropTypes.string\n        })\n    }).isRequired,\n    active: PropTypes.bool,\n    componentIndex: PropTypes.number,\n    isHalfWidthInGrid: PropTypes.bool,\n    isInGrid: PropTypes.bool\n}\n\nFeatureVideo.displayName = 'FeatureVideo'\n","import {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {\n    hasAnyImageMedia,\n    hasAnyVideoMedia\n} from 'pandora-shared-app/overrides/app/components/media/utils'\nimport {\n    Box,\n    Button,\n    Flex,\n    Text,\n    useBreakpointValue,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nconst TITLE_ID = 'explore-prompt-title'\nconst MESSAGE_ID = 'explore-prompt-message'\n\nexport const ExplorePrompt = ({data}) => {\n    const styles = useMultiStyleConfig('ExplorePrompt')\n    const isTabletOrLarger = useBreakpointValue({base: false, md: true})\n\n    const {title, media, message, cta, collabLogo, _meta} = data || {}\n\n    const hasImage = hasAnyImageMedia(media)\n    const hasVideo = hasAnyVideoMedia(media)\n    const display = {base: 'block', md: 'inline-block'}\n    if (!hasImage && !hasVideo) {\n        return null\n    }\n\n    const collabNode = collabLogo ? (\n        <Box sx={styles.collaborationContainer} data-testid=\"explore-prompt-colab\">\n            <CollaborationLogo collabLogo={collabLogo} size=\"small\" />\n        </Box>\n    ) : null\n\n    const titleNode = title ? (\n        <Text id={TITLE_ID} sx={styles.title} data-testid=\"explore-prompt-title\">\n            {title}\n        </Text>\n    ) : null\n\n    const messageNode = message ? (\n        <Text id={MESSAGE_ID} sx={styles.message} data-testid=\"explore-prompt-message\">\n            {message}\n        </Text>\n    ) : null\n\n    const mediaConfig = {\n        aspectRatio: '4:3',\n        dataAuto: 'explorePrompt',\n        controlWrapperPosition: {right: 0, bottom: 0},\n        copyrightTextPosition: 'plp-video-controller-right'\n    }\n    const mediaNode = (\n        <Box sx={styles.mediaBox}>\n            <Media media={media} isActive isLazyLoad={false} mediaConfig={mediaConfig} />\n        </Box>\n    )\n\n    const ctaNode = cta?.text ? (\n        <Box sx={styles.ctaContainer}>\n            <ContentLink\n                dataAuto=\"explorePromptCTA\"\n                linkData={cta}\n                contentMeta={_meta}\n                variant=\"none\"\n                tabIndex={-1}\n                display={display}\n            >\n                <Button\n                    data-auto=\"explorePromptCTA\"\n                    data-testid=\"explore-prompt-cta\"\n                    variant=\"emphasized\"\n                    sx={styles.ctaButton}\n                >\n                    {cta.text}\n                </Button>\n            </ContentLink>\n        </Box>\n    ) : null\n\n    return (\n        <Box sx={styles.root} data-testid=\"explore-prompt\">\n            {isTabletOrLarger ? (\n                <Flex sx={styles.innerGrid}>\n                    {mediaNode}\n                    <Flex sx={styles.textColumn}>\n                        <Flex sx={styles.textStack}>\n                            {collabNode}\n                            {titleNode}\n                            {messageNode}\n                        </Flex>\n                        {ctaNode}\n                    </Flex>\n                </Flex>\n            ) : (\n                <Flex sx={styles.mobileLayout}>\n                    {collabNode}\n                    {titleNode}\n                    {mediaNode}\n                    {messageNode}\n                    {ctaNode}\n                </Flex>\n            )}\n        </Box>\n    )\n}\n\nExplorePrompt.propTypes = {\n    data: PropTypes.shape({\n        title: PropTypes.string,\n        media: PropTypes.shape({\n            isVideo: PropTypes.bool,\n            imageAltText: PropTypes.string,\n            copyright: PropTypes.shape({\n                color: PropTypes.string,\n                text: PropTypes.string\n            }),\n            img: PropTypes.object,\n            video: PropTypes.object,\n            desktopImg: PropTypes.object,\n            mobileImg: PropTypes.object,\n            desktopVideo: PropTypes.object,\n            mobileVideo: PropTypes.object\n        }),\n        message: PropTypes.string,\n        cta: PropTypes.shape({\n            target: PropTypes.bool,\n            text: PropTypes.string,\n            type: PropTypes.string,\n            value: PropTypes.string\n        }),\n        collabLogo: PropTypes.string,\n        _meta: PropTypes.shape({\n            deliveryId: PropTypes.string,\n            name: PropTypes.string,\n            schema: PropTypes.string\n        })\n    })\n}\n\nExplorePrompt.displayName = 'ExplorePrompt'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    AccordionItem,\n    AccordionButton,\n    AccordionPanel,\n    Box,\n    Text,\n    useDisclosure,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {motion} from 'framer-motion'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\nimport {\n    durationQuick2,\n    durationStandard1,\n    easeStandard\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nconst MotionBox = motion(Box)\n\nexport const QuestionItem = ({\n    question,\n    answer,\n    link,\n    isFirst,\n    isLast,\n    meta,\n    modulePage = '',\n    tabName = '',\n    componentIndex = 0,\n    index\n}) => {\n    const {isOpen, onToggle} = useDisclosure()\n    const styles = useMultiStyleConfig('QuestionItem', {isFirst, isLast})\n    const questionTextStyle = {base: 'bodySm', lg: 'bodyLg'}\n    const tabNamePart = tabName ? `_${tabName}` : ''\n    const dataCsOverrideId = `${modulePage}${tabNamePart}_question${index + 1}_${componentIndex}`\n\n    return (\n        <AccordionItem\n            sx={styles.accordionItem}\n            isExpanded={isOpen}\n            data-auto=\"lblQandAMultipleQuestion\"\n            data-cs-override-id={dataCsOverrideId}\n        >\n            <AccordionButton as=\"h3\" sx={styles.questionContainer} onClick={onToggle}>\n                <Text as=\"span\" textStyle={questionTextStyle}>\n                    {question}\n                </Text>\n            </AccordionButton>\n\n            <AccordionPanel\n                sx={styles.answerContainer}\n                data-auto=\"lblQandAMultipleAnswer\"\n                data-testid=\"answer-panel\"\n            >\n                <MotionBox\n                    initial={{opacity: 0, y: '100%'}}\n                    animate={{opacity: isOpen ? 1 : 0}}\n                    transition={{\n                        ease: easeStandard,\n                        duration: durationQuick2,\n                        delay: durationStandard1\n                    }}\n                    aria-hidden={!isOpen}\n                >\n                    <RichTextEditor\n                        content={answer}\n                        meta={meta}\n                        styleProps={{\n                            ...styles.answer\n                        }}\n                        id=\"answer-text\"\n                        aria-live=\"assertive\"\n                        role=\"alert\"\n                    />\n\n                    {link?.value && (\n                        <ContentLink\n                            rootStyles={styles.link}\n                            linkData={link}\n                            contentMeta={meta}\n                            data-auto=\"btnQandAMultipleLink\"\n                            data-cs-override-id={`${modulePage}${tabNamePart}_answer_link${componentIndex}_${\n                                index + 1\n                            }`}\n                        />\n                    )}\n                </MotionBox>\n            </AccordionPanel>\n        </AccordionItem>\n    )\n}\n\nQuestionItem.displayName = 'QuestionItem'\nQuestionItem.propTypes = {\n    question: PropTypes.string.isRequired,\n    answer: PropTypes.string.isRequired,\n    link: PropTypes.shape({\n        text: PropTypes.string,\n        value: PropTypes.string,\n        target: PropTypes.bool\n    }),\n    isFirst: PropTypes.bool.isRequired,\n    isLast: PropTypes.bool.isRequired,\n    meta: PropTypes.shape({\n        deliveryId: PropTypes.string,\n        name: PropTypes.string,\n        schema: PropTypes.string\n    }),\n    modulePage: PropTypes.string.isRequired,\n    tabName: PropTypes.string.isRequired,\n    componentIndex: PropTypes.number.isRequired,\n    index: PropTypes.number.isRequired\n}\n","import React, {useRef, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Accordion,\n    Box,\n    GridItem,\n    Grid,\n    Text,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {QuestionItem} from './partials/question-item'\nimport {v4 as uuidv4} from 'uuid'\nimport {useStructuredData} from 'pandora-shared-app/overrides/app/components/structured-data'\nimport {buildFAQSchema} from 'pandora-shared-app/overrides/app/components/structured-data/schemas'\nimport {useMenuCategories} from 'pandora-shared-app/overrides/app/hooks/use-menu-categories'\nimport {useAppOriginConfig} from 'pandora-shared-app/overrides/app/hooks/use-app-origin-config'\nimport {flattenCategoryTree} from 'pandora-shared-app/overrides/app/utils/category-tree-utils'\nimport {resolveFaqAnswerText} from 'pandora-shared-app/overrides/app/components/content-link/utils/content-link-utils'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nconst headingTextStyleMapping = {\n    base: 'headingSm',\n    md: 'headingSm',\n    lg: 'headingMd'\n}\nconst headingColSpan = {base: 6, md: 3, xl: 6}\nconst questionsColSpan = {base: 6, md: 3, xl: 6}\n\nconst questionsPropType = PropTypes.arrayOf(\n    PropTypes.shape({\n        question: PropTypes.string.isRequired,\n        answer: PropTypes.string.isRequired,\n        link: PropTypes.shape({\n            text: PropTypes.string,\n            value: PropTypes.string,\n            target: PropTypes.bool\n        })\n    })\n).isRequired\n\nconst LegacyFaqStructuredData = ({questions}) => {\n    const faqSchema = useMemo(() => buildFAQSchema(questions), [questions])\n    useStructuredData(faqSchema ? {faqSchema} : null)\n    return null\n}\n\nLegacyFaqStructuredData.propTypes = {\n    questions: questionsPropType\n}\n\nconst ResolvedFaqStructuredData = ({questions}) => {\n    // These data hooks stay inside the flagged subtree so disabling the flag restores the\n    // original code path completely, including avoiding the additional category lookup.\n    const menuCategories = useMenuCategories()\n    const appOrigin = useAppOriginConfig()\n    const flatCategories = useMemo(\n        () => flattenCategoryTree(menuCategories, 'categories'),\n        [menuCategories]\n    )\n\n    const faqSchema = useMemo(() => {\n        const resolvedQuestions = questions.map(({question, answer}) => ({\n            question,\n            answer: resolveFaqAnswerText(answer, flatCategories, appOrigin)\n        }))\n        return buildFAQSchema(resolvedQuestions)\n    }, [questions, flatCategories, appOrigin])\n\n    useStructuredData(faqSchema ? {faqSchema} : null)\n    return null\n}\n\nResolvedFaqStructuredData.propTypes = {\n    questions: questionsPropType\n}\n\nexport const MultipleQandA = ({data, componentIndex = 0, modulePage = '', tabName = ''}) => {\n    const {heading, questions} = data\n    const styles = useMultiStyleConfig('MultipleQandA')\n    const uuids = useRef(questions.map(() => uuidv4()))\n    const isFaqAnswerIntegrityEnabled = useVariant(LD_KEYS.enableGlobalWebSiteSchema, false)\n\n    return (\n        <>\n            {isFaqAnswerIntegrityEnabled ? (\n                <ResolvedFaqStructuredData questions={questions} />\n            ) : (\n                <LegacyFaqStructuredData questions={questions} />\n            )}\n            <Box sx={styles.container} data-auto=\"divQandAMultiple\">\n                <Grid>\n                    <GridItem colSpan={headingColSpan}>\n                        <Text\n                            textStyle={headingTextStyleMapping}\n                            sx={styles?.heading}\n                            as=\"h2\"\n                            data-auto=\"lblQandAMultipleTitle\"\n                        >\n                            {heading}\n                        </Text>\n                    </GridItem>\n\n                    <GridItem colSpan={questionsColSpan}>\n                        <Accordion allowMultiple>\n                            {questions.map((item, index) => (\n                                <QuestionItem\n                                    key={uuids.current[index]}\n                                    question={item.question}\n                                    answer={item.answer}\n                                    link={item.link}\n                                    isFirst={index === 0}\n                                    isLast={index === questions.length - 1}\n                                    meta={data?._meta}\n                                    testId={`question-${index}`}\n                                    openIconTestId={`open-icon-${index}`}\n                                    closedIconTestId={`closed-icon-${index}`}\n                                    modulePage={modulePage}\n                                    tabName={tabName}\n                                    componentIndex={componentIndex}\n                                    index={index}\n                                />\n                            ))}\n                        </Accordion>\n                    </GridItem>\n                </Grid>\n            </Box>\n        </>\n    )\n}\n\nMultipleQandA.propTypes = {\n    data: PropTypes.shape({\n        heading: PropTypes.string.isRequired,\n        questions: questionsPropType,\n        _meta: PropTypes.shape({\n            deliveryId: PropTypes.string,\n            name: PropTypes.string,\n            schema: PropTypes.string\n        })\n    }).isRequired,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string\n}\n\nMultipleQandA.displayName = 'MultipleQandA'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {Description} from 'pandora-shared-app/overrides/app/components/description'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\n\nconst DESCRIPTION_TEXT_STYLE = {base: 'bodySm', xl: 'bodyLg'}\n\nexport const PlpDescription = (props) => {\n    const {\n        collabLogo,\n        description,\n        link,\n        showCollabLogo,\n        meta,\n        showSmall = false,\n        isHalfWidthInGrid = false,\n        modulePage = '',\n        tabName = '',\n        index,\n        componentIndex = 0\n    } = props\n    const {plpDescription} = useMultiStyleConfig('PlpStories', {\n        showSmall,\n        isHalfWidthInGrid\n    })\n\n    return (\n        <Box data-testid=\"plp-description\" sx={plpDescription?.container}>\n            {showCollabLogo && collabLogo && (\n                <CollaborationLogo\n                    data-auto=\"divCollabPLPStories\"\n                    collabLogo={collabLogo}\n                    sx={plpDescription?.logo}\n                />\n            )}\n\n            {description && (\n                <Description\n                    data-auto=\"txtPLPStoriesDescription\"\n                    sx={plpDescription?.description}\n                    description={description}\n                    textStyle={DESCRIPTION_TEXT_STYLE}\n                />\n            )}\n\n            <ContentLink\n                data-auto=\"ctabtnPLPStories\"\n                rootStyles={plpDescription?.link}\n                linkData={link}\n                contentMeta={meta}\n                data-cs-override-id={`${modulePage}${\n                    tabName ? `_${tabName}` : ''\n                }_stories_link${componentIndex}_${index + 1}`}\n            />\n        </Box>\n    )\n}\n\nPlpDescription.displayName = 'PlpDescription'\n\nPlpDescription.propTypes = {\n    collabLogo: PropTypes.string,\n    description: PropTypes.string,\n    link: PropTypes.object,\n    showCollabLogo: PropTypes.bool,\n    showSmall: PropTypes.bool,\n    isHalfWidthInGrid: PropTypes.bool,\n    meta: PropTypes.shape({\n        deliveryId: PropTypes.string,\n        name: PropTypes.string,\n        schema: PropTypes.string\n    }),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    index: PropTypes.number,\n    componentIndex: PropTypes.number\n}\n","// React Core\nimport React, {memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {AspectRatio, Skeleton} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n/**\n * AspectRatioSkeleton Component\n *\n * A reusable skeleton loader wrapped in an AspectRatio container.\n * This is useful for maintaining layout stability during content loading,\n * especially when the loaded content (e.g., images or videos) has a fixed aspect ratio.\n *\n * @component\n * @example\n * <AspectRatioSkeleton aspect_ratio={16 / 9} />\n *\n * @param {number} aspect_ratio - The aspect ratio (width / height) to maintain for the loader container.\n * @param {object} rest - Any additional props are forwarded to the underlying `AspectRatio` component.\n *\n * @returns {JSX.Element} Skeleton loader wrapped in aspect-ratio-preserving container.\n */\nexport const AspectRatioSkeleton = memo(({aspectRatio = 1, ...rest}) => {\n    return (\n        <AspectRatio ratio={aspectRatio} data-testid=\"asset-placeholder\" {...rest}>\n            <Skeleton />\n        </AspectRatio>\n    )\n})\n\nAspectRatioSkeleton.propTypes = {\n    aspectRatio: PropTypes.number\n}\n\nAspectRatioSkeleton.displayName = 'AspectRatioSkeleton'\n","import React, {useState, useRef, useEffect, useCallback} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Grid,\n    GridItem,\n    Text,\n    useBreakpointValue,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {v4 as uuidv4} from 'uuid'\n\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\nimport {Controller, Autoplay, EffectFade} from 'swiper/modules'\n\n// PLP Partials\nimport {PlpDescription} from 'content/overrides/app/components/plp-stories/partials/plp-description'\n\n// Shared components\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\n\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\n\n// Shared Components\nimport {AspectRatioSkeleton} from 'pandora-shared-app/overrides/app/utils/aspect-ratio-skeleton'\n\n// Custom Hooks\nimport {useIntersectionObserver, useIsClient} from 'pandora-shared-app/overrides/app/hooks'\n\nconst TIME_DURATION = 10\nconst swiperModules = [Controller, Autoplay]\nconst swiperModulesWithFade = [Controller, Autoplay, EffectFade]\nconst INTERSECTION_OPTIONS = {threshold: 0.5}\n\nconst carouselControl = (swiper) => ({control: swiper})\n\nconst MEDIA_ASPECT_RATIO = 3 / 4\nconst AMPLIENCE_MEDIA_ASPECT_RATIO = '3:4'\n\nconst mediaConfig = {\n    aspectRatio: AMPLIENCE_MEDIA_ASPECT_RATIO,\n    controlWrapperPosition: {\n        bottom: 0,\n        right: 0\n    },\n    copyrightTextPosition: 'plp-video-controller-right'\n}\n\nexport const renderMediaSlide = (\n    slide,\n    index,\n    uuids,\n    isIntersecting,\n    activeIndex,\n    qWidth,\n    isClient\n) =>\n    isClient ? (\n        <Media\n            key={`media-${uuids?.current?.[index]}`}\n            media={slide?.media}\n            isActive={isIntersecting && index === activeIndex}\n            mediaConfig={{...mediaConfig, qWidth: qWidth}}\n        />\n    ) : (\n        <AspectRatioSkeleton aspectRatio={MEDIA_ASPECT_RATIO} />\n    )\n\nexport const renderDescriptionSlide = (\n    slide,\n    index,\n    uuids,\n    modulePage,\n    tabName,\n    componentIndex,\n    options = {}\n) => {\n    const {descriptionGrid, collabLogo, meta, showSmall, isHalfWidthInGrid, isSSR} = options\n\n    const isFirstSSR = isSSR && index === 0\n\n    const boxStyle = {\n        ...descriptionGrid?.swiper?.box,\n        ...(isSSR\n            ? {\n                  display: isFirstSSR ? 'flex' : 'none',\n                  opacity: isFirstSSR ? 1 : 0,\n                  transform: isFirstSSR ? 'translateY(0)' : undefined\n              }\n            : {})\n    }\n\n    return (\n        <Box key={`description-${uuids.current[index]}`} sx={boxStyle}>\n            <PlpDescription\n                collabLogo={slide?.collabLogo}\n                showCollabLogo={!collabLogo}\n                description={slide?.description}\n                link={slide?.link}\n                meta={meta}\n                showSmall={showSmall}\n                isHalfWidthInGrid={isHalfWidthInGrid}\n                modulePage={modulePage}\n                tabName={tabName}\n                index={index}\n                componentIndex={componentIndex}\n            />\n        </Box>\n    )\n}\n\nconst getColStartPosition = (reverseOrientation, showSmall, type) => {\n    if (showSmall) {\n        return 1\n    }\n    const positions = {\n        header: reverseOrientation ? 2 : 7,\n        description: reverseOrientation ? 2 : 7,\n        media: reverseOrientation ? 8 : 1\n    }\n    return positions[type]\n}\n\nconst getColStartHeader = (reverseOrientation, showSmall) =>\n    getColStartPosition(reverseOrientation, showSmall, 'header')\n\nconst getColStartDescription = (reverseOrientation, showSmall) =>\n    getColStartPosition(reverseOrientation, showSmall, 'description')\n\nconst getColStartMedia = (reverseOrientation, showSmall) =>\n    getColStartPosition(reverseOrientation, showSmall, 'media')\n\nconst SMALL_GRID_MARGIN_X = {base: 8}\nconst DEFAULT_GRID_MARGIN_X = {base: 8, md: 12, xl: 16}\nconst IN_GRID_MARGIN_X = {base: 0, md: 12, xl: 16}\n\nconst getGridMarginX = (showSmall, isInGrid) => {\n    if (showSmall) {\n        return SMALL_GRID_MARGIN_X\n    }\n\n    return isInGrid ? IN_GRID_MARGIN_X : DEFAULT_GRID_MARGIN_X\n}\n\nconst getTemplateAreas = (showSmall, reverseOrientation) => {\n    if (showSmall) {\n        return {\n            base: `\"header\" \"media\" \"description\"`\n        }\n    }\n\n    return {\n        base: `\"header\" \"media\" \"description\"`,\n        xl: reverseOrientation\n            ? `\"header media\" \"description media\"`\n            : `\"media header\" \"media description\"`\n    }\n}\n\n/**\n * Notes:\n *\n * Story chapters:\n * - min 2, max 6, recommended 4\n * --- from code we don't have any limitation - it is more a suggestion for CMS\n * Media:\n * - image or video\n * - aspect ration 3/4\n * - video / 7-10 sec / max 15 sec, image - 8 sec\n * --- because it will be a nightmare for performance because of the react virtual dom to get this times from:\n * ----- videoPlayer > Media > plpStories for each video and ...\n * ... because the image has 8sec and/or 10sec default in documentation and for video it was recommended max 10sec ...\n * we set a TIME_DURATION of 10\n * Layout:\n * - vertical spacing: align link to the bottom of the media\n */\nexport const PlpStories = (props) => {\n    const {\n        showSmall = false,\n        componentIndex = 0,\n        modulePage = '',\n        tabName = '',\n        isHalfWidthInGrid = false,\n        isInGrid = false\n    } = props\n    const {collabLogo, heading, storyChapter, reverseOrientation = false, _meta} = props.data\n\n    const [firstSwiper, setFirstSwiper] = useState(null)\n    const [secondSwiper, setSecondSwiper] = useState(null)\n    const [activeIndex, setActiveIndex] = useState(0)\n    const [setStoryRef, isIntersecting] = useIntersectionObserver(INTERSECTION_OPTIONS)\n\n    const uuids = useRef(storyChapter?.map(() => uuidv4()))\n\n    const hasMultipleChapters = (storyChapter?.length ?? 0) > 1\n\n    const isSmallScreen = useBreakpointValue({base: true, xl: false})\n\n    const isClient = useIsClient()\n\n    const heightValue = isSmallScreen || showSmall ? '100%' : 'auto'\n\n    const {container, headerGrid, mediaGrid, descriptionGrid} = useMultiStyleConfig('PlpStories', {\n        heightValue,\n        showSmall,\n        isHalfWidthInGrid\n    })\n\n    const handleSlideChange = useCallback((index) => {\n        setActiveIndex(index)\n    }, [])\n\n    const hasLoadedOnce = useRef(false)\n\n    const qWidth = isSmallScreen || showSmall ? 768 : 1000\n\n    const fadeConfig = {crossFade: true}\n\n    useEffect(() => {\n        if (firstSwiper && isIntersecting && !hasLoadedOnce.current) {\n            firstSwiper.autoplay.start()\n            hasLoadedOnce.current = true\n        }\n    }, [isIntersecting, firstSwiper])\n\n    useEffect(() => {\n        if (firstSwiper?.autoplay) {\n            if (isIntersecting) {\n                firstSwiper.autoplay.resume()\n            } else {\n                firstSwiper.autoplay.pause()\n            }\n        }\n    }, [isIntersecting, firstSwiper])\n\n    const templateAreas = getTemplateAreas(showSmall, reverseOrientation)\n\n    const gridTemplateRows = {\n        base: 'auto auto auto',\n        xl: showSmall ? 'auto auto auto' : '1fr auto'\n    }\n\n    const colSpanHeader = {base: 6, xl: showSmall ? 6 : 4}\n    const colStartHeader = (reverseOrientation) => ({\n        base: 1,\n        xl: getColStartHeader(reverseOrientation, showSmall)\n    })\n\n    const colSpanMedia = {base: 6, xl: showSmall ? 6 : 5}\n    const colStartMedia = (reverseOrientation) => ({\n        base: 1,\n        xl: getColStartMedia(reverseOrientation, showSmall)\n    })\n\n    const colSpanDescription = {base: 6, xl: showSmall ? 6 : 4}\n    const colStartDescription = (reverseOrientation) => ({\n        base: 1,\n        xl: getColStartDescription(reverseOrientation, showSmall)\n    })\n\n    const gridMarginX = getGridMarginX(showSmall, isInGrid)\n    const gridTemplateColumns = showSmall\n        ? {base: 'repeat(6, 1fr)'}\n        : {base: 'repeat(6, 1fr)', xl: 'repeat(12, 1fr)'}\n    const headingTextStyle = showSmall ? 'headingSm' : {base: 'headingSm', xl: 'headingMd'}\n\n    return (\n        <Box ref={setStoryRef} data-testid=\"plp-stories\" data-auto=\"divPLPStories\" sx={container}>\n            <Grid\n                mx={gridMarginX}\n                sx={headerGrid}\n                templateAreas={templateAreas}\n                gridTemplateRows={gridTemplateRows}\n                templateColumns={gridTemplateColumns}\n            >\n                <GridItem\n                    area={'header'}\n                    colSpan={colSpanHeader}\n                    colStart={colStartHeader(reverseOrientation)}\n                    sx={headerGrid?.item}\n                >\n                    <Box data-testid={'header'} sx={headerGrid?.container}>\n                        {collabLogo && (\n                            <CollaborationLogo\n                                collabLogo={collabLogo}\n                                data-auto=\"divCollabPLPStories\"\n                                sx={headerGrid?.logo}\n                            />\n                        )}\n                        {heading && (\n                            <Text\n                                as=\"h2\"\n                                textStyle={headingTextStyle}\n                                sx={headerGrid?.heading}\n                                data-auto=\"txtPLPStoriesHeading\"\n                            >\n                                {heading}\n                            </Text>\n                        )}\n                    </Box>\n                </GridItem>\n                <GridItem\n                    area={'media'}\n                    colSpan={colSpanMedia}\n                    colStart={colStartMedia(reverseOrientation)}\n                    sx={headerGrid?.item}\n                >\n                    <Box\n                        sx={mediaGrid?.container}\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_stories_carousel${componentIndex}`}\n                    >\n                        {isClient ? (\n                            <Carousel\n                                modules={swiperModules}\n                                grabCursor={true}\n                                onSwiper={(swiper) => {\n                                    swiper.autoplay.stop()\n                                    setFirstSwiper(swiper)\n                                    if (!isIntersecting) {\n                                        swiper.autoplay.pause()\n                                    }\n                                }}\n                                slides={storyChapter}\n                                renderSlide={(slide, index) =>\n                                    renderMediaSlide(\n                                        slide,\n                                        index,\n                                        uuids,\n                                        isIntersecting,\n                                        activeIndex,\n                                        qWidth,\n                                        true\n                                    )\n                                }\n                                controller={carouselControl(secondSwiper)}\n                                onSlideChange={handleSlideChange}\n                                loop={hasMultipleChapters}\n                                spaceBetween={'70%'}\n                                autoPlay={{\n                                    disableOnInteraction: false,\n                                    delay: TIME_DURATION * 1000,\n                                    pauseOnMouseEnter: true\n                                }}\n                                showControls={!isSmallScreen && hasMultipleChapters}\n                                showProgress={isSmallScreen && hasMultipleChapters}\n                                showCounter={!isSmallScreen && hasMultipleChapters}\n                                isIntersecting\n                                swiperStyle={mediaGrid?.swiper}\n                                data-auto=\"mediaCarouselPLPStories\"\n                            />\n                        ) : (\n                            renderMediaSlide(\n                                storyChapter?.[0],\n                                0,\n                                uuids,\n                                isIntersecting,\n                                activeIndex,\n                                qWidth,\n                                false\n                            )\n                        )}\n                    </Box>\n                </GridItem>\n                <GridItem\n                    area={'description'}\n                    colSpan={colSpanDescription}\n                    colStart={colStartDescription(reverseOrientation)}\n                    sx={headerGrid?.item}\n                >\n                    <Box sx={descriptionGrid?.container}>\n                        {isClient ? (\n                            <Carousel\n                                modules={swiperModulesWithFade}\n                                onSwiper={setSecondSwiper}\n                                slides={storyChapter}\n                                renderSlide={(slide, index) =>\n                                    renderDescriptionSlide(\n                                        slide,\n                                        index,\n                                        uuids,\n                                        modulePage,\n                                        tabName,\n                                        componentIndex,\n                                        {\n                                            descriptionGrid,\n                                            collabLogo,\n                                            meta: _meta,\n                                            showSmall,\n                                            isHalfWidthInGrid,\n                                            isSSR: false\n                                        }\n                                    )\n                                }\n                                loop={hasMultipleChapters}\n                                autoPlay={false}\n                                noSwiping={true}\n                                allowTouchMove={false}\n                                slideStyle={{\n                                    ...descriptionGrid?.swiper\n                                }}\n                                effect=\"fade\"\n                                fadeEffect={fadeConfig}\n                                data-auto=\"descriptionCarouselPLPStories\"\n                                spaceBetween={'20'}\n                            />\n                        ) : (\n                            renderDescriptionSlide(\n                                storyChapter?.[0],\n                                0,\n                                uuids,\n                                modulePage,\n                                tabName,\n                                componentIndex,\n                                {\n                                    descriptionGrid,\n                                    collabLogo,\n                                    meta: _meta,\n                                    showSmall,\n                                    isHalfWidthInGrid,\n                                    isSSR: true\n                                }\n                            )\n                        )}\n                    </Box>\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n}\n\nPlpStories.propTypes = {\n    data: PropTypes.shape({\n        _meta: PropTypes.shape({\n            name: PropTypes.string,\n            schema: PropTypes.string,\n            deliveryId: PropTypes.string\n        }).isRequired,\n        collabLogo: PropTypes.string,\n        heading: PropTypes.string,\n        storyChapter: PropTypes.arrayOf(\n            PropTypes.shape({\n                media: PropTypes.object,\n                collabLogo: PropTypes.string,\n                description: PropTypes.string,\n                link: PropTypes.object\n            })\n        ),\n        reverseOrientation: PropTypes.bool\n    }).isRequired,\n    showSmall: PropTypes.bool,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    isHalfWidthInGrid: PropTypes.bool,\n    isInGrid: PropTypes.bool\n}\n\nPlpStories.displayName = 'PlpStories'\n","import {removeInvisibleChars} from 'pandora-shared-app/overrides/app/utils/string-utils'\nimport {APPLICATION} from '../constants'\n\nconst GRID_SPOT = 'grid-spot'\n\nexport const getShopTheLookApplication = ({\n    context,\n    isInGrid = false,\n    isHalfWidthInGrid = false\n} = {}) => {\n    const isHalfWidth = Boolean(isInGrid && isHalfWidthInGrid)\n    const isFullWidthInGrid = Boolean(isInGrid && !isHalfWidthInGrid)\n\n    // A half-width in-grid placement never has room for the exposed product grid,\n    // so it always renders as link + sheet - whatever `context` the CMS sends.\n    if (isHalfWidth) return APPLICATION.PLP_LINK_AND_SHEET\n\n    return context === GRID_SPOT && !isFullWidthInGrid\n        ? APPLICATION.PLP_LINK_AND_SHEET\n        : APPLICATION.PLP_PRODUCT_GROUP\n}\n\n/**\n * True when the product-group variant is rendered too narrow for its exposed product grid.\n *\n * Below `xl` the module is a single stacked column, so the look is shopped through the bag icon\n * and its sheet instead of the grid - the same interaction the link + sheet variant uses.\n *\n * @param {object} params\n * @param {string} params.application - resolved Shop The Look application\n * @param {boolean} [params.isMobile] - viewport is below `xl`\n * @returns {boolean}\n */\nexport const isSheetOnlyProductGroup = ({application, isMobile = false} = {}) =>\n    Boolean(application === APPLICATION.PLP_PRODUCT_GROUP && isMobile)\n\nconst CATEGORY_ID = 'category-h1'\n\n/**\n * Resolves the category name shown in the \"Shop All … from {categoryName}\" CTA, in the order\n * the module has always used: SFCC category cache → search metadata `category-h1` → raw ID.\n *\n * @param {object} params\n * @param {object} [params.result] - product search result\n * @param {string} params.categoryID - authored category ID\n * @param {object} [params.category] - category from the SFCC category cache\n * @returns {string} category name\n */\nexport const resolveCategoryName = ({result, categoryID, category = null}) => {\n    // Use actual SFCC category name if available\n    if (category?.name) return category.name\n\n    // Fallback to search metadata\n    const metadataArray = result?.searchPhraseSuggestions?.c_searchMetadata\n    const categoryMetadata = metadataArray?.find((item) => item.ID === CATEGORY_ID)\n\n    if (categoryMetadata?.content) return categoryMetadata.content\n\n    // Fallback to categoryID\n    return categoryID\n}\n\nexport const handleProductSearchResult = (\n    result,\n    setTotalProducts,\n    setCategoryName,\n    categoryID,\n    category = null\n) => {\n    if (result?.total) setTotalProducts(result.total)\n\n    setCategoryName(resolveCategoryName({result, categoryID, category}))\n}\n\nexport const processProductIDs = (ids) => {\n    if (typeof ids === 'string') {\n        const cleanedIds = removeInvisibleChars(ids)\n\n        const uniqueIDs = cleanedIds.includes(',')\n            ? [...new Set(cleanedIds.split(',').map((id) => id.trim()))]\n            : [cleanedIds]\n\n        return uniqueIDs.filter((id) => id.length > 0)\n    }\n    return []\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {\n    GridItem,\n    useMultiStyleConfig,\n    Text\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component(s)\nimport {CollaborationLogo} from 'pandora-shared-app/overrides/app/components/collaboration-logo'\n\n// Constant(s)\nimport {gridBreakpoints, APPLICATION} from '../constants'\n\nexport const headerTextStyle = {base: 'headingSm', xl: 'headingMd'}\n\nexport const ShopTheLookHeaderSection = React.memo(\n    ({\n        header = '',\n        collabLogo = '',\n        application = '',\n        modulePage = '',\n        tabName = '',\n        componentIndex\n    }) => {\n        const {headerGrid} = useMultiStyleConfig('ShopTheLook', {})\n\n        let paddingTop = {base: 8, xl: 16}\n        let paddingBottom = {base: 8, xl: 10}\n\n        if (application === APPLICATION?.PLP_LINK_AND_SHEET) {\n            paddingTop = {base: 8}\n            paddingBottom = {base: 8, xl: 0}\n        }\n\n        return (\n            <GridItem\n                area={'header'}\n                colSpan={gridBreakpoints?.[application]?.colSpanHeader}\n                colStart={gridBreakpoints?.[application]?.colStartHeader}\n                sx={headerGrid}\n                pt={paddingTop}\n                pb={paddingBottom}\n                data-cs-override-id={`${modulePage}${\n                    tabName ? `_${tabName}` : ''\n                }_shoplook_title${componentIndex}`}\n            >\n                {collabLogo && (\n                    <CollaborationLogo\n                        collabLogo={collabLogo}\n                        sx={headerGrid?.collaborationLogo}\n                        data-auto=\"shop-the-look-collaboration-logo\"\n                        data-testid=\"shop-the-look-collaboration-logo\"\n                    />\n                )}\n                {header && (\n                    <Text\n                        as=\"h2\"\n                        textStyle={headerTextStyle}\n                        data-auto={'shop-the-look-header'}\n                        data-testid={'shop-the-look-header'}\n                    >\n                        {header}\n                    </Text>\n                )}\n            </GridItem>\n        )\n    }\n)\n\nShopTheLookHeaderSection.propTypes = {\n    header: PropTypes.string,\n    collabLogo: PropTypes.string,\n    application: PropTypes.string,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nShopTheLookHeaderSection.displayName = 'ShopTheLookHeaderSection'\n","import React, {useState, useMemo, useCallback, useRef} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {\n    GridItem,\n    useMultiStyleConfig,\n    Box,\n    AspectRatio,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Component(s) / Hook(s)\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {useIntersectionObserver} from 'pandora-shared-app/overrides/app/hooks'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// Custom Shared Component(s) / Hook(s)\nimport {PartialDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet/partial-drawer-sheet'\n\n// Constant(s)\nimport {gridBreakpoints, mediaConfig, APPLICATION} from '../constants'\n\nimport {INDICATOR_POSITION} from 'pandora-shared-app/overrides/app/components/carousel/constants'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\n\n// Partial(s)\nimport {ShopTheLookDrawerBody, ShopTheLookBagButton} from './'\n\nexport const ShopTheLookMediaSection = React.memo(\n    ({\n        media = {},\n        categoryID = '',\n        application = '',\n        productIDs = '',\n        meta = null,\n        modulePage = '',\n        tabName = '',\n        componentIndex,\n        isSheetOnly = false,\n        isAddToBagEnabled = false\n    }) => {\n        const [isOpen, setIsOpen] = useState(false)\n        const [products, setProducts] = useState([])\n\n        const isSsrPosterEnabledRaw = useVariant(LD_KEYS.enableGlobalVideoSsrPosterFrame, false)\n        const isSsrPosterEnabledRef = useRef(isSsrPosterEnabledRaw)\n        const isSsrPosterEnabled = isSsrPosterEnabledRef.current\n\n        const {mediaGrid, partialDrawerStyle} = useMultiStyleConfig('ShopTheLook', {})\n        const [setRef, isIntersecting] = useIntersectionObserver(\n            useBreakpointValue({base: {threshold: 0.1}, xl: {threshold: 0.5}})\n        )\n\n        // `fallback: 'xl'` so this agrees with the module root (`index.jsx`), which decides on the\n        // same breakpoint whether the exposed product grid is rendered at all.\n        const isMobile = useBreakpointValue({base: true, xl: false}, {fallback: 'xl'})\n\n        // The bag icon (and its drawer) is only meaningful when there is something to shop.\n        // For the Content Block variant with no products/category, hide the bag entirely.\n        const hasShoppableProducts = Boolean(productIDs?.trim()) || Boolean(categoryID?.trim())\n\n        // The link + sheet variant always shops through the bag icon; the product-group variant\n        // does too when it renders sheet-only, i.e. below `xl` with the DOL product grid flag on.\n        // `isSheetOnly` is resolved once in `index.jsx` and passed down rather than recomputed\n        // here, so the module root is the single place that reads the flag and both halves of the\n        // module cannot disagree about which variant is being shown.\n        const showBagButton =\n            (application === APPLICATION.PLP_LINK_AND_SHEET || isSheetOnly) && hasShoppableProducts\n\n        // INS-5194, behind enable-plp-stl-clickable-tile. Resolved once here and\n        // passed to the CTA so the flag is read a single time per tile. When OFF,\n        // the tile is not clickable and the CTA stays the icon-only bag button —\n        // i.e. exactly the pre-INS-5194 behaviour.\n        //\n        // Both the labelled CTA and the full-tile click target apply to every\n        // variant that shops through the bag icon, so a sheet-only\n        // PLP_PRODUCT_GROUP tile (INS-5089) gets them as well.\n        //\n        // On cleanup: drop the flag read and the prop on ShopTheLookBagButton.\n        const isClickableTileEnabled = useVariant(LD_KEYS.enablePlpStlClickableTile, false)\n        const isTileClickable = showBagButton && isClickableTileEnabled\n\n        const marginX = useMemo(() => {\n            return application === APPLICATION?.PLP_LINK_AND_SHEET\n                ? {base: -8, md: 0}\n                : {base: -8, md: -12, xl: 0}\n        }, [application])\n\n        const contentMediaConfig = {\n            ...mediaConfig\n        }\n\n        const handleOpen = useCallback(() => setIsOpen(true), [])\n        const handleClose = useCallback(() => setIsOpen(false), [])\n        const handleProductsLoad = useCallback((loadedProducts) => {\n            setProducts(loadedProducts)\n        }, [])\n\n        const productConfig = useMemo(\n            () => ({\n                productIDs,\n                categoryID,\n                limit: 12\n            }),\n            [productIDs, categoryID]\n        )\n\n        const carouselConfig = useMemo(\n            () => ({\n                showControls: !isMobile,\n                indicatorPosition: INDICATOR_POSITION.TOP_LEFT,\n                breakpoints: {\n                    0: {\n                        slidesPerView: 3\n                    },\n                    768: {\n                        slidesPerView: 3\n                    },\n                    1440: {\n                        slidesPerView: 6,\n                        slidesPerGroup: 6\n                    }\n                }\n            }),\n            [isMobile]\n        )\n\n        const formattedProducts = useMemo(() => {\n            return (\n                products?.map((product) => ({\n                    id: product.productId,\n                    master_id: product.representedProduct?.id,\n                    name: product.productName,\n                    category: product.c_extend?.custom?.category,\n                    quantity: 1,\n                    size: product.c_extend?.custom?.size,\n                    price: product.price,\n                    bonus: product.c_extend?.custom?.badge || 'No',\n                    collection: '',\n                    metal: product.c_extend?.custom?.metalName,\n                    material: product.c_extend?.custom?.metalGroup,\n                    theme: '',\n                    promotion_id: [],\n                    pricebook_id: '',\n                    image_url: product.image?.disBaseLink,\n                    url: product.c_extend?.productUrl,\n                    finding_method: 'sheet_overlay',\n                    distribution_method: '',\n                    final_price_ex_tax: product.salePrice,\n                    final_price_inc_tax: product.price\n                })) || []\n            )\n        }, [products])\n\n        return (\n            <>\n                {/* Grid Item of the Media */}\n                <GridItem\n                    ref={setRef}\n                    area={'media'}\n                    colSpan={gridBreakpoints?.[application]?.colSpanMedia}\n                    colStart={gridBreakpoints?.[application]?.colStartMedia}\n                    sx={mediaGrid}\n                    mx={marginX}\n                >\n                    {/*\n                        With enable-plp-stl-clickable-tile ON, the whole media area\n                        is a click/tap target for the sheet.\n                        The handler stays on the container rather than on a wrapping\n                        role=\"button\": the CTA below is already a real button, so it\n                        remains the single keyboard/screen-reader control instead of\n                        nesting one interactive element inside another.\n\n                        Clicks on the video [Sound]/[Pause] controls never reach here\n                        — VideoControls stops propagation on both click and keydown.\n\n                        A click on the CTA runs handleOpen and then bubbles to this\n                        handler, so handleOpen must stay idempotent and side-effect\n                        free. Anything with a side effect (analytics, navigation)\n                        belongs on one of the two, not on the shared handler.\n                    */}\n                    <Box\n                        sx={mediaGrid?.container}\n                        cursor={isTileClickable ? 'pointer' : undefined}\n                        onClick={isTileClickable ? handleOpen : undefined}\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_shoplook_image${componentIndex}`}\n                    >\n                        {/* Media Asset */}\n                        <AspectRatio ratio={3 / 4}>\n                            <Media\n                                media={media}\n                                isActive={isIntersecting}\n                                mediaConfig={contentMediaConfig}\n                            />\n                        </AspectRatio>\n\n                        {/* Shop Button */}\n                        {showBagButton && (\n                            <ShopTheLookBagButton\n                                onClick={handleOpen}\n                                isSsrPosterEnabled={isSsrPosterEnabled}\n                                isClickableTileEnabled={isClickableTileEnabled}\n                            />\n                        )}\n                    </Box>\n                </GridItem>\n\n                {/* Partial Drawer Sheet */}\n                {showBagButton && (\n                    <PartialDrawerSheet\n                        bodyContent={\n                            <ShopTheLookDrawerBody\n                                productConfig={productConfig}\n                                carouselConfig={carouselConfig}\n                                containerStyle={partialDrawerStyle?.bodyContentStyle}\n                                onProductsLoad={handleProductsLoad}\n                                meta={meta}\n                                showBuyFromTile={isAddToBagEnabled}\n                            />\n                        }\n                        isOpen={isOpen}\n                        onClose={handleClose}\n                        customStyle={partialDrawerStyle}\n                        headerOverlap={!isMobile}\n                        sheetType={TEALIUM_CONSTANTS.DRAWER.TYPES.SHOP_THE_LOOK}\n                        virtualPagePath=\"shop_the_look_sheet\"\n                        products={formattedProducts}\n                        contentMeta={meta}\n                    />\n                )}\n            </>\n        )\n    }\n)\n\nShopTheLookMediaSection.propTypes = {\n    media: PropTypes.object,\n    categoryID: PropTypes.string,\n    application: PropTypes.string,\n    productIDs: PropTypes.string,\n    meta: PropTypes.shape({\n        schema: PropTypes.string,\n        name: PropTypes.string,\n        deliveryId: PropTypes.string\n    }),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number,\n    isSheetOnly: PropTypes.bool,\n    isAddToBagEnabled: PropTypes.bool\n}\n\nShopTheLookMediaSection.displayName = 'ShopTheLookMediaSection'\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {GridItem, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component(s)\nimport {Description} from 'pandora-shared-app/overrides/app/components/description'\n\n// Custom Component(s)\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\n// Hooks\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useMFERegistry} from 'pandora-shared-app/overrides/app/contexts/mfe-registry'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// Utils\nimport {CONTENT_TYPE} from 'pandora-shared-app/overrides/app/utils/content-tracking-helpers'\n\n// Constants\nimport {gridBreakpoints, mediaConfig, APPLICATION} from '../constants'\n\nexport const ShopTheLookDescriptionSection = React.memo(\n    ({\n        description = '',\n        link = {},\n        meta = {},\n        application = '',\n        showDescription = false,\n        modulePage = '',\n        tabName = '',\n        componentIndex,\n        categoryID = '',\n        productIDs = '',\n        stylingStudio = ''\n    }) => {\n        const {descriptionGrid} = useMultiStyleConfig('ShopTheLook', {})\n        const {locale} = useMultiSite()\n        const {link: tealiumLink} = useTealium()\n\n        let marginTop = {base: 8}\n        if (application === APPLICATION?.PLP_LINK_AND_SHEET) {\n            marginTop = {base: 8, xl: 4}\n        }\n\n        const enableContentBlockTracking = useVariant(LD_KEYS.enableContentBlockTracking, false)\n        const enableBraceletEditorPLP = useVariant(LD_KEYS.enableBraceletEditorPLP, false)\n\n        const isStudioTile = Boolean(\n            stylingStudio && typeof stylingStudio === 'string' && stylingStudio.length > 0\n        )\n\n        const studioProductIDs = useMemo(\n            () =>\n                isStudioTile\n                    ? stylingStudio\n                          .split(',')\n                          .map((s) => s.trim())\n                          .filter(Boolean)\n                    : [],\n            [isStudioTile, stylingStudio]\n        )\n\n        // Register the bracelet-editor MFE so window.pcp.braceletEditor is available on\n        // PLP/content pages where this module renders (the PDP registers it separately).\n        useMFERegistry(\n            'braceletEditor',\n            {\n                remoteApp: 'braceletEditor',\n                remoteComponentId: 'BraceletEditor',\n                remoteAppId: 'braceletEditor',\n                productId: studioProductIDs[0],\n                locale\n            },\n            enableBraceletEditorPLP && isStudioTile\n        )\n\n        const handleBraceletEditorDrawer = (event) => {\n            event.preventDefault()\n            tealiumLink({estore_event: 'button_clicked', button_id: 'styling_studio_open_plp'})\n            window?.pcp?.braceletEditor?.showModal({productIDs: studioProductIDs})\n        }\n\n        // For the in-grid Content Block variant (PLP_LINK_AND_SHEET) the description is hidden\n        // by default. It is shown when the Amplience \"Show description\" toggle (showDescription)\n        // is enabled. The PLP_PRODUCT_GROUP variant keeps showing it as before.\n        const shouldShowDescription =\n            Boolean(description) &&\n            (application !== APPLICATION?.PLP_LINK_AND_SHEET || showDescription)\n\n        // Content Block variant: Shop the Look with no products, meaning it's a pure\n        // content/messaging module. The content_type for tracking must be distinct from\n        // \"shop-the-look\" so the two are segmented separately.\n        // Gated behind enable-content-block-tracking LD flag.\n        // Replicates isEffectivelyEmpty from content-tracking-helpers without importing it\n        // to avoid a circular dependency. Handles both string and array productIDs formats.\n        const isEffectivelyEmpty = (value) => {\n            if (Array.isArray(value)) return value.length === 0\n            if (typeof value === 'string') return !value.trim()\n            return !value\n        }\n        const hasNoProducts = isEffectivelyEmpty(productIDs) && isEffectivelyEmpty(categoryID)\n        const isContentBlockVariant =\n            enableContentBlockTracking &&\n            application === APPLICATION?.PLP_LINK_AND_SHEET &&\n            hasNoProducts\n\n        return (\n            <GridItem\n                area={'description'}\n                colSpan={gridBreakpoints?.[application]?.colSpanDescription}\n                colStart={gridBreakpoints?.[application]?.colStartDescription}\n                sx={descriptionGrid}\n                mt={marginTop}\n            >\n                {shouldShowDescription && (\n                    <Description\n                        dataAuto={mediaConfig?.dataAuto}\n                        rootStyles={descriptionGrid?.description}\n                        textStyle={\n                            application === APPLICATION?.PLP_LINK_AND_SHEET ? 'bodySm' : undefined\n                        }\n                        description={description}\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_shoplook_description${componentIndex}`}\n                    />\n                )}\n                {isStudioTile && link && (\n                    <ContentLink\n                        linkData={link}\n                        contentMeta={meta}\n                        data-auto=\"shop-the-look-link\"\n                        customClickHandler={handleBraceletEditorDrawer}\n                    />\n                )}\n                {!isStudioTile && link && (\n                    <ContentLink\n                        linkData={link}\n                        contentMeta={meta}\n                        data-auto=\"shop-the-look-link\"\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_shoplook_link${componentIndex}`}\n                        contentType={isContentBlockVariant ? CONTENT_TYPE.CONTENT_BLOCK : undefined}\n                    />\n                )}\n            </GridItem>\n        )\n    }\n)\n\nShopTheLookDescriptionSection.propTypes = {\n    description: PropTypes.string,\n    link: PropTypes.object,\n    meta: PropTypes.object,\n    application: PropTypes.string,\n    showDescription: PropTypes.bool,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number,\n    categoryID: PropTypes.string,\n    productIDs: PropTypes.string,\n    stylingStudio: PropTypes.string\n}\n\nShopTheLookDescriptionSection.displayName = 'ShopTheLookDescriptionSection'\n","/**\n * Maps a product from the DOL Product API (`GET /products?productIds=…`) onto the shape\n * `ProductTileWrapper` / `ProductTile` expect.\n *\n * The category path needs no mapper - `transformBRSearchResponse` already returns tile-shaped\n * hits - so this is only used by the product-IDs path, replacing the inline transform that\n * `product-fetcher.jsx` applies to the SCAPI by-ID response today.\n *\n * Image parity (INS-5089): the tile must keep showing exactly what it shows today, i.e. the\n * single `main_rect_base` entry and no hover image. Do NOT add a `secondaryImage`, a view-type\n * fallback chain or a different crop here - that would be a visual change and belongs to its\n * own ticket.\n */\n\nimport {isProductOrderable} from 'pandora-shared-app/overrides/app/hooks/use-add-to-bag-flow/utils/orderability-helpers'\n\n// The one crop the by-ID path has always rendered (`findImage` in `product-fetcher.jsx` and\n// `product-carousel/utils`). Kept identical on purpose.\nconst MAIN_IMAGE_VIEW_TYPE = 'main_rect_base'\n\n// DOL caps a by-ID request at 36 IDs. STL never authors more than 6, so this is a guard.\nexport const DOL_PRODUCT_IDS_LIMIT = 36\n\n/**\n * Reads the primary image from either response flavour without changing which crop is used:\n * `imageGroups` (SCAPI-shaped) or `c_imageSequence` (DOL-shaped).\n * @param {object} product\n * @returns {object|null}\n */\nconst findPrimaryImage = (product) => {\n    const fromImageGroups = product?.imageGroups?.find(\n        (group) => group?.viewType === MAIN_IMAGE_VIEW_TYPE\n    )?.images?.[0]\n\n    if (fromImageGroups) return fromImageGroups\n\n    return (\n        product?.c_imageSequence?.find((image) => image?.viewType === MAIN_IMAGE_VIEW_TYPE) ?? null\n    )\n}\n\n/**\n * Resolves list / sale price from `c_price`, falling back to the flat `price` field.\n *\n * Range-priced masters (`c_price.type === 'range'`) are left to the tile: it reads `c_price`\n * itself and renders a \"from\" price out of `c_price.min`, so the mapper must not fabricate a\n * list price above the sale price - that would draw a strikethrough that does not exist today.\n * @param {object} product\n */\nconst resolvePrices = (product) => {\n    const dolPrice = product?.c_price\n\n    const salePrice =\n        dolPrice?.sales?.value ?? dolPrice?.min?.sales?.value ?? product?.price ?? null\n    const listPrice = dolPrice?.list?.value ?? dolPrice?.min?.list?.value ?? salePrice\n\n    return {\n        price: listPrice,\n        salePrice,\n        hasProductPromotions: Boolean(\n            listPrice != null && salePrice != null && listPrice > salePrice\n        ),\n        lastLowestPrice:\n            dolPrice?.lastLowestPrice ?? product?.c_extend?.priceInfo?.lastLowestPrice ?? null\n    }\n}\n\n/**\n * `c_metalName` / `c_metalGroup` come back as an array on some product types and as a plain\n * string on others; the PLP path passes whatever it gets straight through, so normalise\n * defensively instead of assuming `[0]`.\n * @param {string[]|string|undefined} value\n * @returns {string|null}\n */\nconst toSingleValue = (value) => {\n    if (Array.isArray(value)) return value[0] ?? null\n    return value ?? null\n}\n\n/**\n * Custom fields shared by `c_extend.custom` and the root-level `custom` object - the latter is\n * what `useProductCapabilities` and the Sneak Peek checks read.\n * @param {object} product\n */\nconst buildCustomFields = (product) => ({\n    metalName: toSingleValue(product?.c_metalName),\n    metalGroup: toSingleValue(product?.c_metalGroup),\n    metalGroupId: toSingleValue(product?.c_metalGroup),\n    category: product?.c_primaryCategory ?? null,\n    badge: product?.c_pndBadge ?? null,\n    collabBadge: product?.c_collabFlag ?? null,\n    size: product?.variants?.[0]?.variationValues?.size ?? null,\n    discount: 0,\n    availableForFindInStore: product?.c_availableForFindInStore ?? product?.availableForFindInStore,\n    availableForInStorePickup:\n        product?.c_availableForInStorePickup ?? product?.availableForInStorePickup,\n    nonPurchasable: product?.c_nonPurchasable ?? false,\n    status: product?.c_status,\n    isSneakPeekProduct: product?.c_isSneakPeekProduct ?? false,\n    isNotifyMe: product?.c_isNotifyMe ?? false\n})\n\n/**\n * @param {object} product - a single product from the DOL `/products` response\n * @returns {object} tile-shaped product\n */\nexport const mapDolProductToTile = (product) => {\n    const {price, salePrice, hasProductPromotions, lastLowestPrice} = resolvePrices(product)\n    const custom = buildCustomFields(product)\n    const isEngravable = product?.isEngravable ?? product?.c_engravable ?? false\n\n    return {\n        currency: product?.currency,\n        hitType: product?.type?.master ? 'master' : '',\n        productId: product?.id,\n        productName: product?.name,\n        productType: product?.type,\n        variationAttributes: product?.variationAttributes ?? [],\n        variants: product?.variants ?? [],\n        price,\n        salePrice,\n        pricePerUnit: product?.pricePerUnit,\n        hasProductPromotions,\n        orderable: product?.orderable ?? product?.inventory?.orderable,\n        primaryImage: findPrimaryImage(product),\n        // Passed through untouched so the tile keeps owning range display, member pricing and\n        // the `standardPriceTest` branch (`product-tile.jsx`) - no STL-specific price logic.\n        c_price: product?.c_price,\n        isEngravable,\n        giftCardType: product?.giftCardType ?? product?.c_gcType,\n        isNotifyMe: custom.isNotifyMe,\n        custom,\n        c_extend: {\n            custom,\n            recommendation: {},\n            // Passed through as the API delivers it, exactly like the PLP search path does; the\n            // by-ID path has always defaulted this to false when the API is silent.\n            isLowInventory: product?.c_extend?.isLowInventory ?? product?.isLowInventory ?? false,\n            isNew: false,\n            isEngravable,\n            // The tile reads its variants from here, not from the root-level field.\n            variants: product?.variants ?? [],\n            productUrl: product?.slugUrl ?? product?.c_slugUrl,\n            inventory: product?.inventory,\n            lastLowestPrice,\n            // Raw price-test / promotion signals - `product-tile.jsx` reads these directly.\n            promotions: product?.c_extend?.promotions,\n            priceInfo: product?.c_extend?.priceInfo,\n            // DOL by-ID answers carry no `productInStock`, so derive it from size / inventory\n            // orderability - without it the tile defaults to \"in stock\" and offers Add to Bag\n            // for a product whose every size is sold out.\n            productInStock:\n                product?.c_extend?.productInStock ??\n                product?.productInStock ??\n                isProductOrderable(product)\n        },\n        representedProduct: {\n            id: product?.variants?.[0]?.productId ?? null\n        }\n    }\n}\n\n/**\n * Normalises the DOL `/products` payload to an array of products. The endpoint answers with\n * `{products: [...]}`; the other shapes are tolerated so a proxy-level difference degrades to\n * an empty grid instead of a crash.\n * @param {object|Array} data\n * @returns {Array<object>}\n */\nexport const extractDolProducts = (data) => {\n    if (Array.isArray(data)) return data\n    if (Array.isArray(data?.products)) return data.products\n    if (Array.isArray(data?.data)) return data.data\n    return []\n}\n\n/**\n * @param {object|Array} data - raw DOL `/products` response\n * @param {number} [limit] - tile count for the current breakpoint\n * @returns {Array<object>} tile-shaped products\n */\nexport const mapDolProductsResponse = (data, limit) => {\n    const products = extractDolProducts(data).map(mapDolProductToTile)\n\n    return limit ? products.slice(0, limit) : products\n}\n","import {useMemo} from 'react'\n\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nimport {useCustomProductSearch} from 'pandora-shared-app/overrides/app/hooks/use-fetch-grid-content'\nimport {useCustomQuery} from 'pandora-shared-app/overrides/app/hooks/useCustomQuery'\nimport {usePromotionalPricing} from 'pandora-shared-app/overrides/app/hooks/use-promotional-pricing'\nimport {useCategoryFromCache} from 'pandora-shared-app/overrides/app/hooks/use-category-from-cache'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {getCustomApiPaths} from 'pandora-shared-app/overrides/app/utils/get-custom-apis'\nimport {useDolChannelHeaders} from 'pandora-shared-app/overrides/app/utils/dol-channel-headers'\n\nimport {processProductIDs, resolveCategoryName} from '../utils'\nimport {DOL_PRODUCT_IDS_LIMIT, mapDolProductsResponse} from '../utils/map-dol-product-to-tile'\n\n// Repeated `expand` params, the form DOL honours (`use-products.js` sends the same shape).\nconst DOL_PRODUCTS_EXPAND = ['availability', 'prices', 'promotions', 'custom', 'images']\n// The tile Add to Bag CTA resolves a size and adds a variant SKU, so it needs the variant data\n// the tile itself has never needed. Only requested when the CTA is rendered.\nconst DOL_PRODUCTS_EXPAND_WITH_VARIANTS = [...DOL_PRODUCTS_EXPAND, 'variants']\n\n/**\n * Data orchestration for the Shop The Look product grid, replacing what `ProductGrid` +\n * `ProductFetcher` did for the module.\n *\n * Both authoring modes are served by the DOL Product API and exactly one request is made:\n *\n * - **Category mode** (`categoryID`): `useCustomProductSearch`, i.e. the same hook the PLP and\n *   the product carousel use. Going through it rather than a raw query keeps the\n *   `pwa-search-engine` routing, the DOL Q3 channel headers, `x-environment`, the segment price\n *   context, the registered-customer refetch and `transformBRSearchResponse` for free.\n *   `isCmsOwnedSearch` opts the module out of the PLP 404 redirect: a category authored in\n *   Amplience that no longer exists is empty content, not a page-level 404.\n * - **Product-IDs mode** (`productIDs`): DOL `GET /products?productIds=…`, using the same param\n *   and header convention as `use-products.js`.\n *\n * @param {object} params\n * @param {string} [params.categoryID] - authored category ID\n * @param {string} [params.productIDs] - authored, comma-separated product IDs\n * @param {number} [params.limit] - tile count for the current breakpoint\n * @param {boolean} [params.enabled] - when false no request is made (flag off / no content)\n * @param {boolean} [params.withVariants] - also request variant data, for the Add to Bag CTA\n * @returns {{products: Array<object>, total: number, categoryName: string, isLoading: boolean,\n *   promotionalPricing: object}}\n */\nexport const useShopTheLookProductGridData = ({\n    categoryID = '',\n    productIDs = '',\n    limit,\n    enabled = true,\n    withVariants = false\n} = {}) => {\n    const {locale} = useMultiSite()\n    const {app: appConfig = {}} = getConfig() ?? {}\n    const organizationId = appConfig?.commerceAPI?.parameters?.organizationId\n    const proxyPath = appConfig?.dolAPI?.proxyPath\n\n    const enableNewDolContract = useVariant(LD_KEYS.enableNewDolContract, false)\n    // DOL Q3 channel migration - flag ON adds the mandatory channel headers and drops the\n    // deprecated `source` param, exactly as `use-products.js` does.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    const productIds = useMemo(\n        () => processProductIDs(productIDs).slice(0, DOL_PRODUCT_IDS_LIMIT),\n        [productIDs]\n    )\n\n    const isPidsMode = productIds.length > 0\n    const isCategoryMode = !isPidsMode && Boolean(categoryID)\n\n    // Category mode - DOL /products/search through the shared search hook.\n    const {\n        data: searchResult,\n        isSuccess: isSearchSuccess,\n        isError: isSearchError\n    } = useCustomProductSearch(\n        {limit, isCgidManual: true, urlSegment: categoryID, isCmsOwnedSearch: true},\n        [],\n        categoryID,\n        enableNewDolContract,\n        false,\n        enabled && isCategoryMode\n    )\n\n    // Product-IDs mode - DOL /products.\n    const {\n        data: productsResult,\n        isSuccess: isProductsSuccess,\n        isError: isProductsError\n    } = useCustomQuery(\n        ['shop-the-look-dol-products', locale?.id, productIds.join(','), withVariants],\n        {\n            path: getCustomApiPaths(proxyPath, organizationId).PRODUCTS,\n            queryParams: {\n                locale: locale?.id,\n                productIds: productIds.join(','),\n                expand: withVariants ? DOL_PRODUCTS_EXPAND_WITH_VARIANTS : DOL_PRODUCTS_EXPAND,\n                ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'})\n            },\n            headers: {\n                ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channeltype: 'online'}),\n                'x-environment': appConfig?.targetEnvironment\n            }\n        },\n        {\n            enabled: enabled && isPidsMode,\n            meta: {displayName: 'useShopTheLookProductGridData'}\n        }\n    )\n\n    const products = useMemo(() => {\n        if (isPidsMode) return mapDolProductsResponse(productsResult, limit)\n        if (isCategoryMode) return (searchResult?.hits ?? []).slice(0, limit)\n        return []\n    }, [isPidsMode, isCategoryMode, productsResult, searchResult, limit])\n\n    // No-op (no request, `{}` back) unless `pwa-search-engine` is bloomreach - same as today.\n    const promotionalPricing = usePromotionalPricing(products, 'shop-the-look')\n\n    const {category} = useCategoryFromCache(categoryID, {\n        enabled: enabled && isCategoryMode,\n        withApiFallback: true\n    })\n\n    const categoryName = useMemo(() => {\n        if (!isCategoryMode) return ''\n        return resolveCategoryName({result: searchResult, categoryID, category})\n    }, [isCategoryMode, searchResult, categoryID, category])\n\n    const hasContent = isPidsMode || isCategoryMode\n    // The active query has answered, one way or the other. An error settles it too: an errored\n    // module renders nothing rather than an endless skeleton (and never a page-level error).\n    const isSettled = isPidsMode\n        ? isProductsSuccess || isProductsError\n        : isSearchSuccess || isSearchError\n\n    return {\n        products,\n        // The CTA is category-mode only, so there is no total to report for product IDs.\n        total: isCategoryMode ? searchResult?.total ?? 0 : 0,\n        categoryName,\n        isLoading: Boolean(enabled && hasContent && !isSettled),\n        promotionalPricing\n    }\n}\n","import React, {useState, useMemo, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n// Chakra UI Component(s)\nimport {\n    GridItem,\n    useMultiStyleConfig,\n    useBreakpointValue,\n    Button,\n    Text\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Component(s)\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\n// Custom Shared Component(s)\nimport ProductGrid from 'pandora-shared-app/overrides/app/components/product-grid'\n\n// Constants\nimport {gridBreakpoints, APPLICATION} from '../constants'\n\n// Utils\nimport {processProductIDs, handleProductSearchResult} from '../utils'\n\n// Hooks\nimport {useShopTheLookProductGridData} from '../hooks/use-shop-the-look-product-grid-data'\n\n// Partial\nimport {ShopTheLookProductSkeletonGrid, ShopTheLookProductGrid} from './'\n\nimport {isStorybook} from 'pandora-shared-app/overrides/app/utils/is-storybook'\nimport {useCategoryFromCache} from 'pandora-shared-app/overrides/app/hooks/use-category-from-cache'\n\nimport {useProductListInteractions} from 'pandora-shared-app/overrides/app/hooks/use-product-list-interactions'\nimport {useStringVariant, useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'content/overrides/app/api_keys/ld-keys'\n\nconst IS_STORYBOOK = isStorybook()\n\nexport const ShopTheLookProductsGridSection = React.memo(\n    ({\n        productIDs = '',\n        categoryID = '',\n        meta = {},\n        application = '',\n        isAddToBagEnabled = false\n    }) => {\n        const [displayState, setDisplayState] = useState({\n            productGrid: false,\n            categoryBtn: false\n        })\n        const [totalProducts, setTotalProducts] = useState(0)\n        const [categoryName, setCategoryName] = useState('')\n\n        const {productsGrid} = useMultiStyleConfig('ShopTheLook', {})\n        const {formatMessage} = useIntl()\n        const limit = useBreakpointValue({base: 4, xl: 6})\n\n        // The exposed grid only exists from `xl` up - below it the look is shopped through the\n        // bag icon and its sheet. The parent renders on the `xl` fallback until the media query\n        // resolves on the client, so this section still mounts for a single render below `xl`.\n        // With no fallback this is `undefined` on the server and for that first render, then the\n        // real value - so the request is held until we know the grid is actually rendered, and\n        // it is made once, at the resolved `limit`, instead of first at the `base` tile count.\n        const isGridBreakpoint = useBreakpointValue({base: false, xl: true}, {fallback: undefined})\n        const isAwaitingBreakpoint = isGridBreakpoint === undefined\n\n        const isBloomreachEnabled =\n            useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n\n        // INS-5089 kill switch: ON = the module's own DOL-backed grid, OFF = the legacy\n        // ProductGrid/ProductFetcher path, unchanged.\n        const isDolProductGridEnabled = useVariant(\n            LD_KEYS.enableContentShopTheLookDolProductGridRefactored,\n            false\n        )\n\n        // Use the hook with default values for unavailable context\n        const interactions = useProductListInteractions(\n            {isSearch: false}, // ShopTheLook is not in search context\n            {productSearchResult: null}, // No product search result available\n            {trackSearchEvents: null}, // Tracking won't run anyway without productSearchResult\n            isBloomreachEnabled\n        )\n\n        const {category} = useCategoryFromCache(categoryID, {\n            enabled: !!categoryID,\n            withApiFallback: true\n        })\n\n        const {processedProductIDs, productGridData} = useMemo(() => {\n            const processedIDs = productIDs ? processProductIDs(productIDs) : []\n            const data = {limit, displayLimit: limit}\n\n            if (processedIDs.length) {\n                data.pids = processedIDs\n            } else if (categoryID) {\n                data.cgid = categoryID\n            }\n\n            return {processedProductIDs: processedIDs, productGridData: data}\n        }, [productIDs, categoryID, limit])\n\n        const stlProductGridData = useShopTheLookProductGridData({\n            categoryID,\n            productIDs,\n            limit,\n            enabled: isDolProductGridEnabled && !IS_STORYBOOK && isGridBreakpoint === true,\n            withVariants: isAddToBagEnabled\n        })\n\n        const linkData = categoryID\n            ? {\n                  value: categoryID,\n                  type: 'category',\n                  target: false\n              }\n            : {}\n\n        const resolvedTotalProducts = isDolProductGridEnabled\n            ? stlProductGridData.total\n            : totalProducts\n        const resolvedCategoryName = isDolProductGridEnabled\n            ? stlProductGridData.categoryName\n            : categoryName\n\n        const shouldShowProductGrid = displayState.productGrid || isServer\n        const shouldShowCategoryButton =\n            (displayState.categoryBtn || (isServer && categoryID && !processedProductIDs.length)) &&\n            resolvedTotalProducts > 0\n        const hasNoCategoryButton = !displayState.categoryBtn\n\n        useEffect(() => {\n            if (processedProductIDs.length || categoryID) {\n                setDisplayState({\n                    productGrid: true,\n                    categoryBtn: !processedProductIDs.length && !!categoryID\n                })\n            }\n        }, [processedProductIDs, categoryID])\n\n        if (application !== APPLICATION?.PLP_PRODUCT_GROUP) return null\n\n        const renderProductGrid = () => {\n            if (IS_STORYBOOK) return <ShopTheLookProductSkeletonGrid />\n\n            if (isDolProductGridEnabled) {\n                return (\n                    <ShopTheLookProductGrid\n                        products={stlProductGridData.products}\n                        // While the request is held the grid has nothing yet - stay on the\n                        // skeleton rather than collapsing the module for a frame.\n                        isLoading={stlProductGridData.isLoading || isAwaitingBreakpoint}\n                        limit={limit}\n                        promotionalPricing={stlProductGridData.promotionalPricing}\n                        category={category}\n                        meta={meta}\n                        interactions={interactions}\n                        style={productsGrid?.grid}\n                        showBuyFromTile={isAddToBagEnabled}\n                    />\n                )\n            }\n\n            return (\n                <ProductGrid\n                    isInGrid={true}\n                    isShopTheLook={true}\n                    style={productsGrid?.grid}\n                    gridData={productGridData}\n                    columns=\"repeat(6, 1fr)\"\n                    onProductSearchResult={(result) =>\n                        handleProductSearchResult(\n                            result,\n                            setTotalProducts,\n                            setCategoryName,\n                            categoryID,\n                            category\n                        )\n                    }\n                    section=\"shop_the_look_discover\"\n                    instanceId={meta?.deliveryId || meta?.name}\n                    onProductClick={interactions?.handleProductClick}\n                    navigate={interactions?.navigate}\n                />\n            )\n        }\n\n        return (\n            <GridItem\n                area={'products'}\n                colSpan=\"6\"\n                colStart={gridBreakpoints?.[application]?.colStartProducts}\n                sx={productsGrid}\n                className={hasNoCategoryButton ? 'no-category-btn' : ''}\n            >\n                {shouldShowProductGrid && renderProductGrid()}\n\n                {shouldShowCategoryButton && (\n                    <ContentLink\n                        linkData={linkData}\n                        contentMeta={meta}\n                        rootStyles={productsGrid?.linkStyle}\n                    >\n                        <Button\n                            variant=\"outline\"\n                            colorScheme=\"light\"\n                            data-testid=\"contentCta\"\n                            sx={productsGrid?.buttonStyle}\n                        >\n                            <Text textStyle=\"caption\">\n                                {formatMessage(\n                                    {\n                                        id: 'shop_the_look.btn.redirect_to_category',\n                                        defaultMessage:\n                                            'Shop All {totalProducts} bestsellers from {categoryName}'\n                                    },\n                                    {\n                                        totalProducts: resolvedTotalProducts,\n                                        categoryName: resolvedCategoryName\n                                    }\n                                )}\n                            </Text>\n                        </Button>\n                    </ContentLink>\n                )}\n            </GridItem>\n        )\n    }\n)\n\nShopTheLookProductsGridSection.propTypes = {\n    productIDs: PropTypes.string,\n    categoryID: PropTypes.string,\n    meta: PropTypes.object,\n    application: PropTypes.string,\n    isAddToBagEnabled: PropTypes.bool\n}\n\nShopTheLookProductsGridSection.displayName = 'ShopTheLookProductsGridSection'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component\nimport {ProductCarousel} from 'pandora-shared-app/overrides/app/components/product-carousel'\n\nexport const ShopTheLookDrawerBody = ({\n    productConfig,\n    carouselConfig = {},\n    containerStyle = {},\n    onProductsLoad = () => {},\n    meta = {},\n    showBuyFromTile = false\n}) => {\n    return (\n        <Box sx={containerStyle}>\n            <ProductCarousel\n                productConfig={productConfig}\n                carouselConfig={carouselConfig}\n                onProductsLoad={onProductsLoad}\n                section=\"shop_the_look_sheet\"\n                instanceId={meta?.deliveryId || meta?.name}\n                isShopTheLook={true}\n                showBuyFromTile={showBuyFromTile}\n            />\n        </Box>\n    )\n}\n\nShopTheLookDrawerBody.propTypes = {\n    productConfig: PropTypes.shape({\n        productIDs: PropTypes.string,\n        categoryID: PropTypes.string,\n        limit: PropTypes.number\n    }).isRequired,\n    carouselConfig: PropTypes.object,\n    containerStyle: PropTypes.object,\n    onProductsLoad: PropTypes.func,\n    meta: PropTypes.shape({\n        schema: PropTypes.string,\n        name: PropTypes.string,\n        deliveryId: PropTypes.string\n    }),\n    showBuyFromTile: PropTypes.bool\n}\n\nShopTheLookDrawerBody.displayName = 'ShopTheLookDrawerBody'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\n\n// Icon\nimport {BagIcon} from 'pandora-shared-app/overrides/app/components/icons'\n\n// Chakra UI Component(s)\nimport {\n    Button,\n    IconButton,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n/**\n * Shop CTA for the PLP \"Link + Sheet\" (half-width) Shop the Look tile.\n *\n * Also rendered for a sheet-only PLP_PRODUCT_GROUP tile (INS-5089), which shops\n * through the bag icon below `xl`, and which takes the labelled form as well.\n *\n * `isClickableTileEnabled` is the enable-plp-stl-clickable-tile state, resolved\n * once by the media section and passed down. ON renders the INS-5194 labelled\n * \"SHOP THE LOOK\" CTA; OFF renders the original icon-only bag button.\n */\nexport const ShopTheLookBagButton = ({\n    onClick,\n    isSsrPosterEnabled = false,\n    isClickableTileEnabled = false,\n    ...restProps\n}) => {\n    const {formatMessage} = useIntl()\n    const {bagButton, bagButtonIconOnly} = useMultiStyleConfig('ShopTheLook')\n\n    const baseSx = isClickableTileEnabled ? bagButton : bagButtonIconOnly\n    const buttonSx = isSsrPosterEnabled ? {...baseSx, zIndex: 5} : baseSx\n\n    // enable-plp-stl-clickable-tile OFF path — delete with the flag.\n    if (!isClickableTileEnabled) {\n        return (\n            <IconButton\n                variant=\"action\"\n                sx={buttonSx}\n                icon={<BagIcon boxSize={5} />}\n                onClick={onClick}\n                data-testid=\"bag-button\"\n                {...restProps}\n            />\n        )\n    }\n\n    return (\n        <Button\n            variant=\"action\"\n            sx={buttonSx}\n            leftIcon={<BagIcon boxSize={5} />}\n            // Figma gap between the icon and the label. Chakra gives `leftIcon`\n            // its own margin, so a `gap` in the style config would not apply.\n            iconSpacing={6}\n            onClick={onClick}\n            data-testid=\"bag-button\"\n            {...restProps}\n        >\n            {/* Rendered in upper case by the `bagButton` style, so translators\n                keep working with sentence-case copy. */}\n            {formatMessage({\n                id: 'shop_the_look.btn.shop_the_look',\n                defaultMessage: 'Shop the look'\n            })}\n        </Button>\n    )\n}\n\nShopTheLookBagButton.propTypes = {\n    onClick: PropTypes.func.isRequired,\n    isSsrPosterEnabled: PropTypes.bool,\n    isClickableTileEnabled: PropTypes.bool\n}\n\nShopTheLookBagButton.displayName = 'BagButton'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {v4 as uuidv4} from 'uuid'\n\nimport {\n    Grid,\n    GridItem,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {Skeleton as ProductTileSkeleton} from 'pandora-shared-app/overrides/app/components/product-tile/partials/skeleton'\n\nconst style = {\n    pt: 0,\n    mx: 0,\n    gridRowGap: {base: 16, xl: 24},\n    gridColumnGap: {base: 2, md: 3},\n\n    '.chakra-stack > div:last-child': {\n        bgColor: 'red.200',\n        width: 'auto'\n    }\n}\n\nexport const ShopTheLookProductSkeletonGrid = ({rows = 2, columns}) => {\n    const responsiveColumns = useBreakpointValue({base: 2, xl: 3})\n    const columnValue = columns ?? responsiveColumns\n\n    const totalTiles = rows * columnValue\n\n    return (\n        <Grid templateColumns={`repeat(${columnValue}, 1fr)`} sx={style}>\n            {Array.from({length: totalTiles}).map(() => (\n                <GridItem key={uuidv4()}>\n                    <ProductTileSkeleton />\n                </GridItem>\n            ))}\n        </Grid>\n    )\n}\n\nShopTheLookProductSkeletonGrid.propTypes = {\n    rows: PropTypes.number,\n    columns: PropTypes.number\n}\n\nShopTheLookProductSkeletonGrid.displayName = 'ShopTheLookProductSkeletonGrid'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {isHydrated} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Chakra UI Component(s)\nimport {Grid} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component(s)\nimport ProductTileWrapper from 'pandora-shared-app/overrides/app/components/product-grid/product-tile-wrapper'\nimport {ProductListSkeleton} from 'pandora-shared-app/overrides/app/components/product-grid/product-list-skeleton'\nimport {useProductTileFlags} from 'pandora-shared-app/overrides/app/components/product-tile/use-product-tile-flags'\nimport {useProductCapabilities} from 'pandora-shared-app/overrides/app/hooks/use-product-capabilities'\n\n// Grid geometry kept identical to what `ProductGrid` rendered for the module, so the SSR\n// markup and the hydrated layout do not shift.\nconst ROW_GAP = {base: 12, lg: 16}\n\n/**\n * Self-contained Shop The Look product grid.\n *\n * Renders `ProductTileWrapper` directly instead of going through the shared\n * `ProductGrid`/`ProductFetcher`/`ProductList` chain. Data comes from\n * `useShopTheLookProductGridData`; this component only renders.\n */\nexport const ShopTheLookProductGrid = ({\n    products = [],\n    isLoading = false,\n    limit,\n    promotionalPricing,\n    category,\n    meta = {},\n    interactions,\n    columns = 'repeat(6, 1fr)',\n    style = {},\n    showBuyFromTile = false\n}) => {\n    // Read all tile flags ONCE per grid instead of ~18 reads per tile (FIND-6629)\n    const productTileFlags = useProductTileFlags()\n    // Capability computed ONCE per grid instead of 12 flag reads per tile (FIND-6629)\n    const {isBuyFromTileAvailable} = useProductCapabilities()\n\n    // Server render and the pre-hydration client render must both be the skeleton, exactly as\n    // the shared grid did, so the markup React hydrates matches the markup it rendered.\n    const showSkeleton = !isHydrated() || isLoading\n\n    // An empty or errored product response renders nothing - the module collapses, the host PLP\n    // is untouched. The shared grid showed `EmptySearchResults` here, which is PLP copy that has\n    // no place inside a content module (INS-5089 FR7).\n    if (!showSkeleton && !products.length) return null\n\n    return (\n        <Grid\n            templateColumns={columns}\n            rowGap={ROW_GAP}\n            marginBottom={24}\n            data-auto=\"divPLPGridContainer\"\n            sx={style}\n        >\n            {showSkeleton ? (\n                <ProductListSkeleton limit={limit} isShopTheLook={true} isInGrid={true} />\n            ) : (\n                products.map((product, index) => (\n                    <ProductTileWrapper\n                        key={product.productId}\n                        index={index}\n                        product={product}\n                        category={category}\n                        isShopTheLook={true}\n                        isInGrid={true}\n                        promotionalPricing={promotionalPricing}\n                        onProductClick={interactions?.handleProductClick}\n                        section=\"shop_the_look_discover\"\n                        instanceId={meta?.deliveryId || meta?.name}\n                        flags={productTileFlags}\n                        showBuyFromTile={showBuyFromTile}\n                        isBuyFromTileAvailable={isBuyFromTileAvailable}\n                    />\n                ))\n            )}\n        </Grid>\n    )\n}\n\nShopTheLookProductGrid.propTypes = {\n    products: PropTypes.array,\n    isLoading: PropTypes.bool,\n    limit: PropTypes.number,\n    promotionalPricing: PropTypes.object,\n    category: PropTypes.object,\n    meta: PropTypes.shape({\n        name: PropTypes.string,\n        schema: PropTypes.string,\n        deliveryId: PropTypes.string\n    }),\n    interactions: PropTypes.shape({\n        handleProductClick: PropTypes.func,\n        navigate: PropTypes.func\n    }),\n    columns: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.number]),\n    style: PropTypes.object,\n    showBuyFromTile: PropTypes.bool\n}\n\nShopTheLookProductGrid.displayName = 'ShopTheLookProductGrid'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {\n    Box,\n    Grid,\n    useBreakpointValue,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Constants\nimport {getGridConfig, APPLICATION} from './constants'\nimport {getShopTheLookApplication, isSheetOnlyProductGroup} from './utils'\n\n// Hooks\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'content/overrides/app/api_keys/ld-keys'\n\nimport {\n    ShopTheLookHeaderSection,\n    ShopTheLookMediaSection,\n    ShopTheLookDescriptionSection,\n    ShopTheLookProductsGridSection\n} from './partials'\n\nexport const ShopTheLook = ({\n    data = {\n        _meta: {},\n        collabLogo: '',\n        header: '',\n        description: '',\n        media: {},\n        categoryID: '',\n        productIDs: '',\n        stylingStudio: '',\n        link: {},\n        context: '',\n        showDescription: false\n    },\n    modulePage = '',\n    tabName = '',\n    componentIndex = 0,\n    isInGrid = false,\n    isHalfWidthInGrid = false\n}) => {\n    const {\n        collabLogo,\n        header,\n        description,\n        media,\n        categoryID,\n        productIDs,\n        stylingStudio,\n        _meta,\n        link,\n        context,\n        showDescription\n    } = data\n\n    const {container} = useMultiStyleConfig('ShopTheLook')\n    const isFullWidthInGrid = Boolean(isInGrid && !isHalfWidthInGrid)\n    const application = getShopTheLookApplication({context, isInGrid, isHalfWidthInGrid})\n\n    // Below `xl` the look is shopped through the bag icon and its sheet instead of the exposed\n    // product grid. `fallback: 'xl'` keeps the server HTML on the wide layout: the products area\n    // is the only part that differs, so desktop never reflows after hydration.\n    const isMobile = useBreakpointValue({base: true, xl: false}, {fallback: 'xl'})\n\n    // Behind the same kill switch as the DOL-backed grid itself, so the flag is a COMPLETE\n    // rollback (functional requirement 8): with it off, the module renders the exposed grid at\n    // every breakpoint exactly as it did before INS-5089, not just at `xl` and wider.\n    const isDolProductGridEnabled = useVariant(\n        LD_KEYS.enableContentShopTheLookDolProductGridRefactored,\n        false\n    )\n    const isSheetOnly = isDolProductGridEnabled && isSheetOnlyProductGroup({application, isMobile})\n\n    // INS-5195: the Add to Bag CTA is application-agnostic - it belongs on every Shop The Look\n    // product tile, in the exposed grid and in the sheet alike. Read once here so both tile\n    // surfaces are gated on the same value, and additive with the per-product buy-from-tile\n    // capability the tiles already check.\n    const isAddToBagEnabled = useVariant(LD_KEYS.enableContentShopTheLookAddToBag, false)\n\n    let marginX = {base: 8, md: 12, xl: 16}\n    let gridMarginX = {}\n\n    if (application === APPLICATION?.PLP_LINK_AND_SHEET || isFullWidthInGrid) {\n        marginX = {base: 0, md: 0, xl: 0}\n        gridMarginX = {xl: 0}\n    }\n\n    if (tabName.includes('GS')) {\n        componentIndex = ''\n    }\n\n    return (\n        <Box\n            sx={container}\n            data-testid=\"shop-the-look\"\n            mx={marginX}\n            data-is-in-grid={String(Boolean(isInGrid))}\n            data-is-half-width-in-grid={String(Boolean(isHalfWidthInGrid))}\n            data-is-full-width-in-grid={String(Boolean(isFullWidthInGrid))}\n        >\n            <Grid\n                templateAreas={getGridConfig?.[application]?.templateAreas}\n                gridTemplateRows={getGridConfig?.[application]?.templateRows}\n                className={isSheetOnly ? `${application} sheet-only` : application}\n                mx={gridMarginX}\n            >\n                {/* Header Section */}\n                <ShopTheLookHeaderSection\n                    collabLogo={collabLogo}\n                    header={header}\n                    application={application}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                />\n\n                {/* Media Section */}\n                <ShopTheLookMediaSection\n                    media={media}\n                    categoryID={categoryID}\n                    productIDs={productIDs}\n                    application={application}\n                    meta={_meta}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                    isSheetOnly={isSheetOnly}\n                    isAddToBagEnabled={isAddToBagEnabled}\n                />\n\n                {/* Description Section */}\n                <ShopTheLookDescriptionSection\n                    description={description}\n                    link={link}\n                    meta={_meta}\n                    application={application}\n                    showDescription={showDescription}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                    categoryID={categoryID}\n                    productIDs={productIDs}\n                    stylingStudio={stylingStudio}\n                />\n\n                {/* Products Grid Section - replaced by the bag icon + sheet below `xl` */}\n\n                {application === APPLICATION?.PLP_PRODUCT_GROUP && !isSheetOnly && (\n                    <ShopTheLookProductsGridSection\n                        productIDs={productIDs}\n                        categoryID={categoryID}\n                        meta={_meta}\n                        application={application}\n                        isAddToBagEnabled={isAddToBagEnabled}\n                    />\n                )}\n            </Grid>\n        </Box>\n    )\n}\n\nShopTheLook.propTypes = {\n    data: PropTypes.shape({\n        _meta: PropTypes.shape({\n            name: PropTypes.string,\n            schema: PropTypes.string,\n            deliveryId: PropTypes.string\n        }),\n        collabLogo: PropTypes.string,\n        header: PropTypes.string,\n        description: PropTypes.string,\n        media: PropTypes.object,\n        categoryID: PropTypes.string,\n        productIDs: PropTypes.string,\n        stylingStudio: PropTypes.string,\n        link: PropTypes.object,\n        context: PropTypes.string,\n        showDescription: PropTypes.bool\n    }),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    isInGrid: PropTypes.bool,\n    isHalfWidthInGrid: PropTypes.bool\n}\n\nShopTheLook.displayName = 'ShopTheLook'\n","// React Core\nimport React from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {ImageType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Chakra UI Components\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Shared Components & Utils\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\nimport {useConsistentImageUrl} from 'pandora-shared-app/overrides/app/hooks/use-consistent-image-url'\n\n// Constants\nconst ASPECT_RATIO_NUMBER = 4 / 3\nconst ASPECT_RATIO_STRING = '4:3'\nconst DATA_AUTO = 'imgCraftAndQuality'\n\nexport const RenderImage = ({image = undefined, isLazyLoad = true, ...rest}) => {\n    const {imageUrl, altText, copyright} =\n        useConsistentImageUrl(image, 'img', ASPECT_RATIO_STRING) || {}\n\n    return (\n        imageUrl && (\n            <Box {...rest}>\n                <ImageCard\n                    src={imageUrl}\n                    alt={altText}\n                    aspectRatio={ASPECT_RATIO_NUMBER}\n                    dataAuto={DATA_AUTO}\n                    copyright={copyright}\n                    isLazyLoad={isLazyLoad}\n                />\n            </Box>\n        )\n    )\n}\n\nRenderImage.propTypes = {\n    image: ImageType,\n    isLazyLoad: PropTypes.bool\n}\n\nRenderImage.displayName = 'RenderImage'\n","// React Core\nimport React, {memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {ImageCarouselType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Chakra UI Components\nimport {\n    Box,\n    Grid,\n    GridItem,\n    Text,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Shared Components\nimport {AspectRatioSkeleton} from 'pandora-shared-app/overrides/app/utils/aspect-ratio-skeleton'\n\n// Local Partials\nimport {RenderImage} from '../render-image'\n\n// Custom Hooks\nimport {useIsClient} from 'pandora-shared-app/overrides/app/hooks'\n\n// Third-Party Libraries\nimport {motion} from 'framer-motion'\n\n// Constants\nconst MEDIA_ASPECT_RATIO = 4 / 3\nconst templateColumns = {base: `repeat(6, 1fr)`}\nconst colSpan = {base: 5, md: 3}\n\n// Animation Variants\nconst animationVariants = {\n    hidden: {opacity: 0},\n    visible: {opacity: 1}\n}\n\n// Utility Functions\nconst getOrdinalValue = (num) => {\n    const ordinals = {\n        1: 'First',\n        2: 'Second',\n        3: 'Third'\n    }\n    return ordinals[num + 1] || 'InactiveSlide'\n}\n\n/**\n * RenderCard Component\n *\n * A single card unit in the CraftAndQuality section.\n * Renders an image with a title and description.\n * Uses a skeleton during SSR and a fade-in animation on client when active.\n *\n * @component\n * @example\n * <RenderCard\n *   image={imageData}\n *   subHeading=\"High Standards\"\n *   description=\"Every step matters\"\n *   isActive={true}\n *   index={0}\n * />\n *\n * @param {Object} props\n * @param {Object} props.image - Image data object\n * @param {string} props.description - Description for the card\n * @param {string} props.subHeading - Title\n * @param {boolean} props.isActive - Toggles visibility animation\n * @param {number} props.index - Card index\n * @param {boolean} props.disableAnimation - If true, disables animation\n *\n * @returns {JSX.Element}\n */\nexport const RenderCard = memo(\n    ({\n        image = undefined,\n        description = '',\n        subHeading = '',\n        isActive = false,\n        index = 0,\n        disableAnimation = false\n    }) => {\n        const {card} = useMultiStyleConfig('CraftAndQuality')\n        const isClient = useIsClient()\n\n        const content = (\n            <Box sx={card?.info}>\n                <Text sx={card?.info?.subHeading}>{subHeading}</Text>\n                <Text sx={card?.info?.description}>{description}</Text>\n            </Box>\n        )\n\n        return (\n            <Box sx={card} data-auto={`divCraftAndQuality${getOrdinalValue(index)}`}>\n                {/* Image Area */}\n                {isClient ? (\n                    <RenderImage image={image} isLazyLoad={!disableAnimation} />\n                ) : (\n                    <AspectRatioSkeleton aspectRatio={MEDIA_ASPECT_RATIO} />\n                )}\n\n                {/* Text Area */}\n                <Grid sx={card?.grid} templateColumns={templateColumns}>\n                    <GridItem colSpan={colSpan}>\n                        {disableAnimation ? (\n                            content\n                        ) : (\n                            <motion.div\n                                initial=\"hidden\"\n                                animate={isActive ? 'visible' : 'hidden'}\n                                variants={animationVariants}\n                                transition={{duration: 0.5, ease: 'easeInOut'}}\n                                aria-hidden={!isActive}\n                            >\n                                {content}\n                            </motion.div>\n                        )}\n                    </GridItem>\n                </Grid>\n            </Box>\n        )\n    }\n)\n\nRenderCard.propTypes = {\n    image: ImageCarouselType,\n    description: PropTypes.string,\n    subHeading: PropTypes.string,\n    isActive: PropTypes.bool,\n    index: PropTypes.number,\n    disableAnimation: PropTypes.bool\n}\n\nRenderCard.displayName = 'RenderCard'\n","// React Core\nimport React, {memo, useState, useCallback} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {ImageCarouselType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Chakra UI Components\nimport {\n    Grid,\n    GridItem,\n    Text,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Shared Components\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\n\n// Local Partials\nimport {RenderCard} from '../render-card'\n\n// Third-Party Libraries\nimport {Controller, Autoplay} from 'swiper/modules'\n\n// Constants\nconst templateColumns = {base: `repeat(6, 1fr)`}\nconst swiperModules = [Controller, Autoplay]\nconst showOnlyOnMobile = {base: 'grid', xl: 'none'}\n\n/**\n * RenderCarousel Component\n *\n * A responsive carousel for the CraftAndQuality section.\n * Displays a heading and a horizontally scrollable set of cards using Swiper.\n * Falls back to rendering a single static card on the server (SSR-safe).\n *\n * @component\n * @example\n * <RenderCarousel\n *   heading=\"Crafted to Last\"\n *   imageCarousel={[...]}\n *   isClient={true}\n *   modulePage=\"craftAndQuality\"\n *   tabName=\"carousel\"\n *   componentIndex={0}\n * />\n *\n * @param {Object} props\n * @param {string} props.heading - Optional heading text displayed above the carousel.\n * @param {Array} props.imageCarousel - Array of image + text data to render as cards.\n * @param {boolean} props.isClient - Whether the app is running in client-side context.\n * @param {string} props.modulePage - The module page name.\n * @param {string} props.tabName - The tab name.\n * @param {number} props.componentIndex - The component index.\n *\n * @returns {JSX.Element}\n */\nexport const RenderCarousel = memo(\n    ({\n        heading = '',\n        imageCarousel = [],\n        isClient = false,\n        modulePage = '',\n        tabName = '',\n        componentIndex = 0\n    }) => {\n        const isMobile = useBreakpointValue({base: true, xl: false})\n        const shouldRender = isClient ? isMobile : true\n\n        const [activeIndex, setActiveIndex] = useState(0)\n\n        // Handle slide change\n        const handleSlideChange = useCallback((index) => {\n            setActiveIndex(index)\n        }, [])\n\n        // Render each slide\n        const renderSlide = useCallback(\n            (slide, index) => (\n                <RenderCard\n                    {...slide}\n                    isActive={index === activeIndex}\n                    index={index}\n                    disableAnimation={false}\n                    isClient={isClient}\n                />\n            ),\n            [activeIndex, isClient]\n        )\n\n        if (!shouldRender) {\n            return null\n        }\n\n        const processedSlides = imageCarousel\n\n        return (\n            <Grid\n                templateColumns={templateColumns}\n                className=\"caq-carousel\"\n                display={showOnlyOnMobile}\n            >\n                {/* Heading */}\n                {heading && (\n                    <GridItem colSpan={6}>\n                        <Text as=\"h2\" textStyle=\"headingSm\" data-auto=\"lblCraftAndQualityHeader\">\n                            {heading}\n                        </Text>\n                    </GridItem>\n                )}\n\n                {/* Carousel */}\n                {processedSlides?.length > 0 && (\n                    <GridItem\n                        colSpan={6}\n                        data-cs-override-id={`${modulePage}${\n                            tabName ? `_${tabName}` : ''\n                        }_craftquality_carousel${componentIndex}`}\n                    >\n                        {isClient ? (\n                            <Carousel\n                                modules={swiperModules}\n                                grabCursor={true}\n                                slides={processedSlides}\n                                renderSlide={renderSlide}\n                                spaceBetween={16}\n                                data-auto=\"CraftAndQualityCarousel\"\n                                onSlideChange={handleSlideChange}\n                            />\n                        ) : (\n                            <RenderCard\n                                {...processedSlides?.[0]}\n                                isActive\n                                index={0}\n                                disableAnimation={true}\n                                isClient={false}\n                            />\n                        )}\n                    </GridItem>\n                )}\n            </Grid>\n        )\n    }\n)\n\nRenderCarousel.propTypes = {\n    heading: PropTypes.string,\n    imageCarousel: PropTypes.arrayOf(ImageCarouselType),\n    isClient: PropTypes.bool,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nRenderCarousel.displayName = 'RenderCarousel'\n","// React Core\nimport React, {useMemo, memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {ImageCarouselType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Chakra UI Components\nimport {\n    Grid,\n    GridItem,\n    Text,\n    useBreakpointValue,\n    Box\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Shared Components\nimport {AspectRatioSkeleton} from 'pandora-shared-app/overrides/app/utils/aspect-ratio-skeleton'\n\n// Local Partials\nimport {RenderText, RenderImage} from '../'\n\n// Constants\nconst MEDIA_ASPECT_RATIO = 4 / 3\nconst styles = {\n    templateAreaTop: {xl: `\"heading heading item1Img\" \"item2Img item3Img item1Img\"`},\n    gridTemplateRowsTop: {xl: '1fr auto'},\n    templateAreaBottom: {xl: `\"item2Text item3Text item1Text\"`},\n    gridTemplateRowsBottom: {base: 'auto auto auto'},\n    styleBottomGrid: {mt: 6},\n    colSpanHeading: {base: 6, xl: 3},\n    colStartHeading: 1,\n    colSpanItem2: 3,\n    colStartItem2: 1,\n    colSpanItem3: 3,\n    colStartItem3: 4\n}\nconst showOnlyOnDesktop = {base: 'none', xl: 'block'}\n\n/**\n * RenderGrid Component\n *\n * Desktop layout version of the CraftAndQuality section.\n * Renders a 2-row CSS Grid with optional heading and up to three (sections) image/text items.\n * Uses SSR-safe skeletons on server and optimizes layout using Chakra's responsive grid.\n *\n * @component\n * @example\n * <RenderGrid\n *   heading=\"Our Quality\"\n *   imageCarousel={[...]}\n *   isClient={true}\n *   modulePage=\"craftAndQuality\"\n *   tabName=\"grid\"\n *   componentIndex={0}\n * />\n *\n * @param {Object} props\n * @param {string} props.heading - Section heading text.\n * @param {Array} props.imageCarousel - Array of image/text item data.\n * @param {boolean} props.isClient - Indicates if the component is rendered client-side.\n * @param {string} props.modulePage - The module page name.\n * @param {string} props.tabName - The tab name.\n * @param {number} props.componentIndex - The component index.\n *\n * @returns {JSX.Element}\n */\nexport const RenderGrid = memo(\n    ({\n        heading = '',\n        imageCarousel = [],\n        isClient = false,\n        modulePage = '',\n        tabName = '',\n        componentIndex = 0\n    }) => {\n        const isMobile = useBreakpointValue({base: true, xl: false})\n        const shouldRender = isClient ? !isMobile : true\n\n        const [item1, item2, item3] = imageCarousel\n\n        const has3rdItem = useMemo(() => !!item3, [item3])\n        const colSpanItem1 = useMemo(() => ({xl: has3rdItem ? 5 : 7}), [has3rdItem])\n        const colStartItem1 = useMemo(() => ({xl: has3rdItem ? 8 : 6}), [has3rdItem])\n\n        if (!shouldRender) {\n            return null\n        }\n\n        return (\n            <Box display={showOnlyOnDesktop}>\n                {/* Top Grid Section */}\n                <Grid\n                    templateAreas={styles.templateAreaTop}\n                    gridTemplateRows={styles.gridTemplateRowsTop}\n                    data-cs-override-id={`${modulePage}${\n                        tabName ? `_${tabName}` : ''\n                    }_craftquality_grid${componentIndex}`}\n                >\n                    {/* Heading */}\n                    {heading && (\n                        <GridItem\n                            area=\"heading\"\n                            colSpan={styles.colSpanHeading}\n                            colStart={styles.colStartHeading}\n                        >\n                            <Text\n                                as=\"h2\"\n                                textStyle=\"headingMd\"\n                                data-auto=\"lblCraftAndQualityHeader\"\n                            >\n                                {heading}\n                            </Text>\n                        </GridItem>\n                    )}\n\n                    {/* Item 1 Image */}\n                    {item1?.image && (\n                        <GridItem area=\"item1Img\" colSpan={colSpanItem1} colStart={colStartItem1}>\n                            {isClient ? (\n                                <RenderImage\n                                    data-testid=\"item1Img\"\n                                    image={item1.image}\n                                    data-auto=\"divCraftAndQualityItem1Image\"\n                                />\n                            ) : (\n                                <AspectRatioSkeleton aspectRatio={MEDIA_ASPECT_RATIO} />\n                            )}\n                        </GridItem>\n                    )}\n\n                    {/* Item 2 Image */}\n                    {item2?.image && (\n                        <GridItem\n                            area=\"item2Img\"\n                            colSpan={styles.colSpanItem2}\n                            colStart={styles.colStartItem2}\n                        >\n                            {isClient ? (\n                                <RenderImage\n                                    data-testid=\"item2Img\"\n                                    image={item2.image}\n                                    data-auto=\"divCraftAndQualityItem2Image\"\n                                />\n                            ) : (\n                                <AspectRatioSkeleton aspectRatio={MEDIA_ASPECT_RATIO} />\n                            )}\n                        </GridItem>\n                    )}\n\n                    {/* Item 3 Image */}\n                    {item3?.image && (\n                        <GridItem\n                            area=\"item3Img\"\n                            colSpan={styles.colSpanItem3}\n                            colStart={styles.colStartItem3}\n                        >\n                            {isClient ? (\n                                <RenderImage\n                                    data-testid=\"item3Img\"\n                                    image={item3.image}\n                                    data-auto=\"divCraftAndQualityItem3Image\"\n                                />\n                            ) : (\n                                <AspectRatioSkeleton aspectRatio={MEDIA_ASPECT_RATIO} />\n                            )}\n                        </GridItem>\n                    )}\n                </Grid>\n\n                {/* Bottom Grid Section */}\n                <Grid\n                    sx={styles.styleBottomGrid}\n                    templateAreas={styles.templateAreaBottom}\n                    gridTemplateRows={styles.gridTemplateRowsBottom}\n                >\n                    {/* Item 1 Text */}\n                    {item1 && (\n                        <GridItem\n                            area=\"item1Text\"\n                            colSpan={colSpanItem1}\n                            colStart={colStartItem1}\n                            data-auto=\"divCraftAndQualityItem1Text\"\n                        >\n                            <RenderText\n                                data-testid=\"item1Text\"\n                                item={item1}\n                                has3rdItem={has3rdItem}\n                                isFirst={true}\n                            />\n                        </GridItem>\n                    )}\n\n                    {/* Item 2 Text */}\n                    {item2 && (\n                        <GridItem\n                            area=\"item2Text\"\n                            colSpan={styles.colSpanItem2}\n                            colStart={styles.colStartItem2}\n                            data-auto=\"divCraftAndQualityItem2Text\"\n                        >\n                            <RenderText\n                                data-testid=\"item2Text\"\n                                item={item2}\n                                has3rdItem={has3rdItem}\n                                isFirst={false}\n                            />\n                        </GridItem>\n                    )}\n\n                    {/* Item 3 Text */}\n                    {item3 && (\n                        <GridItem\n                            area=\"item3Text\"\n                            colSpan={styles.colSpanItem3}\n                            colStart={styles.colStartItem3}\n                            data-auto=\"divCraftAndQualityItem3Text\"\n                        >\n                            <RenderText\n                                data-testid=\"item3Text\"\n                                item={item3}\n                                has3rdItem={has3rdItem}\n                                isFirst={false}\n                            />\n                        </GridItem>\n                    )}\n                </Grid>\n            </Box>\n        )\n    }\n)\n\nRenderGrid.propTypes = {\n    heading: PropTypes.string,\n    imageCarousel: PropTypes.arrayOf(ImageCarouselType),\n    isClient: PropTypes.bool,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nRenderGrid.displayName = 'RenderGrid'\n","import React, {useMemo, memo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Box,\n    Grid,\n    GridItem,\n    Text,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {ImageCarouselType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Utility Function\nconst getTemplateColumns = (isFirst, has3rdItem) => {\n    let columnCount = 3\n\n    if (isFirst) {\n        columnCount = has3rdItem ? 5 : 7\n    }\n\n    return {xl: `repeat(${columnCount}, 1fr)`}\n}\n\n// Constants\nconst colSpan = 3\n\nexport const RenderText = memo(({item, has3rdItem, isFirst}) => {\n    const {description, subHeading} = item\n    const {card} = useMultiStyleConfig('CraftAndQuality')\n\n    // Memoized template columns\n    const templateColumns = useMemo(\n        () => getTemplateColumns(isFirst, has3rdItem),\n        [isFirst, has3rdItem]\n    )\n\n    return (\n        <Box sx={card}>\n            <Grid sx={card?.grid} templateColumns={templateColumns}>\n                <GridItem colSpan={colSpan} sx={card?.info}>\n                    <Text textStyle=\"bodySm\" sx={card?.info?.subHeading}>\n                        {subHeading}\n                    </Text>\n                    <Text textStyle=\"bodySm\" sx={card?.info?.description}>\n                        {description}\n                    </Text>\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n})\n\nRenderText.propTypes = {\n    item: ImageCarouselType,\n    has3rdItem: PropTypes.bool,\n    isFirst: PropTypes.bool\n}\n\nRenderText.displayName = 'RenderText'\n","// React Core\nimport React, {memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {ImageCarouselType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Chakra UI Components\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Local Partials\nimport {RenderGrid, RenderCarousel} from './partials/'\n\n// Custom Hooks\nimport {useIsClient} from 'pandora-shared-app/overrides/app/hooks'\n\n/**\n * CraftAndQuality Component\n *\n * A responsive component that renders either a grid or a carousel layout\n * depending on the user's device resolution.\n *\n * It uses Chakra's multi-style config system for styling,\n * and supports both SSR and CSR environments.\n *\n * @component\n * @example\n * <CraftAndQuality\n *   data={{ heading: \"Our Quality\", imageCarousel: [...] }}\n *   modulePage=\"craftAndQuality\"\n *   tabName=\"carousel\"\n *   componentIndex={0}\n * />\n *\n * @param {Object} data - The content data for the component.\n * @param {string} data.heading - The heading text displayed above the images.\n * @param {Array} data.imageCarousel - The array of image data to render as grid or carousel.\n * @param {string} modulePage - The module page name.\n * @param {string} tabName - The tab name.\n * @param {number} componentIndex - The component index.\n *\n * @returns {JSX.Element} Responsive section rendering images and heading using grid or carousel.\n */\nexport const CraftAndQuality = memo(\n    ({\n        data: {heading = '', imageCarousel = []} = {},\n        modulePage = '',\n        tabName = '',\n        componentIndex = 0\n    }) => {\n        const {container} = useMultiStyleConfig('CraftAndQuality')\n        const isClient = useIsClient()\n\n        return (\n            <Box data-testid=\"craftAndQuality\" data-auto=\"craftAndQuality\" sx={container}>\n                <RenderCarousel\n                    heading={heading}\n                    imageCarousel={imageCarousel}\n                    isClient={isClient}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                />\n                <RenderGrid\n                    heading={heading}\n                    imageCarousel={imageCarousel}\n                    isClient={isClient}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                />\n            </Box>\n        )\n    }\n)\n\nCraftAndQuality.propTypes = {\n    data: PropTypes.shape({\n        heading: PropTypes.string,\n        imageCarousel: PropTypes.arrayOf(ImageCarouselType)\n    }),\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string\n}\n\nCraftAndQuality.displayName = 'CraftAndQuality'\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    AspectRatio,\n    Center,\n    Text,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const ImagePlaceholder = memo(({label = null, aspectRatio = 1, ...rest}) => {\n    const styles = useMultiStyleConfig('ImagePlaceholder', {})\n\n    return (\n        <AspectRatio {...rest} ratio={aspectRatio} sx={styles.container}>\n            <Center>{label ? <Text sx={styles.label}>{label}</Text> : null}</Center>\n        </AspectRatio>\n    )\n})\n\nImagePlaceholder.propTypes = {\n    label: PropTypes.string,\n    aspectRatio: PropTypes.number\n}\n\nImagePlaceholder.displayName = 'ImagePlaceholder'\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {Box, Text, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {VARIANTS} from 'pandora-shared-app/overrides/app/components/link/constants'\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\nimport {ImagePlaceholder} from 'pandora-shared-app/overrides/app/components/shared/image-placeholder'\nimport {useConsistentImageUrl} from 'pandora-shared-app/overrides/app/hooks/use-consistent-image-url'\n\nimport {ContentMetaType, ImageType, LinkType} from 'pandora-shared-app/overrides/app/utils/types'\n\nimport {\n    CARD_ASPECT_RATIO,\n    CARD_ASPECT_RATIO_VALUE,\n    CARD_IMAGE_WIDTH,\n    CARD_LAYOUT\n} from '../../constants'\n\nconst IMAGE_DATA_AUTO = 'imgEntryCardsCard'\n\nexport const EntryCard = memo(\n    ({\n        card = undefined,\n        index = 0,\n        contentMeta = undefined,\n        hideDescription = false,\n        isLazyLoad = true,\n        layout = CARD_LAYOUT.CAROUSEL,\n        modulePage = '',\n        tabName = '',\n        componentIndex = 0,\n        KCPTheme = ''\n    }) => {\n        const styles = useMultiStyleConfig('EntryCard', {KCPTheme})\n        const {image, label, description, cta} = card || {}\n        const {imageUrl, altText, copyright} =\n            useConsistentImageUrl(image, 'img', CARD_ASPECT_RATIO, CARD_IMAGE_WIDTH) || {}\n        const isGridLayout = layout === CARD_LAYOUT.GRID\n\n        if (!card) {\n            return null\n        }\n\n        return (\n            <ContentLink\n                linkData={cta}\n                contentMeta={contentMeta}\n                variant={VARIANTS.NONE}\n                sx={styles.root}\n                data-auto={isGridLayout ? 'entryCardsCardGrid' : 'entryCardsCard'}\n                data-testid={`entry-card-${layout}-${index}`}\n                data-cs-override-id={`${modulePage}${\n                    tabName ? `_${tabName}` : ''\n                }_entrycards${componentIndex}${isGridLayout ? '_grid' : ''}_card${index + 1}`}\n            >\n                <Box sx={styles.media}>\n                    {imageUrl ? (\n                        <ImageCard\n                            src={imageUrl}\n                            alt={altText || label}\n                            aspectRatio={CARD_ASPECT_RATIO_VALUE}\n                            qWidth={CARD_IMAGE_WIDTH}\n                            copyright={copyright}\n                            dataAuto={IMAGE_DATA_AUTO}\n                            isLazyLoad={isLazyLoad}\n                        />\n                    ) : (\n                        <ImagePlaceholder\n                            aspectRatio={CARD_ASPECT_RATIO_VALUE}\n                            data-auto=\"entryCardsCardImagePlaceholder\"\n                            data-testid={`entry-card-image-placeholder-${index}`}\n                        />\n                    )}\n                </Box>\n\n                <Box sx={styles.details}>\n                    {label && (\n                        <Text\n                            className=\"entry-card-title\"\n                            sx={styles.title}\n                            data-auto=\"lblEntryCardsCardTitle\"\n                            data-testid={`entry-card-title-${index}`}\n                        >\n                            {label}\n                        </Text>\n                    )}\n\n                    {description && !hideDescription && (\n                        <Text\n                            sx={styles.description}\n                            data-auto=\"lblEntryCardsCardDescription\"\n                            data-testid={`entry-card-description-${index}`}\n                        >\n                            {description}\n                        </Text>\n                    )}\n                </Box>\n            </ContentLink>\n        )\n    }\n)\n\nEntryCard.propTypes = {\n    card: PropTypes.shape({\n        image: ImageType,\n        label: PropTypes.string,\n        description: PropTypes.string,\n        cta: LinkType\n    }),\n    index: PropTypes.number,\n    contentMeta: ContentMetaType,\n    hideDescription: PropTypes.bool,\n    isLazyLoad: PropTypes.bool,\n    layout: PropTypes.oneOf([CARD_LAYOUT.CAROUSEL, CARD_LAYOUT.GRID]),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number,\n    KCPTheme: PropTypes.string\n}\n\nEntryCard.displayName = 'EntryCard'\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {Box, Text, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {\n    COLORS,\n    COLOR_SCHEMES,\n    SIZES,\n    VARIANTS\n} from 'pandora-shared-app/overrides/app/components/link/constants'\n\nimport {ContentMetaType, LinkType} from 'pandora-shared-app/overrides/app/utils/types'\n\nimport {getEntryCardsKcpThemeStyle} from '../../constants'\n\nexport const EntryCardsHeader = memo(\n    ({header = '', subheader = '', link = undefined, contentMeta = undefined, KCPTheme = ''}) => {\n        const styles = useMultiStyleConfig('EntryCards', {KCPTheme})\n        const {linkColorScheme} = getEntryCardsKcpThemeStyle(KCPTheme)\n\n        if (!header) {\n            return null\n        }\n\n        return (\n            <Box\n                sx={styles.header}\n                data-testid=\"entry-cards-header\"\n                data-auto=\"divEntryCardsHeader\"\n            >\n                <Text as=\"h2\" sx={styles.title} data-auto=\"lblEntryCardsTitle\">\n                    {header}\n                </Text>\n\n                {subheader && (\n                    <Text\n                        sx={styles.subheader}\n                        data-testid=\"entry-cards-subheader\"\n                        data-auto=\"lblEntryCardsSubheader\"\n                    >\n                        {subheader}\n                    </Text>\n                )}\n\n                {link?.text && (\n                    <Box sx={styles.ctaContainer} data-testid=\"entry-cards-cta\">\n                        <ContentLink\n                            dataAuto=\"entryCardsCta\"\n                            linkData={link}\n                            contentMeta={contentMeta}\n                            size={SIZES.LARGE}\n                            variant={VARIANTS.UNDERLINE}\n                            colorScheme={linkColorScheme || COLOR_SCHEMES.LIGHT}\n                            color={COLORS.PRIMARY}\n                        />\n                    </Box>\n                )}\n            </Box>\n        )\n    }\n)\n\nEntryCardsHeader.propTypes = {\n    header: PropTypes.string,\n    subheader: PropTypes.string,\n    link: LinkType,\n    contentMeta: ContentMetaType,\n    KCPTheme: PropTypes.string\n}\n\nEntryCardsHeader.displayName = 'EntryCardsHeader'\n","import {useMemo} from 'react'\n\nimport {useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {getDesktopSlidesPerView} from './constants'\n\nconst desktopBreakpoint = {base: false, xl: true}\n\nexport const useEntryCards = ({cards = [], header = '', enableGalleryLayout = false} = {}) => {\n    const isDesktop = useBreakpointValue(desktopBreakpoint)\n    const cardCount = Array.isArray(cards) ? cards.length : 0\n\n    return useMemo(() => {\n        const desktopSlidesPerView = getDesktopSlidesPerView(cardCount)\n        const hasOverflow = cardCount > desktopSlidesPerView\n\n        return {\n            cardCount,\n            hasCards: cardCount > 0,\n            desktopSlidesPerView,\n            hasOverflow,\n            showControls: Boolean(isDesktop && hasOverflow),\n            isGridLayout: Boolean(enableGalleryLayout),\n            showHeader: Boolean(header)\n        }\n    }, [cardCount, enableGalleryLayout, header, isDesktop])\n}\n","import React, {memo, useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Box,\n    Grid,\n    GridItem,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\nimport {\n    INDICATOR_POSITION,\n    THEME\n} from 'pandora-shared-app/overrides/app/components/carousel/constants'\n\nimport {ContentMetaType, ImageType, LinkType} from 'pandora-shared-app/overrides/app/utils/types'\nimport {timingEmphasizedDecelerate} from 'pandora-shared-app/overrides/app/utils/motion'\n\nimport {EntryCard, EntryCardsHeader} from './partials'\nimport {useEntryCards} from './use-entry-cards'\nimport {CARD_LAYOUT, getCarouselConfig, getEntryCardsKcpThemeStyle} from './constants'\n\nconst GRID_TEMPLATE_COLUMNS = {base: 'repeat(6, 1fr)'}\nconst GRID_ROW_GAP = 6\nconst GRID_ITEM_COL_SPAN = 3\nconst CAROUSEL_STYLE = {\n    '--swiper-wrapper-transition-timing-function': timingEmphasizedDecelerate\n}\n\nexport const EntryCards = memo(\n    ({data = undefined, modulePage = '', tabName = '', componentIndex = 0}) => {\n        const {\n            header = '',\n            subheader = '',\n            link = undefined,\n            enableGalleryLayout = false,\n            cards = [],\n            KCPTheme = '',\n            _meta: contentMeta\n        } = data || {}\n\n        const {cardCount, hasCards, showControls, isGridLayout, showHeader} = useEntryCards({\n            cards,\n            header,\n            enableGalleryLayout\n        })\n\n        const styles = useMultiStyleConfig('EntryCards', {modulePage, isGridLayout, KCPTheme})\n        const {carouselTheme} = getEntryCardsKcpThemeStyle(KCPTheme)\n\n        const carouselConfig = useMemo(() => getCarouselConfig(cardCount), [cardCount])\n\n        const renderSlide = useCallback(\n            (card, index) => (\n                <EntryCard\n                    card={card}\n                    index={index}\n                    contentMeta={contentMeta}\n                    layout={CARD_LAYOUT.CAROUSEL}\n                    modulePage={modulePage}\n                    tabName={tabName}\n                    componentIndex={componentIndex}\n                    KCPTheme={KCPTheme}\n                />\n            ),\n            [contentMeta, modulePage, tabName, componentIndex, KCPTheme]\n        )\n\n        const headerContent = showHeader ? (\n            <EntryCardsHeader\n                header={header}\n                subheader={subheader}\n                link={link}\n                contentMeta={contentMeta}\n                KCPTheme={KCPTheme}\n            />\n        ) : null\n\n        if (!hasCards) {\n            return null\n        }\n\n        return (\n            <Box sx={styles.root} data-testid=\"entry-cards\" data-auto=\"divEntryCards\">\n                <Box sx={styles.carouselWrapper}>\n                    <Carousel\n                        slides={cards}\n                        renderSlide={renderSlide}\n                        headerContent={headerContent}\n                        showControls={showControls}\n                        indicatorPosition={INDICATOR_POSITION.TOP_RIGHT}\n                        theme={carouselTheme || THEME.LIGHT}\n                        autoPlay={false}\n                        swiperStyle={CAROUSEL_STYLE}\n                        {...carouselConfig}\n                    />\n                </Box>\n\n                {isGridLayout && (\n                    <Grid\n                        sx={styles.gridWrapper}\n                        templateColumns={GRID_TEMPLATE_COLUMNS}\n                        rowGap={GRID_ROW_GAP}\n                        mx={0}\n                        data-testid=\"entry-cards-grid\"\n                    >\n                        {cards.map((card, index) => (\n                            <GridItem\n                                key={`${card?.label || 'entry-card'}-${index}`}\n                                colSpan={GRID_ITEM_COL_SPAN}\n                            >\n                                <EntryCard\n                                    card={card}\n                                    index={index}\n                                    contentMeta={contentMeta}\n                                    hideDescription\n                                    layout={CARD_LAYOUT.GRID}\n                                    modulePage={modulePage}\n                                    tabName={tabName}\n                                    componentIndex={componentIndex}\n                                    KCPTheme={KCPTheme}\n                                />\n                            </GridItem>\n                        ))}\n                    </Grid>\n                )}\n            </Box>\n        )\n    }\n)\n\nEntryCards.propTypes = {\n    data: PropTypes.shape({\n        header: PropTypes.string,\n        subheader: PropTypes.string,\n        link: LinkType,\n        enableGalleryLayout: PropTypes.bool,\n        KCPTheme: PropTypes.string,\n        cards: PropTypes.arrayOf(\n            PropTypes.shape({\n                image: ImageType,\n                label: PropTypes.string,\n                description: PropTypes.string,\n                cta: LinkType\n            })\n        ),\n        _meta: ContentMetaType\n    }),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nEntryCards.displayName = 'EntryCards'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Grid,\n    GridItem,\n    useBreakpointValue,\n    AspectRatio,\n    Text,\n    Button\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\n\n// Content Component(s)\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\n// Types\nimport {ContentMediaType} from 'pandora-shared-app/overrides/app/utils/types'\n\nconst mediaColSpan = {base: 6, md: 6, xl: 5}\nconst contentColSpan = {base: 6, md: 6, xl: 4}\n\nconst columnStarts = {\n    mediaLeft: {base: 1, md: 1, xl: 1},\n    mediaRight: {base: 1, md: 1, xl: 8},\n    contentLeft: {base: 1, md: 1, xl: 3},\n    contentRight: {base: 1, md: 1, xl: 7}\n}\n\nconst gridTemplateColumns = {\n    base: 'repeat(6, 1fr)',\n    md: 'repeat(6, 1fr)',\n    xl: 'repeat(12, 1fr)'\n}\n\nconst containerPaddingY = {pt: {base: 0, xl: 16}, pb: 16}\n\nconst mediaInnerMarginX = {base: -8, md: 0}\n\nconst buttonPadding = {px: 8, py: 4}\n\nconst mediaConfig = {\n    aspectRatio: '3:4',\n    dataAuto: 'textAndMedia',\n    controlWrapperPosition: {\n        bottom: 0,\n        right: 0\n    }\n}\n\nconst headingTextStyleMapping = {\n    base: 'headingSm',\n    md: 'headingMd',\n    lg: 'headingMd'\n}\n\nconst flexBoxStyle = {\n    display: 'flex',\n    flexDirection: 'column',\n    justifyContent: 'center'\n}\n\nconst textAreaStyle = {\n    gap: 12,\n    ...flexBoxStyle\n}\n\nconst mediaBoxStyle = {\n    gap: 4,\n    mb: {base: 8, xl: 0},\n    ...flexBoxStyle\n}\n\nconst textBoxStyle = {\n    gap: 4,\n    ...flexBoxStyle\n}\n\nexport const TextAndMedia = ({\n    cta,\n    h2Heading,\n    media,\n    reverseOrientation,\n    richText,\n    mediaCaption,\n    meta,\n    modulePage = '',\n    tabName = '',\n    componentIndex = 0,\n    ...rest\n}) => {\n    const isDesktop = useBreakpointValue({base: false, xl: true})\n    const buttonWidth = useBreakpointValue({base: '100%', xl: 'fit-content'})\n\n    // On desktop, if reversed, media goes right and content goes left with 2 empty columns\n    const mediaColStart =\n        isDesktop && reverseOrientation ? columnStarts.mediaRight : columnStarts.mediaLeft\n    const contentColStart =\n        isDesktop && reverseOrientation ? columnStarts.contentLeft : columnStarts.contentRight\n\n    return (\n        <Box data-testid=\"text-and-media\" {...containerPaddingY} {...rest}>\n            <Grid templateColumns={gridTemplateColumns}>\n                <GridItem\n                    colSpan={mediaColSpan}\n                    colStart={mediaColStart}\n                    order={isDesktop && reverseOrientation ? 2 : 1}\n                    data-cs-override-id={`${modulePage}${\n                        tabName ? `_${tabName}` : ''\n                    }_textmedia_image${componentIndex}`}\n                >\n                    <Box sx={mediaBoxStyle}>\n                        <Box mx={mediaInnerMarginX}>\n                            <AspectRatio ratio={3 / 4}>\n                                <Media media={media} mediaConfig={mediaConfig} isActive />\n                            </AspectRatio>\n                        </Box>\n                        {mediaCaption && <Text textStyle=\"caption\">{mediaCaption}</Text>}\n                    </Box>\n                </GridItem>\n\n                <GridItem\n                    colSpan={contentColSpan}\n                    colStart={contentColStart}\n                    sx={textBoxStyle}\n                    order={isDesktop && reverseOrientation ? 1 : 2}\n                >\n                    {h2Heading && (\n                        <Text\n                            textStyle={headingTextStyleMapping}\n                            as=\"h2\"\n                            data-auto=\"lblTextAndMediaHeading\"\n                            data-cs-override-id={`${modulePage}${\n                                tabName ? `_${tabName}` : ''\n                            }_textmedia_title${componentIndex}`}\n                        >\n                            {h2Heading}\n                        </Text>\n                    )}\n                    <Box sx={textAreaStyle}>\n                        {richText && (\n                            <RichTextEditor\n                                content={richText}\n                                meta={meta}\n                                data-cs-override-id={`${modulePage}${\n                                    tabName ? `_${tabName}` : ''\n                                }_textmedia_description${componentIndex}`}\n                            />\n                        )}\n                        {cta?.text && (\n                            <ContentLink\n                                dataAuto=\"articleTextAndMediaContentLink\"\n                                linkData={cta}\n                                contentMeta={meta}\n                                data-cs-override-id={`${modulePage}${\n                                    tabName ? `_${tabName}` : ''\n                                }_textmedia_cta${componentIndex}`}\n                            >\n                                <Button\n                                    variant=\"emphasized\"\n                                    colorScheme=\"dark\"\n                                    data-testid=\"textAndMediaCta\"\n                                    width={buttonWidth}\n                                    maxWidth=\"none\"\n                                    {...buttonPadding}\n                                >\n                                    <Text textStyle=\"caption\">{cta?.text}</Text>\n                                </Button>\n                            </ContentLink>\n                        )}\n                    </Box>\n                </GridItem>\n            </Grid>\n        </Box>\n    )\n}\n\nTextAndMedia.propTypes = {\n    cta: PropTypes.shape({\n        target: PropTypes.bool,\n        text: PropTypes.string,\n        type: PropTypes.string,\n        value: PropTypes.string\n    }),\n    h2Heading: PropTypes.string,\n    media: ContentMediaType,\n    reverseOrientation: PropTypes.bool,\n    richText: PropTypes.string,\n    mediaCaption: PropTypes.string,\n    meta: PropTypes.object,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nTextAndMedia.displayName = 'TextAndMedia'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {\n    Grid,\n    GridItem,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Content Component(s)\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\n\nexport const ParagraphSection = ({content, meta}) => {\n    const {paragraphSection} = useMultiStyleConfig('ArticleSection')\n\n    return (\n        <Grid data-testid=\"paragraph-section\" sx={paragraphSection}>\n            <GridItem\n                colSpan={paragraphSection?.grid?.colSpan}\n                colStart={paragraphSection?.grid?.colStart}\n            >\n                <RichTextEditor content={content} meta={meta} />\n            </GridItem>\n        </Grid>\n    )\n}\n\nParagraphSection.propTypes = {\n    content: PropTypes.string,\n    meta: PropTypes.object\n}\n\nParagraphSection.displayName = 'ParagraphSection'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {\n    Grid,\n    GridItem,\n    useMultiStyleConfig,\n    Button,\n    Text,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Content Component(s)\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nexport const CTASection = ({cta, meta}) => {\n    const {ctaSection} = useMultiStyleConfig('ArticleSection')\n    const btnWidth = useBreakpointValue({base: '100%', xl: 'auto'})\n    const rootStyles = {width: {base: 'auto', xl: 'fit-content'}}\n\n    return (\n        <Grid data-testid=\"cta-section\" sx={ctaSection}>\n            <GridItem colSpan={ctaSection?.grid?.colSpan} colStart={ctaSection?.grid?.colStart}>\n                <ContentLink\n                    dataAuto=\"articleCTAContentLink\"\n                    linkData={cta}\n                    contentMeta={meta}\n                    rootStyles={rootStyles}\n                >\n                    <Button\n                        width={btnWidth}\n                        variant=\"emphasized\"\n                        colorScheme=\"dark\"\n                        data-testid=\"articleCTAContentButton\"\n                        maxWidth=\"none\"\n                    >\n                        <Text textStyle=\"caption\">{cta?.text}</Text>\n                    </Button>\n                </ContentLink>\n            </GridItem>\n        </Grid>\n    )\n}\n\nCTASection.propTypes = {\n    cta: PropTypes.object,\n    meta: PropTypes.object\n}\n\nCTASection.displayName = 'CTASection'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {v4 as uuidv4} from 'uuid'\n\n// Chakra UI Component(s)\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Content Component(s)\nimport {TextAndMedia as TextAndMediaSection} from 'content/overrides/app/components/text-and-media'\nimport {ParagraphSection} from 'pandora-shared-app/overrides/app/components/article-section/partials'\n\n// Partials\nimport {CTASection} from './partials'\n\nexport const ArticleSection = ({data, modulePage = '', tabName = '', componentIndex = 0}) => {\n    const pageSections = data?.pageSections\n    const meta = data?._meta\n\n    const renderSection = (section) => {\n        switch (section.type) {\n            case 'paragraph':\n                return <ParagraphSection key={uuidv4()} content={section?.richText} meta={meta} />\n            case 'text-media':\n                return (\n                    <TextAndMediaSection\n                        key={uuidv4()}\n                        {...section?.textAndMedia}\n                        meta={meta}\n                        modulePage={modulePage}\n                        tabName={tabName}\n                        componentIndex={componentIndex}\n                    />\n                )\n            case 'link':\n                return <CTASection key={uuidv4()} cta={section?.cta} meta={meta} />\n            default:\n                return null\n        }\n    }\n\n    return (\n        <Box data-testid=\"article-section\">\n            {pageSections?.map((section) => renderSection(section))}\n        </Box>\n    )\n}\n\nArticleSection.propTypes = {\n    data: PropTypes.object,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string\n}\n\nArticleSection.displayName = 'ArticleSection'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Grid, GridItem, Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ArrowRightIcon} from 'pandora-shared-app/overrides/app/components/icons-temp'\n\nconst colSpan = {base: 6}\nconst textStyle = {base: 'headingMd', xl: 'headingLg'}\n\nexport const SingleQandAQuestion = ({\n    eyebrow,\n    question,\n    answerHint,\n    onClick,\n    modulePage = '',\n    tabName = '',\n    componentIndex = 0\n}) => {\n    return (\n        <Grid\n            onClick={onClick}\n            cursor=\"pointer\"\n            data-testid=\"single-q-and-a-question-container\"\n            data-auto=\"divQASingleSheet\"\n            data-cs-override-id={`${modulePage}${\n                tabName ? `_${tabName}` : ''\n            }_QA_single${componentIndex}`}\n        >\n            <GridItem colSpan={colSpan}>\n                {eyebrow && (\n                    <Box mb={4}>\n                        <Text\n                            textStyle=\"label\"\n                            data-testid=\"single-q-and-a-eyebrow\"\n                            data-auto=\"txtQASingleEyebrow\"\n                        >\n                            {eyebrow}\n                        </Text>\n                    </Box>\n                )}\n\n                {question && (\n                    <Box data-auto=\"divQASingleQuestion\" mb={4}>\n                        <Text\n                            textStyle={textStyle}\n                            data-testid=\"single-q-and-a-question\"\n                            data-auto=\"txtQASingleQuestion\"\n                        >\n                            {question}\n                        </Text>\n                    </Box>\n                )}\n\n                {answerHint && (\n                    <Box mb={8} display=\"flex\" alignItems=\"center\">\n                        <Text\n                            textStyle=\"bodySm\"\n                            mr={2}\n                            data-testid=\"single-q-and-a-answer-hint\"\n                            data-auto=\"divQASingleAnswerHint\"\n                        >\n                            {answerHint}\n                        </Text>\n                    </Box>\n                )}\n                <ArrowRightIcon boxSize={4} data-auto=\"divQASingleIcon\" />\n            </GridItem>\n        </Grid>\n    )\n}\n\nSingleQandAQuestion.propTypes = {\n    eyebrow: PropTypes.string,\n    question: PropTypes.string,\n    answerHint: PropTypes.string,\n    onClick: PropTypes.func.isRequired,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    componentIndex: PropTypes.number\n}\n\nSingleQandAQuestion.displayName = 'SingleQandAQuestion'\n","import {useDisclosure} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const useSingleQandA = (data) => {\n    const {isOpen, onOpen, onClose} = useDisclosure()\n    const {\n        _meta,\n        heading: eyebrow,\n        question,\n        answerHeader,\n        answerHint,\n        answerType = null,\n        productBlock: {heading = null, productIDs = null} = {}\n    } = data || {}\n\n    const handleQuestionClick = () => {\n        onOpen()\n    }\n\n    return {\n        isOpen,\n        onClose,\n        handleQuestionClick,\n        eyebrow,\n        question,\n        answerHeader,\n        answerHint,\n        answerType,\n        productBlock: {\n            heading,\n            productIDs\n        },\n        meta: _meta\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const ContentBlockSubheading = (props) => {\n    const {text, dataAuto} = props\n    return (\n        <Text dataAuto={dataAuto} textStyle=\"bodySm\" color=\"black1\" marginBottom={2}>\n            {text}\n        </Text>\n    )\n}\n\nContentBlockSubheading.displayName = 'ContentBlockSubheading'\n\nContentBlockSubheading.propTypes = {\n    text: PropTypes.string.isRequired,\n    dataAuto: PropTypes.string\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Description} from 'pandora-shared-app/overrides/app/components/description'\n\nexport const ContentBlockDescription = (props) => {\n    const {text, dataAuto} = props\n    return (\n        <Description\n            textStyle=\"bodySm\"\n            description={text}\n            data-auto={dataAuto || 'lblFeatureVideoCaption'}\n            color=\"black3a\"\n            marginBottom={2}\n        />\n    )\n}\n\nContentBlockDescription.displayName = 'ContentBlockDescription'\n\nContentBlockDescription.propTypes = {\n    text: PropTypes.string.isRequired,\n    dataAuto: PropTypes.string\n}\n","import React from 'react'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {LinkType} from 'pandora-shared-app/overrides/app/utils/types'\nimport theme from 'pandora-shared-app/overrides/app/theme'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\n\nexport const ContentBlockLink = (props) => {\n    const {link, contentMeta} = props\n\n    return (\n        <Box mb=\"8\">\n            <ContentLink\n                dataAuto=\"divQASingleContentLink\"\n                linkData={link}\n                contentMeta={contentMeta}\n                size=\"large\"\n                color={theme.colors.black3b}\n            />\n        </Box>\n    )\n}\n\nContentBlockLink.displayName = 'ContentBlockLink'\n\nContentBlockLink.propTypes = {\n    link: LinkType.isRequired,\n    contentMeta: PropTypes.object\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {ImageCard} from 'pandora-shared-app/overrides/app/components/image-card'\n\nexport const ContentBlockImage = (props) => {\n    const {src = '', alt = '', copyright = '', dataAuto, qWidth} = props\n\n    return (\n        <ImageCard\n            src={src}\n            alt={alt}\n            isLazyLoad={false}\n            dataAuto={dataAuto}\n            copyright={copyright}\n            qWidth={qWidth}\n            lazyLoadHeight={200}\n            lazyLoadOffset={100}\n        />\n    )\n}\n\nContentBlockImage.displayName = 'ContentBlockImage'\n\nContentBlockImage.propTypes = {\n    src: PropTypes.string.isRequired,\n    alt: PropTypes.string.isRequired,\n    copyright: PropTypes.object,\n    dataAuto: PropTypes.string,\n    qWidth: PropTypes.number\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ContentBlockSubheading} from './partials/content-block-subheading'\nimport {ContentBlockDescription} from './partials/content-block-description'\nimport {ContentBlockLink} from './partials/content-block-link'\nimport {ContentBlockImage} from './partials/content-block-image'\nimport {v4 as uuidv4} from 'uuid'\nimport {ContentMediaType, LinkType} from 'pandora-shared-app/overrides/app/utils/types'\nimport {useConsistentImageUrl} from 'pandora-shared-app/overrides/app/hooks/use-consistent-image-url'\n\nexport const ContentBlock = (props) => {\n    const {description = '', link = null, media = null, subHeading, contentMeta} = props\n    const {copyright = ''} = media || {}\n    const qWidth = useBreakpointValue({base: 440, md: 960})\n\n    const {imageUrl: imageSrc, altText} =\n        useConsistentImageUrl(media, 'img', undefined, qWidth) || {}\n\n    return (\n        <Box data-auto=\"divQASingleContentBlock\" mb={12} key={uuidv4}>\n            {subHeading && (\n                <ContentBlockSubheading dataAuto=\"divQASingleContentSubHeading\" text={subHeading} />\n            )}\n            <ContentBlockDescription dataAuto=\"divQASingleContentBody\" text={description} />\n            {link && <ContentBlockLink link={link} contentMeta={contentMeta} />}\n            {imageSrc && (\n                <ContentBlockImage\n                    dataAuto=\"imgQASingle\"\n                    src={imageSrc}\n                    alt={altText || ''}\n                    copyright={copyright}\n                    qWidth={qWidth}\n                />\n            )}\n        </Box>\n    )\n}\n\nContentBlock.displayName = 'ContentBlock'\n\nContentBlock.propTypes = {\n    description: PropTypes.string.isRequired,\n    link: LinkType,\n    media: ContentMediaType,\n    subHeading: PropTypes.string,\n    contentMeta: PropTypes.object\n}\n","export const extractUniqueProductIDs = (ids) => {\n    if (typeof ids === 'string') {\n        // Check if the string contains a comma\n        const uniqueIDs = ids.includes(',')\n            ? [...new Set(ids.split(',').map((id) => id.trim()))]\n            : [ids.trim()] // Treat it as a single ID and trim any spaces\n\n        return uniqueIDs\n    }\n    return []\n}\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Text, Grid, GridItem} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {v4 as uuidv4} from 'uuid'\nimport ProductGrid from 'pandora-shared-app/overrides/app/components/product-grid'\nimport {extractUniqueProductIDs} from 'content/overrides/app/utils/extractUniqueProductIDs'\nimport {Skeleton as ProductTileSkeleton} from 'pandora-shared-app/overrides/app/components/product-tile/partials/skeleton'\n\nimport {useProductListInteractions} from 'pandora-shared-app/overrides/app/hooks/use-product-list-interactions'\nimport {useStringVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'content/overrides/app/api_keys/ld-keys'\n\nconst ProductListSkeletonGrid = ({limit}) =>\n    new Array(limit).fill(0).map(() => (\n        <GridItem key={uuidv4()} colSpan={1}>\n            <ProductTileSkeleton />\n        </GridItem>\n    ))\n\nexport const ProductBlock = ({heading, productIDs, categoryID, withPadding = false}) => {\n    const isBloomreachEnabled =\n        useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n\n    // Use the hook with default values for unavailable context\n    const interactions = useProductListInteractions(\n        {isSearch: false}, // ProductBlock is not in search context\n        {productSearchResult: null}, // No product search result available\n        {trackSearchEvents: null}, // Tracking won't run anyway without productSearchResult\n        isBloomreachEnabled\n    )\n\n    const {productGridData} = useMemo(() => {\n        const processedIDs = productIDs ? extractUniqueProductIDs(productIDs) : []\n        const data = {\n            limit: 4,\n            displayLimit: 4\n        }\n\n        if (processedIDs.length) {\n            data.pids = processedIDs\n        } else if (categoryID) {\n            data.cgid = categoryID\n        }\n\n        return {productGridData: data}\n    }, [productIDs, categoryID])\n\n    const renderProductContent = () => {\n        if (productGridData?.pids) {\n            return (\n                <ProductGrid\n                    isInGrid={true}\n                    gridData={productGridData}\n                    columns=\"repeat(6, 1fr)\"\n                    style={{mx: 0}}\n                    onProductClick={interactions.handleProductClick}\n                    navigate={interactions.navigate}\n                />\n            )\n        }\n\n        return (\n            <Grid\n                templateColumns={{base: 'repeat(2, 1fr)'}}\n                gap={4}\n                data-auto=\"skeletonGrid\"\n                mx={0}\n            >\n                <ProductListSkeletonGrid limit={productGridData?.limit} />\n            </Grid>\n        )\n    }\n\n    return (\n        <Box dataAuto=\"divQASingleProductBlock\" mb={12} px={withPadding ? 8 : 0} key={uuidv4()}>\n            {heading && (\n                <Text dataAuto=\"divQASingleProductHeading\" textStyle=\"headingSm\" paddingBottom={8}>\n                    {heading}\n                </Text>\n            )}\n            <Box dataAuto=\"divQASingleProductCard\">{renderProductContent()}</Box>\n        </Box>\n    )\n}\n\nProductBlock.displayName = 'ProductBlock'\n\nProductBlock.propTypes = {\n    productIDs: PropTypes.string,\n    categoryID: PropTypes.string,\n    heading: PropTypes.string,\n    withPadding: PropTypes.bool\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {SingleQandAQuestion} from './partials/question'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {useSingleQandA} from './use-single-q-and-a'\nimport {ContentBlock} from 'content/overrides/app/components/shared/content-block'\nimport {PlpStories} from 'content/overrides/app/components/plp-stories'\nimport {ProductBlock} from 'content/overrides/app/components/shared/product-block'\nimport {v4 as uuidv4} from 'uuid'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\n\nexport const SingleQandA = (props) => {\n    const {\n        isOpen,\n        onClose,\n        handleQuestionClick,\n        eyebrow,\n        question,\n        answerHeader,\n        answerHint,\n        answerType,\n        productBlock: {heading, productIDs},\n        products,\n        meta\n    } = useSingleQandA(props.data)\n    const {modulePage = '', tabName = '', componentIndex = 0} = props\n\n    const isContentBlock = answerType?._meta?.schema?.endsWith('content-block')\n\n    const drawerContent = (\n        <Box>\n            {answerType && (\n                <>\n                    {isContentBlock && answerType.contentBlock?.length > 0 ? (\n                        answerType.contentBlock.map((block) => {\n                            const contentBlockProps = {\n                                ...block,\n                                link: block.link,\n                                contentMeta: answerType._meta\n                            }\n                            return (\n                                <ContentBlock\n                                    key={uuidv4()}\n                                    {...contentBlockProps}\n                                    showSmall={true}\n                                />\n                            )\n                        })\n                    ) : !isContentBlock ? (\n                        <PlpStories data={answerType} showSmall={true} />\n                    ) : null}\n                </>\n            )}\n            {productIDs && (\n                <ProductBlock\n                    heading={heading}\n                    productIDs={productIDs}\n                    withPadding={!isContentBlock}\n                />\n            )}\n        </Box>\n    )\n\n    const getTrackingData = () => ({\n        sheetType: TEALIUM_CONSTANTS.DRAWER.TYPES.QA,\n        virtualPagePath: 'q_and_a_sheet',\n        products: products || [],\n        content: answerType,\n        contentMeta: meta\n    })\n\n    return (\n        <>\n            <SingleQandAQuestion\n                eyebrow={eyebrow}\n                question={question}\n                answerHint={answerHint}\n                onClick={handleQuestionClick}\n                modulePage={modulePage}\n                tabName={tabName}\n                componentIndex={componentIndex}\n            />\n\n            <FullDrawerSheet\n                isOpen={isOpen}\n                onClose={onClose}\n                headerText={answerHeader}\n                bodyContent={drawerContent}\n                bodyPadding={!isContentBlock ? 0 : undefined}\n                wrapWithScrollArea\n                {...getTrackingData()}\n            />\n        </>\n    )\n}\n\nSingleQandA.displayName = 'SingleQandA'\n\nSingleQandA.propTypes = {\n    data: PropTypes.shape({\n        _meta: PropTypes.shape({\n            schema: PropTypes.string,\n            name: PropTypes.string,\n            deliveryId: PropTypes.string\n        }),\n        eyebrow: PropTypes.string,\n        question: PropTypes.string,\n        answerHint: PropTypes.string,\n        answerType: PropTypes.shape({\n            _meta: PropTypes.shape({\n                schema: PropTypes.string,\n                name: PropTypes.string,\n                deliveryId: PropTypes.string\n            }),\n            contentBlock: PropTypes.arrayOf(PropTypes.object),\n            storyChapter: PropTypes.arrayOf(PropTypes.object)\n        }),\n        productBlock: PropTypes.shape({\n            heading: PropTypes.string,\n            productIDs: PropTypes.string\n        })\n    }).isRequired,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string\n}\n","import {\n    easeStandard,\n    easeStandardDecelerate,\n    durationQuick1,\n    durationQuick2,\n    durationStandard1,\n    durationStandard2,\n    delayNone\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const captionVariants = {\n    initial: {opacity: 0, y: 20},\n    animate: {\n        opacity: 1,\n        y: 0,\n        transition: {\n            opacity: {ease: easeStandard, duration: durationStandard1, delay: delayNone},\n            y: {ease: easeStandardDecelerate, duration: durationStandard2, delay: delayNone}\n        }\n    },\n    exit: {\n        opacity: 0,\n        transition: {\n            opacity: {ease: easeStandard, duration: durationQuick2, delay: delayNone}\n        }\n    }\n}\n\nexport const tabUnderlineTransition = {\n    ease: easeStandard,\n    duration: durationQuick1,\n    delay: delayNone\n}\n\nexport const mediaConfig = {\n    aspectRatio: '4:3',\n    dataAuto: 'tabbedGuide'\n}\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {tabUnderlineTransition} from '../constants'\n\nconst MotionBox = motion(Box)\n\nexport const TabList = memo(({tabs, activeTabIndex, onTabClick, modulePage, tabName, styles}) => (\n    <Box sx={styles.tabsWrapper}>\n        <Box sx={styles.tabListOuter}>\n            <Box sx={styles.tabList} role=\"tablist\" data-auto=\"divTabbedGuideTabs\">\n                {tabs.map((tab, index) => {\n                    const title = tab?.title\n                    const isActive = index === activeTabIndex\n\n                    return (\n                        <Box\n                            key={tab?.title || index}\n                            as=\"button\"\n                            role=\"tab\"\n                            aria-selected={isActive}\n                            aria-controls={`tabbed-guide-panel-${index}`}\n                            sx={{\n                                ...styles.tab,\n                                ...(isActive ? styles.tabIndicator : {})\n                            }}\n                            onClick={() => onTabClick(index)}\n                            data-auto={`btnTabbedGuideTab${index}`}\n                            data-testid={`tabbed-guide-tab-${index}`}\n                            data-cs-override-id={`${modulePage}${\n                                tabName ? `_${tabName}` : ''\n                            }_tabbed_guide_info_${index + 1}`}\n                        >\n                            <span>\n                                {title}\n                                {isActive && (\n                                    <MotionBox\n                                        layoutId=\"tabbed-guide-underline\"\n                                        sx={styles.tabUnderline}\n                                        transition={tabUnderlineTransition}\n                                    />\n                                )}\n                            </span>\n                        </Box>\n                    )\n                })}\n            </Box>\n        </Box>\n    </Box>\n))\n\nTabList.displayName = 'TabList'\nTabList.propTypes = {\n    tabs: PropTypes.array.isRequired,\n    activeTabIndex: PropTypes.number.isRequired,\n    onTabClick: PropTypes.func.isRequired,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    styles: PropTypes.object.isRequired\n}\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {motion, AnimatePresence} from 'framer-motion'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\nimport {captionVariants} from '../constants'\n\nconst MotionBox = motion(Box)\n\nexport const TabCaption = memo(({activeTab, activeTabIndex, meta, modulePage, tabName, styles}) => (\n    <Box sx={styles.captionWrapper}>\n        <AnimatePresence mode=\"wait\">\n            <MotionBox\n                key={activeTabIndex}\n                variants={captionVariants}\n                initial=\"initial\"\n                animate=\"animate\"\n                exit=\"exit\"\n            >\n                <Box\n                    sx={styles.richText}\n                    role=\"tabpanel\"\n                    id={`tabbed-guide-panel-${activeTabIndex}`}\n                    data-testid=\"tabbed-guide-active-panel\"\n                >\n                    {activeTab?.richText && (\n                        <RichTextEditor content={activeTab.richText} meta={meta} />\n                    )}\n                </Box>\n\n                {activeTab?.cta?.text && (\n                    <ContentLink linkData={activeTab.cta} contentMeta={meta}>\n                        <Button\n                            variant=\"emphasized\"\n                            colorScheme=\"dark\"\n                            width=\"100%\"\n                            data-auto=\"btnTabbedGuideCta\"\n                            data-cs-override-id={`${modulePage}${\n                                tabName ? `_${tabName}` : ''\n                            }_tabbed_guide_CTA_${activeTabIndex + 1}`}\n                        >\n                            {activeTab.cta.text}\n                        </Button>\n                    </ContentLink>\n                )}\n            </MotionBox>\n        </AnimatePresence>\n    </Box>\n))\n\nTabCaption.displayName = 'TabCaption'\nTabCaption.propTypes = {\n    activeTab: PropTypes.object,\n    activeTabIndex: PropTypes.number.isRequired,\n    meta: PropTypes.object,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    styles: PropTypes.object.isRequired\n}\n","import React, {memo, useCallback, useMemo, useRef} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI\nimport {\n    Box,\n    Text,\n    GridItem,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {Grid} from 'pandora-shared-app/overrides/app/components/shared/ui/Grid'\n\n// Shared components\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\n\n// Feature flags\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// Local\nimport {mediaConfig} from './constants'\nimport {useTabNavigation} from './hooks/use-tab-navigation'\nimport {TabList, TabCaption} from './partials'\n\nexport const TabbedGuide = memo(\n    ({data, modulePage, tabName, isInGrid = false, isHalfWidthInGrid = false}) => {\n        const isDisabled = useVariant(LD_KEYS.disableTabbedGuide, false)\n        const styles = useMultiStyleConfig('TabbedGuide', {isInGrid, isHalfWidthInGrid})\n        const containerRef = useRef(null)\n        const isFullWidthInGrid = isInGrid && !isHalfWidthInGrid\n\n        const heading = data?.heading\n        const tabs = data?.tabs\n        const meta = data?._meta\n\n        const {activeTabIndex, activeTab, setSwiperInstance, handleTabClick, handleSlideChange} =\n            useTabNavigation({tabs, containerRef})\n\n        const renderSlide = useCallback(\n            (slide, index) => (\n                <Media\n                    media={slide?.media}\n                    mediaConfig={mediaConfig}\n                    isActive={index === activeTabIndex}\n                />\n            ),\n            [activeTabIndex]\n        )\n\n        const mediaGridItemProps = useMemo(() => {\n            if (isHalfWidthInGrid) {\n                return {\n                    colSpan: {base: 6, xl: 4},\n                    colStart: {xl: 2}\n                }\n            }\n\n            return {\n                colSpan: {base: 6, xl: 7},\n                colStart: {xl: 6},\n                rowStart: {xl: 1}\n            }\n        }, [isHalfWidthInGrid])\n\n        if (isDisabled || !tabs?.length) return null\n\n        return (\n            <Box\n                sx={styles.container}\n                data-testid=\"tabbed-guide\"\n                data-auto=\"divTabbedGuide\"\n                data-cs-override-id={`${modulePage}${\n                    tabName ? '_' + tabName : ''\n                }_tabbed_guide_module`}\n                data-is-in-grid={String(Boolean(isInGrid))}\n                data-is-half-width-in-grid={String(Boolean(isHalfWidthInGrid))}\n                data-is-full-width-in-grid={String(Boolean(isFullWidthInGrid))}\n                ref={containerRef}\n            >\n                <Grid {...styles.grid}>\n                    <Box sx={styles.leftColumn}>\n                        {/* Heading */}\n                        <Box sx={styles.headingWrapper}>\n                            {heading && (\n                                <Text as=\"h2\" sx={styles.heading} data-auto=\"lblTabbedGuideHeading\">\n                                    {heading}\n                                </Text>\n                            )}\n                        </Box>\n\n                        {/* Tabs */}\n                        <TabList\n                            tabs={tabs}\n                            activeTabIndex={activeTabIndex}\n                            onTabClick={handleTabClick}\n                            modulePage={modulePage}\n                            tabName={tabName}\n                            styles={styles}\n                        />\n\n                        {/* Caption */}\n                        <TabCaption\n                            activeTab={activeTab}\n                            activeTabIndex={activeTabIndex}\n                            meta={meta}\n                            modulePage={modulePage}\n                            tabName={tabName}\n                            styles={styles}\n                        />\n                    </Box>\n\n                    {/* Media carousel */}\n                    <GridItem {...mediaGridItemProps}>\n                        <Carousel\n                            slides={tabs}\n                            renderSlide={renderSlide}\n                            onSlideChange={handleSlideChange}\n                            onSwiper={setSwiperInstance}\n                            spaceBetween={'0%'}\n                            speed={500}\n                            allowTouchMove={true}\n                            grabCursor={true}\n                            autoPlay={false}\n                        />\n                    </GridItem>\n                </Grid>\n            </Box>\n        )\n    }\n)\n\nTabbedGuide.propTypes = {\n    data: PropTypes.shape({\n        heading: PropTypes.string,\n        tabs: PropTypes.arrayOf(\n            PropTypes.shape({\n                title: PropTypes.string,\n                media: PropTypes.object,\n                richText: PropTypes.string,\n                cta: PropTypes.object\n            })\n        ),\n        _meta: PropTypes.shape({\n            deliveryId: PropTypes.string,\n            name: PropTypes.string,\n            schema: PropTypes.string\n        })\n    }),\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    isInGrid: PropTypes.bool,\n    isHalfWidthInGrid: PropTypes.bool\n}\n\nTabbedGuide.displayName = 'TabbedGuide'\n","import {useState, useCallback} from 'react'\n\nexport const useTabNavigation = ({tabs, containerRef}) => {\n    const [activeTabIndex, setActiveTabIndex] = useState(0)\n    const [swiperInstance, setSwiperInstance] = useState(null)\n\n    const scrollTabIntoView = useCallback((index) => {\n        if (!containerRef.current) return\n        const tab = containerRef.current.querySelector(`[data-testid=\"tabbed-guide-tab-${index}\"]`)\n        if (!tab || tab.offsetParent === null) return\n\n        const scrollContainer = tab.closest('[role=\"tablist\"]')?.parentElement?.parentElement\n        if (!scrollContainer) return\n\n        const containerRect = scrollContainer.getBoundingClientRect()\n        const tabRect = tab.getBoundingClientRect()\n\n        if (tabRect.left < containerRect.left || tabRect.right > containerRect.right) {\n            const scrollLeft =\n                scrollContainer.scrollLeft +\n                tabRect.left -\n                containerRect.left -\n                (containerRect.width - tabRect.width) / 2\n            scrollContainer.scrollTo({left: scrollLeft, behavior: 'smooth'})\n        }\n    }, [])\n\n    const handleTabClick = useCallback(\n        (index) => {\n            setActiveTabIndex(index)\n            swiperInstance?.slideTo(index)\n            scrollTabIntoView(index)\n        },\n        [swiperInstance, scrollTabIntoView]\n    )\n\n    const handleSlideChange = useCallback(\n        (index) => {\n            setActiveTabIndex(index)\n            scrollTabIntoView(index)\n        },\n        [scrollTabIntoView]\n    )\n\n    return {\n        activeTabIndex,\n        activeTab: tabs?.[activeTabIndex],\n        setSwiperInstance,\n        handleTabClick,\n        handleSlideChange\n    }\n}\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Skeleton} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useMappedComponent} from './hooks/use-mapped-component'\n\nimport {FullScreenMediaTile} from 'content/overrides/app/components/full-screen-media-tile'\nimport {KcpFeatureTile} from 'content/overrides/app/components/kcp-feature-tile'\nimport {EntryPointsTile} from 'content/overrides/app/components/entry-points-tile/index'\nimport {InsetMediaTile} from 'content/overrides/app/components/inset-media-tile/index'\nimport {PromoInsetTile} from 'content/overrides/app/components/promo-inset-tile'\nimport {PageCover} from 'content/overrides/app/components/page-cover'\nimport {FeatureVideo} from 'content/overrides/app/components/feature-video'\nimport {ExplorePrompt} from 'content/overrides/app/components/explore-prompt'\nimport {MultipleQandA} from 'content/overrides/app/components/QandA/multiple-q-and-a'\nimport {PlpStories} from 'content/overrides/app/components/plp-stories'\nimport {ShopTheLook} from 'content/overrides/app/components/shop-the-look'\nimport {CraftAndQuality} from 'content/overrides/app/components/craft-and-quality'\nimport {EntryCards} from 'content/overrides/app/components/entry-cards'\nimport {ArticleSection} from 'content/overrides/app/components/article-section'\nimport {SingleQandA} from 'content/overrides/app/components/QandA/single-q-and-a'\nimport {EditorialLink} from 'pandora-shared-app/overrides/app/components/editorial-link'\nimport {TabbedGuide} from 'pandora-shared-app/overrides/app/components/tabbed-guide'\n\nexport const componentsMapping = {\n    'https://schema-pandora.net/full-screen-media-tile': FullScreenMediaTile,\n    'https://schema-pandora.net/entry-points': EntryPointsTile,\n    'https://schema-pandora.net/kcp-entry-points': EntryPointsTile,\n    'https://schema-pandora.net/inset-media-tile': InsetMediaTile,\n    'https://schema-pandora.net/promo-inset-tile': PromoInsetTile,\n    'https://schema-pandora.net/kcp-feature-tile': KcpFeatureTile,\n    'https://schema-pandora.net/qna-multiple': MultipleQandA,\n    'https://schema-pandora.net/page-cover': PageCover,\n    'https://schema-pandora.net/stories': PlpStories,\n    'https://schema-pandora.net/feature-video': FeatureVideo,\n    'https://schema-pandora.net/explore-prompt': ExplorePrompt,\n    'https://schema-pandora.net/shop-the-look': ShopTheLook,\n    'https://schema-pandora.net/craft-and-quality': CraftAndQuality,\n    'https://schema-pandora.net/entry-cards': EntryCards,\n    'https://schema-pandora.net/text-and-media': ArticleSection,\n    'https://schema-pandora.net/qna-single': SingleQandA,\n    'https://schema-pandora.net/editorial-link': EditorialLink,\n    'https://schema-pandora.net/tabbed-guide': TabbedGuide\n}\n\nexport const IN_GRID_AWARE_SCHEMAS = new Set([\n    'https://schema-pandora.net/feature-video',\n    'https://schema-pandora.net/stories',\n    'https://schema-pandora.net/promo-inset-tile',\n    'https://schema-pandora.net/tabbed-guide',\n    'https://schema-pandora.net/shop-the-look'\n])\n\nexport const AmplienceWrapper = memo(\n    ({\n        content,\n        components,\n        skeleton,\n        modulePage = 'homepage',\n        componentIndex,\n        tabName,\n        isInGrid,\n        isHalfWidthInGrid,\n        ...rest\n    }) => {\n        const Component = useMappedComponent(content, components, componentsMapping)\n\n        if (!Component) return null\n\n        const inGridProps = IN_GRID_AWARE_SCHEMAS.has(content?._meta?.schema)\n            ? {isInGrid, isHalfWidthInGrid}\n            : {}\n\n        return (\n            <>\n                {skeleton ? (\n                    <Skeleton {...skeleton} isLoaded={!!content}>\n                        <Component\n                            data={content}\n                            modulePage={modulePage}\n                            componentIndex={componentIndex}\n                            tabName={tabName}\n                            {...inGridProps}\n                            {...rest}\n                        />\n                    </Skeleton>\n                ) : (\n                    <Component\n                        data={content}\n                        modulePage={modulePage}\n                        componentIndex={componentIndex}\n                        tabName={tabName}\n                        {...inGridProps}\n                        {...rest}\n                    />\n                )}\n            </>\n        )\n    }\n)\n\nAmplienceWrapper.displayName = 'AmplienceWrapper'\n\nAmplienceWrapper.propTypes = {\n    content: PropTypes.object,\n    components: PropTypes.object,\n    skeleton: PropTypes.object,\n    componentIndex: PropTypes.number,\n    modulePage: PropTypes.string,\n    tabName: PropTypes.string,\n    activeThreshold: PropTypes.number,\n    isInGrid: PropTypes.bool,\n    isHalfWidthInGrid: PropTypes.bool\n}\n","export const useMappedComponent = (content, components, componentsMapping) => {\n    const mapping = {...componentsMapping, ...components}\n    return mapping[content?._meta?.schema] || null\n}\n","// Intranet token TTL in seconds (as provided by API)\nconst TOKEN_TTL_SECONDS = 3600\n// Buffer to subtract (in milliseconds)\nconst TOKEN_EXPIRY_BUFFER_MS = 60 * 1000\n// Final stale time (used by react-prefetch)\nconst TOKEN_STALE_TIME_MS = TOKEN_TTL_SECONDS * 1000 - TOKEN_EXPIRY_BUFFER_MS\n\nmodule.exports = {\n    TOKEN_TTL_SECONDS,\n    TOKEN_EXPIRY_BUFFER_MS,\n    TOKEN_STALE_TIME_MS\n}\n","import {useMemo} from 'react'\n\nimport {IMAGE_TYPE, VIDEO_TYPE} from 'pandora-shared-app/overrides/app/utils/types'\nimport {DEVICE} from 'pandora-shared-app/overrides/app/hooks/use-device-type'\n\n/**\n * Checks whether a CMS image node has resolvable image data (Amplience or Aprimo).\n * @param {Object|null|undefined} node\n * @returns {boolean}\n */\nconst hasImageData = (node) => !!(node?.diImage?.image || node?.aprimoData?.cdnUrl)\n\n/**\n * Checks whether a CMS node has Aprimo image data.\n * @param {Object|null|undefined} node\n * @returns {boolean}\n */\nconst hasAprimoImageData = (node) => !!node?.aprimoData?.cdnUrl\n\n/**\n * Checks whether a media object has any image data (Amplience or Aprimo).\n * @param {Object|null|undefined} media - Media object from CMS\n * @returns {boolean}\n */\nexport const hasAnyImageMedia = (media) =>\n    !!(\n        media?.img ||\n        media?.desktopImg ||\n        media?.mobileImg ||\n        media?.aprimoImg?.aprimoData?.cdnUrl ||\n        media?.aprimoDesktopImg?.aprimoData?.cdnUrl ||\n        media?.aprimoMobileImg?.aprimoData?.cdnUrl\n    )\n\n/**\n * Checks whether a media object has any video data (Amplience or Aprimo).\n * @param {Object|null|undefined} media - Media object from CMS\n * @returns {boolean}\n */\nexport const hasAnyVideoMedia = (media) =>\n    !!(\n        media?.video ||\n        media?.desktopVideo ||\n        media?.mobileVideo ||\n        media?.aprimoVideo?.aprimoData?.cdnUrl ||\n        media?.aprimoDesktopVideo?.aprimoData?.cdnUrl ||\n        media?.aprimoMobileVideo?.aprimoData?.cdnUrl\n    )\n\n/**\n * Gets desktop image data with flag-aware priority.\n * When aprimoPrimary=true: Aprimo first, Amplience fallback.\n * When aprimoPrimary=false (default): Amplience first, Aprimo fallback.\n * @param {Object} media - Media object containing desktopImg, mobileImg, aprimoDesktopImg, aprimoMobileImg\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object|null} Image data or null if not available\n */\nexport const getImageDataDesktopPreferred = (media, {aprimoPrimary} = {}) => {\n    // Amplience may be authored responsively (desktopImg) or non-responsively\n    // (img — used by modules like Stories). Fall back to the non-responsive\n    // `img` so it is still resolvable once an `aprimo*` field routes the media\n    // through the responsive path.\n    let amplienceImg = null\n    if (hasImageData(media?.desktopImg)) {\n        amplienceImg = media.desktopImg\n    } else if (hasImageData(media?.img)) {\n        amplienceImg = media.img\n    }\n\n    let aprimoImg = null\n    if (hasAprimoImageData(media?.aprimoDesktopImg)) {\n        aprimoImg = media.aprimoDesktopImg\n    } else if (hasAprimoImageData(media?.aprimoImg)) {\n        aprimoImg = media.aprimoImg\n    }\n\n    if (aprimoPrimary) {\n        return aprimoImg || amplienceImg\n    }\n    return amplienceImg || aprimoImg\n}\n\n/**\n * Gets mobile image data with flag-aware priority.\n * Tries mobile-specific sources first, falls back to desktop.\n * @param {Object} media - Media object with responsive variants\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object|null} Mobile image data (or desktop as fallback) or null if not available\n */\nexport const getImageDataMobilePreferred = (media, {aprimoPrimary} = {}) => {\n    const amplienceMobile = hasImageData(media?.mobileImg) ? media.mobileImg : null\n    const amplienceDesktop = hasImageData(media?.desktopImg) ? media.desktopImg : null\n    // Non-responsive Amplience source (e.g. Stories authors media as `img`).\n    const amplienceNonResponsive = hasImageData(media?.img) ? media.img : null\n\n    let aprimoImg = null\n    if (hasAprimoImageData(media?.aprimoMobileImg)) {\n        aprimoImg = media.aprimoMobileImg\n    } else if (hasAprimoImageData(media?.aprimoDesktopImg)) {\n        aprimoImg = media.aprimoDesktopImg\n    } else if (hasAprimoImageData(media?.aprimoImg)) {\n        aprimoImg = media.aprimoImg\n    }\n\n    if (aprimoPrimary) {\n        return aprimoImg || amplienceMobile || amplienceDesktop || amplienceNonResponsive\n    }\n    return amplienceMobile || amplienceDesktop || amplienceNonResponsive || aprimoImg\n}\n\n/**\n * Checks whether a CMS video node has resolvable video data (Amplience or Aprimo).\n * @param {Object|null|undefined} node\n * @returns {boolean}\n */\nconst hasVideoData = (node) => !!(node?.id || node?.name || node?.aprimoData?.cdnUrl)\n\n/**\n * Checks whether a CMS node has Aprimo video data.\n * @param {Object|null|undefined} node\n * @returns {boolean}\n */\nconst hasAprimoVideoData = (node) => !!node?.aprimoData?.cdnUrl\n\n/**\n * Gets desktop video data with flag-aware priority.\n * When aprimoPrimary=true: Aprimo first, Amplience fallback.\n * When aprimoPrimary=false (default): Amplience first, Aprimo fallback.\n * @param {Object} media - Media object containing desktopVideo, mobileVideo, aprimoDesktopVideo, aprimoMobileVideo\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object|null} Video data or null if not available\n */\nexport const getVideoDataDesktopPreferred = (media, {aprimoPrimary} = {}) => {\n    // Amplience may be authored responsively (desktopVideo) or non-responsively\n    // (video — used by modules like Stories). Fall back to the non-responsive\n    // `video` so it stays resolvable once an `aprimo*` field routes the media\n    // through the responsive path.\n    let amplienceVideo = null\n    if (hasVideoData(media?.desktopVideo)) {\n        amplienceVideo = media.desktopVideo\n    } else if (hasVideoData(media?.video)) {\n        amplienceVideo = media.video\n    }\n\n    let aprimoVideo = null\n    if (hasAprimoVideoData(media?.aprimoDesktopVideo)) {\n        aprimoVideo = media.aprimoDesktopVideo\n    } else if (hasAprimoVideoData(media?.aprimoVideo)) {\n        aprimoVideo = media.aprimoVideo\n    }\n\n    if (aprimoPrimary) {\n        return aprimoVideo || amplienceVideo\n    }\n    return amplienceVideo || aprimoVideo\n}\n\n/**\n * Gets mobile video data with flag-aware priority.\n * Tries mobile-specific sources first, falls back to desktop.\n * @param {Object} media - Media object with responsive variants\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object|null} Mobile video data (or desktop as fallback) or null if not available\n */\nexport const getVideoDataMobilePreferred = (media, {aprimoPrimary} = {}) => {\n    const amplienceMobile = hasVideoData(media?.mobileVideo) ? media.mobileVideo : null\n    const amplienceDesktop = hasVideoData(media?.desktopVideo) ? media.desktopVideo : null\n    // Non-responsive Amplience source (e.g. Stories authors media as `video`).\n    const amplienceNonResponsive = hasVideoData(media?.video) ? media.video : null\n\n    let aprimoVideo = null\n    if (hasAprimoVideoData(media?.aprimoMobileVideo)) {\n        aprimoVideo = media.aprimoMobileVideo\n    } else if (hasAprimoVideoData(media?.aprimoDesktopVideo)) {\n        aprimoVideo = media.aprimoDesktopVideo\n    } else if (hasAprimoVideoData(media?.aprimoVideo)) {\n        aprimoVideo = media.aprimoVideo\n    }\n\n    if (aprimoPrimary) {\n        return aprimoVideo || amplienceMobile || amplienceDesktop || amplienceNonResponsive\n    }\n    return amplienceMobile || amplienceDesktop || amplienceNonResponsive || aprimoVideo\n}\n\n/**\n * Builds a normalized media data object from image and video data\n * Handles mediaType determination from isVideo flag or existing mediaType\n * @param {Object} media - Original media object\n * @param {Object|null} imageData - Image data object\n * @param {Object|null} videoData - Video data object\n * @returns {Object} Normalized media data with img, video, mediaType, imageAltText, and copyright\n */\nconst buildMediaData = (media, imageData, videoData) => {\n    let mediaType = media?.mediaType\n\n    // Next Gen Authoring: isVideo flag takes precedence over mediaType\n    if (media?.isVideo !== undefined) {\n        mediaType = media?.isVideo ? VIDEO_TYPE : IMAGE_TYPE\n    }\n\n    return {\n        img: imageData,\n        video: videoData,\n        mediaType: mediaType || '',\n        imageAltText: media?.imageAltText || '',\n        copyright: media?.copyright || {}\n    }\n}\n\n/**\n * Gets mobile media data - combines mobile image and video with fallback logic\n * @param {Object} media - Media object with responsive variants\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object} Normalized media data object for mobile\n */\nexport const getMobileMediaData = (media, {aprimoPrimary} = {}) => {\n    const imageData = getImageDataMobilePreferred(media, {aprimoPrimary})\n    const videoData = getVideoDataMobilePreferred(media, {aprimoPrimary})\n    return buildMediaData(media, imageData, videoData)\n}\n\n/**\n * Gets desktop media data - combines desktop image and video (no fallback)\n * @param {Object} media - Media object with responsive variants\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object} Normalized media data object for desktop\n */\nexport const getDesktopMediaData = (media, {aprimoPrimary} = {}) => {\n    const imageData = getImageDataDesktopPreferred(media, {aprimoPrimary})\n    const videoData = getVideoDataDesktopPreferred(media, {aprimoPrimary})\n    return buildMediaData(media, imageData, videoData)\n}\n\n/**\n * Hook to get media data based on device type\n * @param {Object} media - Media object with responsive variants\n * @param {string} deviceType - Device type (DEVICE.DESKTOP or DEVICE.MOBILE)\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n * @returns {Object} Normalized media data for the specified device\n */\nexport const useMediaData = (media, deviceType, {aprimoPrimary} = {}) => {\n    return useMemo(() => {\n        const imageData =\n            deviceType === DEVICE.DESKTOP\n                ? getImageDataDesktopPreferred(media, {aprimoPrimary})\n                : getImageDataMobilePreferred(media, {aprimoPrimary})\n\n        const videoData =\n            deviceType === DEVICE.DESKTOP\n                ? getVideoDataDesktopPreferred(media, {aprimoPrimary})\n                : getVideoDataMobilePreferred(media, {aprimoPrimary})\n\n        return buildMediaData(media, imageData, videoData)\n    }, [media, deviceType, aprimoPrimary])\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"klarna_black\",\n  \"use\": \"klarna_black-usage\",\n  \"viewBox\": \"0 0 791.4 176.6\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 791.4 176.6\\\" id=\\\"klarna_black\\\"><path d=\\\"M153.5,173.3l-55-75c26.1-26,40.7-60.9,40.7-98.4h-38.9c0,31.9-14.7,61.2-40.2,80.3L44.6,91.9l59.8,81.5H153.5z\\\" /><rect y=\\\"0\\\" width=\\\"39.9\\\" height=\\\"173.4\\\" /><rect x=\\\"165.1\\\" y=\\\"0\\\" width=\\\"37.6\\\" height=\\\"173.3\\\" /><path d=\\\"M547.5 110v63.2h35.8V97.1c0-27.9-22.2-46.9-51.1-46.9-14.3 0-27.9 4.5-37 16.7V53.4h-35.7v119.9h36.2v-63c0-18.2 12.2-27.2 26.9-27.2C538.4 83.1 547.5 92.6 547.5 110zM316.2 165.6v7.7h35.9V53.4h-35.9v7.7c-10.1-6.9-22.4-11-35.6-11-34.9 0-63.3 28.3-63.3 63.3 0 34.9 28.3 63.3 63.3 63.3C293.8 176.6 306.1 172.5 316.2 165.6zM251.1 113.4c0-17 14.6-30.8 32.5-30.8 18 0 32.5 13.8 32.5 30.8 0 17-14.6 30.8-32.5 30.8C265.6 144.2 251.1 130.4 251.1 113.4zM442.8 88.3V53.4c-14.6 0-28 6.2-35.2 15.6V53.4h-36.7v119.9h36.8v-56c0-18.9 20.5-29 34.7-29C442.5 88.3 442.7 88.3 442.8 88.3zM694.9 173.3h35.9V53.4h-35.9v7.7c-10.1-6.9-22.4-11-35.6-11-34.9 0-63.3 28.3-63.3 63.3 0 34.9 28.3 63.3 63.3 63.3 13.2 0 25.4-4.1 35.6-11V173.3zM662.2 144.2c-18 0-32.5-13.8-32.5-30.8 0-17 14.6-30.8 32.5-30.8 18 0 32.5 13.8 32.5 30.8C694.7 130.4 680.2 144.2 662.2 144.2zM791.4 153.3c0-12.4-10.1-22.5-22.5-22.5-12.4 0-22.5 10.1-22.5 22.5 0 12.4 10.1 22.5 22.5 22.5C781.3 175.8 791.4 165.7 791.4 153.3z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {getVideoUrl} from './media'\n\n// Global state for lightbox tracking\nlet lastViewed = null\nlet lastClicked = null\n\n/**\n * Track when an image is viewed in lightbox\n * @param {Object} item - The image/video item being viewed\n * @param {number} index - The index of the item in the gallery\n */\nexport const trackImageViewed = (item, index) => {\n    if (!item) return\n\n    const viewedData = {\n        content_url:\n            item.type === 'video'\n                ? getVideoUrl({\n                      defaultHost: 'cdn.media.amplience.net',\n                      endpoint: 'pandora',\n                      name: item.id\n                  })\n                : item.disBaseLink || '',\n        content_type: item.type === 'video' ? 'video' : 'image',\n        content_position: String(index + 1),\n        content_view_type: item.viewType || (item.type === 'video' ? 'video' : 'main'),\n        content_index: item.viewTypeIndex || index\n    }\n\n    lastViewed = viewedData\n}\n\n/**\n * Track when an image is clicked in lightbox\n * @param {Object} item - The image/video item being clicked\n * @param {number} index - The index of the item in the gallery\n */\nexport const trackImageClicked = (item, index) => {\n    if (!item) return\n\n    const clickedData = {\n        content_url:\n            item.type === 'video'\n                ? getVideoUrl({\n                      defaultHost: 'cdn.media.amplience.net',\n                      endpoint: 'pandora',\n                      name: item.id\n                  })\n                : item.disBaseLink || '',\n        content_type: item.type === 'video' ? 'video' : 'image',\n        content_position: String(index + 1),\n        content_view_type: item.viewType || (item.type === 'video' ? 'video' : 'main'),\n        content_index: item.viewTypeIndex || index\n    }\n\n    lastClicked = clickedData\n}\n\n/**\n * Get the current lightbox tracking data\n * @returns {Object} Current lightbox tracking data\n */\nexport const getLightboxTrackingData = () => {\n    return {\n        lastViewed,\n        lastClicked\n    }\n}\n\n/**\n * Clear tracking data\n */\nexport const clearLightboxTrackingData = () => {\n    lastViewed = null\n    lastClicked = null\n}\n","/**\n * Captures the engraving setup string broadcast by the engraving editor MFE\n * on the `engravingEditorModal/reportPreviewEngraving` window event. The MFE\n * already builds the canonical category string for the product (including\n * LEFT/RIGHT for 4-sided products, the font segment for text+icons, the\n * specific character id for Disney, etc.), so we relay it verbatim into the\n * add-to-cart datalayer instead of re-deriving the format on the PWA side.\n *\n * Event detail shape (from the MFE):\n *   { payload: 'FRONT:TEXTANDICONS:GOTHAM_SSM_BOOK;BACK:DISNEY:DISNEY_JASMINE' }\n */\n\nconst PREVIEW_EVENT = 'engravingEditorModal/reportPreviewEngraving'\nconst ATTACH_FLAG = '__pandoraEngravingPreviewListenerAttached'\n\nlet lastPayload = null\n\nconst handlePreviewEngraving = (event) => {\n    const payload = event?.detail?.payload\n    if (typeof payload === 'string' && payload.length > 0) {\n        lastPayload = payload\n    }\n}\n\nif (typeof window !== 'undefined' && !window[ATTACH_FLAG]) {\n    window.addEventListener(PREVIEW_EVENT, handlePreviewEngraving)\n    window[ATTACH_FLAG] = true\n}\n\nexport const getEngravingPreviewPayload = () => lastPayload\n","/**\n * Helper functions for engraving tracking in analytics\n */\n\nimport {getEngravingPreviewPayload} from './engraving-preview-tracking'\n\nconst SIDE1_TRACKING = 'FRONT:'\nconst SIDE2_TRACKING = 'BACK:'\n\n/**\n * Finds the reporting template name from the templates data\n * @param {string} template - The template name to find\n * @param {Object} templatesData - The templates data from preferences\n * @returns {string} The reporting template name or original template if not found\n */\nexport const getReportingTemplate = (template, templatesData) => {\n    if (!templatesData || !templatesData.templates || !Array.isArray(templatesData.templates)) {\n        return template // fallback to original template\n    }\n\n    const templateData = templatesData.templates.find((t) => t.name === template)\n\n    if (templateData && templateData.reportingName) {\n        return templateData.reportingName\n    }\n\n    return template // fallback to original template\n}\n\n/**\n * Builds the engraving category string for tracking\n * @param {Object} engraveData - The parsed engraving data\n * @param {Object} templatesData - The templates data from preferences\n * @returns {string} The formatted engraving category\n */\nexport const getEngravingCategoryData = (engraveData, templatesData) => {\n    if (!engraveData) {\n        return ''\n    }\n\n    const hasSide1 = engraveData.side1 && Object.keys(engraveData.side1).length > 0\n    const hasSide2 = engraveData.side2 && Object.keys(engraveData.side2).length > 0\n\n    if (hasSide1 && hasSide2) {\n        // Use reportingTemplate from data if available, otherwise look up from preferences\n        const side1Template =\n            engraveData.side1.reportingTemplate ||\n            getReportingTemplate(engraveData.side1.template, templatesData)\n        const side2Template =\n            engraveData.side2.reportingTemplate ||\n            getReportingTemplate(engraveData.side2.template, templatesData)\n\n        return `${SIDE1_TRACKING}${side1Template.toUpperCase()};${SIDE2_TRACKING}${side2Template.toUpperCase()}`\n    }\n\n    if (hasSide1) {\n        const side1Template =\n            engraveData.side1.reportingTemplate ||\n            getReportingTemplate(engraveData.side1.template, templatesData)\n        return `${SIDE1_TRACKING}${side1Template.toUpperCase()}`\n    }\n\n    if (hasSide2) {\n        const side2Template =\n            engraveData.side2.reportingTemplate ||\n            getReportingTemplate(engraveData.side2.template, templatesData)\n        return `${SIDE2_TRACKING}${side2Template.toUpperCase()}`\n    }\n\n    return ''\n}\n\n/**\n * Gets the text for a side, cleaning out symbol placeholder characters\n * @param {Object} sideData - The side data from engravingData\n * @returns {string} The cleaned text or '-' if no text exists\n */\nconst getSideText = (sideData) => {\n    // Clean the text by removing Private Use Area characters (\\uE000-\\uF8FF)\n    // These are used as symbol placeholders and appear as rectangular characters\n    const cleanedText = sideData?.text?.replace(/[\\uE000-\\uF8FF]/g, '').trim() || ''\n    const hasText = cleanedText.length > 0\n\n    if (hasText) {\n        // Return the cleaned text with newlines replaced by spaces (matches SFRA)\n        return cleanedText.replace(/\\n/g, ' ')\n    }\n\n    // No text - return '-' (matches SFRA behavior)\n    return '-'\n}\n\n/**\n * Extracts engraving tracking data from basket product items\n * @param {string} productId - The product ID to find engraving data for\n * @param {Object} basket - The basket object\n * @param {Object} templatesData - The templates data from preferences\n * @returns {Object|null} The engraving tracking data or null if no engraving found\n */\nexport const extractEngravingTrackingData = (productId, basket, templatesData) => {\n    if (!basket || !basket.productItems) {\n        return null\n    }\n\n    // Find all product items with this productId\n    const matchingItems = basket.productItems.filter((item) => item.productId === productId)\n\n    if (matchingItems.length === 0) {\n        return null\n    }\n\n    // Get the LAST (most recently added) item with this productId\n    // This handles cases where the same product is added multiple times\n    const productItem = matchingItems[matchingItems.length - 1]\n\n    // Check if this product has an associated engraving service item\n    // Note: DOL API uses field names without 'c_' prefix\n    const engravingServiceItem = basket.productItems.find(\n        (item) =>\n            (item.c_isEngravingService || item.isEngravingService) &&\n            (item.c_engravedLineItemUUID || item.engravedLineItemUUID) === productItem.itemId\n    )\n\n    if (!engravingServiceItem) {\n        return null\n    }\n\n    // Parse the engraving data\n    // Note: DOL API uses 'engravingData' without 'c_' prefix\n    let engraveData = {}\n    try {\n        const rawEngravingData = productItem.c_engravingData || productItem.engravingData\n        if (rawEngravingData) {\n            engraveData =\n                typeof rawEngravingData === 'string'\n                    ? JSON.parse(rawEngravingData)\n                    : rawEngravingData\n        }\n    } catch (e) {\n        console.error('Could not parse engraving data for product:', productId, e)\n        return null\n    }\n\n    // Extract side text (matches SFRA behavior)\n    // The text field may contain Private Use Area Unicode characters (\\uE000-\\uF8FF)\n    // that represent symbol placeholders - these need to be removed\n    const side1Text = getSideText(engraveData.side1)\n    const side2Text = getSideText(engraveData.side2)\n\n    // Get engraving fee from the service item\n    const engravingFee = engravingServiceItem.price || 0\n\n    // Get engraving category\n    const engravingCategory = getEngravingCategoryData(engraveData, templatesData)\n\n    return {\n        engraving: true,\n        side_1: side1Text,\n        side_2: side2Text,\n        engraving_fee: engravingFee,\n        engraving_category: engravingCategory\n    }\n}\n\n// ============================================================================\n// V2 — gated by LD flag `enable-new-engraving-tracking`.\n// New behaviour: `engraving_category` is sourced from the engraving MFE's\n// `engravingEditorModal/reportPreviewEngraving` event (covers 4-sided, Disney,\n// curved without per-template FE logic), and `side_1..side_N` is emitted via a\n// loop bounded by the product's engravableSides (so 2-sided products no longer\n// carry empty `side_3`/`side_4`).\n//\n// CLEANUP when the flag is fully rolled out:\n//   1. Delete the V1 block above: `SIDE1_TRACKING`, `SIDE2_TRACKING`,\n//      `getEngravingCategoryData`, `extractEngravingTrackingData`.\n//   2. Rename `extractEngravingTrackingDataV2` → `extractEngravingTrackingData`.\n//   3. Remove `enableEngravingTrackingListenerEvent` from `ld-keys.js`.\n//   4. Remove the `useVariant`/branch in `use-add-to-cart-analytics.js`.\n// ============================================================================\n\n/**\n * Reads the number of engravable sides for a product. Mirrors the BE\n * implementation: parses `c_engravingDimensions` and returns\n * `SISMA.SIDE_CONFIG.sides`, defaulting to 2 when the attribute is absent\n * or unparseable.\n * @param {Object} product - Product (SCAPI shape with c_engravingDimensions)\n * @returns {number} Number of engravable sides (typically 2 or 4)\n */\nexport const getEngravableSides = (product) => {\n    const raw = product.c_engravingDimensions\n    if (!raw) return 2\n    try {\n        const dims = typeof raw === 'string' ? JSON.parse(raw) : raw\n        return dims?.SISMA?.SIDE_CONFIG?.sides || 2\n    } catch (e) {\n        console.error('Could not parse engravingDimensions:', e)\n        return 2\n    }\n}\n\n/**\n * V2 of extractEngravingTrackingData — see cleanup notes above.\n * @param {string} productId\n * @param {Object} basket\n * @param {Object} templatesData - currently unused; kept for signature parity\n *   so phase-2 work can re-introduce template lookups without churn.\n * @param {number} [engravableSides=2]\n * @returns {Object|null}\n */\n\nexport const extractEngravingTrackingDataV2 = (\n    productId,\n    basket,\n    templatesData,\n    engravableSides = 2\n) => {\n    if (!basket || !basket.productItems) {\n        return null\n    }\n\n    const matchingItems = basket.productItems.filter((item) => item.productId === productId)\n    if (matchingItems.length === 0) {\n        return null\n    }\n    const productItem = matchingItems[matchingItems.length - 1]\n\n    const engravingServiceItem = basket.productItems.find(\n        (item) =>\n            (item.c_isEngravingService || item.isEngravingService) &&\n            (item.c_engravedLineItemUUID || item.engravedLineItemUUID) === productItem.itemId\n    )\n    if (!engravingServiceItem) {\n        return null\n    }\n\n    let engraveData = {}\n    try {\n        const rawEngravingData = productItem.c_engravingData || productItem.engravingData\n        if (rawEngravingData) {\n            engraveData =\n                typeof rawEngravingData === 'string'\n                    ? JSON.parse(rawEngravingData)\n                    : rawEngravingData\n        }\n    } catch (e) {\n        console.error('Could not parse engraving data for product:', productId, e)\n        return null\n    }\n\n    const engravingFee = engravingServiceItem.price || 0\n\n    // Canonical setup string broadcast by the engraving editor MFE on the\n    // `engravingEditorModal/reportPreviewEngraving` window event.\n    const engravingCategory = getEngravingPreviewPayload()\n\n    const result = {\n        engraving: true,\n        engraving_fee: engravingFee,\n        engraving_category: engravingCategory\n    }\n\n    // Emit side_1..side_N up to engravableSides (mirrors BE\n    // assembleTrackingDataProduct loop bounded by product.engravableSides).\n    for (let i = 1; i <= engravableSides; i++) {\n        result[`side_${i}`] = getSideText(engraveData[`side${i}`])\n    }\n\n    return result\n}\n","import {useQueryClient} from '@tanstack/react-query'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {useCurrentBasket} from './use-current-basket'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\nimport {TEALIUM_CONSTANTS} from '../constants'\nimport {\n    extractProductDetails,\n    convertProductData,\n    extractPromoData\n} from './use-product-details-analytics'\nimport {isMobile} from 'react-device-detect'\nimport {getLightboxTrackingData} from '../utils/lightbox-tracking'\nimport {\n    extractEngravingTrackingData,\n    extractEngravingTrackingDataV2,\n    getEngravableSides\n} from '../utils/engraving-tracking-helpers'\nimport {usePreferences} from './usePreferences'\nimport {PREFERENCE_KEYS} from '../api_keys/preference-keys'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {buildCartState} from './use-cart-state-analytics'\nimport {useCartStateProducts} from './use-cart-state-products'\nimport {getProductCustomization, isFlexibleSet} from '../utils/product-type-utils'\n\n/**\n * Extracts cart information for tracking\n * @param {Object} currentBasket - The current basket object\n * @returns {Object} Cart tracking data\n */\nconst extractCartData = (currentBasket) => {\n    if (!currentBasket) {\n        return {\n            cartTotalQuantity: 0,\n            cartTotalPrice: 0\n        }\n    }\n\n    const totalItems =\n        currentBasket.productItems?.reduce((acc, item) => acc + (item.quantity || 0), 0) || 0\n    const totalPrice = currentBasket.orderTotal || currentBasket.productTotal || 0\n\n    return {\n        cartTotalQuantity: totalItems,\n        cartTotalPrice: totalPrice\n    }\n}\n\n/**\n * Extracts customer information for tracking\n * @param {Object} customer - The customer object\n * @returns {Object} Customer tracking data\n */\nconst extractCustomerData = (customer) => {\n    if (!customer) {\n        return {\n            login_status: TEALIUM_CONSTANTS.CUSTOMER.STATUS.NOT_LOGGED_IN,\n            customer_crm_id: null,\n            customer_email_id: null,\n            customer_first_name: null,\n            customer_last_name: null,\n            customer_city: null,\n            customer_zip: null,\n            customer_creationDate: null,\n            login_recall: 'false',\n            account_type: null\n        }\n    }\n\n    const customerAddress = customer?.addresses?.[0] || null\n\n    return {\n        login_status: customer.isRegistered\n            ? TEALIUM_CONSTANTS.CUSTOMER.STATUS.LOGGED_IN\n            : TEALIUM_CONSTANTS.CUSTOMER.STATUS.NOT_LOGGED_IN,\n        customer_crm_id: customer.isRegistered ? customer.c_masterCRMID : null,\n        customer_email_id: customer.email || null,\n        customer_first_name: customer.firstName || null,\n        customer_last_name: customer.lastName || null,\n        customer_city: customerAddress?.city || null,\n        customer_zip: customerAddress?.postalCode || null,\n        customer_creationDate: customer.creationDate || null,\n        login_recall: 'false',\n        account_type: null\n    }\n}\n\nconst waitForBasketSync = async (isEnabled) => {\n    if (!isEnabled) return\n    await new Promise((resolve) => setTimeout(resolve, 500))\n}\n\nconst isClickAndCollectProduct = (productId, basket) => {\n    return basket?.productItems?.some(\n        (item) => item?.productId === productId && !!item?.c_fromStoreId\n    )\n}\n\nconst buildOverrideProducts = (productsOverride, {cartData, sizeGuideApplied, platform}) =>\n    productsOverride.map((overrideProduct) => ({\n        ...overrideProduct,\n        cartTotalQuantity: cartData.cartTotalQuantity,\n        cartTotalPrice: cartData.cartTotalPrice,\n        size_guide_applied: sizeGuideApplied,\n        platform\n    }))\n\nconst getMemberPricingPromotionId = (promotionId) =>\n    Array.isArray(promotionId) ? [...promotionId, 'member_pricing'] : ['member_pricing']\n\nconst getFlexibleSetAtbOverrides = (product, isFeatureEnabled = false) => {\n    if (!isFeatureEnabled || !isFlexibleSet(product)) return null\n    return {\n        findingMethod: 'pdp_flexset',\n        customization: getProductCustomization({isFlexibleSet: true})\n    }\n}\n\n/**\n * Custom hook to handle add to cart analytics tracking\n * @param {Object} product - The product being added to cart\n * @param {number} quantity - The quantity being added\n * @param {string} findingMethod - How the product was found\n * @param {Object} options - Additional tracking options\n * @param {boolean} options.sizeGuideApplied - Whether ring sizer was used to select size\n * @returns {Object} Tracking functions\n */\nexport const useAddToCartAnalytics = () => {\n    const {link} = useTealium()\n    const {data: currentBasket, refetch: refetchBasket} = useCurrentBasket()\n    const {data: customer} = useCurrentCustomer()\n    const queryClient = useQueryClient()\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n    const enableEarlyAccessTracking = useVariant(LD_KEYS.enablePdpNewEarlyAccessTracking, false)\n    const enableMemberPricing = useVariant(LD_KEYS.enableMemberPricing, false)\n    const enableCartStateTracking = useVariant(LD_KEYS.enableCartStateTracking, false)\n    const isDOLResponse = useVariant(LD_KEYS.enablePDPDOLResponse, false)\n    // Flag-gated: switches engraving datalayer from V1 (FRONT/BACK only) to V2\n    // (MFE-driven, supports 4-sided / Disney / curved). Cleanup notes in\n    // engraving-tracking-helpers.js.\n    const enableEngravingTrackingListenerEvent = useVariant(\n        LD_KEYS.enableEngravingTrackingListenerEvent,\n        false\n    )\n    // OG-8931 — when ON, mutation skips its own await; buffer moves here.\n    const isAtbBackgroundBasketRefetchEnabled = useVariant(\n        LD_KEYS.enableGlobalAtbBackgroundBasketRefetch,\n        false\n    )\n    const enableFlexibleSetAnalytics = useVariant(LD_KEYS.enablePdpFlexibleSetAnalytics, false)\n\n    // Fetch engraving templates data for tracking\n    const {data: engravingTemplatesData} = usePreferences(\n        PREFERENCE_KEYS.engravingTemplatesData,\n        false,\n        false\n    )\n\n    // Keep the ['products', [id]] cache warm for existing basket items so the\n    // synchronous buildCartState below produces an enriched payload.\n    useCartStateProducts(currentBasket)\n\n    const trackAddToCart = async (product, quantity = 1, findingMethod = null, options = {}) => {\n        const {sizeGuideApplied = false, platform = 'web', productsOverride = null} = options\n        // Get lightbox tracking data from global state\n        const {lastViewed, lastClicked} = getLightboxTrackingData()\n\n        if (!product) {\n            return\n        }\n\n        // OG-8931: 500ms DOL→SCAPI buffer moved from submitAddItemToCart.\n        // `?.[0]` below is permanent — a missing `baskets` key used to throw\n        // and swallow the datalayer event via unhandled rejection.\n        await waitForBasketSync(isAtbBackgroundBasketRefetchEnabled)\n        let refetchedResult = await refetchBasket()\n        let refetchedBasked = refetchedResult?.data?.baskets?.[0]\n\n        // Flexible-set ATBs always report pdp_flexset and stamp customization: ['flexible']\n        // regardless of how the user arrived (URL param, direct nav) — matches the analytics spec.\n        const flexibleAtb = getFlexibleSetAtbOverrides(product, enableFlexibleSetAnalytics)\n        const effectiveFindingMethod = flexibleAtb?.findingMethod ?? findingMethod\n\n        const productData = extractProductDetails(\n            product,\n            false,\n            false,\n            effectiveFindingMethod,\n            shouldCleanBloomreachSuffix,\n            enableEarlyAccessTracking\n        )\n        productData.product_quantity = [quantity]\n        productData.distribution_method = isClickAndCollectProduct(\n            product.productId,\n            refetchedBasked\n        )\n            ? 'collect item from store'\n            : 'ship to personal address'\n\n        const cartData = extractCartData(refetchedBasked)\n        const customerData = extractCustomerData(customer)\n        const promotionData = extractPromoData(product)\n\n        const isNewBasket = !currentBasket || currentBasket.productItems?.length === 0\n\n        const events = [TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_ADD_TO_CART]\n\n        if (isNewBasket) {\n            events.push(TEALIUM_CONSTANTS.ESTORE_EVENT.CART_CREATED)\n        }\n        events.push(TEALIUM_CONSTANTS.ESTORE_EVENT.CART_UPDATED)\n\n        // Extract engraving tracking data if available\n        let templatesData = null\n        try {\n            if (engravingTemplatesData?.[0]?.preferenceValue?.[0]) {\n                const templatesValue = engravingTemplatesData[0].preferenceValue[0]\n                templatesData =\n                    typeof templatesValue === 'string' ? JSON.parse(templatesValue) : templatesValue\n            }\n        } catch (e) {\n            console.error('Could not parse engraving templates data:', e)\n        }\n\n        // Flag branch — V2 (MFE-driven) when on; V1 (existing FRONT/BACK) when off.\n        const engravingData = enableEngravingTrackingListenerEvent\n            ? extractEngravingTrackingDataV2(\n                  product.productId,\n                  refetchedBasked,\n                  templatesData,\n                  getEngravableSides(product)\n              )\n            : extractEngravingTrackingData(product.productId, refetchedBasked, templatesData)\n\n        // Add engraving add to cart event if engraving data is present\n        if (engravingData) {\n            events.push(TEALIUM_CONSTANTS.ESTORE_EVENT.ENGRAVING_ADD_TO_CART)\n        }\n\n        // Build product tracking object\n        const productTrackingData = {\n            ...convertProductData(productData),\n            cartTotalQuantity: cartData.cartTotalQuantity,\n            cartTotalPrice: cartData.cartTotalPrice,\n            ...(flexibleAtb && {customization: flexibleAtb.customization})\n        }\n\n        // size_guide_applied: true if user used ring sizer, false if size was selected manually\n        productTrackingData.size_guide_applied = sizeGuideApplied\n        productTrackingData.platform = platform\n\n        // Add engraving data if available\n        if (engravingData) {\n            Object.assign(productTrackingData, engravingData)\n        }\n\n        // Add member pricing tracking fields when conditions are met\n        if (enableMemberPricing && product.memberPrice != null && customer?.isRegistered) {\n            productTrackingData.promotion_id = getMemberPricingPromotionId(\n                productTrackingData.promotion_id\n            )\n            productTrackingData.member_price_applied = 'true'\n        }\n\n        const cartState = enableCartStateTracking\n            ? buildCartState(refetchedBasked, queryClient, {\n                  isDOLResponse,\n                  shouldCleanBloomreachSuffix\n              })\n            : undefined\n\n        const products = productsOverride?.length\n            ? buildOverrideProducts(productsOverride, {cartData, sizeGuideApplied, platform})\n            : [productTrackingData]\n\n        const trackingData = {\n            estore_event: events,\n            abtest_segments: [],\n            user_device_type: isMobile\n                ? TEALIUM_CONSTANTS.USER_DEVICE_TYPE.MOBILE\n                : TEALIUM_CONSTANTS.USER_DEVICE_TYPE.DESKTOP,\n            promos: promotionData,\n            products,\n            ...customerData,\n            ...(lastViewed && {last_viewed: lastViewed}),\n            ...(lastClicked && {last_clicked: lastClicked}),\n            ...(enableCartStateTracking && {cart_state: cartState})\n        }\n\n        link(trackingData)\n\n        // Update global utag_data\n        window.utag_data = {...window.utag_data, ...trackingData}\n    }\n\n    return {trackAddToCart}\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"calendar-with-check-pictogram\",\n  \"use\": \"calendar-with-check-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol viewBox=\\\"0 0 64 64\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"calendar-with-check-pictogram\\\">\\n    <path d=\\\"M53.6249 42.0545L52.7715 41.5334L46.1918 52.3098L42.0179 48.5061L41.3443 49.2452L46.4139 53.8651L53.6249 42.0545Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.50001 4.00098C5.1193 4.00098 4.00001 5.12026 4.00001 6.50097L4 15.001H44.5C45.3284 15.001 46 15.6725 46 16.501V34.962C40.8985 35.5441 36.7252 39.1825 35.3562 44.001H6.50001C5.67159 44.001 5.00001 43.3294 5.00001 42.501V20.001H4.00001V42.501C4.00001 43.8817 5.1193 45.001 6.50001 45.001H35.1162C34.9608 45.7902 34.8794 46.6059 34.8794 47.4407C34.8794 54.3775 40.5028 60.001 47.4397 60.001C54.3766 60.001 60 54.3775 60 47.4407C60 40.5038 54.3766 34.8804 47.4397 34.8804C47.2925 34.8804 47.1459 34.8829 47 34.8879V16.501C47 15.1203 45.8807 14.001 44.5 14.001H5L5.00001 6.50097C5.00001 5.67255 5.67159 5.00098 6.50001 5.00098H44.5C45.3284 5.00098 46 5.67255 46 6.50098V9.00098H47V6.50098C47 5.12026 45.8807 4.00098 44.5 4.00098H6.50001ZM58.9 47.4407C58.9 41.1113 53.7691 35.9804 47.4397 35.9804C41.1103 35.9804 35.9794 41.1113 35.9794 47.4407C35.9794 53.77 41.1103 58.901 47.4397 58.901C53.7691 58.901 58.9 53.77 58.9 47.4407Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M9 23.001V27.001H13V26.001H10V23.001H9Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M9 34.001H10V37.001H13V38.001H9V34.001Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M19 23.001V27.001H23V26.001H20V23.001H19Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M19 34.001H20V37.001H23V38.001H19V34.001Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M28 23.001V27.001H32V26.001H29V23.001H28Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M28 34.001H29V37.001H32V38.001H28V34.001Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M37 23.001V27.001H41V26.001H38V23.001H37Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useRef, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {v4 as uuidv4} from 'uuid'\n\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {ProgressBar} from './'\n\nexport const ProgressBarContainer = ({slides, swiperRef}) => {\n    const uuids = useRef(slides?.map(() => uuidv4()))\n    const progressBarsRef = useRef([]) // Array of refs for each progress bar\n\n    const totalSlides = slides?.length || 0\n\n    const {container} = useMultiStyleConfig('Carousel').progressBar\n\n    useEffect(() => {\n        const swiper = swiperRef?.current?.swiper\n\n        if (!swiper) return\n\n        // Update progress bar width directly via refs\n        const onAutoplayTimeLeft = (_, timeLeft) => {\n            const delay = swiper.params?.autoplay?.delay || 1000\n            const activeIndex = swiper.realIndex\n\n            if (progressBarsRef.current[activeIndex]) {\n                const progress = Math.max(0, ((delay - timeLeft) / delay) * 100)\n                progressBarsRef.current[activeIndex].style.width = `${progress}%`\n            }\n        }\n\n        const resetProgressBars = () => {\n            progressBarsRef.current.forEach((bar) => {\n                if (bar) bar.style.width = '0%'\n            })\n        }\n\n        // Event listeners for start, stop, and progress\n        swiper.on('autoplayStart', resetProgressBars)\n        swiper.on('autoplayStop', resetProgressBars)\n        swiper.on('autoplayTimeLeft', onAutoplayTimeLeft)\n\n        // Cleanup listeners on unmount\n        return () => {\n            swiper.off('autoplayStart', resetProgressBars)\n            swiper.off('autoplayStop', resetProgressBars)\n            swiper.off('autoplayTimeLeft', onAutoplayTimeLeft)\n        }\n    }, [swiperRef])\n\n    if (totalSlides <= 0) return null\n\n    return (\n        <Box sx={container}>\n            {slides?.map((_, index) => (\n                <ProgressBar\n                    key={`progress-bar-${uuids.current[index]}`}\n                    isActive={index === swiperRef?.current?.swiper?.realIndex}\n                    ref={(el) => (progressBarsRef.current[index] = el)}\n                    segments={totalSlides}\n                />\n            ))}\n        </Box>\n    )\n}\n\nProgressBarContainer.propTypes = {\n    slides: PropTypes.array.isRequired,\n    swiperRef: PropTypes.object.isRequired\n}\n\nProgressBarContainer.displayName = 'ProgressBarContainer'\n","import React, {forwardRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\n\nimport {\n    Box,\n    useMultiStyleConfig,\n    chakra\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst motionProps = {\n    transition: {duration: 1, ease: 'linear'}\n}\n\nconst ChakraMotionDiv = chakra(motion.div)\n\nexport const ProgressBar = forwardRef(({isActive, segments, progressWidth}, ref) => {\n    const {inactiveBar, activeBar} = useMultiStyleConfig('Carousel', {\n        isActive,\n        segments\n    }).progressBar\n\n    return (\n        <Box data-testid=\"carousel-progress-bar\" sx={inactiveBar}>\n            {isActive && (\n                <ChakraMotionDiv\n                    ref={ref}\n                    sx={activeBar}\n                    style={{width: `${progressWidth}%`}}\n                    {...motionProps}\n                />\n            )}\n        </Box>\n    )\n})\n\nProgressBar.propTypes = {\n    isActive: PropTypes.bool.isRequired,\n    segments: PropTypes.number.isRequired,\n    progressWidth: PropTypes.number\n}\n\nProgressBar.displayName = 'ProgressBar'\n","import React, {useCallback, useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Box,\n    Button,\n    Text,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {PrevIcon, NextIcon} from 'pandora-shared-app/overrides/app/components/icons'\n\nimport {THEME} from '../constants'\n\nexport const Controls = ({\n    swiperRef,\n    totalSlides,\n    showCounter,\n    activeIndex,\n    theme = THEME.DARK,\n    displayControls = false,\n    ...rest\n}) => {\n    const {\n        controls: {container, button, numbers, text}\n    } = useMultiStyleConfig('Carousel', {theme})\n\n    const [isBeginning, setIsBeginning] = useState(true)\n    const [isEnd, setIsEnd] = useState(false)\n\n    // Update button states based on Swiper's state\n    useEffect(() => {\n        const swiper = swiperRef?.current?.swiper\n        if (swiper) {\n            const updateState = () => {\n                setIsBeginning(swiper.isBeginning)\n                setIsEnd(swiper.isEnd)\n            }\n\n            // Initial state\n            updateState()\n\n            // Listen for slide change events\n            swiper.on('slideChange', updateState)\n\n            return () => {\n                swiper.off('slideChange', updateState)\n            }\n        }\n    }, [swiperRef])\n\n    // Handle Slide Navigation\n    const handlePrev = useCallback(() => {\n        const swiper = swiperRef?.current?.swiper\n        if (!swiper) return\n\n        if (!isBeginning || swiper.params.loop) {\n            swiper.slidePrev()\n        }\n    }, [swiperRef, isBeginning])\n\n    const handleNext = useCallback(() => {\n        const swiper = swiperRef?.current?.swiper\n        if (!swiper) return\n\n        if (!isEnd || swiper.params.loop) {\n            swiper.slideNext()\n        }\n    }, [swiperRef, isEnd])\n\n    if (totalSlides <= 0) return null\n\n    const prevClass = isBeginning && !swiperRef?.current?.swiper?.params.loop ? 'inactive' : ''\n    const nextClass = isEnd && !swiperRef?.current?.swiper?.params.loop ? 'inactive' : ''\n\n    return (\n        <Box data-testid={'controls'} sx={container} {...rest}>\n            {/* PREVIOUS BUTTON */}\n            {displayControls && (\n                <Button\n                    onClick={handlePrev}\n                    aria-label=\"Previous slide\"\n                    sx={button}\n                    data-auto=\"slideToPrev\"\n                    variant=\"action\"\n                    colorScheme={theme}\n                    className={prevClass}\n                >\n                    <PrevIcon aria-label=\"PrevIcon\" />\n                </Button>\n            )}\n\n            {/* SLIDE COUNTER */}\n            {showCounter && (\n                <Box sx={numbers}>\n                    <Text textStyle={'caption'} sx={text}>\n                        {activeIndex + 1}/{totalSlides}\n                    </Text>\n                </Box>\n            )}\n\n            {/* NEXT BUTTON */}\n            {displayControls && (\n                <Button\n                    onClick={handleNext}\n                    aria-label=\"Next slide\"\n                    sx={button}\n                    data-auto=\"slideToNext\"\n                    variant=\"action\"\n                    colorScheme={theme}\n                    className={nextClass}\n                >\n                    <NextIcon aria-label=\"NextIcon\" />\n                </Button>\n            )}\n        </Box>\n    )\n}\n\nControls.propTypes = {\n    swiperRef: PropTypes.object.isRequired,\n    totalSlides: PropTypes.number.isRequired,\n    showCounter: PropTypes.bool,\n    theme: PropTypes.oneOf(Object.values(THEME)),\n    activeIndex: PropTypes.number.isRequired,\n    displayControls: PropTypes.bool\n}\n\nControls.displayName = 'Controls'\n","import React, {useState, useEffect, useCallback} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {Button, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {PauseIcon, PlayIcon} from 'pandora-shared-app/overrides/app/components/icons'\n\nconst SWIPER_ACTION = {\n    PLAY: 'play',\n    PAUSE: 'pause'\n}\n\nexport const PlayPauseBtn = ({totalSlides, swiperRef}) => {\n    const [isSliderRunning, setIsSliderRunning] = useState(false)\n\n    const {playPauseBtn} = useMultiStyleConfig('Carousel')\n\n    // Sync initial state with Swiper autoplay status\n    useEffect(() => {\n        const swiper = swiperRef?.current?.swiper\n        if (swiper?.autoplay?.running) {\n            setIsSliderRunning(true)\n        }\n    }, [swiperRef])\n\n    // Update state on Swiper autoplay events\n    useEffect(() => {\n        const swiper = swiperRef?.current?.swiper\n        if (!swiper) return\n\n        const handleAutoplayStart = () => setIsSliderRunning(true)\n        const handleAutoplayStop = () => setIsSliderRunning(false)\n\n        swiper.on('autoplayStart', handleAutoplayStart)\n        swiper.on('autoplayStop', handleAutoplayStop)\n\n        // Cleanup event listeners\n        return () => {\n            swiper.off('autoplayStart', handleAutoplayStart)\n            swiper.off('autoplayStop', handleAutoplayStop)\n        }\n    }, [swiperRef])\n\n    // Play or Pause Swiper autoplay\n    const handlePlayPause = useCallback(\n        (e, action) => {\n            e.preventDefault()\n            e.stopPropagation()\n\n            const swiper = swiperRef?.current?.swiper\n            if (!swiper) return\n\n            if (action === SWIPER_ACTION.PLAY) {\n                swiper.autoplay?.start()\n                setIsSliderRunning(true)\n            }\n            if (action === SWIPER_ACTION.PAUSE) {\n                swiper.autoplay?.stop()\n                setIsSliderRunning(false)\n            }\n        },\n        [swiperRef]\n    )\n\n    if (totalSlides <= 0) return null\n\n    return (\n        <Button\n            onClick={(e) =>\n                isSliderRunning\n                    ? handlePlayPause(e, SWIPER_ACTION.PAUSE)\n                    : handlePlayPause(e, SWIPER_ACTION.PLAY)\n            }\n            sx={playPauseBtn}\n            aria-label={isSliderRunning ? 'Pause slider' : 'Play slider'}\n            data-testid=\"play-pause-btn\"\n            variant=\"action\"\n        >\n            {isSliderRunning ? (\n                <PauseIcon className=\"pause-btn\" aria-label=\"PauseIcon\" />\n            ) : (\n                <PlayIcon className=\"play-btn\" aria-label=\"PlayIcon\" />\n            )}\n        </Button>\n    )\n}\n\nPlayPauseBtn.propTypes = {\n    totalSlides: PropTypes.number,\n    swiperRef: PropTypes.object.isRequired\n}\n\nPlayPauseBtn.displayName = 'PlayPauseBtn'\n","import React from 'react'\nimport {motion} from 'framer-motion'\nimport PropTypes from 'prop-types'\n\nexport const AnimatedSlide = ({slide, index, isActive, renderSlide, animatedTransitions}) => (\n    <motion.div\n        initial={animatedTransitions?.initialMotionValues}\n        animate={\n            isActive\n                ? animatedTransitions?.animateMotionValues\n                : animatedTransitions?.initialMotionValues\n        }\n        transition={animatedTransitions?.transitionConfig}\n    >\n        {renderSlide(slide, index)}\n    </motion.div>\n)\n\nAnimatedSlide.propTypes = {\n    slide: PropTypes.object.isRequired,\n    index: PropTypes.number.isRequired,\n    isActive: PropTypes.bool,\n    renderSlide: PropTypes.func.isRequired,\n    animatedTransitions: PropTypes.object.isRequired\n}\n\nAnimatedSlide.displayName = 'AnimatedSlide'\n","import {useEffect} from 'react'\n\nexport const useCarouselInit = (swiperRef, isIntersecting, autoPlay) => {\n    useEffect(() => {\n        if (swiperRef?.current?.swiper && isIntersecting) {\n            swiperRef.current.swiper?.autoplay?.resume()\n        }\n    }, [swiperRef, isIntersecting, autoPlay])\n}\n","import React, {useRef, useCallback, useMemo, useState} from 'react'\nimport {Swiper, SwiperSlide} from 'swiper/react'\nimport 'swiper/css'\nimport PropTypes from 'prop-types'\n\nimport {ProgressBarContainer, Controls, PlayPauseBtn, AnimatedSlide} from './partials'\nimport {useCarouselInit, useDragClickSuppression, useSwiperTouchEvents} from './hooks/'\n\nimport {\n    DEFAULT_AUTO_PLAY,\n    INDICATOR_POSITION,\n    THEME,\n    BREAKPOINTS,\n    CAROUSEL_CLASS\n} from './constants'\n\nimport {\n    Text,\n    Box,\n    useMultiStyleConfig,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst headingStyle = {base: 'headingSm', xl: 'headingMd'}\n\nexport const Carousel = React.memo(\n    ({\n        slides,\n        renderSlide,\n        autoPlay = DEFAULT_AUTO_PLAY,\n        onSlideChange,\n        customIndicator,\n        showPlayPause = false,\n        showControls = false,\n        showProgress = false,\n        showCounter = false,\n        indicatorPosition = INDICATOR_POSITION.BOTTOM_LEFT,\n        theme,\n        slideStyle,\n        swiperStyle,\n        isIntersecting,\n        animatedCarousel,\n        animatedCarouselTransitions,\n        title,\n        headerContent,\n        suppressClickAfterDrag = false,\n        ...rest\n    }) => {\n        const [activeIndex, setActiveIndex] = useState(0)\n\n        const {container} = useMultiStyleConfig('Carousel')\n\n        const swiperRef = useRef(null)\n\n        const totalSlides = slides?.length || 0\n        const resolvedAutoPlay = autoPlay || false\n\n        // Determine slidesPerView based on breakpoints\n        const {breakpoints, slidesPerView} = rest\n\n        const resolvedSlidesPerView = useBreakpointValue({\n            base: breakpoints?.[BREAKPOINTS.BASE]?.slidesPerView || slidesPerView || 1,\n            md: breakpoints?.[BREAKPOINTS.MD]?.slidesPerView || slidesPerView || 1,\n            xl: breakpoints?.[BREAKPOINTS.XL]?.slidesPerView || slidesPerView || 1\n        })\n\n        const displayControls = totalSlides > resolvedSlidesPerView\n\n        const handleSlideChange = useCallback(\n            (swiper) => {\n                setActiveIndex(swiper?.realIndex)\n                if (onSlideChange) onSlideChange(swiper?.realIndex)\n            },\n            [onSlideChange]\n        )\n\n        // Initialize autoplay logic\n        useCarouselInit(swiperRef, isIntersecting, resolvedAutoPlay)\n\n        // Manage touch events\n        useSwiperTouchEvents(swiperRef)\n\n        useDragClickSuppression(swiperRef, {enabled: suppressClickAfterDrag})\n\n        const renderedSlides = useMemo(\n            () =>\n                slides?.map((slide, index) => (\n                    <SwiperSlide\n                        key={slide.key || slide.productId || slide.id || index}\n                        style={slideStyle}\n                    >\n                        {({isActive}) =>\n                            animatedCarousel ? (\n                                <AnimatedSlide\n                                    slide={slide}\n                                    index={index}\n                                    renderSlide={renderSlide}\n                                    animatedTransitions={animatedCarouselTransitions}\n                                    isActive={isActive}\n                                />\n                            ) : (\n                                renderSlide(slide, index)\n                            )\n                        }\n                    </SwiperSlide>\n                )),\n            [slides, slideStyle, animatedCarousel, renderSlide, animatedCarouselTransitions]\n        )\n\n        if (totalSlides <= 0) return null\n\n        const showTitle = Boolean(title) && !headerContent\n\n        return (\n            <Box\n                sx={container}\n                className={CAROUSEL_CLASS.CONTAINER}\n                data-testid=\"carousel-container\"\n            >\n                <Box sx={container?.headerCarousel} className={CAROUSEL_CLASS.HEADER}>\n                    {showTitle && (\n                        <Text\n                            as=\"h2\"\n                            textStyle={headingStyle}\n                            sx={container?.headerCarousel?.heading}\n                        >\n                            {title}\n                        </Text>\n                    )}\n\n                    {headerContent}\n\n                    {/* CONTROLS & COUNTER */}\n                    {showControls && (\n                        <Controls\n                            swiperRef={swiperRef}\n                            totalSlides={totalSlides}\n                            activeIndex={activeIndex}\n                            showCounter={showCounter}\n                            theme={theme}\n                            className={indicatorPosition}\n                            displayControls={displayControls}\n                        />\n                    )}\n                </Box>\n\n                <Swiper\n                    ref={swiperRef}\n                    autoplay={resolvedAutoPlay}\n                    onSlideChange={handleSlideChange}\n                    style={swiperStyle}\n                    data-testid=\"carousel\"\n                    className={CAROUSEL_CLASS.BODY}\n                    {...rest}\n                >\n                    {renderedSlides}\n\n                    {/* PLAY/PAUSE BUTTON */}\n                    {showPlayPause && (\n                        <PlayPauseBtn totalSlides={totalSlides} swiperRef={swiperRef} />\n                    )}\n\n                    {/* PROGRESS BAR */}\n                    {showProgress && <ProgressBarContainer slides={slides} swiperRef={swiperRef} />}\n                </Swiper>\n                {customIndicator}\n            </Box>\n        )\n    }\n)\n\nCarousel.propTypes = {\n    slides: PropTypes.arrayOf(PropTypes.object),\n    renderSlide: PropTypes.func,\n    loop: PropTypes.bool,\n    autoPlay: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n    onSlideChange: PropTypes.func,\n    customIndicator: PropTypes.node,\n    slideStyle: PropTypes.object,\n    swiperStyle: PropTypes.object,\n    isIntersecting: PropTypes.bool,\n    animatedCarousel: PropTypes.bool,\n    animatedCarouselTransitions: PropTypes.object,\n    showControls: PropTypes.bool,\n    showCounter: PropTypes.bool,\n    showProgress: PropTypes.bool,\n    showPlayPause: PropTypes.bool,\n    theme: PropTypes.oneOf(Object.values(THEME)),\n    indicatorPosition: PropTypes.oneOf(Object.values(INDICATOR_POSITION)),\n    title: PropTypes.string,\n    suppressClickAfterDrag: PropTypes.bool,\n    headerContent: (props, propName, componentName, ...rest) => {\n        if (props.title && props.headerContent != null) {\n            return new Error(\n                `${componentName}: \\`title\\` and \\`headerContent\\` are mutually exclusive. \\`headerContent\\` renders in the header row before controls.`\n            )\n        }\n\n        return PropTypes.node(props, propName, componentName, ...rest)\n    }\n}\n\nCarousel.displayName = 'Carousel'\n","import {useEffect} from 'react'\n\nexport const useSwiperTouchEvents = (swiperRef) => {\n    useEffect(() => {\n        const swiper = swiperRef?.current?.swiper\n        let isPressing = false\n\n        const handleTouchStart = (e) => {\n            if (e.target.closest('.play-btn') || e.target.closest('.pause-btn')) return\n            isPressing = true\n            swiper?.autoplay?.pause()\n        }\n\n        const handleTouchEnd = (e) => {\n            if (e.target.closest('.play-btn') || e.target.closest('.pause-btn')) return\n            if (isPressing) swiper?.autoplay?.resume()\n            isPressing = false\n        }\n\n        const swiperElement = swiper?.el\n        if (swiperElement) {\n            swiperElement.addEventListener('touchstart', handleTouchStart)\n            swiperElement.addEventListener('touchend', handleTouchEnd)\n        }\n\n        return () => {\n            if (swiperElement) {\n                swiperElement.removeEventListener('touchstart', handleTouchStart)\n                swiperElement.removeEventListener('touchend', handleTouchEnd)\n            }\n        }\n    }, [swiperRef])\n}\n","import {useEffect} from 'react'\nimport {DRAG_CLICK_THRESHOLD} from '../constants'\n\n/**\n * Opt-in guard against accidental clicks while dragging a carousel.\n *\n * A press, drag and release over the same slide is a click as far as the DOM is\n * concerned, which makes swiping navigate away by accident. When enabled, a click\n * that follows a pointer movement larger than `threshold` is swallowed in the\n * capture phase, so neither React handlers nor navigation run for it.\n *\n * Disabled by default so carousels that do not opt in keep their behaviour.\n */\nexport const useDragClickSuppression = (\n    swiperRef,\n    {enabled = false, threshold = DRAG_CLICK_THRESHOLD} = {}\n) => {\n    useEffect(() => {\n        if (!enabled) return\n\n        const swiperElement = swiperRef?.current?.swiper?.el\n        if (!swiperElement) return\n\n        let pointerStart = null\n        let shouldSuppressClick = false\n\n        const handlePointerDown = (event) => {\n            pointerStart = {x: event.clientX, y: event.clientY}\n            shouldSuppressClick = false\n        }\n\n        const handlePointerUp = (event) => {\n            if (!pointerStart) return\n\n            const distance = Math.hypot(\n                event.clientX - pointerStart.x,\n                event.clientY - pointerStart.y\n            )\n            shouldSuppressClick = distance > threshold\n            pointerStart = null\n        }\n\n        const handleClickCapture = (event) => {\n            if (!shouldSuppressClick) return\n\n            shouldSuppressClick = false\n            event.preventDefault()\n            event.stopPropagation()\n        }\n\n        swiperElement.addEventListener('pointerdown', handlePointerDown)\n        swiperElement.addEventListener('pointerup', handlePointerUp)\n        swiperElement.addEventListener('click', handleClickCapture, true)\n\n        return () => {\n            swiperElement.removeEventListener('pointerdown', handlePointerDown)\n            swiperElement.removeEventListener('pointerup', handlePointerUp)\n            swiperElement.removeEventListener('click', handleClickCapture, true)\n        }\n    }, [swiperRef, enabled, threshold])\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useIntl} from 'react-intl'\nimport {validatePassword} from '@salesforce/retail-react-app/app/utils/password-utils'\n\nexport default function useRegistrationFields({\n    form: {\n        control,\n        formState: {errors}\n    },\n    prefix = ''\n}) {\n    const {formatMessage} = useIntl()\n\n    const fields = {\n        firstName: {\n            name: `${prefix}firstName`,\n            label: formatMessage({\n                defaultMessage: 'First Name',\n                id: 'use_registration_fields.label.first_name'\n            }),\n            type: 'text',\n            autoComplete: 'given-name',\n            defaultValue: '',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter your first name.',\n                    id: 'use_registration_fields.error.required_first_name'\n                })\n            },\n            error: errors[`${prefix}firstName`],\n            control\n        },\n        lastName: {\n            name: `${prefix}lastName`,\n            label: formatMessage({\n                defaultMessage: 'Last Name',\n                id: 'use_registration_fields.label.last_name'\n            }),\n            type: 'text',\n            defaultValue: '',\n            autoComplete: 'family-name',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter your last name.',\n                    id: 'use_registration_fields.error.required_last_name'\n                })\n            },\n            error: errors[`${prefix}lastName`],\n            control\n        },\n        email: {\n            name: `${prefix}email`,\n            label: formatMessage({\n                defaultMessage: 'Email',\n                id: 'use_registration_fields.label.email'\n            }),\n            placeholder: 'you@email.com',\n            type: 'email',\n            autoComplete: 'email',\n            defaultValue: '',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter a valid email address.',\n                    id: 'use_registration_fields.error.required_email'\n                })\n            },\n            error: errors[`${prefix}email`],\n            control\n        },\n        password: {\n            name: `${prefix}password`,\n            label: formatMessage({\n                defaultMessage: 'Password',\n                id: 'use_registration_fields.label.password'\n            }),\n            type: 'password',\n            defaultValue: '',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please create a password.',\n                    id: 'use_registration_fields.error.required_password'\n                }),\n                validate: {\n                    hasMinChars: (val) =>\n                        validatePassword(val).hasMinChars ||\n                        formatMessage({\n                            defaultMessage: 'Password must contain at least 8 characters.',\n                            id: 'use_registration_fields.error.minimum_characters'\n                        }),\n                    hasUppercase: (val) =>\n                        validatePassword(val).hasUppercase ||\n                        formatMessage({\n                            defaultMessage: 'Password must contain at least one uppercase letter.',\n                            id: 'use_registration_fields.error.uppercase_letter'\n                        }),\n                    hasLowercase: (val) =>\n                        validatePassword(val).hasLowercase ||\n                        formatMessage({\n                            defaultMessage: 'Password must contain at least one lowercase letter.',\n                            id: 'use_registration_fields.error.lowercase_letter'\n                        }),\n                    hasNumber: (val) =>\n                        validatePassword(val).hasNumber ||\n                        formatMessage({\n                            defaultMessage: 'Password must contain at least one number.',\n                            id: 'use_registration_fields.error.contain_number'\n                        }),\n                    hasSpecialChar: (val) =>\n                        validatePassword(val).hasSpecialChar ||\n                        formatMessage({\n                            defaultMessage: 'Password must contain at least one special character.',\n                            id: 'use_registration_fields.error.special_character'\n                        })\n                }\n            },\n            error: errors[`${prefix}password`],\n            control\n        },\n        acceptsMarketing: {\n            name: `${prefix}acceptsMarketing`,\n            label: formatMessage({\n                defaultMessage:\n                    'Sign me up for Salesforce emails (you can unsubscribe at any time)',\n                id: 'use_registration_fields.label.sign_up_to_emails'\n            }),\n            type: 'checkbox',\n            defaultValue: false,\n            error: errors[`${prefix}acceptsMarketing`],\n            control\n        }\n    }\n\n    return fields\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-facebook\",\n  \"use\": \"social-facebook-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-facebook\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10 0C15.5229 0 20 4.47715 20 10C20 14.9912 16.3432 19.1283 11.5625 19.8785V12.8906H13.8926L14.3359 10H11.5625V8.125C11.5625 7.345 11.9387 6.58509 13.1381 6.56299C13.156 6.56267 13.174 6.5625 13.1922 6.5625H14.4531V4.10156C14.4531 4.10156 13.5767 3.95203 12.6249 3.91464C12.4889 3.9093 12.3514 3.90625 12.2146 3.90625C9.93047 3.90625 8.4375 5.29063 8.4375 7.79688V10H5.89844V12.8906H8.4375V19.8785C3.65684 19.1283 0 14.9912 0 10C0 4.47715 4.47715 0 10 0Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useState, useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useCurrentBasket} from './use-current-basket'\nimport {useDolCommonParams} from './use-dol-common-params'\nimport {useAccessToken} from '@salesforce/commerce-sdk-react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {getCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\nexport const useDolBasketMutation = () => {\n    const {locale} = useMultiSite()\n    const {data: currentBasket, refetch} = useCurrentBasket()\n    const dolCommonParams = useDolCommonParams()\n    const {getTokenWhenReady} = useAccessToken()\n    const {app: appConfig} = getConfig()\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disableGetCustomerBasketsOrganisationIdShortCodeSiteIdParameters,\n        false\n    )\n    const isDwsidHeaderEnabled = useVariant(LD_KEYS.enableDwsidHeader, false)\n    const isBasketTraceEnabled = useVariant(LD_KEYS.enableBasketTrace, false)\n    // DOL Q3 channel migration — flag ON adds mandatory channelname/channeltype headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const isAtbBackgroundBasketRefetchEnabled = useVariant(\n        LD_KEYS.enableGlobalAtbBackgroundBasketRefetch,\n        false\n    )\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const [isAddingItem, setIsAddingItem] = useState(false)\n    const [addItemResponse, setAddItemResponse] = useState(null)\n    const [addItemError, setAddItemError] = useState(null)\n\n    const config = getConfig()\n    const proxyPath = config?.app?.dolAPI?.proxyPath\n    const customApiPaths = getCustomApiPaths(proxyPath, dolCommonParams.organisationId)\n    const cartUrl = customApiPaths.DOL_CARTS\n\n    const {siteId, locale: dolParamLocale, shortCode, organisationId} = dolCommonParams\n    // Use dolCommonParams but exclude source parameter to avoid API issues\n    const queryParams = useMemo(\n        () => ({\n            locale: dolParamLocale,\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId,\n                      shortCode,\n                      organisationId\n                  })\n        }),\n        [\n            dolParamLocale,\n            siteId,\n            shortCode,\n            organisationId,\n            isOrgIdShortCodeSideIdParametersDisabled\n        ]\n    )\n\n    const headers = useMemo(\n        () => ({\n            'Content-Type': 'application/json',\n            ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channelType: 'online'})\n        }),\n        [isDolQ3MigrationEnabled, dolChannelHeaders]\n    )\n\n    const authenticatedMethod = async ({apiOptions, headers, body, method}) => {\n        const url = `${apiOptions.path}`\n        const queryString = apiOptions.queryParams\n            ? `?${new URLSearchParams(apiOptions.queryParams).toString()}`\n            : ''\n\n        const accessToken = await getTokenWhenReady()\n\n        const dwsidCookie = isDwsidHeaderEnabled ? getCookie('dwsid') : null\n        const response = await fetch(`${url}${queryString}`, {\n            method,\n            headers: {\n                ...headers,\n                Authorization: `Bearer ${accessToken}`,\n                'x-environment': appConfig?.targetEnvironment,\n                ...(dwsidCookie && {\n                    sfdc_dwsid: dwsidCookie\n                })\n            },\n            body: body ? JSON.stringify(body) : undefined,\n            credentials: apiOptions.skipCredentials ? 'omit' : 'include'\n        })\n\n        if (!response.ok) {\n            const errorData = await response.json()\n            throw errorData\n        }\n\n        return response.json()\n    }\n\n    const submitAddItemToCart = async (payload, {forceRefetch = false} = {}) => {\n        setIsAddingItem(true)\n        setAddItemError(null)\n\n        try {\n            let basketId = null\n            let freshBasket\n\n            if (forceRefetch) {\n                // PVA path: re-fetch first so a basket left stale by guest-session\n                // rotation is rejected (isError) and replaced, avoiding Invalid Customer.\n                const {isError, data: basketsData} = await refetch()\n                freshBasket = isError ? undefined : basketsData?.baskets?.[0]\n            } else if (currentBasket?.basketId || currentBasket?.id) {\n                freshBasket = currentBasket\n            } else {\n                // Pull fresh basket from refetch before ATB\n                const {data: basketsData} = await refetch()\n                freshBasket = basketsData?.baskets?.[0]\n            }\n\n            // Use existing basket if available, otherwise create new one\n            if (freshBasket?.basketId || freshBasket?.id) {\n                basketId = freshBasket.basketId || freshBasket.id\n            } else {\n                // Create new basket via DOL API\n                const createBasketBody = {\n                    channelType: 'online',\n                    currency: locale.preferredCurrency || 'USD',\n                    locale: locale.id,\n                    status: 'active'\n                }\n\n                const createBasketResponse = await authenticatedMethod({\n                    apiOptions: {\n                        path: `${cartUrl}`,\n                        queryParams,\n                        skipCredentials: !isBasketTraceEnabled\n                    },\n                    headers,\n                    body: createBasketBody,\n                    method: 'POST'\n                })\n\n                basketId = createBasketResponse?.id\n\n                if (!basketId) {\n                    throw new Error('Failed to create basket - no basket ID returned')\n                }\n            }\n\n            // Add items to the basket via DOL API\n            const result = await authenticatedMethod({\n                apiOptions: {\n                    path: `${cartUrl}/${basketId}/items`,\n                    queryParams,\n                    skipCredentials: !isBasketTraceEnabled\n                },\n                headers,\n                body: payload,\n                method: 'POST'\n            })\n\n            setAddItemResponse(result)\n\n            if (isAtbBackgroundBasketRefetchEnabled) {\n                // Fire-and-forget SCAPI refresh so the confirmation sheet isn't blocked.\n                // 500ms delay preserves the DOL→SCAPI propagation buffer.\n                setTimeout(() => {\n                    refetch().catch(() => {})\n                }, 500)\n            } else {\n                // Refresh SCAPI basket data to update minicart and other UI components\n                try {\n                    // Add a small delay to ensure DOL changes have propagated\n                    await new Promise((resolve) => setTimeout(resolve, 500))\n                    await refetch()\n                } catch (refetchError) {\n                    // Silently handle refetch errors to avoid breaking the add-to-cart flow\n                }\n            }\n\n            return result\n        } catch (error) {\n            setAddItemError(error)\n            throw error\n        } finally {\n            setIsAddingItem(false)\n        }\n    }\n\n    return {\n        submitAddItemToCart,\n        isAddingItem,\n        addItemResponse,\n        addItemError\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"brand-logo\",\n  \"use\": \"brand-logo-usage\",\n  \"viewBox\": \"0 0 429 115\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 429 115\\\" id=\\\"brand-logo\\\">\\n    <path d=\\\"M269.435 25.509c18.17 0 31.976 14.012 31.976 32.246 0 18.323-13.806 32.245-31.976 32.245-17.993 0-31.977-13.922-31.977-32.245 0-18.234 13.984-32.246 31.977-32.246zm-73.166.898c19.24 0 32.51 13.114 32.51 31.527 0 18.234-13.538 31.886-32.688 31.886-5.01 0-9.448-.473-13.456-.533l-.796-.006h-6.413l-.089-.09s.43-4.242.445-11.622V38.533c0-7.496-.429-11.875-.444-12.032v-.004l.088-.09h20.843zm-178.01 0c12.203 0 22.803 7.006 22.803 19.401 0 12.755-10.51 20.3-22.802 20.3-1.19 0-4.572-.164-6.272-.335l-.23-.024-.09.09v11.73c.016 7.243.43 11.464.445 11.618v.005l-.088.09H.089L0 89.191s.43-4.243.445-11.623V38.533C.445 31.037.016 26.658 0 26.5v-.004l.089-.09h18.17zm55.025 0l.089.09s.418 1.77 1.658 4.739l.123.29 22.179 51.019c1.91 4.203 3.482 6.529 3.56 6.642l.003.005v.09H88.604l-.09-.09-.007-.02c-.086-.212-.824-2.053-2.013-5.319l-.117-.32-4.097-9.61H55.202l-3.83 9.61c-1.47 3.665-1.765 5.21-1.78 5.625l-.001.034-.09.09H37.21v-.09s1.693-2.22 3.43-6.327l.133-.32 21.02-51.018c1.295-3.045 1.67-4.91 1.692-5.025v-.005l.09-.09h9.709zm44.781 0l33.669 43.743h.089V38.12c-.016-7.38-.446-11.623-.446-11.623l.09-.09h10.866l.09.09s-.446 4.401-.446 12.036v39.036c.016 7.38.445 11.623.445 11.623l-.089.09H152.18L118.332 44.91h-.089v32.246c0 7.634.446 12.036.446 12.036l-.09.09h-10.866l-.09-.09s.446-4.402.446-12.036V32.695c0-1.348-.713-3.324-2.049-6.198l.09-.09h11.935zm214.08 0c12.203 0 20.13 9.162 20.13 19.581 0 7.52-5.877 15.042-12.268 16.638l-.291.069v.09c2.223.603 4.446 2.448 5.96 4.82l.186.3 6.057 10.06c3.955 6.59 7.413 10.92 7.647 11.211l.013.016v.09h-14.252l-.089-.09s-1.72-4.249-5.75-10.87l-.217-.358-5.077-8.263c-2.093-3.341-4.356-4.53-10.046-4.58l-.376-.001v12.036c0 7.496.43 11.874.445 12.031v.005l-.089.09h-11.935l-.09-.09s.43-4.243.446-11.623v-39.45c-.015-7.243-.43-11.464-.445-11.618v-.004l.089-.09h19.952zm69.653 0l.089.09s.445 1.886 1.781 5.03l22.179 51.018c1.96 4.311 3.563 6.647 3.563 6.647v.09h-12.292l-.09-.09s-.8-1.976-2.137-5.66l-4.097-9.61h-27.078l-3.83 9.61c-1.514 3.773-1.781 5.3-1.781 5.66l-.09.09h-12.291v-.09s1.781-2.336 3.563-6.647l21.02-51.018c1.337-3.144 1.693-5.03 1.693-5.03l.089-.09h9.709zm-132.363 9.431c-11.58 0-20.576 9.521-20.576 21.917 0 12.395 8.996 21.916 20.576 21.916 11.668 0 20.664-9.521 20.664-21.916 0-12.396-8.996-21.917-20.664-21.917zm-74.146.809h-8.284v39.97c0 1.706.179 2.066 1.158 2.335 1.604.45 4.365.539 7.393.539 13.183 0 21.823-9.341 21.823-21.467 0-12.216-8.64-21.377-22.09-21.377zm-126.993 4.76h-.09L59.39 63.593h18.437l-9.53-22.186zm328.514 0h-.09l-8.818 22.186h18.438l-9.53-22.186zm-378.194-4.67h-6.948v18.592c1.425.27 4.632.45 6.057.45 7.66 0 11.936-3.593 11.936-9.97 0-6.557-4.9-9.073-11.045-9.073zm312.015-.09h-6.859V54.79c1.693.36 4.186.36 5.612.36 7.838 0 11.49-4.312 11.49-9.072 0-5.03-3.563-9.431-10.243-9.431zm-55.228-18.324c1.068 0 2.048.899 2.048 2.066 0 1.258-.98 2.156-2.048 2.156a2.119 2.119 0 01-2.139-2.156c0-1.167.98-2.066 2.139-2.066zm-11.936 0c1.069 0 2.049.899 2.049 2.066 0 1.258-.98 2.156-2.05 2.156a2.119 2.119 0 01-2.137-2.156c0-1.167.98-2.066 2.138-2.066zm5.968-.628c1.068 0 2.048.898 2.048 2.066 0 1.257-.98 2.155-2.048 2.155a2.119 2.119 0 01-2.138-2.155c0-1.168.98-2.066 2.138-2.066zm10.777-15.18l.445.09.09.09-2.583 13.832-.09.09-3.562-.809-.09-.09 5.701-13.113.09-.09zm-21.555 0l.09.09 5.7 13.114-.09.09-3.562.808-.09-.09-2.582-13.832.089-.09.445-.09zM269.702 0l.089.09 1.514 15.449-.089.09h-3.563l-.09-.09 1.604-15.45.09-.089h.445z\\\" fill=\\\"#27251F\\\" fill-rule=\\\"evenodd\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"basket\",\n  \"use\": \"basket-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"basket\\\">\\n<g clip-path=\\\"url(#basket_clip0_5205_7181)\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.6 6C6.54477 6 6.5 5.95523 6.5 5.9V4.5C6.5 2.567 8.067 1 10 1C11.933 1 13.5 2.567 13.5 4.5V5.9C13.5 5.95523 13.4552 6 13.4 6H6.6ZM5.4 7C5.45523 7 5.5 7.04477 5.5 7.1V9.9C5.5 9.95523 5.54477 10 5.6 10H6.4C6.45523 10 6.5 9.95523 6.5 9.9V7.1C6.5 7.04477 6.54477 7 6.6 7H13.4C13.4552 7 13.5 7.04477 13.5 7.1V9.9C13.5 9.95523 13.5448 10 13.6 10H14.4C14.4552 10 14.5 9.95523 14.5 9.9V7.1C14.5 7.04477 14.5448 7 14.6 7H17.9C17.9552 7 18 7.04477 18 7.1V18.9C18 18.9552 17.9552 19 17.9 19H2.1C2.04477 19 2 18.9552 2 18.9V7.1C2 7.04477 2.04477 7 2.1 7H5.4ZM5.4 6C5.45523 6 5.5 5.95523 5.5 5.9V4.5C5.5 2.01472 7.51472 0 10 0C12.4853 0 14.5 2.01472 14.5 4.5V5.9C14.5 5.95523 14.5448 6 14.6 6H18.9C18.9552 6 19 6.04477 19 6.1V19.9C19 19.9552 18.9552 20 18.9 20H1.1C1.04477 20 1 19.9552 1 19.9V6.1C1 6.04477 1.04477 6 1.1 6H5.4Z\\\" fill=\\\"#27251F\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"basket_clip0_5205_7181\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"gift-pictogram\",\n  \"use\": \"gift-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol fill=\\\"none\\\" viewBox=\\\"0 0 64 64\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"gift-pictogram\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M45.3253 5.14185C49.9911 4.24834 53.9 7.73519 53.9 12.4462C53.9 17.0561 49.2563 20.9658 43.2815 21.001H39V22.001L43.2 22.0013L43.2835 22.001H59V32.001H54V59.001H36V33.001H48V32.001H35V60.001H55V33.001H60V21.001H48.4131C52.2272 19.4503 54.9 16.2452 54.9 12.4462C54.9 7.15536 50.4657 3.13929 45.1372 4.15969C41.707 4.81658 39.3096 6.6228 37.2775 8.92303C36.2654 10.0687 35.34 11.3412 34.4234 12.655C34.1628 13.0285 33.9033 13.4047 33.6427 13.7826C33.107 14.5593 32.5662 15.3434 32 16.1267C31.4338 15.3434 30.893 14.5594 30.3573 13.7826C30.0968 13.4048 29.8371 13.0284 29.5766 12.655C28.66 11.3412 27.7346 10.0687 26.7225 8.92303C24.6904 6.6228 22.293 4.81658 18.8628 4.15969C13.5343 3.13929 9.09998 7.15535 9.09998 12.4462C9.09998 16.2452 11.7728 19.4503 15.5869 21.001H4V33.001H10V60.001H29V32.001H16.916V33.001H28V59.001H11V32.001H5V22.001H20.7169C20.7446 22.0012 20.7723 22.0013 20.8 22.0013H25V21.0013L20.7188 21.001C14.7439 20.9659 10.1 17.0562 10.1 12.4462C10.1 7.73519 14.0089 4.24834 18.6747 5.14185C21.8218 5.74452 24.0359 7.39242 25.9731 9.58511C26.9456 10.6859 27.8442 11.9196 28.7565 13.2272C29.0105 13.5913 29.2661 13.9618 29.5245 14.3364C30.1181 15.1972 30.7273 16.0804 31.3676 16.9576C30.7964 17.6739 30.3935 18.3058 30.1382 18.8611C29.8496 19.489 29.7315 20.0593 29.8176 20.5571C29.9079 21.0789 30.212 21.4585 30.6277 21.6925C31.0257 21.9165 31.5112 22.0013 32 22.0013C32.6023 22.0013 33.132 21.8724 33.5239 21.5667C33.9326 21.2478 34.1249 20.7888 34.1375 20.281C34.1606 19.3454 33.5832 18.189 32.6048 16.9955C33.2552 16.1058 33.873 15.21 34.4753 14.3368C34.7337 13.9622 34.9895 13.5913 35.2435 13.2272C36.1558 11.9196 37.0544 10.6859 38.0269 9.58511C39.9641 7.39242 42.1782 5.74452 45.3253 5.14185ZM31.0468 19.2787C31.2347 18.8701 31.5336 18.3815 31.9735 17.8063C32.8098 18.8703 33.151 19.7224 33.1378 20.2562C33.1314 20.5151 33.0444 20.6725 32.9088 20.7782C32.7563 20.8972 32.4766 21.0013 32 21.0013C31.6116 21.0013 31.3146 20.9316 31.1182 20.821C30.9395 20.7205 30.8374 20.5853 30.803 20.3867C30.7645 20.1641 30.8034 19.8082 31.0468 19.2787Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {useCallback, useState, useEffect} from 'react'\n\nexport const useLocalStorage = (key, defaultValue = null) => {\n    const readValue = useCallback(() => {\n        if (isServer) return defaultValue\n\n        try {\n            const stored = window.localStorage.getItem(key)\n            return stored ? JSON.parse(stored) : defaultValue\n        } catch (error) {\n            console.warn(`Error reading localStorage key \"${key}\":`, error)\n            return defaultValue\n        }\n    }, [key, defaultValue])\n\n    const [item, setItem] = useState(() => readValue())\n\n    const setValue = useCallback(\n        (newValue) => {\n            if (isServer) return\n\n            try {\n                const valueToStore =\n                    typeof newValue === 'function' ? newValue(readValue()) : newValue\n\n                window.localStorage.setItem(key, JSON.stringify(valueToStore))\n                setItem(valueToStore)\n\n                window.dispatchEvent(\n                    new CustomEvent('local-storage', {\n                        detail: {key}\n                    })\n                )\n            } catch (error) {\n                console.warn(`Error setting localStorage key \"${key}\":`, error)\n            }\n        },\n        [key, readValue]\n    )\n\n    const clearValue = useCallback(() => {\n        if (isServer) return\n\n        try {\n            window.localStorage.removeItem(key)\n            setItem(defaultValue)\n\n            window.dispatchEvent(\n                new CustomEvent('local-storage', {\n                    detail: {key}\n                })\n            )\n        } catch (error) {\n            console.warn(`Error removing localStorage key \"${key}\":`, error)\n        }\n    }, [key, defaultValue])\n\n    useEffect(() => {\n        if (isServer) return\n\n        const handleCustomEvent = (event) => {\n            if (event.detail?.key === key) {\n                setItem(readValue())\n            }\n        }\n\n        window.addEventListener('local-storage', handleCustomEvent)\n\n        return () => {\n            window.removeEventListener('local-storage', handleCustomEvent)\n        }\n    }, [key, readValue])\n\n    return [item, setValue, clearValue]\n}\n","import {useState, useCallback, useEffect} from 'react'\n/**\n * A custom hook for managing delayed execution of `onClose` to allow animations to complete.\n *\n * @param {function} onClose - The callback to execute after the animation finishes.\n * @param {number} animationDuration - The duration of the animation in milliseconds.\n * @param {boolean} isOpen - Whether the drawer is currently open. Used to reset animation state.\n *\n * @returns {object} - An object containing:\n *   - `shouldAnimateExit`: A boolean indicating if the exit animation should run.\n *   - `handleOnClose`: A function to trigger the delayed `onClose`.\n */\nexport const useDelayedOnClose = (onClose, animationDuration, isOpen = true) => {\n    const [shouldAnimateExit, setShouldAnimateExit] = useState(false)\n\n    // Reset shouldAnimateExit when drawer opens to ensure proper enter animation\n    useEffect(() => {\n        if (isOpen) {\n            setShouldAnimateExit(false)\n        }\n    }, [isOpen])\n\n    const handleOnClose = useCallback(() => {\n        setShouldAnimateExit(true)\n        setTimeout(() => {\n            onClose()\n            setShouldAnimateExit(false)\n        }, animationDuration)\n    }, [onClose, animationDuration])\n\n    return {shouldAnimateExit, handleOnClose}\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"search\",\n  \"use\": \"search-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"search\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"#1E1E1E\\\" />\\n<g id=\\\"search_Component\\\">\\n<rect width=\\\"1813\\\" height=\\\"3735\\\" transform=\\\"translate(-332 -1424)\\\" fill=\\\"white\\\" />\\n<g id=\\\"search_Default / Magnifying Glass\\\" clip-path=\\\"url(#search_clip0_1493_6988)\\\">\\n<circle id=\\\"search_Ellipse 251\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7.5\\\" stroke=\\\"#2B2322\\\" />\\n<rect id=\\\"search_Rectangle 30934\\\" x=\\\"13.7071\\\" y=\\\"13\\\" width=\\\"8.84155\\\" height=\\\"1\\\" transform=\\\"rotate(45 13.7071 13)\\\" fill=\\\"#2B2322\\\" />\\n</g>\\n</g>\\n<defs>\\n<clipPath id=\\\"search_clip0_1493_6988\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useContext, useMemo} from 'react'\nimport {useQuery, QueryClient} from '@tanstack/react-query'\nimport {AmplienceContext} from 'pandora-shared-app/overrides/app/contexts/amplience'\nimport {AMPLIENCE_PERSONALIZATION_KEYS} from 'pandora-shared-app/overrides/app/constants'\n\nconst queryClient = new QueryClient()\n\nconst EMPTY_KEYS = Object.freeze([])\n\n// Normalizes a fetchViaPost `responses` array into the single `{content}` shape\n// fetchItemByKey callers consume. Prefers the response whose deliveryKey ends with\n// `/{segment}`, falling back to the base response, then the first available one.\nexport const pickPersonalizedAmplienceResponse = (data, segment) => {\n    if (!Array.isArray(data?.responses)) return data\n    if (!segment) {\n        return {content: data.responses[0]?.content}\n    }\n    const variant = data.responses.find((entry) =>\n        entry?.content?._meta?.deliveryKey?.endsWith(`/${segment}`)\n    )\n    const base = data.responses.find(\n        (entry) =>\n            entry?.content?._meta?.deliveryKey &&\n            !entry.content._meta.deliveryKey.endsWith(`/${segment}`)\n    )\n    return {content: (variant ?? base ?? data.responses[0])?.content}\n}\n\nconst fetchContent = async (dolClient, siteId, contentId, keys, absoluteKeys) => {\n    if (!dolClient) {\n        throw new Error('dolClient is not available')\n    }\n\n    const {fetchViaPost, fetchItemById, fetchItemByKey} = dolClient\n\n    if (contentId) {\n        const result = await fetchItemById(contentId)\n        return result\n    }\n\n    // Add siteId with the key if it is included in the request.\n    const siteScoped = siteId ? keys.map((key) => `${siteId}/${key}`) : keys\n    const requestKeys = absoluteKeys.length ? [...siteScoped, ...absoluteKeys] : siteScoped\n\n    if (requestKeys.length === 1) {\n        const result = await fetchItemByKey(requestKeys[0])\n        return result\n    }\n\n    if (requestKeys.length) {\n        const result = await fetchViaPost(requestKeys)\n        return result\n    }\n\n    return null\n}\n\n/**\n * Fetches Amplience content items by delivery key (or by content id).\n *\n * @param {Object} params\n * @param {string} [params.siteId] - Prefixes every `keys` entry as `${siteId}/${key}`\n * @param {string} [params.contentId] - Fetch one item by id (wins over keys)\n * @param {string[]} [params.keys] - Site-scoped delivery keys\n * @param {string[]} [params.absoluteKeys] - Delivery keys requested verbatim in the\n *   same call — never site-prefixed (cluster- or globally-scoped items). Must be\n *   reference-stable; an empty list leaves the request and its cache key untouched.\n */\nexport const useFetchAmplienceContent = ({siteId, contentId, keys, absoluteKeys = EMPTY_KEYS}) => {\n    const {dolClient, segment, vse} = useContext(AmplienceContext)\n\n    const stableDolClient = useMemo(() => dolClient, [dolClient])\n\n    const processedKeys = useMemo(() => {\n        if (!keys) return []\n        return segment\n            ? keys.flatMap((item) => {\n                  // Only add segment for keys that are in the personalization keys list\n                  // Check if key exactly matches or ends with a personalization key (e.g., \"category123/top\" ends with \"top\")\n                  const isPersonalizationKey = AMPLIENCE_PERSONALIZATION_KEYS.some(\n                      (p13nKey) => item === p13nKey || item.endsWith(`/${p13nKey}`)\n                  )\n                  return isPersonalizationKey ? [item, `${item}/${segment}`] : [item]\n              })\n            : keys\n    }, [keys, segment])\n\n    const queryFn = () => {\n        return fetchContent(stableDolClient, siteId, contentId, processedKeys, absoluteKeys)\n    }\n\n    // Absolute keys only widen the cache key when there are any, so callers that\n    // pass none keep their exact cache identity.\n    const cacheKeys = useMemo(\n        () => (absoluteKeys.length ? [...processedKeys, ...absoluteKeys] : processedKeys),\n        [processedKeys, absoluteKeys]\n    )\n\n    const queryKey = useMemo(\n        () => ['fetchContent', siteId, contentId, cacheKeys, vse ?? ''],\n        [siteId, contentId, cacheKeys, vse]\n    )\n    const hasContent = !!contentId || !!cacheKeys.length\n\n    const queryResult = useQuery(queryKey, queryFn, {\n        enabled: !!stableDolClient && hasContent,\n        staleTime: 5 * 60 * 1000,\n        cacheTime: 5 * 60 * 1000,\n        refetchOnMount: false,\n        refetchOnWindowFocus: false,\n        initialData: () => queryClient.getQueryData(queryKey),\n        staleWhileRevalidate: true,\n        meta: {\n            displayName: 'useFetchAmplienceContent'\n        }\n    })\n\n    queryResult.enabled = !!stableDolClient && hasContent\n    return queryResult\n}\n","import {useLocation} from 'react-router-dom'\nimport {\n    isNonCategoryRoute,\n    removeLocalePrefix,\n    removeParameters,\n    mapUrlSegment\n} from '../utils/url-helpers'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useVariant} from './use-variant'\nimport {useCustomQuery} from './useCustomQuery'\nimport {useMemo} from 'react'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/**\n * Custom hook that fetches URL mapping information based on the current location,\n * allowing additional parameters and query options to be passed from the outer usage.\n *\n * This hook wraps the SDK's `useUrlMapping` hook, automatically constructing the\n * `urlSegment` from the current location's pathname and search parameters.\n * It removes any locale prefix from the URL and determines whether to enable\n * the query based on whether the current route is a non-category route.\n *\n * @param {Object} [apiOptions] - Additional parameters to pass to the underlying hook.\n * @param {Object} [queryOptions] - Additional query options to pass to the underlying hook.\n *\n * @returns {import('@tanstack/react-query').UseQueryResult<UrlMappingResponse, Error>}\n * An object containing the URL mapping data, loading state, and error state.\n *\n * @see {@link https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-seo?meta=getUrlMapping | Salesforce API Documentation} for more information about the API endpoint.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const useUrlMapping = (apiOptions = {}, queryOptions = {}) => {\n    const disablePlpDoubleLocaleRemoval = useVariant(LD_KEYS.disablePlpDoubleLocaleRemoval, false)\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers + removes deprecated `source`.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n    const location = useLocation()\n    const {locale} = useMultiSite()\n\n    // Construct the URL segment from the current location's pathname and search parameters\n    const urlSegment = `${location.pathname}${location.search}`\n    const urlSegmentWithoutLocalePrefix = mapUrlSegment(\n        removeLocalePrefix(removeParameters(urlSegment))\n    )\n\n    // Determine whether to enable the query\n    const enabled = !isNonCategoryRoute(\n        urlSegmentWithoutLocalePrefix,\n        disablePlpDoubleLocaleRemoval\n    )\n\n    //DOL\n    const {\n        app: {\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n    const apiPath = useMemo(() => `${getCustomApiPaths(proxyPath).URL_MAPPING}`, [proxyPath])\n\n    const requestParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            urlSegment: urlSegmentWithoutLocalePrefix\n        }),\n        [locale?.id, urlSegmentWithoutLocalePrefix, isDolQ3MigrationEnabled]\n    )\n\n    const dolQueryKey = [\n        getCustomApiPaths(proxyPath).URL_MAPPING,\n        urlSegmentWithoutLocalePrefix,\n        locale?.id\n    ]\n\n    const dolResult = useCustomQuery(\n        dolQueryKey,\n        {\n            path: apiPath,\n            queryParams: requestParams,\n            headers: {\n                ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                'x-environment': getConfig()?.app?.targetEnvironment\n            }\n        },\n        {\n            enabled: enabled,\n            meta: {\n                displayName: 'useUrlMapping',\n                ...queryOptions?.meta\n            },\n            ...queryOptions\n        }\n    )\n\n    return dolResult\n}\n","import React, {useState, useEffect, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useFetchAmplienceContent} from 'pandora-shared-app/overrides/app/hooks/use-fetch-content'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport StaticContentBody from './static-content-body'\nimport {getClusterFromSite} from 'pandora-shared-app/overrides/app/utils/getSiteCluster'\n\nconst usePdpStaticContent = ({assetKeys = [], flexGap, innerFlexGap}) => {\n    const [drawerLink, setDrawerLink] = useState('')\n    const [drawerTitle, setDrawerTitle] = useState('')\n    const [drawerBodyContent, setDrawerBodyContent] = useState([])\n    const [allRelatedProducts, setAllRelatedProducts] = useState([])\n    const {locale} = useMultiSite()\n    const clusterName = getClusterFromSite(locale.id)\n    const prefixedAssetKeys = useMemo(() => {\n        const validAssetKeys = assetKeys.filter((key) => !!key)\n        return clusterName\n            ? validAssetKeys.map((key) => `${clusterName.toLowerCase()}-${key}`)\n            : validAssetKeys\n    }, [assetKeys, clusterName])\n\n    const {\n        data: cmsData,\n        error,\n        isLoading\n    } = useFetchAmplienceContent({\n        keys: prefixedAssetKeys\n    })\n    useEffect(() => {\n        if (cmsData?.content || cmsData?.responses) {\n            const contentArray = Array.isArray(cmsData?.responses)\n                ? cmsData.responses.map((item) => item.content)\n                : [cmsData?.content || cmsData]\n\n            const firstContent = contentArray[0]\n            const allContentItems = contentArray.flatMap(\n                (content) => content?.contentBody?.contentBodyItems || []\n            )\n            const allRelated = contentArray.flatMap((content) => content?.products || [])\n\n            setDrawerBodyContent(allContentItems)\n            setAllRelatedProducts(allRelated)\n\n            if (firstContent?.link !== undefined) setDrawerLink(firstContent.link)\n            if (firstContent?.title !== undefined) setDrawerTitle(firstContent.title)\n        }\n    }, [cmsData])\n\n    const Component = () => {\n        if (error) return <Box>Error loading content: {error.message}</Box>\n        return (\n            <StaticContentBody\n                drawerBodyContent={drawerBodyContent}\n                isLoading={isLoading}\n                flexGap={flexGap}\n                innerFlexGap={innerFlexGap}\n            />\n        )\n    }\n\n    return {\n        Component,\n        drawerBodyContent,\n        isLoading,\n        drawerLink,\n        drawerTitle,\n        allRelatedProducts\n    }\n}\n\nusePdpStaticContent.PropTypes = {\n    assetKeys: PropTypes.array,\n    flexGap: PropTypes.number,\n    innerFlexGap: PropTypes.number\n}\n\nexport default usePdpStaticContent\n","import {useCallback} from 'react'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n/**\n * Removes Bloomreach-specific suffixes from product IDs.\n * SFCC adds \"__generated\" suffix for Bloomreach tracking, but this should not appear in dataLayer.\n *\n * @param {string} productId - The product ID potentially containing suffix\n * @param {boolean} shouldClean - Whether to clean the suffix (controlled by feature flag)\n * @returns {string} The cleaned product ID without Bloomreach suffixes\n */\nconst cleanProductId = (productId, shouldClean = true) => {\n    if (!shouldClean || !productId || typeof productId !== 'string') {\n        return productId\n    }\n    // Remove \"__generated\" suffix added by SFCC for Bloomreach\n    return productId.replace(/__generated$/i, '')\n}\n\n/**\n * Extracts product details from a product search item.\n *\n * @param {Object} productSearchItem - The product search item object.\n * @param {boolean} shouldCleanBloomreachSuffix - Whether to clean Bloomreach suffixes (controlled by LD flag)\n * @returns {Object} The extracted product details for tracking.\n */\nexport const extractProductDetails = (productSearchItem, shouldCleanBloomreachSuffix = false) => {\n    // Check if productSearchItem is not null or undefined before proceeding\n    if (!productSearchItem) {\n        return {}\n    }\n\n    const {hitType, productId, representedProduct, productName, c_extend, price, image} =\n        productSearchItem\n\n    const getCustomField = (field) => c_extend?.custom?.[field] || ''\n    const getPromotionIds = () => {\n        const promotions = c_extend?.promotions || []\n        const promotionIds = promotions.map((promotion) => promotion.promotionId).filter(Boolean)\n        return promotionIds.length > 0 ? promotionIds : ''\n    }\n\n    let productIdToUse\n    if (hitType === 'bundle') {\n        productIdToUse = productId\n    } else if (representedProduct.id) {\n        productIdToUse = representedProduct.id\n    } else {\n        productIdToUse = productId\n    }\n\n    // Clean product IDs to remove Bloomreach-specific suffixes before sending to dataLayer\n    const cleanedProductId = cleanProductId(productIdToUse, shouldCleanBloomreachSuffix)\n    const cleanedMasterId = cleanProductId(productId, shouldCleanBloomreachSuffix)\n\n    return {\n        id: cleanedProductId,\n        master_id: cleanedMasterId,\n        name: productName,\n        category: getCustomField('category'),\n        quantity: 1,\n        size: parseInt(getCustomField('size')) || '',\n        price: parseFloat(price),\n        bonus: getCustomField('bonus') || 'No',\n        collection: getCustomField('collection'),\n        metal: getCustomField('metalName'),\n        material: getCustomField('material'),\n        theme: getCustomField('theme'),\n        promotion_id: getPromotionIds(),\n        pricebook_id: getCustomField('pricebook_id'),\n        image_url: image?.disBaseLink,\n        url: c_extend?.productUrl,\n        finding_method: 'plp'\n    }\n}\n\nexport const useWishListAnalytics = () => {\n    const {link} = useTealium()\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n\n    const trackEvents = useCallback(\n        (action, product) => {\n            const wishlistEventData = {\n                estore_event: [\n                    action\n                        ? TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_LISTING_WISHLIST_ADD\n                        : TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_LISTING_WISHLIST_REMOVE\n                ],\n                products: [extractProductDetails(product, shouldCleanBloomreachSuffix)]\n            }\n            link(wishlistEventData)\n        },\n        [link, shouldCleanBloomreachSuffix]\n    )\n    return {trackEvents}\n}\n","import {useCallback} from 'react'\nimport {useShopperCustomersMutation} from 'pandora-shared-app/overrides/app/hooks/use-shopper-customers-mutation'\n\nimport {useCustomerId} from '@salesforce/commerce-sdk-react'\n\nimport {useWishListAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-wishlist-analytics'\nimport {useWishList} from 'pandora-shared-app/overrides/app/contexts/wish-list'\n\nexport const useAddItemToWishlist = () => {\n    const {mutateAsync: createCustomerProductListItem} = useShopperCustomersMutation(\n        'createCustomerProductListItem'\n    )\n\n    const {data: wishlist} = useWishList()\n    const customerId = useCustomerId()\n\n    const {trackEvents: trackWishListEvents} = useWishListAnalytics()\n\n    const addItemToWishlist = useCallback(\n        async (productId, product) => {\n            if (!wishlist?.id) {\n                return Promise.resolve()\n            }\n\n            await createCustomerProductListItem({\n                parameters: {customerId, listId: wishlist.id},\n                body: {\n                    quantity: 1,\n                    public: false,\n                    priority: 1,\n                    type: 'product',\n                    productId\n                }\n            })\n\n            trackWishListEvents(true, product)\n        },\n        [createCustomerProductListItem, wishlist?.id, customerId, trackWishListEvents]\n    )\n\n    return addItemToWishlist\n}\n\nexport const useRemoveItemFromWishlist = () => {\n    const {mutateAsync: deleteCustomerProductListItem} = useShopperCustomersMutation(\n        'deleteCustomerProductListItem'\n    )\n\n    const {data: wishlist} = useWishList()\n    const customerId = useCustomerId()\n\n    const {trackEvents: trackWishListEvents} = useWishListAnalytics()\n\n    const removeItemFromWishlist = useCallback(\n        async (productId, product) => {\n            if (!wishlist?.id) {\n                return Promise.resolve()\n            }\n            const wishlistItem = wishlist.customerProductListItems?.find(\n                (item) => item.productId === productId\n            )\n            if (!wishlistItem) {\n                return Promise.resolve()\n            }\n            await deleteCustomerProductListItem({\n                parameters: {customerId, listId: wishlist.id, itemId: wishlistItem.id},\n                body: {}\n            })\n\n            trackWishListEvents(false, product)\n        },\n        [deleteCustomerProductListItem, wishlist, customerId, trackWishListEvents]\n    )\n\n    return removeItemFromWishlist\n}\n","import {useMemo, useState, useCallback} from 'react'\nimport {\n    useCommerceApi,\n    useAccessToken,\n    useUsid,\n    useEncUserId,\n    useCustomerType\n} from '@salesforce/commerce-sdk-react'\nimport {keysToCamel} from '@salesforce/retail-react-app/app/utils/utils'\nimport logger from '@salesforce/retail-react-app/app/utils/logger-instance'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useDNT} from '@salesforce/commerce-sdk-react'\n\nexport class EinsteinAPI {\n    constructor({host, einsteinId, siteId, isProduction}) {\n        this.siteId = siteId\n        this.isProduction = isProduction\n        this.host = host\n        this.einsteinId = einsteinId\n    }\n\n    /**\n     * Given a POJO append the correct site and environment values\n     *\n     * @param {object} params\n     * @returns {object} The decorated body object.\n     */\n    _buildBody(params) {\n        const instanceType_prd = 'prd'\n        const instanceType_sbx = 'sbx'\n\n        const body = {...params}\n\n        // The first part of the siteId is the realm\n        if (this.siteId) {\n            body.realm = this.siteId.split('-')[0]\n        }\n\n        if (this.isProduction) {\n            body.instanceType = instanceType_prd\n        } else {\n            body.instanceType = instanceType_sbx\n        }\n\n        // This is included in the Einstein request.\n        body.clientUserAgent = navigator.userAgent\n\n        return body\n    }\n\n    /**\n     * Given a product or item source, returns the product data that Einstein requires\n     */\n    _constructEinsteinProduct(product) {\n        if (product.type && (product.type.master || product.type.variant)) {\n            // handle variants for PDP / viewProduct\n            // Assumes product is a Product object from SCAPI Shopper-Products:\n            // https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-products?meta=type%3AProduct\n            // This only works with scapi data and not with DOL format, so added a new check in the else if part below\n            return {\n                id: product.master.masterId,\n                sku: product.id,\n                altId: '',\n                altIdType: ''\n            }\n        } else if (\n            product.productType &&\n            (product.productType.master ||\n                product.productType.variant ||\n                product.productType.set ||\n                product.productType.bundle ||\n                product.productType.variationGroup ||\n                product.productType.item ||\n                product.productType.simple)\n        ) {\n            // handle variants & sets for PLP / viewCategory & viewSearch\n            // Assumes product is a ProductSearchHit from SCAPI Shopper-Search:\n            // https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-search?meta=type%3AProductSearchHit\n            // Due to DOL format PDP is also landing in this block and for PDP we need to pass masterId\n            let productIdforEinstein\n            if (product.master) {\n                productIdforEinstein = product.master.masterId\n            } else {\n                productIdforEinstein = product.productId\n            }\n\n            return {\n                id: productIdforEinstein,\n                sku: product.productId, //TODO: Should we switch this to product.representedProduct.id once we allow non-master products in search results?\n                altId: '',\n                altIdType: ''\n            }\n        } else {\n            // handles non-variants\n            return {\n                id: product.id,\n                sku: '',\n                altId: '',\n                altIdType: ''\n            }\n        }\n    }\n\n    /**\n     * Given a cart item, returns the data that Einstein requires\n     *\n     * Assumes item is a ProductItemfrom SCAPI Shopper-Baskets:\n     * https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-baskets?meta=type%3AProductItem\n     */\n    _constructEinsteinItem(item) {\n        return {\n            id: item.id || item.productId,\n            sku: item.sku || item.productId || item.id || '',\n            price: item.price || 0,\n            quantity: item.quantity\n        }\n    }\n\n    /**\n     * Given a basket, returns the basket data that Einstein requires\n     *\n     * Assumes basket is a Basket from SCAPI Shopper-Baskets:\n     * https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-baskets?meta=type%3ABasket\n     */\n    _constructEinsteinBasket(basket) {\n        return {\n            basketId: basket.basketId || basket.id,\n            items: basket.productItems?.map((item) => this._constructEinsteinItem(item)) || []\n        }\n    }\n\n    /**\n     * Given a cart item, returns the cart item data that Einstein requires\n     *\n     * Assumes item is a ProductItem from SCAPI Shopper-Baskets:\n     * https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-baskets?meta=type%3AProductItem\n     */\n    _constructEinsteinCartItem(item) {\n        return {\n            id: item.id || item.productId,\n            sku: item.sku || item.productId || item.id || '',\n            price: item.price || 0,\n            quantity: item.quantity\n        }\n    }\n\n    async einsteinFetch(endpoint, method, body) {\n        const headers = {\n            'Content-Type': 'application/json',\n            'x-cq-client-id': this.einsteinId\n        }\n\n        if (body) {\n            body = this._buildBody(body)\n        }\n\n        let response\n        try {\n            response = await fetch(`${this.host}/v3${endpoint}`, {\n                method: method,\n                headers: headers,\n                ...(body && {\n                    body: JSON.stringify(body)\n                })\n            })\n        } catch (error) {\n            logger.error('Einstein request failed', {\n                namespace: 'useEinstein.einsteinFetch',\n                additionalProperties: {error: error}\n            })\n            return {}\n        }\n\n        if (!response?.ok) {\n            return {}\n        }\n\n        try {\n            const responseJson = await response.json()\n\n            return keysToCamel(responseJson)\n        } catch (error) {\n            logger.error('Error parsing response JSON', {\n                namespace: 'useEinstein.einsteinFetch',\n                additionalProperties: {error: error}\n            })\n            return {}\n        }\n    }\n\n    /**\n     * Tells the Einstein engine when a user views a product.\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async sendViewProduct(product, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/viewProduct`\n        const method = 'POST'\n        const body = {\n            product: this._constructEinsteinProduct(product),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user views a search result page.\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async sendViewSearch(searchQuery, searchResults, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/viewSearch`\n        const method = 'POST'\n\n        const products = searchResults?.hits?.map((product) =>\n            this._constructEinsteinProduct(product)\n        )\n\n        const body = {\n            searchText: searchQuery,\n            products,\n            showProducts: true, // Needed by Reports and Dashboards to differentiate searches with results vs no results\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user clicks on a search result.\n     **/\n    async sendClickSearch(searchText, product, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/clickSearch`\n        const method = 'POST'\n        const body = {\n            searchText,\n            product: this._constructEinsteinProduct(product),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user views a category page.\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async sendViewCategory(category, searchResults, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/viewCategory`\n        const method = 'POST'\n\n        const products = searchResults?.hits?.map((product) =>\n            this._constructEinsteinProduct(product)\n        )\n\n        const body = {\n            category: {\n                id: category.id\n            },\n            products,\n            showProducts: true, // Needed by Reports and Dashboards to differentiate searches with results vs no results\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user clicks a product from the category page.\n     * Not meant to be used when the user clicks a category from the nav bar.\n     **/\n    async sendClickCategory(category, product, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/clickCategory`\n        const method = 'POST'\n        const body = {\n            category: {\n                id: category.id\n            },\n            product: this._constructEinsteinProduct(product),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user views a set of recommendations\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async sendViewReco(recommenderDetails, products, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/viewReco`\n        const method = 'POST'\n        const {__recoUUID, recommenderName} = recommenderDetails\n        const body = {\n            recommenderName,\n            __recoUUID,\n            products: products,\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user clicks a set of recommendations\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async sendClickReco(recommenderDetails, product, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/clickReco`\n        const method = 'POST'\n        const {__recoUUID, recommenderName} = recommenderDetails\n        const body = {\n            recommenderName,\n            __recoUUID,\n            product: this._constructEinsteinProduct(product),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user views a page.\n     * Use this only for pages where another activity does not fit. (ie. on the PDP, use viewProduct rather than this)\n     **/\n    async sendViewPage(path, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/viewPage`\n        const method = 'POST'\n        const body = {\n            currentLocation: path,\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user begins checkout.\n     **/\n    async sendBeginCheckout(basket, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/beginCheckout`\n        const method = 'POST'\n        const body = {\n            basket: this._constructEinsteinBasket(basket),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user goes through a checkout step.\n     **/\n    async sendCheckoutStep(stepName, stepNumber, basket, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/checkoutStep`\n        const method = 'POST'\n        const body = {\n            stepName,\n            stepNumber,\n            basket: this._constructEinsteinBasket(basket),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Tells the Einstein engine when a user adds items to cart.\n     **/\n    async sendAddToCart(items, args) {\n        // Check DNT before sending tracking data\n        if (this.isDNTEnabled) {\n            return Promise.resolve({})\n        }\n\n        const endpoint = `/activities/${this.siteId}/addToCart`\n        const method = 'POST'\n        const body = {\n            products: items.map(this._constructEinsteinCartItem),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Get a list of recommenders that can be used in recommendation requests.\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async getRecommenders() {\n        const endpoint = `/personalization/recommenders/${this.siteId}`\n        const method = 'GET'\n        const body = null\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Get a set of recommendations\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async getRecommendations(recommenderName, products, args) {\n        const endpoint = `/personalization/recs/${this.siteId}/${recommenderName}`\n        const method = 'POST'\n        const body = {\n            products: products?.map((product) => this._constructEinsteinProduct(product)),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n\n    /**\n     * Get a set of recommendations for a zone\n     * https://developer.salesforce.com/docs/commerce/einstein-api/references#einstein-recommendations:Summary\n     **/\n    async getZoneRecommendations(zoneName, products, args) {\n        const endpoint = `/personalization/${this.siteId}/zones/${zoneName}/recs`\n        const method = 'POST'\n\n        const body = {\n            products: products?.map((product) => this._constructEinsteinProduct(product)),\n            ...args\n        }\n\n        return this.einsteinFetch(endpoint, method, body)\n    }\n}\n\nconst useEinstein = () => {\n    const api = useCommerceApi()\n    const {getTokenWhenReady} = useAccessToken()\n    const {\n        site: {einsteinAPI: config}\n    } = useMultiSite()\n    const {host, einsteinId, siteId, isProduction} = config\n\n    const {getUsidWhenReady} = useUsid()\n    const {getEncUserIdWhenReady} = useEncUserId()\n    const {isRegistered} = useCustomerType()\n\n    // Add DNT hook to check for consent\n    const {effectiveDnt} = useDNT()\n\n    const einstein = useMemo(() => {\n        const einsteinInstance = new EinsteinAPI({\n            host,\n            einsteinId,\n            siteId,\n            isProduction\n        })\n        // Pass DNT state to Einstein API\n        einsteinInstance.isDNTEnabled = effectiveDnt\n        return einsteinInstance\n    }, [host, einsteinId, siteId, isProduction, effectiveDnt])\n    const [isLoading, setIsLoading] = useState(false)\n    const [recommendations, setRecommendations] = useState([])\n\n    const fetchRecProductDetails = useCallback(\n        async (reco) => {\n            const ids = reco.recs?.map((rec) => rec.id)\n            if (ids?.length > 0) {\n                try {\n                    const token = await getTokenWhenReady()\n                    // Fetch the product details for the recommendations\n                    const products = await api.shopperProducts.getProducts({\n                        parameters: {\n                            ids: ids.join(','),\n                            allImages: true,\n                            perPricebook: true,\n                            expand: [\n                                'availability',\n                                'links',\n                                'promotions',\n                                'options',\n                                'images',\n                                'prices',\n                                'variations'\n                            ]\n                        },\n                        headers: {\n                            Authorization: `Bearer ${token}`\n                        }\n                    })\n                    // Einstein is not aware of items that becomes unavailable from BM\n                    // we want to make sure to filter out any recs that is not available\n                    // before merging getProducts data in\n                    const recs = reco.recs\n                        .filter((rec) => {\n                            return !!products?.data?.find((product) => product.id === rec.id)\n                        })\n                        .map((rec) => {\n                            const product = products?.data?.find((product) => product.id === rec.id)\n                            return {\n                                ...rec,\n                                ...product,\n                                productId: rec.id,\n                                image: {disBaseLink: rec.imageUrl, alt: rec.productName}\n                            }\n                        })\n\n                    // Merge the product detail into the recommendations response\n                    return {\n                        ...reco,\n                        recs: recs\n                    }\n                } catch (error) {\n                    logger.error('Error fetching product details for recommendations', {\n                        namespace: 'useEinstein.fetchRecProductDetails',\n                        additionalProperties: {error: error}\n                    })\n                }\n            }\n            return reco\n            // getTokenWhenReady is a functionally-stable SDK getter (closes over the\n            // auth context, takes no reactive input); intentionally omitted so this\n            // callback keeps a stable identity across renders.\n        },\n        [api]\n    )\n\n    const getEventUserParameters = useCallback(async () => {\n        return {\n            cookieId: await getUsidWhenReady(),\n            userId: isRegistered ? await getEncUserIdWhenReady() : undefined\n        }\n        // getUsidWhenReady / getEncUserIdWhenReady are functionally-stable SDK\n        // getters; only isRegistered is reactive.\n    }, [isRegistered])\n\n    /**\n     * Checks if tracking is disabled based on DNT state\n     * @returns {boolean} True if tracking is disabled, false otherwise\n     */\n    const isTrackingDisabled = useCallback(() => {\n        // Consider tracking disabled when DNT is true or undefined (indeterminate state)\n        return effectiveDnt === true || effectiveDnt === undefined\n    }, [effectiveDnt])\n\n    // Memoize each returned value INDIVIDUALLY (not one useMemo over the whole\n    // object). The click/view trackers close over only `einstein`,\n    // `isTrackingDisabled` and `getEventUserParameters` — all stable — so they\n    // never churn, even when recommendation state (isLoading/recommendations) or\n    // `api` changes (`api` is a dep of fetchRecProductDetails, used ONLY by the\n    // getRecommendations* methods). This lets a ProductTile parent build a stable\n    // click handler by depending on `einstein.sendClickSearch`/`sendClickCategory`\n    // alone, instead of the whole object. (FIND-6633)\n    const sendViewProduct = useCallback(\n        async (...args) => {\n            if (isTrackingDisabled()) {\n                return Promise.resolve({})\n            }\n            const userParameters = await getEventUserParameters()\n            return einstein.sendViewProduct(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendViewSearch = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendViewSearch(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendClickSearch = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendClickSearch(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendViewCategory = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendViewCategory(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendClickCategory = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendClickCategory(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendViewPage = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendViewPage(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendBeginCheckout = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendBeginCheckout(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendCheckoutStep = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendCheckoutStep(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendViewReco = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendViewReco(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendClickReco = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendClickReco(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const sendAddToCart = useCallback(\n        async (...args) => {\n            const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n            return einstein.sendAddToCart(...args.concat(userParameters))\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters]\n    )\n\n    const getRecommenders = useCallback(\n        async (...args) => {\n            return einstein.getRecommenders(...args)\n        },\n        [einstein]\n    )\n\n    const getRecommendations = useCallback(\n        async (recommenderName, products, renderRefactoredRecommendation, ...args) => {\n            setIsLoading(true)\n            try {\n                const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n                const reco = await einstein.getRecommendations(\n                    recommenderName,\n                    products,\n                    ...args.concat(userParameters)\n                )\n                reco.recommenderName = recommenderName\n                if (renderRefactoredRecommendation) {\n                    setRecommendations(reco)\n                } else {\n                    const recommendations = await fetchRecProductDetails(reco)\n                    setRecommendations(recommendations)\n                }\n            } catch (err) {\n                logger.error('Error in getRecommendations', {\n                    namespace: 'useEinstein.getRecommendations',\n                    additionalProperties: {error: err}\n                })\n            } finally {\n                setIsLoading(false)\n            }\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters, fetchRecProductDetails]\n    )\n\n    const getZoneRecommendations = useCallback(\n        async (zoneName, products, ...args) => {\n            setIsLoading(true)\n            try {\n                const userParameters = isTrackingDisabled() ? {} : await getEventUserParameters()\n                const reco = await einstein.getZoneRecommendations(\n                    zoneName,\n                    products,\n                    ...args.concat(userParameters)\n                )\n                const recommendations = await fetchRecProductDetails(reco)\n                setRecommendations(recommendations)\n            } catch (err) {\n                logger.error('Error in getZoneRecommendations', {\n                    namespace: 'useEinstein.getRecommendations',\n                    additionalProperties: {error: err}\n                })\n            } finally {\n                setIsLoading(false)\n            }\n        },\n        [einstein, isTrackingDisabled, getEventUserParameters, fetchRecProductDetails]\n    )\n\n    // Compose from the individually-memoized values. Each member is stable, so\n    // this object only changes identity when isLoading/recommendations (or `api`,\n    // via the getRecommendations* methods) change — and consumers depending on a\n    // single method never churn regardless of the object's identity.\n    return {\n        isLoading,\n        recommendations,\n        sendViewProduct,\n        sendViewSearch,\n        sendClickSearch,\n        sendViewCategory,\n        sendClickCategory,\n        sendViewPage,\n        sendBeginCheckout,\n        sendCheckoutStep,\n        sendViewReco,\n        sendClickReco,\n        sendAddToCart,\n        getRecommenders,\n        getRecommendations,\n        getZoneRecommendations\n    }\n}\n\nexport default useEinstein\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-up\",\n  \"use\": \"chevron-up-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-up\\\">\\n<path d=\\\"M11.2801 8.22C11.4206 8.07931 11.6113 8.00018 11.8101 8H12.1901C12.3885 8.0023 12.5784 8.08112 12.7201 8.22L17.8501 13.36C17.9448 13.4539 17.998 13.5817 17.998 13.715C17.998 13.8483 17.9448 13.9761 17.8501 14.07L17.1401 14.78C17.0479 14.8741 16.9218 14.9271 16.7901 14.9271C16.6584 14.9271 16.5323 14.8741 16.4401 14.78L12.0001 10.33L7.5601 14.78C7.46621 14.8747 7.33842 14.9279 7.2051 14.9279C7.07178 14.9279 6.94398 14.8747 6.8501 14.78L6.1501 14.07C6.05544 13.9761 6.0022 13.8483 6.0022 13.715C6.0022 13.5817 6.05544 13.4539 6.1501 13.36L11.2801 8.22Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"file\",\n  \"use\": \"file-usage\",\n  \"viewBox\": \"0 0 25 30\",\n  \"content\": \"<symbol viewBox=\\\"0 0 25 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"file\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.5 0L21.5 0C23.1569 0 24.5 1.34315 24.5 3L24.5 19.14C24.4989 20.3331 24.0242 21.4769 23.18 22.32L16.82 28.68C15.9769 29.5242 14.8331 29.9989 13.64 30H3.5C1.84315 30 0.5 28.6569 0.5 27L0.5 3C0.5 1.34315 1.84315 0 3.5 0ZM21.5 3L3.5 3L3.5 27H12.5L12.5 19.5C12.5 18.6716 13.1716 18 14 18L21.5 18L21.5 3Z\\\" fill=\\\"#5C5C5C\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"lock\",\n  \"use\": \"lock-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"lock\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12 2C8.68629 2 6 4.68629 6 8V10C4.89543 10 4 10.8954 4 12V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V12C20 10.8954 19.1046 10 18 10V8C18 4.68629 15.3137 2 12 2ZM18 12V20H6V12H18ZM8 8V10H16V8C16 5.79086 14.2091 4 12 4C9.79086 4 8 5.79086 8 8Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hamburger\",\n  \"use\": \"hamburger-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"hamburger\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0 3.6C0 3.54477 0.0447714 3.5 0.0999999 3.5H19.9C19.9552 3.5 20 3.54477 20 3.6V4.4C20 4.45523 19.9552 4.5 19.9 4.5H0.1C0.0447715 4.5 0 4.45523 0 4.4V3.6ZM0 9.6C0 9.54477 0.0447714 9.5 0.0999999 9.5H19.9C19.9552 9.5 20 9.54477 20 9.6V10.4C20 10.4552 19.9552 10.5 19.9 10.5H0.1C0.0447715 10.5 0 10.4552 0 10.4V9.6ZM20 15.6C20 15.5448 19.9552 15.5 19.9 15.5H0.1C0.0447715 15.5 0 15.5448 0 15.6V16.4C0 16.4552 0.0447714 16.5 0.0999999 16.5H19.9C19.9552 16.5 20 16.4552 20 16.4V15.6Z\\\" fill=\\\"#27251F\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * @file ld-keys.js\n *\n * This file exports preference keys to be used across the application.\n * `LD_KEYS` - It represents a key used for identifying a specific launch darkly flag ID.\n *\n * These naming conventions help in understanding the role and usage of each export at a glance:\n * - `LD_KEYS` is a constant value that should not change, hence the UPPER_SNAKE_CASE.\n *\n * @exports LD_KEYS - Constant query key for feature flag ID.\n */\nexport const LD_KEYS = {\n    enablePdpHydrationCleanup: 'enable-pdp-hydration-cleanup',\n    enablePdpDeliverModuleLayoutShift: 'enable-pdp-deliver-module-layout-shift',\n    enablePdpAggregateRatings: 'enable-pdp-aggregate-ratings',\n    enablePdpPudoShippingEstimates: 'enable-pdp-pudo-shipping-estimates',\n    enableGiftCardTabLinks: 'enable-gift-card-links',\n    enablePdpBloomreachPixel: 'enable-pdp-bloomreach-pixel',\n    enablePdpBloomreachEngageIdentifier: 'enable-pdp-bloomreach-engage-id',\n    enableProductImagePreload: 'enable-product-image-preload',\n    selectPdpRecommenderCompleteTheLook: 'select-pdp-recommender-complete-the-look',\n    selectPdpRecommenderSimilarProducts: 'select-pdp-recommender-similar-products',\n    selectPdpRecommenderRecentlyViewed: 'select-pdp-recommender-recently-viewed',\n    enablePdpDeliverySection: 'enable-pdp-delivery-section',\n    enableLowStockMessage: 'enable-low-stock-message',\n    enablePdpCaratWeightInfoLink: 'enable-pdp-carat-weight-info-link',\n    enablePdpEngravingAssurance: 'enable-pdp-engraving-assurance',\n    enablePdpEngravingModal: 'enable-pdp-engraving-modal',\n    enableRatingAndReviews: 'enable-rating-and-reviews',\n    enableDiamondPDPAssurance: 'enable-diamond-pdp-assurance',\n    enablePdpBundlePriceSum: 'enable-bundle-price-sum',\n    enablePdpOnlineDeliveryOptions: 'enable-pdp-online-delivery-options',\n    enablePriceForAddToBagButton: 'enable-price-for-add-to-bag-button',\n    enableSkeletonAfterClickingOnRecZoneForSpa:\n        'enable-skeleton-after-clicking-on-rec-zone-for-spa',\n    enableLoyaltyPdp: 'enable-loyalty-pdp',\n    enableAssurances: 'enable-assurances-prerequisite',\n    enableBraceletEditorPDP: 'enable-bracelet-editor-pdp',\n    enableEngraving: 'enable-engraving',\n    enablePdpGiftCardTabs: 'enable-pdp-gift-card-tabs',\n    enablePdpAddToBag: 'enable-add-to-bag',\n    enableRemovingGalleryAndCarouselImageDuplications:\n        'enable-removing-gallery-and-carousel-image-duplications',\n    enablePdpSizeGuide: 'enable-pdp-size-guide',\n    enablePdpSetBundleSizeGuide: 'enable-pdp-set-bundle-size-guide',\n    enablePdpDropAHintWhatsappShare: 'enable-pdp-drop-hint-whatsapp',\n    enablePdpDropAHintInstagramShare: 'enable-pdp-drop-hint-instagram',\n    enablePdpDropAHintSmsShare: 'enable-pdp-drop-hint-sms',\n    enablePdpGiftPackagingAssurance: 'enable-pdp-gift-packaging-assurance',\n    enablePdpWarrantyAssurance: 'enable-warranty-assurance',\n    enablePdpReturnAssurance: 'enable-returns-assurance',\n    enablePdpShippingAssurance: 'enable-shipping-promo-assurance',\n    enablePdpDropAHintAssurance: 'enable-pdp-drop-hint-assurance',\n    enablePdpAddToWishlist: 'enable-pdp-add-to-wishlist',\n    enablePdpPagePerformance: 'enable-pdp-page-performance',\n    enablePdpAmplienceVideo: 'enable-pdp-amplience-video',\n    enablePdpDesktopLightboxView: 'enable-pdp-desktop-lightbox-view',\n    enableBnplAssurance: 'enable-bnpl-assurance',\n    enableBnplStaticAssurance: 'enable-bnpl-static-assurance',\n    enablePdpDropAHintMessageValidation: 'enable-pdp-drop-a-hint-message-validation',\n    enablePdpBloomreachPixelEnhanced: 'enable-pdp-bloomreach-pixel-enhanced',\n    enableSetProductPriceCalculation: 'enable-set-product-price-calculation',\n    enableHiddingReviewsWithThreshold: 'enable-hidding-reviews-with-threshold',\n    enablePdpRingSizer: 'enable-pdp-ring-sizer',\n    enablePdpRingSizerQRCode: 'enable-pdp-ring-sizer-qr-code',\n    enablePdpRingSizerTrackingFix: 'enable-pdp-ring-sizer-tracking-fix',\n    enablePdpRingSizerUiEnhancements: 'enable-pdp-ring-sizer-ui-enhancements',\n    enablePdpRingSizerQrCodeTracking: 'enable-pdp-ring-sizer-qr-code-tracking',\n    enablePDPGiftCardCurrencyValues: 'enable-pdp-gift-card-currency-values',\n    enableOptimisticNavigation: 'enable-optimistic-navigation',\n    enableRestrictedCampaignPDPRedirect: 'enable-restricted-campaign-pdp-redirect',\n    enablePdpDirectAtbFromSizeSelector: 'enable-pdp-direct-atb-from-size-selector',\n    enablePdpStickyCncStoreCheck: 'enable-pdp-sticky-cnc-store-check',\n    enableProductFindingMethodTracking: 'enable-product-finding-method-tracking',\n    enableLoadingBraceletEditorOnlyWhenEligible:\n        'enable-loading-bracelet-editor-only-when-eligible',\n\n    enableBraceletEditor: 'enable-bracelet-editor',\n    enableBraceletEditorPLP: 'enable-bracelet-editor-plp',\n    enablePdpSpaNavigation: 'enable-pdp-spa-navigation',\n    enablePdpRecommendationsAddToWishlist: 'enable-pdp-recommendations-add-to-wishlist',\n    enableGlobalExcludeSetsFromWishlist: 'enable-global-exclude-sets-from-wishlist',\n    enableEUPricing: 'enable-eu-pricing',\n    enablePdpNotifyMe: 'enable-pdp-notify-me',\n    enableBuyBox: 'enable-pdp-buy-box',\n    enableNewCnCTrigger: 'enable-new-cnc-trigger',\n    enableNewDolContract: 'enable-new-dol-contract',\n    enableGlobalRecommendationsTracking: 'enable-global-recommendations-tracking',\n    enablePdpEstimatedDeliveryCallout: 'enable-pdp-estimated-delivery-callout',\n    enableSkeletonWhileProductLoading: 'enable-skeleton-while-product-is-loading',\n    enableNewEarlyAccessJourney: 'enable-new-early-access-journey',\n    enablePdpNewEarlyAccessTracking: 'enable-pdp-new-early-access-tracking',\n    enablePdpHideBrokenVideoOnMainImages: 'enable-pdp-hide-broken-video-on-main-images',\n    enableGlobalVideoSsrPosterFrame: 'enable-global-video-ssr-poster-frame',\n    enablePlpPdpImageSync: 'enable-plp-pdp-image-sync',\n    enableLoDMessageEnhancement: 'enable-lod-message-enhancement',\n    enablePdpCombinedVariantSelectorView: 'enable-pdp-combined-variant-selector-view',\n    enableAddToBagLoadingStateImprovements: 'enable-add-to-bag-loading-state-improvments',\n    enablePdpNotifyMeCorrectProductData: 'enable-pdp-notify-me-correct-product-data',\n    enableBraceletEditorMfeRegistry: 'enable-bracelet-editor-mfe-registry',\n    enableEngravingEditorMfeRegistry: 'enable-engraving-editor-mfe-registry',\n    enablePartOfSetAtbTracking: 'enable-part-of-set-atb-tracking',\n    enablePdpPartOfSet: 'enable-pdp-part-of-set',\n    partOfSetRecommendationSource: 'part-of-set-recommendation-source',\n    enablePdpCnCProductSets: 'enable-pdp-cnc-product-sets',\n    enablePdpSafeAreaInsets: 'enable-pdp-safari-iphone-safe-area-insets',\n    enablePdpSthLodMessaging: 'enable-pdp-sth-lod-messaging',\n    enablePdpCncLodMessaging: 'enable-pdp-cnc-lod-messaging',\n    enablePromiseEngineUtagTracking: 'enable-promise-engine-utag-tracking',\n    enablePdpGracefulCsrErrorHandling: 'enable-pdp-graceful-csr-error-handling',\n    enablePdpCsrProductQueryRefetch: 'enable-pdp-csr-product-query-refetch',\n    enablePdpHeroImageStability: 'enable-pdp-hero-image-stability',\n    enablePdpGalleryImageStability: 'enable-pdp-gallery-image-stability',\n    enablePdpCncExcludeFindInStore: 'enable-pdp-cnc-exclude-find-in-store',\n    enablePdpSizeSelectorTracking: 'enable-pdp-size-selector-tracking',\n    enablePdpPriceSegmentCache: 'enable-pdp-price-segment-cache',\n    enablePdpLazyCarouselImages: 'enable-pdp-lazy-carousel-images',\n    enablePdpCncForDiscontinued: 'enable-pdp-cnc-for-discontinued',\n    enablePdpBrowserTranslationProtection: 'enable-pdp-browser-translation-protection',\n    enablePdpUrlMappingRedirect: 'enable-pdp-url-mapping-redirect',\n    enablePdpSelectiveHydration: 'enable-pdp-selective-hydration',\n    pdpRecommendationEngine: 'pdp-recommendation-engine',\n    enablePdpDetailsDrawer: 'enable-pdp-details-drawer',\n    enablePdpViewDetailsChevron: 'enable-pdp-view-details-chevron',\n    enablePdpYotpoConsent: 'enable-pdp-yotpo-consent',\n    enablePdpCncCartStoreRestore: 'enable-pdp-cnc-cart-store-restore',\n    enablePdpSizeSelectorPricing: 'enable-pdp-size-selector-pricing',\n    enablePdpContent: 'enable-pdp-content',\n    enablePdpCarbonFootprint: 'enable-pdp-carbon-footprint',\n    enablePdpCarouselIndicatorEnhancement: 'enable-pdp-carousel-indicator-enhancement',\n    enableDecidePdpImageCarouselImprovedSwipe: 'enable-decide-pdp-image-carousel-improved-swipe',\n    enableDecidePdpCarouselFixHorizontalOverflow:\n        'enable-decide-pdp-carousel-fix-horizontal-overflow',\n    enableDecidePdpImageCarouselSwipeAnimation: 'enable-decide-pdp-image-carousel-swipe-animation',\n    enablePdpAtbProcessingFeedback: 'enable-pdp-atb-processing-feedback',\n    enablePdpManufacturerInformation: 'enable-pdp-manufacturer-information',\n    selectPdpRecommenderZoneCompleteTheLook: 'select-pdp-recommender-zone-complete-the-look',\n    selectPdpRecommenderZoneSimilarProducts: 'select-pdp-recommender-zone-similar-products',\n    selectPdpRecommenderZoneRecentlyViewed: 'select-pdp-recommender-zone-recently-viewed',\n    enablePdpZoneRecommendations: 'enable-pdp-zone-recommendations',\n    enablePdpPricingAndMemberDisplay: 'enable-pdp-pricing-and-member-display',\n    enablePdpMemberPricingAnalytics: 'enable-pdp-member-pricing-analytics',\n    enablePdpCncLoqateStoreSearch: 'enable-pdp-cnc-loqate-store-search',\n    enablePdpProductSchema: 'enable-pdp-product-schema',\n    enablePdpSthDeliveryLevels: 'enable-pdp-sth-delivery-levels',\n    enableDrawerPlacementFix: 'enable-drawer-placement-fix',\n    enableDrawerOpenDirectionFix: 'enable-drawer-open-direction-fix',\n    enablePdpRelocateViewDetails: 'enable-pdp-relocate-view-details',\n    enablePdpScrollToReviewsFix: 'enable-pdp-scroll-to-reviews-fix',\n    enableContentCommercePreviewToolbar: 'enable-content-commerce-preview-toolbar',\n    enablePdpSchemaDisambiguatingFields: 'enable-pdp-schema-disambiguating-fields',\n    enablePdpHideCarbonFootprintInfo: 'enable-pdp-hide-carbon-footprint-info',\n    enablePdpSchemaJewelleryAttributes: 'enable-pdp-schema-jewellery-attributes',\n    enablePdpRegionalSizeDerivedState: 'enable-pdp-regional-size-derived-state',\n    enablePdpEngravingCrossProductFix: 'enable-pdp-engraving-cross-product-fix',\n    enablePdpFlexibleSetVariantSelector: 'enable-pdp-flexible-set-variant-selector',\n    enablePdpCombinedVariantThreeLetterLabel: 'enable-pdp-combined-variant-three-letter-label',\n    enableLocalizedCurrencyLabel: 'enable-global-localize-product-price', // CA price display shows \"C$\" (default, range, add-to-bag, size-option, gift-card, part-of-set) — FIND-5112\n    enableStylingStudioAtbProductData: 'enable-styling-studio-atb-product-data',\n    enablePdpFlexibleSetAnalytics: 'enable-pdp-flexible-set-analytics'\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"engraving\",\n  \"use\": \"engraving-usage\",\n  \"viewBox\": \"0 0 21 21\",\n  \"content\": \"<symbol viewBox=\\\"0 0 21 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"engraving\\\">\\n<path d=\\\"M18.3588 4.77442L16.6358 3.05144L17.3429 2.34433L19.0659 4.06731C19.8266 4.82799 19.8493 6.05411 19.1173 6.84243L7.42871 19.4301L1.42871 20.9301L0.428711 19.9301L2.42871 14.4301L10.3185 6.54038L11.0256 7.24748L3.29269 14.9804L1.58615 19.6733L1.73546 19.8227L6.89803 18.532L18.3845 6.16198C18.7505 5.76782 18.7391 5.15476 18.3588 4.77442Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M12.7804 5.4926L12.7824 5.49068L15.0752 7.78352L15.7823 7.07642L13.4895 4.78358L15.2216 3.05144C15.6121 2.66091 16.2453 2.66092 16.6358 3.05144L17.3429 2.34433C16.5619 1.56328 15.2955 1.56328 14.5145 2.34433L12.0733 4.78549L12.7804 5.4926Z\\\" fill=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pixar_white\",\n  \"use\": \"pixar_white-usage\",\n  \"viewBox\": \"0 0 62.4 13.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 62.4 13.1\\\" id=\\\"pixar_white\\\"><path d=\\\"M4.5 11.4c.7.1 1.4.1 2.1.2l.2.8c-1.2-.1-2.3-.1-3.5-.1-1.1 0-2.2 0-3.3.1l.2-.8c.6-.1 1.2-.1 1.7-.2C2 10.4 2 7.2 2 5.8V5.1C2 4.6 2 2 1.9 1.2 1.3 1.1.7 1.1.1 1L0 .2h4.1c1.8 0 3.4.1 4.3.5C10 1.4 10.2 2.5 10.2 3c0 2.9-2.9 4.2-5.3 4.6L5 6.7c1.5-.4 2.6-1.2 2.6-3.1 0-.9-.5-1.7-1.2-2C6 1.4 5.2 1.3 4.6 1.3c-.1.8-.1 2.8-.1 4V6C4.4 7.1 4.4 10.5 4.5 11.4L4.5 11.4zM16.4 11.4c.6.1 1.2.2 1.7.2l.2.9c-1.2-.1-2.4-.1-3.6-.1-1 0-1.9 0-2.9.1l.2-.9c.6 0 1.2-.1 1.7-.2.1-.9.1-3.7.1-5.2v-1c0-.5 0-3.2-.1-4C13.1 1.1 12.6 1 12 1l-.2-.9c1.2.1 2.5.1 3.6.1.9 0 1.9 0 2.9-.1L18.1 1c-.6.1-1.2.2-1.7.2 0 .6-.1 2.3-.1 4.1v1C16.4 8.3 16.4 10.7 16.4 11.4L16.4 11.4zM28.5 9.6c-.9-1-1.7-2-2.1-2.5-.6.8-2 3.1-2.7 4.3.4.1.8.1 1.2.2l.1.8h-.3c-.3 0-1.7-.1-2.6-.1-.7 0-1.4 0-2.2.1l.3-.8c.4-.1.8-.1 1.1-.2.7-.5 3.6-4.3 4.3-5.2-.6-.7-1.4-1.8-2.1-2.7-.8-1-1.5-1.9-1.8-2.3C21.3 1.1 20.9 1 20.5 1l-.1-.9c.9.2 1.9.1 2.8.1 1 0 2.1 0 3.1-.1l-.2.8c-.4 0-.8.1-1.2.2.5.7 1.7 2.5 2.2 3.2.6-.8 1.7-2.4 2.2-3.3L29 .9c-.2 0-.5-.1-.7-.1L28.1 0c.9.1 1.7.1 2.6.1.7 0 1.3 0 2-.1l-.1.8c-.4.1-.8.2-1.2.3l-.1.1c-.6.5-1.1 1.2-1.6 1.8-.8.9-1.6 1.8-1.9 2.2 1.8 2.5 3.6 5.1 5.5 7.6L32 13.1C30.7 12.2 29.5 10.8 28.5 9.6L28.5 9.6zM43.7 11.4c-.5-1.5-1-3-1.6-4.5-.7 0-2.8.1-3.5.2-.2.6-.9 3-1.1 4.3.4.1.9.1 1.4.2l.2.8c-1-.1-2-.1-3-.1-.7 0-1.5 0-2.2.1l.1-.9c.5 0 1-.1 1.5-.2.7-1.3 3.4-8.7 4-10.3-.4-.1-.8-.1-1.2-.2V0c.9.1 1.7.1 2.6.1 1.1 0 2.2 0 3.3-.1l-.1.8c-.4 0-.8.1-1.2.2.3 1 1.1 3.3 1.7 4.8.5 1.3 1.4 3.9 2.2 5.4.5.1 1 .2 1.5.2l.1.9c-1-.2-2.2-.1-3.2-.1s-2.1 0-3.1.1l.2-.9C42.7 11.6 43.2 11.5 43.7 11.4L43.7 11.4zM40.4 2c-.5 1.3-1.2 3.2-1.4 4l2.8.1C41.5 4.9 40.8 3.1 40.4 2L40.4 2zM51.3 1.2c-.6-.1-1.2-.1-1.8-.2l-.1-.8h4c1.6 0 3.8 0 4.9.5 1 .4 1.6 1.1 1.6 2.1 0 1.1-1.2 2.5-2.4 3.2 1.2 2 3.4 5.1 4.9 6.7L61 12.9c-1.2-.6-4.9-4.7-5.9-6-.5 0-.9.1-1.2.1v.2c0 1 0 3.3.1 4.2.6.1 1.1.2 1.7.2l.2.9c-1-.1-2.1-.1-3.2-.1s-2.2 0-3.3.1l.2-.9c.6 0 1.2-.1 1.7-.2.1-.8.1-3.7.1-5.3v-1C51.3 4.5 51.3 1.9 51.3 1.2L51.3 1.2zM55.5 5.7c.7-.3 1.7-1 1.7-2.5 0-.8-.7-2-3.4-2.1 0 1-.1 3.5-.1 4.6V6C54.4 6 55 5.9 55.5 5.7L55.5 5.7z\\\" style=\\\"fill:#FFFFFF\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useEffect, useState} from 'react'\n\n/**\n * Encapsulates the \"View Bag\" button loading behaviour shared by the mini-cart\n * and the add-to-cart confirmation sheet.\n *\n * When `enabled`, clicking shows a spinner and defers navigation by `delay`ms so\n * the loader is visible; otherwise navigation happens immediately. The loading\n * state is reset on `popstate`/BFCache `pageshow` so the spinner doesn't persist\n * when the user navigates back to the page.\n *\n * @param {Object} params\n * @param {boolean} params.enabled - whether the deferred spinner behaviour is active\n * @param {Function} params.onViewCart - navigation callback to the cart\n * @param {number} [params.delay=1000] - ms to keep the spinner before navigating\n * @returns {{isViewBagLoading: boolean, handleViewBagClick: Function}}\n */\nexport const useViewBagLoader = ({enabled, onViewCart, delay = 1000}) => {\n    const [isViewBagLoading, setIsViewBagLoading] = useState(false)\n\n    useEffect(() => {\n        const resetLoading = () => setIsViewBagLoading(false)\n        const handlePageShow = (event) => {\n            if (event.persisted) resetLoading()\n        }\n\n        window.addEventListener('popstate', resetLoading)\n        window.addEventListener('pageshow', handlePageShow)\n\n        return () => {\n            window.removeEventListener('popstate', resetLoading)\n            window.removeEventListener('pageshow', handlePageShow)\n        }\n    }, [])\n\n    const handleViewBagClick = () => {\n        if (enabled) {\n            setIsViewBagLoading(true)\n\n            setTimeout(() => {\n                onViewCart()\n            }, delay)\n        } else {\n            onViewCart()\n        }\n    }\n\n    return {isViewBagLoading, handleViewBagClick}\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cc-cvv\",\n  \"use\": \"cc-cvv-usage\",\n  \"viewBox\": \"0 0 41 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 41 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cc-cvv\\\">\\n<rect x=\\\"0.0449219\\\" width=\\\"40\\\" height=\\\"24\\\" rx=\\\"2\\\" fill=\\\"#EEEEEE\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.0449219 7.60005H40.0449V2.80005H0.0449219V7.60005Z\\\" fill=\\\"#747474\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2.9248 16.3999H23.7648V12.3999H2.9248V16.3999Z\\\" fill=\\\"#78909C\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.7646 13.0401L27.5246 12.8401H27.8846V15.3201H27.3246V13.4001L26.8446 13.5201L26.7646 13.0401Z\\\" fill=\\\"#181818\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M32.0045 13.3199H31.0445V12.8399H32.7645V13.2399L32.1245 13.8399C32.5777 13.9199 32.8045 14.1467 32.8045 14.5199C32.8177 14.7455 32.7297 14.9655 32.5645 15.1199C32.3877 15.2759 32.1601 15.3611 31.9245 15.3599C31.5409 15.3759 31.1717 15.2135 30.9245 14.9199L31.2845 14.5599C31.4377 14.7315 31.6545 14.8327 31.8845 14.8399L32.1245 14.7599C32.2473 14.6327 32.2441 14.4303 32.1169 14.3075C32.1069 14.2975 32.0961 14.2883 32.0845 14.2799L31.7245 14.1999H31.5245L31.4445 13.8399L32.0045 13.3199ZM29.5245 13.3199L29.2845 13.3999L29.0445 13.6399L28.6445 13.3199C28.7493 13.1607 28.8853 13.0247 29.0445 12.9199C29.2045 12.8355 29.3837 12.7939 29.5645 12.7999C29.7953 12.7835 30.0241 12.8551 30.2045 12.9999C30.3633 13.1419 30.4513 13.3471 30.4445 13.5599C30.4445 13.7331 30.3885 13.9015 30.2845 14.0399C30.1333 14.2227 29.9585 14.3839 29.7645 14.5199L29.3645 14.8399H30.4445V15.3199H28.6045V14.8799L29.4445 14.1999L29.7645 13.8799C29.8221 13.7983 29.8505 13.6995 29.8445 13.5999C29.8521 13.5123 29.8229 13.4255 29.7645 13.3599L29.5245 13.3199Z\\\" fill=\\\"#181818\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.4045 16.4H34.3645V12H25.4045V16.4ZM24.5645 17.2H35.2045V11.2H24.5645V17.2Z\\\" fill=\\\"#FF5252\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const SAME_AS = [\n    'https://www.wikidata.org/wiki/Q2241604',\n    'https://en.wikipedia.org/wiki/Pandora_(jewelry)',\n    'https://www.instagram.com/theofficialpandora/',\n    'https://www.facebook.com/pandorajewelry',\n    'https://www.youtube.com/@TheOfficialPandora',\n    'https://www.pinterest.com/officialpandora/',\n    'https://x.com/PANDORA_Corp'\n]\n\nexport const buildOrganizationSchema = (appOrigin, logoUrl) => {\n    if (!appOrigin) return null\n\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'Organization',\n        '@id': `${appOrigin}/#organization`,\n        name: 'Pandora',\n        url: appOrigin,\n        logo: {'@type': 'ImageObject', url: logoUrl},\n        sameAs: SAME_AS,\n        parentOrganization: {\n            '@type': 'Organization',\n            '@id': 'https://www.pandora.net/#organization',\n            name: 'Pandora A/S',\n            url: 'https://www.pandora.net'\n        }\n    }\n}\n","import {useCallback, useMemo} from 'react'\n\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nimport {useCustomQuery} from './useCustomQuery'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getInventoryMap} from './helpers/product-query-utils'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\nexport const useProductsInventory = (productIds = [], inventoryIds = [], expand = undefined) => {\n    const {site, locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n\n    const organizationId = appConfig?.commerceAPI?.parameters?.organizationId\n    const proxyPath = appConfig?.dolAPI?.proxyPath\n\n    const inventoryUrl = getCustomApiPaths(proxyPath, organizationId).INVENTORY_SEARCH\n\n    const dolParams = useMemo(() => {\n        let params = {\n            market: site?.id || '',\n            locale: locale.id,\n            itemIds: productIds.join(),\n            ...(inventoryIds.length && {inventoryIds: inventoryIds.join()}),\n            ...(expand && {expand})\n        }\n\n        return params\n    }, [site, locale, productIds, inventoryIds, expand])\n\n    const queryKey = useMemo(\n        () => ['products', productIds, 'inventories', inventoryIds, 'expand', expand],\n        [productIds, inventoryIds, expand]\n    )\n\n    // DOL Q3 channel migration — flag ON sends channelname 'pdp'; OFF keeps legacy 'pwa'.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const headers = {\n        ...(isDolQ3MigrationEnabled\n            ? dolChannelHeaders\n            : {channeltype: 'online', channelname: 'pwa'}),\n        'x-environment': appConfig?.targetEnvironment\n    }\n\n    const isDefaultInventory = inventoryIds.length <= 1\n    const select = useCallback(\n        (searchResult = {}) => getInventoryMap(searchResult.data, isDefaultInventory),\n        [isDefaultInventory]\n    )\n\n    const {\n        data: inventoryMap,\n        isFetching: isInventoryMapLoading,\n        isSuccess: isInventoryMapSuccess,\n        isError: isInventoryMapError,\n        error: inventoryMapError\n    } = useCustomQuery(\n        queryKey,\n        {\n            path: inventoryUrl,\n            queryParams: dolParams,\n            headers\n        },\n        {keepPreviousData: false, enabled: productIds.length > 0, select}\n    )\n\n    return {\n        inventoryMap,\n        isInventoryMapLoading,\n        isInventoryMapSuccess,\n        isInventoryMapError,\n        inventoryMapError\n    }\n}\n","import {useMemo, useEffect, useRef} from 'react'\nimport {useQueryClient} from '@tanstack/react-query'\n\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {MAX_CACHE_AGE} from '@salesforce/retail-react-app/app/constants'\n\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {useProductsInventory} from 'pandora-shared-app/overrides/app/hooks/use-products-inventory'\nimport {useProductsPrice} from 'pandora-shared-app/overrides/app/hooks/use-products-price'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useDolChannelHeaders} from 'pandora-shared-app/overrides/app/utils/dol-channel-headers'\n\nimport {transformScapiToDol} from '../utils/transform-product-scapi-dol'\nimport {useCustomQuery} from './useCustomQuery'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {\n    INVENTORY_EXPAND_ALL,\n    getSecondaryInventoryIds,\n    getProductPriceIds,\n    buildProduct,\n    getPlaceholderProductData\n} from './helpers/product-query-utils'\n\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\n\nconst STALE_TIME_MS = MAX_CACHE_AGE * 1000\n\n// Module-level Set persists across component remounts for the SPA session lifetime.\n// Null on server (SSR-safe: typeof window is undefined in Node.js).\n\nconst csrFetchedProducts =\n    typeof window !== 'undefined'\n        ? window.__csrFetchedProducts || (window.__csrFetchedProducts = new Set())\n        : null\n\n/**\n * @typedef {import('../types/product').DOLProduct} DOLProduct\n */\n\n/**\n * @typedef {object} UseProductsResult\n * @property {DOLProduct} [product] - The fetched product in DOL format, null if not found, or undefined during initial load\n * @property {boolean} isProductLoading - Whether the product data is currently loading\n * @property {boolean} isProductFetching - Whether the product data is being fetched (including background refetches)\n * @property {boolean} isProductError - Whether an error occurred while fetching the product\n * @property {Error} [productError] - The error object if an error occurred, null otherwise\n */\n\n/**\n * Fetches product data from the DOL API and transforms it into a normalized DOLProduct format.\n *\n * The hook handles various product experiences (new, fallback, old) based on LaunchDarkly feature flags\n * and can optionally include inventory and pricing data.\n *\n * @param {string} productId - The unique identifier of the product to fetch\n * @param {URLSearchParams} [urlParams=new URLSearchParams()] - URL search parameters, used as fallback for productId via 'pid' param\n * @param {boolean} [fetchSingleProductDetails=false] - When true, fetches detailed data for a single product; otherwise fetches from products list endpoint\n * @param {boolean} [includeInventory=false] - When true and new product experience is enabled, includes inventory data in the response\n * @param {boolean} [includePrice=false] - When true and new product experience is enabled, includes pricing data in the response\n * @returns {UseProductsResult} Object containing the product data and loading/error states\n */\nexport const useProducts = (\n    productId,\n    urlParams = new URLSearchParams(),\n    fetchSingleProductDetails = false,\n    includeInventory = false,\n    includePrice = false\n) => {\n    const {site, locale} = useMultiSite()\n    const isDOLResponse = useVariant(LD_KEYS.enablePDPDOLResponse, false)\n    const enableNewProductsPricingAPI = useVariant(LD_KEYS.enableNewProductsPricingAPI, false)\n    const enableNewProductsInventoryAPI = useVariant(LD_KEYS.enableNewProductsInventoryAPI, false)\n    const enableNewProductExperience = enableNewProductsPricingAPI || enableNewProductsInventoryAPI\n    const enableOptimisticNavigation = useVariant(LD_KEYS.enableOptimisticNavigation, false)\n    const enableImageSyncForDetailedShotOnly = useVariant(\n        LD_KEYS.enableImageSyncForDetailedShotOnly,\n        false\n    )\n    const enableSkeletonOverlayTransition = useVariant(\n        LD_KEYS.enableSkeletonOverlayTransition,\n        false\n    )\n    const enableStaleTimeForProductsRequest = useVariant(\n        LD_KEYS.enableStaleTimeForProductsRequest,\n        true\n    )\n    const enablePdpProductIdValidation = useVariant(LD_KEYS.enablePdpProductIdValidation, true)\n    const enablePdpCsrSpaReturnFix = useVariant(LD_KEYS.enablePdpCsrSpaReturnFix, false)\n\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disablePdpGetProductsOrganisationIdShortCodeSiteIdParameters,\n        true\n    )\n\n    const enableSkeletonWhileProductLoading = useVariant(\n        LD_KEYS.enableSkeletonWhileProductLoading,\n        false\n    )\n    // DOL Q3 channel migration — flag ON adds mandatory channelname header + removes deprecated `source` param.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const queryClient = useQueryClient()\n\n    const {data: customer} = useCurrentCustomer()\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId, shortCode}\n            },\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n    const {app: appConfig} = getConfig()\n\n    const productsUrl = getCustomApiPaths(proxyPath, organizationId).PRODUCTS\n    const productDetailUrl = `${productsUrl}/${productId}`\n\n    const dolParams = useMemo(() => {\n        const params = {\n            locale: locale.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId: site?.id,\n                      organisationId: organizationId,\n                      shortCode\n                  }),\n            expand: [\n                'assurances',\n                'components',\n                'compatibility',\n                'custom',\n                'variants',\n                'careInstructions',\n                'recommendations',\n                'sizeTable',\n                'pageMetaTags',\n                'stylingStudio',\n                'set_products',\n                'bundled_products',\n                'options',\n                'images',\n                'options'\n            ]\n        }\n\n        // Fetch prices from main API when pricing flag is disabled\n        if (!enableNewProductsPricingAPI) {\n            params.expand.push('prices', 'promotions')\n        }\n\n        // Fetch inventory from main API when inventory flag is disabled\n        if (!enableNewProductsInventoryAPI) {\n            params.expand.push('availability')\n        }\n\n        if (!fetchSingleProductDetails) {\n            params.productIds = productId || urlParams.get('pid')\n        }\n\n        return params\n    }, [\n        site.id,\n        locale.id,\n        shortCode,\n        organizationId,\n        productId,\n        urlParams,\n        enableNewProductsPricingAPI,\n        enableNewProductsInventoryAPI,\n        isDolQ3MigrationEnabled\n    ])\n\n    const headers = {\n        ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channeltype: 'online'}),\n        'x-environment': appConfig?.targetEnvironment\n    }\n\n    const queryKey = useMemo(() => ['products', [productId]], [productId])\n\n    const placeholderData = useMemo(() => {\n        if (!enableOptimisticNavigation) return\n\n        return getPlaceholderProductData(productId, queryClient, {\n            enableImageSyncForDetailedShotOnly,\n            enableSkeletonOverlayTransition\n        })\n    }, [\n        productId,\n        queryClient,\n        enableOptimisticNavigation,\n        enableImageSyncForDetailedShotOnly,\n        enableSkeletonOverlayTransition\n    ])\n\n    const query = useCustomQuery(\n        queryKey,\n        {\n            path: fetchSingleProductDetails ? productDetailUrl : productsUrl,\n            queryParams: dolParams,\n            headers: headers\n        },\n        {\n            keepPreviousData: true,\n            meta: {\n                displayName: 'useProducts'\n            },\n            ...(enableOptimisticNavigation && {placeholderData}),\n            ...(enableStaleTimeForProductsRequest && {staleTime: STALE_TIME_MS}),\n            ...(enablePdpProductIdValidation && {enabled: Boolean(productId)})\n        }\n    )\n\n    const {\n        data: product,\n        isLoading: isProductLoading,\n        isError: isProductError,\n        error: productError,\n        isFetching: isProductFetching,\n        isFetchedAfterMount\n    } = query\n\n    const isRefetched = useRef(false)\n\n    useEffect(() => {\n        if (!enableNewProductExperience && customer?.isRegistered && !isRefetched.current) {\n            query.refetch()\n            isRefetched.current = true\n        }\n    }, [customer?.isRegistered, enableNewProductExperience])\n\n    // Once a product has been CSR-fetched (isFetchedAfterMount = true), record it so that\n    // returning to the same product via SPA navigation doesn't get stuck in a loading state.\n    // isFetchedAfterMount resets to false on every remount, but the cached data already has\n    // segment-aware pricing from the previous fetch.\n    useEffect(() => {\n        if (enablePdpCsrSpaReturnFix && isFetchedAfterMount && productId) {\n            csrFetchedProducts?.add(productId)\n        }\n    }, [enablePdpCsrSpaReturnFix, isFetchedAfterMount, productId])\n\n    const effectiveIsFetchedAfterMount =\n        isFetchedAfterMount ||\n        (enablePdpCsrSpaReturnFix && Boolean(csrFetchedProducts?.has(productId)))\n\n    // Pinned to master ID once product resolves so size selection (variant ID)\n    // doesn't refire the query for variant ID.\n    const primaryInventoryIds = useMemo(() => {\n        if (!enableNewProductsInventoryAPI || !includeInventory) return []\n        const pinnedId = product?.master?.masterId ?? product?.id ?? product?.productId ?? productId\n        return [pinnedId].filter(Boolean)\n    }, [enableNewProductsInventoryAPI, includeInventory, product, productId])\n\n    // Fires only for sets and bundles that need FE-side refetch for child.\n    const secondaryInventoryIds = useMemo(() => {\n        if (!enableNewProductsInventoryAPI || !includeInventory || !product) return []\n        return getSecondaryInventoryIds(product)\n    }, [enableNewProductsInventoryAPI, includeInventory, product])\n\n    const priceProductIds = useMemo(() => {\n        if (!enableNewProductsPricingAPI || !includePrice) return []\n        const ids = product ? getProductPriceIds(product) : [productId]\n        return ids.filter(Boolean)\n    }, [enableNewProductsPricingAPI, includePrice, product, productId])\n\n    const {inventoryMap: primaryInventoryMap} = useProductsInventory(\n        primaryInventoryIds,\n        [],\n        INVENTORY_EXPAND_ALL\n    )\n    const {inventoryMap: secondaryInventoryMap} = useProductsInventory(\n        secondaryInventoryIds,\n        [],\n        INVENTORY_EXPAND_ALL\n    )\n    const inventoryMap = useMemo(\n        () => ({...(primaryInventoryMap ?? {}), ...(secondaryInventoryMap ?? {})}),\n        [primaryInventoryMap, secondaryInventoryMap]\n    )\n    const {pricesData} = useProductsPrice(priceProductIds)\n\n    const stableProduct = useMemo(() => {\n        if (product == null) {\n            if (!enableSkeletonWhileProductLoading && isProductLoading) {\n                return {productId}\n            }\n\n            return product\n        }\n\n        const finalProduct = isDOLResponse ? product : transformScapiToDol(product)\n\n        if (!enableNewProductExperience) {\n            return finalProduct\n        }\n\n        const inventory = enableNewProductsInventoryAPI ? inventoryMap : undefined\n        const prices = enableNewProductsPricingAPI ? pricesData : undefined\n\n        return buildProduct(finalProduct, inventory, prices)\n    }, [\n        product,\n        isDOLResponse,\n        enableNewProductExperience,\n        enableNewProductsPricingAPI,\n        enableNewProductsInventoryAPI,\n        inventoryMap,\n        pricesData,\n        isProductLoading\n    ])\n\n    return {\n        product: stableProduct,\n        isProductLoading,\n        isProductFetching,\n        isProductError,\n        productError,\n        isFetchedAfterMount: effectiveIsFetchedAfterMount\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'header',\n    'body',\n    'form',\n    'inputGroup',\n    'input',\n    'charLimitMessage',\n    'suggestionsWrapper',\n    'defaultSuggestionWrapper',\n    'productCarouselWrapper',\n    'textSuggestionsWrapper',\n    'exploreAllWrapper',\n    'exploreAllButton'\n])\n\n// FIND-6672 — spacing rhythm of the audited design, in px\nconst SUGGESTION_RHYTHM = '16px'\nconst INPUT_TO_SUGGESTIONS_GAP = '48px'\nconst VISUAL_SUGGESTIONS_MAX_WIDTH = '1093px'\nconst TEXT_SUGGESTIONS_WIDTH = '319px'\n// Side padding of the flyout content on mobile and tablet.\nexport const CONTENT_PADDING = {base: '32px', md: '48px'}\n// Pixel offset before the first slide so it lines up with the content margin while the\n// carousel itself bleeds to the screen edges (matches the shared \"You Might Also Like\"\n// bleed). Kept as numbers for Swiper's slidesOffsetBefore.\nexport const SLIDE_OFFSET_BEFORE = {base: 32, md: 48}\nconst EDGE_TO_EDGE = {\n    base: `calc(100% + 2 * ${CONTENT_PADDING.base})`,\n    md: `calc(100% + 2 * ${CONTENT_PADDING.md})`\n}\n\nexport const SearchFlyout = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            height: '70vh',\n            '& .chakra-modal__header': {\n                paddingBottom: 0,\n                justifyContent: 'flex-end'\n            },\n            '& .partial-body-content': {\n                paddingTop: 0,\n                '::-webkit-scrollbar': {display: 'none'}, // Chrome, Safari\n                msOverflowStyle: 'none', // IE, Edge\n                scrollbarWidth: 'none',\n                marginRight: {base: 0, xl: '17px'}\n            }\n        },\n        body: {\n            py: '0 !important',\n            marginRight: 4\n        },\n        form: {\n            width: {\n                base: '100%',\n                md: '100%',\n                lg: '98.5%',\n                xl: '100%'\n            },\n            paddingLeft: {\n                base: '32px !important',\n                md: '48px !important',\n                xl: '0 !important'\n            },\n            paddingRight: {\n                base: '32px !important',\n                md: '48px !important',\n                xl: '0 !important'\n            },\n            paddingTop: {xl: 0}\n        },\n        inputGroup: {\n            mb: {base: 10, md: 10, xl: 16}\n        },\n        input: {\n            // textarea visual defaults (kept in theme so component stays thin)\n            border: '0px',\n            resize: 'none',\n            whiteSpace: 'pre-wrap',\n            wordWrap: 'break-word',\n            minH: 8,\n            overflowY: 'auto'\n        },\n        charLimitMessage: {\n            color: 'red.500',\n            fontSize: 'xs',\n            mt: {base: -5, md: -5, xl: -10},\n            textAlign: 'left',\n            w: '100%'\n        },\n        suggestionsWrapper: {\n            display: 'flex',\n            flexDirection: {base: 'column', xl: 'row'},\n            pl: {base: '32px', md: '48px', xl: 0},\n            pr: {base: '32px', md: '48px', xl: 0},\n            gap: {base: 8, xl: 30},\n            justifyContent: {base: 'flex-start', xl: 'space-between'},\n            w: '100%'\n        },\n        defaultSuggestionWrapper: {\n            pl: {base: 0, md: 0, xl: 0},\n            pr: {base: 0, md: 0, xl: 0},\n            pb: {base: 0, md: 0, xl: 8}\n        },\n        productCarouselWrapper: {\n            flexBasis: {base: '100%', xl: '58%'},\n            flexShrink: 0,\n            flexGrow: 0,\n            minW: 0,\n            overflow: 'hidden'\n        },\n        textSuggestionsWrapper: {},\n        exploreAllWrapper: {},\n        exploreAllButton: {}\n    },\n    variants: {\n        // FIND-6672 — audited design, only applied while\n        // enable-global-search-flyout-design-audit is ON.\n        designAudit: {\n            // Search results full drawer (data-autoid=\"full-drawer-sheet-id\") runs flush on\n            // mobile & tablet; the desktop partial sheet keeps its inline-end gap.\n            body: {\n                me: {base: 0, xl: 4}\n            },\n            // The full-drawer body runs flush on mobile & tablet (body me:0), so add 16px of\n            // inline-end padding to the form to pull the input and Clear in and line them up\n            // with the close (X) icon. Desktop keeps its own margin, so no extra padding there.\n            form: {\n                pe: {\n                    base: '48px !important',\n                    md: '64px !important',\n                    xl: '0 !important'\n                }\n            },\n            inputGroup: {\n                mb: {base: 10, md: 10, xl: INPUT_TO_SUGGESTIONS_GAP}\n            },\n            suggestionsWrapper: {\n                // \"Automatic\" space between the text and the visual sections:\n                // the two sections are pushed apart instead of using a fixed gap.\n                gap: {base: 8, xl: SUGGESTION_RHYTHM}\n            },\n            textSuggestionsWrapper: {\n                textAlign: 'start',\n                flexBasis: {xl: TEXT_SUGGESTIONS_WIDTH},\n                flexGrow: {xl: 0},\n                flexShrink: {xl: 0},\n                minW: {base: 0, xl: TEXT_SUGGESTIONS_WIDTH},\n                maxW: {xl: TEXT_SUGGESTIONS_WIDTH},\n                '[data-auto=\"divPhraseSuggestion\"]': {\n                    display: {xl: 'flex'},\n                    flexDirection: {xl: 'column'},\n                    alignItems: {xl: 'start'},\n                    rowGap: {xl: 0}\n                },\n                '[data-testid=\"sf-category-suggestion\"]': {\n                    marginBottom: {xl: SUGGESTION_RHYTHM}\n                },\n                // Each typed-state suggestion row (phrase + category) is 44px: 20px content\n                // with 12px top and bottom padding, vertically centred, matching the\n                // \"jump to\" rows.\n                '[data-auto=\"btnPhraseSuggestion\"], [data-auto=\"divCategorySuggestion\"] > div': {\n                    minHeight: {xl: '44px'},\n                    paddingTop: {xl: '12px'},\n                    paddingBottom: {xl: '12px'},\n                    marginTop: {xl: 0},\n                    marginBottom: {xl: 0},\n                    alignItems: {xl: 'center'}\n                }\n            },\n            productCarouselWrapper: {\n                // Mobile & tablet: bleed to both screen edges and clip there (overflow:hidden\n                // from the base style). The first tile is offset back to the content margin via\n                // the carousel's slidesOffsetBefore, so it lines up initially but scrolls to the\n                // edge, and the inline-end crops at the screen edge — like \"You Might Also Like\".\n                // Desktop: end aligned, capped at 1093px.\n                flexBasis: {base: EDGE_TO_EDGE.base, md: EDGE_TO_EDGE.md, xl: 'auto'},\n                width: {base: EDGE_TO_EDGE.base, md: EDGE_TO_EDGE.md, xl: '100%'},\n                maxW: {xl: VISUAL_SUGGESTIONS_MAX_WIDTH},\n                ms: {base: `-${CONTENT_PADDING.base}`, md: `-${CONTENT_PADDING.md}`, xl: 'auto'},\n                me: {base: `-${CONTENT_PADDING.base}`, md: `-${CONTENT_PADDING.md}`, xl: 0},\n                flexShrink: 1,\n                // Drop the shared carousel's vertical padding; the title margin owns the top gap.\n                '.product-carousel': {\n                    paddingTop: 0,\n                    paddingBottom: 0\n                },\n                // Fixed tile widths per breakpoint; the 3:4 tile frame derives the heights\n                // (103×137 mobile, 216×288 tablet, 209 desktop).\n                '.swiper-slide': {\n                    width: {base: '103px', md: '216px', xl: '209px'},\n                    flexShrink: 0\n                }\n            },\n            exploreAllWrapper: {\n                display: 'flex',\n                mt: '24px',\n                pb: 32,\n                // The wrapper bleeds with the carousel, so pad both inline edges to keep the\n                // button within the content margins on mobile and tablet.\n                ps: {base: CONTENT_PADDING.base, md: CONTENT_PADDING.md, xl: 0},\n                pe: {base: CONTENT_PADDING.base, md: CONTENT_PADDING.md, xl: 0}\n            },\n            exploreAllButton: {\n                textTransform: 'uppercase'\n            }\n        }\n    }\n})\n","import {pick} from '@salesforce/commerce-sdk-react/hooks/utils'\nimport {productSearchParamKeys} from './use-product-search'\nimport {getCustomKeys} from '../utils/get-custom-keys'\n\n/**\n * @deprecated This function is deprecated and will be removed soon.\n * Returns an array of custom keys from the given object.\n */\nconst productSearch = {\n    path: () => ['dol', '/product-search'],\n    queryKey: (params) => {\n        const paramKeys = [...productSearchParamKeys, ...getCustomKeys(params)]\n\n        return [...productSearch.path(), pick(params, paramKeys)]\n    }\n}\n\nexport const queryKeyHelpers = {\n    productSearch\n}\n","import {useCallback, useRef, useEffect, useMemo} from 'react'\nimport {createContext} from '@chakra-ui/react-utils'\n\nconst [Provider, useMFERegistryContext] = createContext({\n    name: 'MFERegistryContext',\n    errorMessage:\n        'useMFERegistryContext: `context` is undefined. Seems you forgot to wrap components within `<MFERegistryProvider />`'\n})\n\n/**\n * Hook to register an MFE from any component.\n *\n * @param {string} instanceId - Unique identifier for this MFE instance (e.g., 'braceletEditor')\n * @param {object} config - MFE configuration passed to RemoteStudioPlaceholder\n * @param {string} config.remoteApp - The remote app name (e.g., 'braceletEditor', 'engravingEditor')\n * @param {string} config.remoteComponentId - The component ID within the remote app\n * @param {object} [config.locale] - Locale configuration\n * @param {string} [config.productId] - Product ID if needed for initialization\n * @param {boolean} [enabled=true] - Whether to register the MFE (typically a feature flag)\n * @returns {{isRegistered: boolean, unregister: Function}}\n *\n * @example\n * const ProductView = ({product}) => {\n *     const enableBraceletEditor = useVariant(LD_KEYS.enableBraceletEditorPDP, false)\n *\n *     useMFERegistry('braceletEditor', {\n *         remoteApp: 'braceletEditor',\n *         remoteComponentId: 'BraceletEditor',\n *         remoteAppId: 'braceletEditor',\n *         locale\n *     }, enableBraceletEditor)\n *\n *     // Modal triggered via: window?.pcp?.braceletEditor.showModal({id: product.productId})\n * }\n */\nconst useMFERegistry = (instanceId, config, enabled = true) => {\n    // 1. CONTEXT HOOKS\n    const {register, updateConfig, unregister, isRegistered} = useMFERegistryContext()\n\n    // 2. LOCAL STATE (useRef)\n\n    // Store config in ref to avoid stale closure in effects\n    const configRef = useRef(config)\n\n    // 3. DERIVED VALUES\n    const isCurrentlyRegistered = isRegistered(instanceId)\n\n    // 4. CALLBACKS\n    const handleUnregister = useCallback(() => {\n        unregister(instanceId)\n    }, [unregister, instanceId])\n\n    // 5. EFFECTS\n    // Keep configRef in sync with latest config\n    useEffect(() => {\n        configRef.current = config\n    }, [config])\n\n    // Register on initial mount when enabled\n    useEffect(() => {\n        if (enabled && !isRegistered(instanceId)) {\n            register(instanceId, configRef.current)\n        }\n\n        // We intentionally do NOT unregister on unmount to keep MFE alive\n        // The MFE persists across page navigations/re-renders\n        // To explicitly unregister, call the returned unregister function\n    }, [instanceId, enabled, register, isRegistered])\n\n    // Memoize config to get a stable reference when the actual values haven't changed.\n    // This prevents infinite loops when config is passed as an inline object literal.\n    // _trackTransformPayload opts in to tracking the transformPayload function reference —\n    // JSON.stringify cannot serialize functions so changes would otherwise be invisible.\n    const transformPayloadDep = config._trackTransformPayload ? config.transformPayload : undefined\n    const stableConfig = useMemo(() => config, [JSON.stringify(config), transformPayloadDep])\n\n    // Update config when props change (after initial registration).\n    //\n    // We check isRegistered(instanceId) — the GLOBAL registry state — rather than\n    // hasRegisteredRef.current (per-hook-instance). When navigating SPA between\n    // products, a new ProductView mounts a new hook instance whose hasRegisteredRef\n    // starts false; it never calls register() because the MFE from the previous\n    // product is still in the global registry. If we gated updateConfig on\n    // hasRegisteredRef, the new instance's config would never propagate and the\n    // MFE would render with the previous product's context (see OG-8589).\n    useEffect(() => {\n        if (enabled && isRegistered(instanceId)) {\n            updateConfig(instanceId, configRef.current)\n        }\n    }, [instanceId, stableConfig, enabled, updateConfig, isRegistered])\n\n    // 6. RETURN STATEMENT\n\n    return {\n        isRegistered: isCurrentlyRegistered,\n        unregister: handleUnregister\n    }\n}\n\nexport {Provider, useMFERegistryContext, useMFERegistry}\n","import React, {useState, useCallback, useMemo, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {RemoteStudioPlaceholder} from 'pandora-shared-app/overrides/app/components/remote-studio-placeholder'\nimport {Provider} from './context'\n\n/**\n * MFERegistryProvider\n *\n * Manages MFE (Micro-Frontend) instances at the app-config level.\n * Components can register MFEs that need to persist across page re-renders.\n *\n * The MFE is mounted ONCE when registered and stays alive until explicitly\n * unregistered or the app unmounts. This solves the problem of MFE modals\n * closing when the parent component tree re-renders.\n *\n * Usage:\n * ```jsx\n * // In any component\n * useMFERegistry('braceletEditor', {\n *     remoteApp: 'braceletEditor',\n *     remoteComponentId: 'BraceletEditor',\n *     locale\n * }, enableBraceletEditor)\n *\n * // The MFE mounts at _app-config level, not in your component\n * // Trigger modal via: window?.pcp?.braceletEditor.showModal({id: productId})\n * ```\n */\nconst MFERegistryProvider = ({children}) => {\n    // Map of instanceId -> config\n    const [registry, setRegistry] = useState({})\n\n    // Track registered instances to prevent duplicate registrations\n    const registeredRef = useRef(new Set())\n\n    const register = useCallback((instanceId, config) => {\n        // Only register if not already registered\n        if (registeredRef.current.has(instanceId)) {\n            return\n        }\n\n        registeredRef.current.add(instanceId)\n        setRegistry((prev) => ({\n            ...prev,\n            [instanceId]: {\n                ...config,\n                _mountedAt: Date.now()\n            }\n        }))\n    }, [])\n\n    const updateConfig = useCallback((instanceId, config) => {\n        // Only update if already registered\n        if (!registeredRef.current.has(instanceId)) {\n            return\n        }\n\n        setRegistry((prev) => {\n            const existing = prev[instanceId]\n            if (!existing) return prev\n\n            return {\n                ...prev,\n                [instanceId]: {\n                    ...config,\n                    _mountedAt: existing._mountedAt // Preserve original mount time\n                }\n            }\n        })\n    }, [])\n\n    const unregister = useCallback((instanceId) => {\n        registeredRef.current.delete(instanceId)\n        setRegistry((prev) => {\n            const next = {...prev}\n            delete next[instanceId]\n            return next\n        })\n    }, [])\n\n    const isRegistered = useCallback((instanceId) => {\n        return registeredRef.current.has(instanceId)\n    }, [])\n\n    const value = useMemo(\n        () => ({\n            register,\n            updateConfig,\n            unregister,\n            isRegistered,\n            registryCount: Object.keys(registry).length\n        }),\n        [register, updateConfig, unregister, isRegistered, registry]\n    )\n\n    return (\n        <Provider value={value}>\n            {children}\n\n            {/* All MFEs render here - outside page tree, stable mount point */}\n            <Box display=\"none\" data-testid=\"mfe-registry-host\">\n                {Object.entries(registry).map(([instanceId, config]) => {\n                    // Extract internal props before spreading.\n                    // _remountKey is preferred over productId for the remount key because\n                    // productId can change within the same product (e.g. variant refetch on\n                    // size selection). _remountKey should be stable across variants and only\n                    // change when navigating between different products.\n                    const {\n                        _remountOnProductChange,\n                        // eslint-disable-next-line @typescript-eslint/no-unused-vars -- destructured only to strip from mfeProps spread\n                        _trackTransformPayload,\n                        _remountKey,\n                        ...mfeProps\n                    } = config\n                    return (\n                        <RemoteStudioPlaceholder\n                            key={\n                                _remountOnProductChange\n                                    ? `${instanceId}-${_remountKey ?? mfeProps.productId}`\n                                    : instanceId\n                            }\n                            data-instance-id={instanceId}\n                            {...mfeProps}\n                        />\n                    )\n                })}\n            </Box>\n        </Provider>\n    )\n}\n\nMFERegistryProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {MFERegistryProvider}\nexport {useMFERegistryContext, useMFERegistry} from './context'\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"klarna_white\",\n  \"use\": \"klarna_white-usage\",\n  \"viewBox\": \"0 0 791.4 176.6\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 791.4 176.6\\\" id=\\\"klarna_white\\\"><path fill=\\\"#FFFFFF\\\" d=\\\"M153.5,173.3l-55-75c26.1-26,40.7-60.9,40.7-98.4h-38.9c0,31.9-14.7,61.2-40.2,80.3L44.6,91.9l59.8,81.5 H153.5z\\\" /><rect y=\\\"0\\\" fill=\\\"#FFFFFF\\\" width=\\\"39.9\\\" height=\\\"173.4\\\" /><rect x=\\\"165.1\\\" y=\\\"0\\\" fill=\\\"#FFFFFF\\\" width=\\\"37.6\\\" height=\\\"173.3\\\" /><path fill=\\\"#FFFFFF\\\" d=\\\"M547.5 110v63.2h35.8V97.1c0-27.9-22.2-46.9-51.1-46.9-14.3 0-27.9 4.5-37 16.7V53.4h-35.7v119.9h36.2v-63c0-18.2 12.2-27.2 26.9-27.2C538.4 83.1 547.5 92.6 547.5 110zM316.2 165.6v7.7h35.9V53.4h-35.9v7.7c-10.1-6.9-22.4-11-35.6-11-34.9 0-63.3 28.3-63.3 63.3 0 34.9 28.3 63.3 63.3 63.3C293.8 176.6 306.1 172.5 316.2 165.6zM251.1 113.4c0-17 14.6-30.8 32.5-30.8 18 0 32.5 13.8 32.5 30.8 0 17-14.6 30.8-32.5 30.8C265.6 144.2 251.1 130.4 251.1 113.4zM442.8 88.3V53.4c-14.6 0-28 6.2-35.2 15.6V53.4h-36.7v119.9h36.8v-56c0-18.9 20.5-29 34.7-29C442.5 88.3 442.7 88.3 442.8 88.3zM694.9 173.3h35.9V53.4h-35.9v7.7c-10.1-6.9-22.4-11-35.6-11-34.9 0-63.3 28.3-63.3 63.3 0 34.9 28.3 63.3 63.3 63.3 13.2 0 25.4-4.1 35.6-11V173.3zM662.2 144.2c-18 0-32.5-13.8-32.5-30.8 0-17 14.6-30.8 32.5-30.8 18 0 32.5 13.8 32.5 30.8C694.7 130.4 680.2 144.2 662.2 144.2zM791.4 153.3c0-12.4-10.1-22.5-22.5-22.5-12.4 0-22.5 10.1-22.5 22.5 0 12.4 10.1 22.5 22.5 22.5C781.3 175.8 791.4 165.7 791.4 153.3z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// utils/transformJson.js\n/**\n * Transforms a single product or variant into the desired structure.\n * @param {Object} product - The product or variant to transform.\n * @param {boolean} [isVariant=false] - Flag indicating if the item is a variant.\n * @returns {Object} The transformed product or variant.\n */\n\nconst toRelativePath = (url) => {\n    if (!url || !url.startsWith('http')) return url\n    try {\n        const {pathname, search} = new URL(url)\n        return pathname + search\n    } catch {\n        return url\n    }\n}\n\nconst transformProduct = (product, isVariant = false) => {\n    const {\n        productId,\n        productName,\n        productType,\n        price,\n        currency,\n        isNew,\n        isEngravable,\n        isOrderable,\n        isLowInventory,\n        productUrl,\n        image,\n        primaryImage,\n        secondaryImage,\n        inventory = {},\n        custom = {},\n        recommendation,\n        hasProductPromotions,\n        productInStock,\n        buyFromTileEnabled,\n        isNotifyMe\n    } = product\n\n    return {\n        currency: currency?.toUpperCase(),\n        hitType: productType,\n        productId,\n        hasProductPromotions: Boolean(hasProductPromotions),\n        productName,\n        buyFromTileEnabled,\n        isNotifyMe,\n        ...(!isVariant && {\n            productType: {\n                [productType]: true\n            }\n        }),\n        c_extend: {\n            custom: {\n                ...custom,\n                category: custom.primaryCategory,\n                discount: custom.discount || 0,\n                isNotifyMe: isNotifyMe || false\n            },\n            recommendation: recommendation || {},\n            isLowInventory,\n            isNew,\n            isEngravable,\n            promotions: [\n                {\n                    promotionId: product.promotions?.promotionId,\n                    calloutMsg: product.promotions?.calloutMsg\n                }\n            ],\n            variants: [],\n            productUrl: toRelativePath(productUrl),\n            productInStock,\n            inventory: {\n                id: inventory.id || '',\n                backorderable: inventory.backorderable || false,\n                orderable: inventory.orderable || false,\n                preorderable: inventory.preOrderable || false,\n                stockLevel: inventory.stockLevel || 0,\n                ats: inventory.availableToSell || 0\n            }\n        },\n        representedProduct: {\n            id: product.representedProduct?.id || productId\n        },\n        price,\n        salePrice: product.salePrice,\n        pricePerUnit: price,\n        orderable: isOrderable,\n        image: {\n            alt: image?.alt,\n            disBaseLink: image?.link,\n            title: image?.title\n        },\n        primaryImage: {\n            alt: primaryImage?.alt,\n            disBaseLink: primaryImage?.link,\n            title: primaryImage?.title\n        },\n        secondaryImage: secondaryImage\n            ? {\n                  alt: secondaryImage.alt,\n                  disBaseLink: secondaryImage.link,\n                  title: secondaryImage.title\n              }\n            : null\n    }\n}\n\n/**\n * Transforms the input JSON data into a structured format suitable for the application.\n * @param {Object} inputJson - The input JSON data containing products, refinements, and variants.\n * @returns {Object} The transformed JSON data.\n */\n\nexport const transformBRSearchResponse = (inputJson) => {\n    const {data, refinements, variants, customerSegment, searchUrl, searchMetadata = []} = inputJson\n\n    const searchMetaDataRefine = searchMetadata.map(({id, ...rest}) => ({ID: id, ...rest}))\n\n    const hits = data.map((product) => {\n        const transformedProduct = transformProduct(product)\n\n        // Find and transform variants\n        const productVariants = variants\n            .filter((variant) => {\n                return product.recommendation?.availableMetals?.some(\n                    (metal) => metal.productId === variant.productId\n                )\n            })\n            .map((variant) => {\n                const transformedVariant = transformProduct(variant, true)\n                return transformedVariant\n            })\n\n        transformedProduct.c_extend.variants = productVariants\n\n        return transformedProduct\n    })\n\n    const transformPriceRefinement = (priceData) => {\n        return priceData?.map((price) => {\n            const {itemCount, start, end, label, seoFriendlyUrl} = price\n\n            return {\n                label: label,\n                hitCount: itemCount,\n                value: `(${start}..${end})`,\n                c_seoFriendlyRefinementUrl: seoFriendlyUrl\n            }\n        })\n    }\n\n    const transformedRefinements = refinements?.reduce((acc, refinement) => {\n        if (\n            (!customerSegment && refinement.id === 'price') ||\n            (customerSegment && refinement.id === `${customerSegment}_price`)\n        ) {\n            acc.push({\n                attributeId: 'price',\n                label: refinement.label,\n                values: transformPriceRefinement(refinement.values)\n            })\n            return acc\n        }\n\n        const filteredValues =\n            refinement.values\n                ?.filter((value) => value.seoFriendlyUrl) // Keep only values with `url`\n                .map((value) => ({\n                    c_seoFriendlyRefinementUrl: value.seoFriendlyUrl,\n                    hitCount: value.itemCount,\n                    label: value.label,\n                    value: value.value,\n                    ...(value.presentationId && {\n                        presentationId: value.presentationId\n                    })\n                })) || []\n\n        if (filteredValues.length > 0) {\n            acc.push({\n                attributeId: refinement.id,\n                label: refinement.label,\n                values: filteredValues\n            })\n        }\n\n        return acc\n    }, [])\n    const transformedSelectedRefinements =\n        inputJson.selectedRefinements?.reduce((acc, {name, value}) => {\n            const keyMapping = {\n                [`${customerSegment}_price`]: 'price',\n                [`${customerSegment}_price_resetLink`]: 'price_resetLink'\n            }\n\n            const key = keyMapping[name] || name // Use mapped key or retain original name\n            acc[key] = value\n\n            return acc\n        }, {}) || {}\n\n    return {\n        hits,\n        limit: inputJson.limit,\n        offset: inputJson.offset,\n        query: inputJson.query || inputJson.originalQuery || '',\n        refinements: transformedRefinements || [],\n        total: inputJson.total,\n        selectedRefinements: transformedSelectedRefinements,\n        selectedSortingOption: inputJson.selectedSortingOption,\n        searchPhraseSuggestions: {\n            c_searchUrl: searchUrl,\n            c_searchMetadata: searchMetaDataRefine,\n            c_searchRedirect: inputJson.keywordRedirect?.redirectUrl,\n            // Pass through any existing search phrase suggestions (including SFCC RAC data)\n            ...inputJson.searchPhraseSuggestions,\n            // Map Bloomreach restricted campaign data (root-level) to standard format\n            ...(inputJson.restrictedCampaignData && {\n                c_restrictedCampaignData: {\n                    c_contentAssetId: inputJson.restrictedCampaignData.contentAssetId,\n                    c_redirectUrl: inputJson.restrictedCampaignData.redirectUrl,\n                    c_promotionId: inputJson.restrictedCampaignData.promotionId\n                }\n            })\n        },\n        ...(inputJson.sortingOptions ? {sortingOptions: inputJson.sortingOptions} : {})\n    }\n}\nexport const extractCustomerSegmentPrefix = (input) => {\n    return input.split('_')[0]\n}\n","/**\n * @fileoverview Product capabilities hook for determining feature availability on PDP.\n * Evaluates LaunchDarkly feature flags and product properties to determine\n * which PDP features should be available for a given product.\n */\n\nimport {useVariants} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n/**\n * @typedef {import('../types/product').DOLProduct} DOLProduct\n */\n\nconst {\n    enablePdpAddToBag,\n    enablePdpDeliverySection,\n    enableLoyaltyPdp,\n    enablePdpEngravingModal,\n    enableBraceletEditorPDP,\n    enableBnplAssurance,\n    enableSneakPeekPDP,\n    enablePdpBuyFromTile,\n    enablePlpBuyFromTile,\n    enablePdpPartOfSet,\n    enablePdpPlatinumPlatedInfo,\n    enablePdpPlatinumCareInstructions,\n    enableLoadingBraceletEditorWhenOos\n} = LD_KEYS\n\n/**\n * @typedef {object} AddToBagOptions\n * @property {boolean} [enableAddToBag=true] - Feature flag for add to bag functionality\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n */\n\n/**\n * Determines if the Add to Bag button should be available for a product.\n * Sneak peek products cannot be added to bag when the sneak peek feature is enabled.\n * @param {DOLProduct} product - The product to check\n * @param {AddToBagOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Add to Bag button should be shown\n */\nexport const isAddToBagAvailable = (\n    product,\n    {enableAddToBag = true, enableSneakPeekPDP = true} = {}\n) => {\n    if (!enableAddToBag) return false\n\n    const isSneakPeekProduct = !!product?.custom?.isSneakPeekProduct\n\n    return !enableSneakPeekPDP || !isSneakPeekProduct\n}\n\n/**\n * @typedef {object} BuyFromTileOptions\n * @property {boolean} [enableAddToBag=true] - Feature flag for add to bag functionality\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n * @property {boolean} [enablePdpBuyFromTile=true] - Feature flag for buy from tile functionality (PDP/Rec zones)\n * @property {boolean} [enablePlpBuyFromTile=false] - Feature flag for buy from tile functionality (PLP)\n */\n\n/**\n * Determines if the Buy From Tile feature should be available for a product.\n * Requires either the PDP or PLP buy from tile flag and add to bag availability.\n * @param {DOLProduct} product - The product to check\n * @param {BuyFromTileOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Buy From Tile feature should be shown\n */\nexport const isBuyFromTileAvailable = (\n    product,\n    {\n        enableAddToBag = true,\n        enableSneakPeekPDP = true,\n        enablePdpBuyFromTile = true,\n        enablePlpBuyFromTile = false\n    } = {}\n) => {\n    // Check if either PDP or PLP BuyFromTile flag is enabled\n    if (!enablePdpBuyFromTile && !enablePlpBuyFromTile) return false\n\n    // Then delegate to the existing AddToBag availability logic\n    return isAddToBagAvailable(product, {enableAddToBag, enableSneakPeekPDP})\n}\n\n/**\n * @typedef {object} DeliverySectionOptions\n * @property {boolean} [enableDeliverySection=true] - Feature flag for delivery section\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n */\n\n/**\n * Determines if the Delivery Section should be available for a product.\n * Not available for electronic gift cards or sneak peek products.\n * @param {DOLProduct} product - The product to check\n * @param {DeliverySectionOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Delivery Section should be shown\n */\nexport const isDeliverySectionAvailable = (\n    product,\n    {enableDeliverySection = true, enableSneakPeekPDP = true} = {}\n) => {\n    if (!enableDeliverySection) return false\n\n    const isSneakPeekProduct = product?.custom?.isSneakPeekProduct\n    const isElectronicGiftCard = product?.giftCardType === 'egc'\n\n    if (isElectronicGiftCard) return false\n\n    return !enableSneakPeekPDP || !isSneakPeekProduct\n}\n\n/**\n * @typedef {object} LoyaltySectionOptions\n * @property {boolean} [enableLoyaltySection=true] - Feature flag for loyalty section\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n */\n\n/**\n * Determines if the Loyalty Section should be available for a product.\n * Not available for gift cards or sneak peek products.\n * @param {DOLProduct} product - The product to check\n * @param {LoyaltySectionOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Loyalty Section should be shown\n */\nexport const isLoyaltySectionAvailable = (\n    product,\n    {enableLoyaltySection = true, enableSneakPeekPDP = true} = {}\n) => {\n    if (!enableLoyaltySection) return false\n\n    const isSneakPeekProduct = product?.custom?.isSneakPeekProduct\n    const isGiftCard = !!product?.giftCardType\n\n    if (isGiftCard) return false\n\n    return !enableSneakPeekPDP || !isSneakPeekProduct\n}\n\n/**\n * @typedef {object} EngravingOptions\n * @property {boolean} [enableEngravingButton=true] - Feature flag for engraving modal\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n */\n\n/**\n * Determines if the Engraving feature should be available for a product.\n * Not available for bundles, non-engravable products, or sneak peek products.\n * For sets, engraving is available only if the set contains exactly one engravable product.\n * @param {DOLProduct} product - The product to check\n * @param {EngravingOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Engraving feature should be shown\n */\nexport const isEngravingAvailable = (\n    product,\n    {enableEngravingButton = true, enableSneakPeekPDP = true} = {}\n) => {\n    if (!enableEngravingButton || !product) return false\n\n    if (product.custom?.isSneakPeekProduct && enableSneakPeekPDP) return false\n\n    const {set: isSet, bundle: isBundle} = product.productType ?? {}\n\n    if (isBundle) return false\n\n    if (isSet) {\n        const setProducts = product.setProducts ?? []\n        const engravableCount = setProducts.filter((p) => p.c_engravable).length\n        return engravableCount === 1\n    }\n\n    return !!product.isEngravable\n}\n\n/**\n * @typedef {object} StylingStudioOptions\n * @property {boolean} [enableBraceletEditor=true] - Feature flag for bracelet editor\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n * @property {boolean} [enableOosCheck=false] - Feature flag to hide button when product is OOS\n */\n\n/**\n * Determines if the Styling Studio (Bracelet Builder) should be available for a product.\n * Requires the bracelet builder to be enabled and have an entry point for the product.\n * @param {DOLProduct} product - The product to check\n * @param {StylingStudioOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Styling Studio feature should be shown\n */\nexport const isStylingStudioAvailable = (\n    product,\n    {enableBraceletEditor = true, enableSneakPeekPDP = true, enableOosCheck = false} = {}\n) => {\n    if (!product || !enableBraceletEditor) return false\n\n    if (product.custom?.isSneakPeekProduct && enableSneakPeekPDP) return false\n\n    const {isEnabled: isBraceletBuiderEnabled, hasEntryPoint} =\n        product.stylingStudio?.braceletBuilder ?? {}\n\n    if (!isBraceletBuiderEnabled || !hasEntryPoint) return false\n\n    if (enableOosCheck) {\n        // Hide when the product is fully out of stock.\n        // For master–variant products, show if at least one variant is orderable.\n        const variants = product.variants\n        if (Array.isArray(variants) && variants.length > 0) {\n            return variants.some((v) => v.orderable)\n        }\n\n        return product.inventory?.orderable ?? false\n    }\n\n    return true\n}\n\n/**\n * @typedef {object} BNPLOptions\n * @property {boolean} [enableBnplAssurance=true] - Feature flag for BNPL (Buy Now Pay Later) assurance\n * @property {boolean} [enableSneakPeekPDP=true] - Feature flag for sneak peek products\n */\n\n/**\n * Determines if the BNPL (Buy Now Pay Later) assurance should be available for a product.\n * Not available for gift cards or sneak peek products.\n * @param {DOLProduct} product - The product to check\n * @param {BNPLOptions} [options] - Feature flag options\n * @returns {boolean} Whether the BNPL assurance should be shown\n */\nexport const isBNPLAvailable = (\n    product,\n    {enableBnplAssurance = true, enableSneakPeekPDP = true} = {}\n) => {\n    if (!product || !enableBnplAssurance) return false\n\n    const isSneakPeekProduct = product?.custom?.isSneakPeekProduct\n    const isGiftCard = !!product?.giftCardType\n\n    if (isGiftCard) return false\n\n    return !enableSneakPeekPDP || !isSneakPeekProduct\n}\n\n/**\n * @typedef {object} PartOfSetOptions\n * @property {boolean} [enablePartOfSet=false] - Feature flag for part of set functionality\n */\n\n/**\n * Determines if the Part of Set feature should be available for a product.\n * Requires the feature flag to be enabled.\n * @param {DOLProduct} product - The product to check\n * @param {PartOfSetOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Part of Set feature should be shown\n */\nexport const isPartOfSetAvailable = (product, {enablePartOfSet = false} = {}) => {\n    if (!enablePartOfSet) return false\n\n    return !!product?.custom?.isPartOfSet\n}\n\n/**\n * @typedef {object} PlatinumPlatedInfoOptions\n * @property {boolean} [enablePlatinumPlatedInfo=false] - Feature flag for platinum plated info\n */\n\n/**\n * Determines if the Platinum Plated Info should be available for a product.\n * Requires the feature flag to be enabled and the product to have a platinum metal group.\n * @param {DOLProduct} product - The product to check\n * @param {PlatinumPlatedInfoOptions} [options] - Feature flag options\n * @returns {boolean} Whether the Platinum Plated Info should be shown\n */\nexport const isPlatinumPlatedInfoAvailable = (product, {enablePlatinumPlatedInfo = false} = {}) => {\n    if (!enablePlatinumPlatedInfo || !product) return false\n\n    return product?.custom?.metalGroupDefault?.toLowerCase() === 'platinum'\n}\n\n/**\n * @typedef {object} PlatinumCareInstructionsOptions\n * @property {boolean} [enablePlatinumCareInstructions=false] - Feature flag for platinum care instructions\n */\n\n/**\n * Determines if the platinum-specific care instructions content should be shown for a product.\n * Requires the feature flag to be enabled and the product to have a platinum metal group.\n * @param {DOLProduct} product - The product to check\n * @param {PlatinumCareInstructionsOptions} [options] - Feature flag options\n * @returns {boolean} Whether the platinum care instructions should be shown\n */\nexport const isPlatinumCareInstructionsAvailable = (\n    product,\n    {enablePlatinumCareInstructions = false} = {}\n) => {\n    if (!enablePlatinumCareInstructions || !product) return false\n\n    return product?.custom?.metalGroupDefault?.toLowerCase() === 'platinum'\n}\n\n/**\n * @typedef {object} ProductCapabilities\n * @property {boolean} isAddToBagAvailable - Whether the Add to Bag button should be shown\n * @property {boolean} isDeliverySectionAvailable - Whether the Delivery Section should be shown\n * @property {boolean} isLoyaltySectionAvailable - Whether the Loyalty Section should be shown\n * @property {boolean} isBNPLAvailable - Whether the BNPL assurance should be shown\n * @property {boolean} isEngravingAvailable - Whether the Engraving feature should be shown\n * @property {boolean} isStylingStudioAvailable - Whether the Styling Studio feature should be shown\n * @property {boolean} isBuyFromTileAvailable - Whether the Buy From Tile feature should be shown\n * @property {boolean} isPartOfSetAvailable - Whether the Part of Set feature should be shown\n * @property {boolean} isPlatinumPlatedInfoAvailable - Whether the Platinum Plated Info should be shown\n * @property {boolean} isPlatinumCareInstructionsAvailable - Whether the platinum care instructions should be shown\n */\n\n/**\n * Hook to determine which PDP features are available for a given product.\n * Evaluates LaunchDarkly feature flags and product properties to determine availability.\n * @param {DOLProduct} product - The product to evaluate capabilities for\n * @returns {ProductCapabilities} Object containing availability flags for each PDP feature\n */\nexport const useProductCapabilities = (product) => {\n    const flags = useVariants([\n        {id: enablePdpAddToBag, fallbackValue: true},\n        {id: enablePdpDeliverySection, fallbackValue: true},\n        {id: enableLoyaltyPdp, fallbackValue: false},\n        {id: enablePdpEngravingModal, fallbackValue: false},\n        {id: enableBraceletEditorPDP, fallbackValue: false},\n        {id: enableBnplAssurance, fallbackValue: false},\n        {id: enableSneakPeekPDP, fallbackValue: false},\n        {id: enablePdpBuyFromTile, fallbackValue: false},\n        {id: enablePlpBuyFromTile, fallbackValue: false},\n        {id: enablePdpPartOfSet, fallbackValue: false},\n        {id: enablePdpPlatinumPlatedInfo, fallbackValue: false},\n        {id: enablePdpPlatinumCareInstructions, fallbackValue: false},\n        {id: enableLoadingBraceletEditorWhenOos, fallbackValue: false}\n    ])\n\n    return {\n        isAddToBagAvailable: isAddToBagAvailable(product, {\n            enableAddToBag: flags[enablePdpAddToBag],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP]\n        }),\n        isDeliverySectionAvailable: isDeliverySectionAvailable(product, {\n            enableDeliverySection: flags[enablePdpDeliverySection],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP]\n        }),\n        isLoyaltySectionAvailable: isLoyaltySectionAvailable(product, {\n            enableLoyaltySection: flags[enableLoyaltyPdp],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP]\n        }),\n        isBNPLAvailable: isBNPLAvailable(product, {\n            enableBnplAssurance: flags[enableBnplAssurance],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP]\n        }),\n        isEngravingAvailable: isEngravingAvailable(product, {\n            enableEngravingButton: flags[enablePdpEngravingModal],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP]\n        }),\n        isStylingStudioAvailable: isStylingStudioAvailable(product, {\n            enableBraceletEditor: flags[enableBraceletEditorPDP],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP],\n            enableOosCheck: flags[enableLoadingBraceletEditorWhenOos]\n        }),\n        isBuyFromTileAvailable: isBuyFromTileAvailable(product, {\n            enableAddToBag: flags[enablePdpAddToBag],\n            enableSneakPeekPDP: flags[enableSneakPeekPDP],\n            enablePdpBuyFromTile: flags[enablePdpBuyFromTile],\n            enablePlpBuyFromTile: flags[enablePlpBuyFromTile]\n        }),\n        isPartOfSetAvailable: isPartOfSetAvailable(product, {\n            enablePartOfSet: flags[enablePdpPartOfSet]\n        }),\n        isPlatinumPlatedInfoAvailable: isPlatinumPlatedInfoAvailable(product, {\n            enablePlatinumPlatedInfo: flags[enablePdpPlatinumPlatedInfo]\n        }),\n        isPlatinumCareInstructionsAvailable: isPlatinumCareInstructionsAvailable(product, {\n            enablePlatinumCareInstructions: flags[enablePdpPlatinumCareInstructions]\n        })\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"location\",\n  \"use\": \"location-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" id=\\\"location\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.86 10.519l-.017.024-4.759 7.465a.1.1 0 01-.168 0l-4.759-7.465-.018-.024a6 6 0 119.721 0zm-10.53.587l5.586 8.762a.1.1 0 00.168 0l5.586-8.762a7 7 0 10-11.34 0zM12.5 7a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm1 0a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0z\\\" fill=\\\"#27251F\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useLocation} from 'react-router-dom'\nimport queryString from 'query-string'\n\n// Constants\nimport {DEFAULT_SEARCH_PARAMS} from '@salesforce/retail-react-app/app/constants'\n\nconst PARSE_OPTIONS = {\n    parseBooleans: true,\n    parseNumbers: true\n}\n\n/*\n * This hook will return all the location search params pertinant\n * to the product list page.\n */\nexport const useSearchParams = (searchParams = DEFAULT_SEARCH_PARAMS, parseRefine = true) => {\n    const {search} = useLocation()\n\n    // Encode the search query, including preset values.\n    const searchParamsObject = {\n        ...searchParams,\n        ...parse(search.substring(1), parseRefine)\n    }\n\n    return [searchParamsObject, {stringify, parse}]\n}\n\n/**\n * Encode's the provided search parameters object, paying special attention to ensure\n * that the child `refine` object is alway encoded correctly.\n *\n * @param {Object} searchParamsObj\n * @returns\n */\nexport const stringify = (searchParamsObj) => {\n    let searchParamsObjCopy = {...searchParamsObj}\n\n    // Remove our copy of the original refinement value so it's not stringified.\n    delete searchParamsObjCopy._refine\n\n    // \"stringify\" the nested refinements\n    searchParamsObjCopy.refine = Object.keys(searchParamsObjCopy.refine).map((key) =>\n        queryString.stringify(\n            {[key]: searchParamsObjCopy.refine[key]},\n            {\n                arrayFormat: 'separator',\n                arrayFormatSeparator: '|',\n                encode: false\n            }\n        )\n    )\n\n    // \"stringify\" the entire object\n    searchParamsObjCopy = queryString.stringify(searchParamsObjCopy)\n    return searchParamsObjCopy\n}\n\n/**\n * Decode's the provided query string representation of a search parameter object, paying\n * special attention to also decode the 'refine' object.\n *\n * @param {Object} searchParamsStr\n * @param {Boolean} parseRefine - opt out of parsing the inner refine object.\n * @returns\n */\nexport const parse = (searchParamsStr, parseRefine = true) => {\n    const params = queryString.parse(searchParamsStr, PARSE_OPTIONS)\n\n    // Ensure the refinments is an array (make it easier to manipulate).\n    params.refine = Array.isArray(params.refine) ? params.refine : [params.refine].filter(Boolean)\n\n    // Parse the nested refinement entries.\n    if (parseRefine) {\n        params._refine = params.refine\n        params.refine = params.refine.reduce((acc, curr) => {\n            return {\n                ...acc,\n                ...queryString.parse(curr, {\n                    ...PARSE_OPTIONS,\n                    parseNumbers: false,\n                    arrayFormat: 'separator',\n                    arrayFormatSeparator: '|'\n                })\n            }\n        }, {})\n    }\n\n    return params\n}\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Custom hook to retrieve the app's origin.\n * This hook wraps the `useOrigin` hook from the `@salesforce/pwa-kit-react-sdk/ssr/universal/hooks` package.\n * when fromXForwardedHeader: false, the x-forwarded-* headers will not be considered for app origin\n * when fromXForwardedHeader: true, the x-forwarded-* headers will be considered for app origin\n */\nimport {useOrigin} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\n\nexport const useAppOrigin = () => useOrigin({fromXForwardedHeader: false})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {Center, Spinner, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\n\n/**\n * Inner content of the shared \"View Bag\" button. Renders a spinner while the\n * navigation is loading, otherwise the \"View Bag [count]\" label. Shared by the\n * mini-cart and the add-to-cart confirmation sheet CTAs.\n */\nconst ViewBagButtonContent = ({isLoading, darkTheme, totalCount, textStyles}) => {\n    const intl = useIntl()\n\n    if (isLoading) {\n        return (\n            <Center width=\"62px\" height=\"62px\">\n                <Spinner\n                    size=\"lg\"\n                    thickness=\"2px\"\n                    speed=\"0.65s\"\n                    emptyColor=\"transparent\"\n                    color={darkTheme ? 'white' : 'black'}\n                    aria-label=\"Loading\"\n                    data-testid=\"view-bag-spinner\"\n                />\n            </Center>\n        )\n    }\n\n    return (\n        <Text as=\"span\" {...textStyles}>\n            {intl.formatMessage({\n                defaultMessage: 'View Bag',\n                id: 'add_to_cart_modal.link.view_cart'\n            })}\n            <Text as=\"span\" marginX=\"2px\">\n                [\n            </Text>\n            {totalCount}\n            <Text as=\"span\" marginLeft=\"2px\">\n                ]\n            </Text>\n        </Text>\n    )\n}\n\nViewBagButtonContent.propTypes = {\n    isLoading: PropTypes.bool,\n    darkTheme: PropTypes.bool,\n    totalCount: PropTypes.number,\n    textStyles: PropTypes.object\n}\n\nexport default ViewBagButtonContent\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useEffect, useState} from 'react'\nimport {useVariant} from '@salesforce/retail-react-app/app/hooks/use-variant'\nimport {useIntl} from 'react-intl'\nimport {useVariationParams} from '@salesforce/retail-react-app/app/hooks/use-variation-params'\nimport {useVariationAttributes} from '@salesforce/retail-react-app/app/hooks/use-variation-attributes'\nimport {useSelectedStore} from '@salesforce/retail-react-app/app/hooks/use-selected-store'\n\nconst OUT_OF_STOCK = 'OUT_OF_STOCK'\nconst UNFULFILLABLE = 'UNFULFILLABLE'\n\nconst getInventoryById = (product, inventoryId) => {\n    if (!inventoryId || !product?.inventories) {\n        return null\n    }\n    return product.inventories.find((inv) => inv.id === inventoryId)\n}\n\n// TODO: This needs to be refactored.\n// If compatibility with API version < v8.1 is needed, keep pickupInStore as false\nexport const useDerivedProduct = (\n    product,\n    isProductPartOfSet = false,\n    isProductPartOfBundle = false,\n    pickupInStore = false,\n    controlledVariationValues = null,\n    onVariationChange = null\n) => {\n    const showLoading = !product\n    const isProductABundle = product?.type?.bundle\n    const stockLevel = product?.inventory?.stockLevel || 0\n    const stepQuantity = product?.stepQuantity || 1\n    const minOrderQuantity = stockLevel > 0 ? product?.minOrderQuantity || 1 : 0\n    const initialQuantity = product?.quantity || product?.minOrderQuantity || 1\n\n    // used for product bundles when there are multiple products\n    const lowestStockLevelProductName = product?.inventory?.lowestStockLevelProductName\n    const intl = useIntl()\n    const variant = useVariant(\n        product,\n        isProductPartOfSet,\n        isProductPartOfBundle,\n        controlledVariationValues\n    )\n    const isStandardProduct = product?.type?.item\n    const variationParams = useVariationParams(\n        product,\n        isProductPartOfSet,\n        isProductPartOfBundle,\n        controlledVariationValues\n    )\n    const variationAttributes = useVariationAttributes(\n        product,\n        isProductPartOfSet,\n        isProductPartOfBundle,\n        controlledVariationValues,\n        onVariationChange\n    )\n    const [quantity, setQuantity] = useState(initialQuantity)\n    const {selectedStore} = useSelectedStore()\n\n    // A product is considered out of stock if the stock level is 0 or if we have all our\n    // variation attributes selected, but don't have a variant. We do this because the API\n    // will sometimes return all the variants even if they are out of stock, but for other\n    // products it won't.\n    const isOutOfStock =\n        !stockLevel ||\n        (!isProductABundle &&\n            !variant &&\n            !isStandardProduct &&\n            Object.keys(variationParams).length === variationAttributes.length) ||\n        (!isProductABundle && variant && !variant.orderable)\n    const unfulfillable = stockLevel < quantity\n\n    // Product details for selected store\n    const selectedStoreInventory = getInventoryById(product, selectedStore?.inventoryId)\n    const selectedStoreStockLevel = selectedStoreInventory?.stockLevel || 0\n    const selectedStoreLowestStockLevelProductName =\n        selectedStoreInventory?.lowestStockLevelProductName\n    // selectedStoreStockLevel and selectedStoreInventory are already variant specific,\n    // so we don't need to check for variation attributes\n    const isSelectedStoreOutOfStock = !selectedStoreStockLevel || !selectedStoreInventory?.orderable\n    const selectedStoreUnfulfillable = selectedStoreStockLevel < quantity\n\n    // Use appropriate inventory based on pickup/delivery selection\n    const currentStockLevel = pickupInStore ? selectedStoreStockLevel : stockLevel\n    const currentLowestStockLevelProductName = pickupInStore\n        ? selectedStoreLowestStockLevelProductName\n        : lowestStockLevelProductName\n    const currentIsOutOfStock = pickupInStore ? isSelectedStoreOutOfStock : isOutOfStock\n    const currentUnfulfillable = pickupInStore ? selectedStoreUnfulfillable : unfulfillable\n\n    const inventoryMessages = {\n        [OUT_OF_STOCK]: intl.formatMessage({\n            defaultMessage: 'Out of stock',\n            id: 'use_product.message.out_of_stock'\n        }),\n        [UNFULFILLABLE]: currentLowestStockLevelProductName\n            ? intl.formatMessage(\n                  {\n                      defaultMessage: 'Only {stockLevel} left for {productName}!',\n                      id: 'use_product.message.inventory_remaining_for_product'\n                  },\n                  {stockLevel: currentStockLevel, productName: currentLowestStockLevelProductName}\n              )\n            : intl.formatMessage(\n                  {\n                      defaultMessage: 'Only {stockLevel} left!',\n                      id: 'use_product.message.inventory_remaining'\n                  },\n                  {stockLevel: currentStockLevel}\n              )\n    }\n\n    // showInventoryMessage controls if add to cart button is disabled\n    const showInventoryMessage =\n        (variant || isProductABundle || isStandardProduct) &&\n        (currentIsOutOfStock || currentUnfulfillable)\n    const inventoryMessage =\n        (currentIsOutOfStock && inventoryMessages[OUT_OF_STOCK]) ||\n        (currentUnfulfillable && inventoryMessages[UNFULFILLABLE])\n\n    // If the `initialQuantity` changes, update the state. This typically happens\n    // when either the master product changes, or the inventory of the product changes\n    // from out-of-stock to in-stock or vice versa.\n    useEffect(() => {\n        setQuantity(initialQuantity)\n    }, [initialQuantity])\n\n    // Lump the out of stock/unfulfillable checks together for easier consumption\n    return {\n        showLoading,\n        showInventoryMessage,\n        inventoryMessage,\n        variationAttributes,\n        quantity,\n        minOrderQuantity,\n        stepQuantity,\n        variationParams,\n        setQuantity,\n        variant,\n        stockLevel,\n        isOutOfStock,\n        unfulfillable,\n        isSelectedStoreOutOfStock: isSelectedStoreOutOfStock || selectedStoreUnfulfillable,\n        selectedStore\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Flex, Text, Stack} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {CheckCircleIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {validatePassword} from '@salesforce/retail-react-app/app/utils/password-utils'\n\n/**\n * UI component for styling password requirement line\n */\nconst PasswordRequirement = ({isValid, children}) => {\n    const iconStyles = {\n        display: 'block',\n        ml: isValid ? '-2px' : '-1px',\n        mr: isValid ? '9px' : '10px',\n        boxSize: isValid ? 4 : '14px',\n        color: isValid ? 'green.500' : 'white',\n        border: !isValid ? '1px solid' : 'none',\n        borderColor: 'gray.200',\n        borderRadius: 'full'\n    }\n    return (\n        <Flex align=\"center\">\n            <CheckCircleIcon {...iconStyles} />\n            <Text fontSize=\"sm\" lineHeight={4}>\n                {children}\n            </Text>\n        </Flex>\n    )\n}\n\nPasswordRequirement.propTypes = {\n    /** Should it render in valid state */\n    isValid: PropTypes.bool,\n\n    /** The requirement text */\n    children: PropTypes.any\n}\n\n/**\n * Renders a list of password requirments. Each requirement line toggles to its `isValid`\n * state when the given password value meets the associated critieria.\n */\nconst PasswordRequirements = ({value}) => {\n    const pwValidations = validatePassword(value)\n\n    return (\n        <Stack spacing={2}>\n            <PasswordRequirement isValid={pwValidations.hasMinChars}>\n                <FormattedMessage\n                    id=\"password_requirements.error.eight_letter_minimum\"\n                    defaultMessage=\"8 characters minimum\"\n                    description=\"Password requirement\"\n                />\n            </PasswordRequirement>\n            <PasswordRequirement isValid={pwValidations.hasUppercase}>\n                <FormattedMessage\n                    id=\"password_requirements.error.one_uppercase_letter\"\n                    defaultMessage=\"1 uppercase letter\"\n                    description=\"Password requirement\"\n                />\n            </PasswordRequirement>\n            <PasswordRequirement isValid={pwValidations.hasLowercase}>\n                <FormattedMessage\n                    id=\"password_requirements.error.one_lowercase_letter\"\n                    defaultMessage=\"1 lowercase letter\"\n                    description=\"Password requirement\"\n                />\n            </PasswordRequirement>\n            <PasswordRequirement isValid={pwValidations.hasNumber}>\n                <FormattedMessage\n                    defaultMessage=\"1 number\"\n                    description=\"Password requirement\"\n                    id=\"password_requirements.error.one_number\"\n                />\n            </PasswordRequirement>\n            <PasswordRequirement isValid={pwValidations.hasSpecialChar}>\n                <FormattedMessage\n                    id=\"password_requirements.error.one_special_character\"\n                    defaultMessage=\"1 special character (example: , S ! % #)\"\n                    description=\"Password requirement\"\n                />\n            </PasswordRequirement>\n        </Stack>\n    )\n}\n\nPasswordRequirements.propTypes = {\n    /** The password to check against */\n    value: PropTypes.string\n}\n\nexport default PasswordRequirements\n","import {useContext, useMemo} from 'react'\nimport {AmplienceContext} from '../contexts/amplience'\n\n/**\n * Centralized hook for extracting and normalizing the effective date/time\n * from AmplienceContext preview state.\n *\n * Reads `previewEffectiveDateTime` (which already handles __siteDate, effectiveDateTime, timestamp\n * query param aliases) and converts it to an ISO 8601 string suitable for SFCC/DOL API calls.\n *\n * @returns {{ effectiveDate: string|undefined, isPreviewMode: boolean }}\n */\nexport const useEffectiveDateTime = () => {\n    const {\n        previewEffectiveDateTime,\n        previewSourceCode,\n        previewCustomerGroup,\n        isPreviewMode,\n        isPreviewResetPending,\n        previewStatus,\n        setPreviewStatus\n    } = useContext(AmplienceContext) ?? {}\n\n    const effectiveDate = useMemo(() => {\n        if (!isPreviewMode || !previewEffectiveDateTime) return undefined\n\n        const raw = previewEffectiveDateTime\n        const withoutMilliseconds = (value) => value.replace(/\\.\\d+(?=Z$|[+-]\\d{2}:\\d{2}$)/, '')\n\n        // Already ISO 8601 with timezone (e.g. \"2025-11-12T10:00:00Z\" or \"2025-11-12T10:00:00.000Z\")\n        if (\n            /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/.test(raw) &&\n            (raw.endsWith('Z') || /[+-]\\d{2}:\\d{2}$/.test(raw))\n        ) {\n            return withoutMilliseconds(raw)\n        }\n\n        // datetime-local format from toolbar input (e.g. \"2025-11-12T10:00\")\n        if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/.test(raw)) {\n            return `${raw}:00Z`\n        }\n\n        // Date-only (e.g. \"2025-11-12\")\n        if (/^\\d{4}-\\d{2}-\\d{2}$/.test(raw)) {\n            return `${raw}T00:00:00Z`\n        }\n\n        // Epoch milliseconds\n        if (/^\\d{13}$/.test(raw)) {\n            return withoutMilliseconds(new Date(Number(raw)).toISOString())\n        }\n\n        // Epoch seconds\n        if (/^\\d{10}$/.test(raw)) {\n            return withoutMilliseconds(new Date(Number(raw) * 1000).toISOString())\n        }\n\n        // Fallback: attempt Date parse\n        const parsed = new Date(raw)\n        if (!isNaN(parsed.getTime())) {\n            return withoutMilliseconds(parsed.toISOString())\n        }\n\n        return undefined\n    }, [previewEffectiveDateTime])\n\n    return {\n        effectiveDate,\n        sourceCode: previewSourceCode || undefined,\n        customerGroup: previewCustomerGroup || undefined,\n        isPreviewMode,\n        isPreviewResetPending: !!isPreviewResetPending,\n        previewStatus,\n        setPreviewStatus\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"brand-logo-footer\",\n  \"use\": \"brand-logo-footer-usage\",\n  \"viewBox\": \"0 0 160 33\",\n  \"content\": \"<symbol viewBox=\\\"0 0 160 33\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"brand-logo-footer\\\">\\n<path d=\\\"M3.67421 20.7107H8.24502C9.53791 20.7107 10.3563 20.5325 11.0746 20.0937C12.1759 19.4334 12.8376 18.1865 12.8376 16.7614C12.8376 15.3364 12.1803 14.0852 11.0746 13.4291C10.3563 12.9903 9.53791 12.8122 8.24502 12.8122H3.67421V20.715V20.7107ZM-0.291504 32.0196V9.11495H8.37562C9.92098 9.11495 11.3271 9.36259 12.4371 9.83181C15.2057 11.0657 16.9296 13.7202 16.9296 16.7571C16.9296 19.794 15.2057 22.4442 12.4328 23.6824C11.3271 24.1516 9.92098 24.3992 8.37562 24.3992H3.67421V32.0196H-0.291504Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M24.5519 19.555L22.9848 23.6867H30.5636L28.9965 19.555C28.1433 17.2958 26.8112 13.8549 26.8112 13.8549H26.7328C26.7328 13.8549 25.4008 17.2958 24.5476 19.555M33.7458 32.0196L31.9871 27.384H21.57L19.8113 32.0196H15.5409L24.7522 9.11495H28.9399L38.1512 32.0196H33.7458Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M57.379 32.0196L48.5944 20.1198L45.1858 15.5449V32.0196H41.2201V9.11495H45.2207L54.0097 21.0148L57.4182 25.5853V9.11495H61.3796V32.0196H57.379Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M70.273 28.2616H73.7338C76.2891 28.2616 78.1914 27.8097 79.554 26.88C81.5346 25.5375 82.636 23.2392 82.5707 20.5673C82.636 17.9041 81.5346 15.6014 79.554 14.2589C78.1914 13.3292 76.2847 12.8774 73.7338 12.8774H70.273V28.2659V28.2616ZM66.3117 32.0196V9.11495H73.9036C77.3817 9.11495 80.3245 9.94042 82.414 11.5045C85.2043 13.5508 86.7367 16.7658 86.7367 20.5673C86.7367 24.3688 85.2 27.5838 82.414 29.6258C80.3245 31.1898 77.3817 32.0153 73.9036 32.0153H66.3117V32.0196Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M101.577 12.343C96.9361 12.343 93.5667 15.8013 93.5667 20.5673C93.5667 25.3333 96.9361 28.7916 101.577 28.7916C106.217 28.7916 109.586 25.3333 109.586 20.5673C109.586 15.8013 106.217 12.343 101.577 12.343ZM101.577 32.5497C94.6376 32.5497 89.4051 27.397 89.4051 20.5673C89.4051 13.7376 94.6376 8.58491 101.577 8.58491C108.515 8.58491 113.748 13.7333 113.748 20.5673C113.748 27.4013 108.515 32.5497 101.577 32.5497Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M126.281 20.7107C127.574 20.7107 128.392 20.5325 129.11 20.0937C130.212 19.4334 130.869 18.1865 130.869 16.7614C130.869 15.3364 130.212 14.0852 129.106 13.4248C128.388 12.986 127.569 12.8079 126.276 12.8079H121.174V20.7107H126.281ZM130.878 32.0196L126.494 24.3992H121.179V32.0196H117.213V9.11495H126.411C127.961 9.11495 129.363 9.36259 130.473 9.83181C133.241 11.0657 134.965 13.7202 134.965 16.7571C134.965 19.794 133.368 22.1357 130.699 23.4173L130.56 23.4825L135.522 32.0153H130.873L130.878 32.0196Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M146.109 19.555L144.542 23.6867H152.121L150.554 19.555C149.701 17.2958 148.369 13.8549 148.369 13.8549H148.29C148.29 13.8549 146.958 17.2958 146.105 19.555M155.303 32.0196L153.544 27.384H143.127L141.369 32.0196H137.098L146.309 9.11495H150.497L159.708 32.0196H155.303Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M102.399 6.7906C102.399 6.32572 102.007 5.96947 101.577 5.96947C101.111 5.96947 100.719 6.32572 100.719 6.7906C100.719 7.29022 101.111 7.64648 101.577 7.64648C102.003 7.64648 102.399 7.29022 102.399 6.7906Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M101.446 0L100.802 5.03104H102.317L101.711 0H101.446Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M104.763 6.7906C104.763 6.32572 104.371 5.96947 103.94 5.96947C103.475 5.96947 103.083 6.32572 103.083 6.7906C103.083 7.29022 103.475 7.64648 103.94 7.64648C104.367 7.64648 104.763 7.29022 104.763 6.7906Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M105.577 0L103.405 5.03104H104.963L105.843 0H105.577Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M98.3596 6.7906C98.3596 7.29022 98.7513 7.64648 99.1823 7.64648C99.6481 7.64648 100.04 7.29022 100.04 6.7906C100.04 6.32572 99.6481 5.96947 99.1823 5.96947C98.7557 5.96947 98.3596 6.32572 98.3596 6.7906Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M97.2756 0L98.1593 5.03104H99.7134L97.5455 0H97.2756Z\\\" fill=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"mandalorian_black\",\n  \"use\": \"mandalorian_black-usage\",\n  \"viewBox\": \"0 0 512 113\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 113\\\" id=\\\"mandalorian_black\\\"><path d=\\\"M287.2,10.1H512v3.1H287.2V10.1z M270.4,4.8h10.4v3.3h-10.4V10h10.3v3.2h-14.4V0h14.5v3.1h-10.4V4.8z M257.7,8.2h-8.6v5 h-4.1V0h4.1v4.7h8.6V0h4.1v13.2h-4.1V8.2z M235.4,13.2h-4.1V3.3h-5.7V0h15.5v3.3h-5.7V13.2z M0,10.1h224.8v3.1H0V10.1z M199,108.4 c-3.2,2.9-7.7,4.6-12.4,4.6h-26.1v-4.6v-0.9v-0.3v-0.6v-0.1v-0.4v-0.3v-0.2v-0.7v-1.5V27.2h25.7c11.5,0,17.9,7.1,17.9,17.5v52.5 c0,2.2-0.5,4.2-1.3,6.1c0,0-0.7,1.3-0.9,1.6c-0.1,0.2-0.3,0.4-0.4,0.6l-0.3,0.4c0,0.1-0.1,0.1-0.1,0.2l-0.2,0.2 c0,0.1-0.1,0.1-0.1,0.2l-0.8,0.9c-0.1,0.1-0.1,0.1-0.2,0.2L199,108.4z M391.8,108.5l1.6,4.3h-15.8l-1.6-4.5l-0.4-1.1l-0.2-0.5 l-0.7-1.9l-0.3-0.9l-8.7-24.5V61l8.3,0V43h-11.6v60.6v1.3v1.8v0.5v0.2v1.1v4.4h-16v-4.4v-1.1V107v-0.4v-1.7l0-1.1 c0,0,0-76.7,0-76.7h30.8c11.9,0,12.8,4.3,12.8,9.8v26.7c0,5.4-1.1,13.1-7.9,13.1h-2.1l10.1,27.3l0.3,0.8l0.6,1.8l0.2,0.4l0.2,0.5 L391.8,108.5z M465.3,104.9l1.8,8.1h-16.6l-1.6-8.1l-0.4-2l-8.2-41.6l-8.5,42.7l-0.2,0.9l-1.6,8.1h-16.4l1-4.7l0.1-0.3l0.7-3.1 l0.1-0.6l0-0.2L432,27.2h16.5l16.5,76L465.3,104.9z M512,104.9v3.4v0.6v4.1h-12.8l-3.3-8.1l-1.2-3l-11-26.8v28.1v1.7v8.1h-15.3 v-8.1v-1.7V27.2h12.2l16.2,40.5V27.2H512v71.3V104.9z M411.9,104.9v8.1h-16v-4.5v-0.8v-0.4v-0.7v-1.7V104V27.2h16v77.2V104.9z M211.7,92.8L211.7,92.8C211.7,92.8,211.7,92.8,211.7,92.8z M206.9,106.5C207,106.5,207,106.5,206.9,106.5 C207,106.5,206.9,106.5,206.9,106.5C206.9,106.5,206.9,106.5,206.9,106.5z M254.5,104.9l0.4,1.8l0.1,0.6l0.1,0.5l0.2,0.9l1,4.4 h-16.7l-10.2-51.8L219,113h-16.3l1-4.5l0.2-1.1l0.1-0.3l0.1-0.4l0-0.2l0.1-0.4l0-0.2l0.1-0.2l0.1-0.7l0.4-1.7l16.4-76h16.5 l16.4,75.7L254.5,104.9z M257.6,106.2v-1.3v-1.7v-76h16v69.9h20.3v7.3v0.5v0.6v0.3v0.3v0.4v0.2v0.6v0.1v1v4.6h-36.3v-4.6v-0.7v-0.6 v-0.5v-0.3V106.2z M297.4,106.1c0-0.1,0-0.2,0-0.2 M185.3,43.1h-8.9v54h8.1c1.6,0,3.4-0.9,3.4-2.6V45.8 C188,44.1,187,43.1,185.3,43.1z M106.8,104.8l0.1,0.6l0.1,0.3l0.1,0.2l0,0.2l0.1,0.5l0.1,0.6l0,0.2l0.2,0.8l1,4.7H91.9l-0.8-3.8 l-0.3-1.6l-0.1-0.4l-0.1-0.7l-0.1-0.6l0-0.1l-0.2-0.9l-0.2-1.2l-8.4-42.5l-8.5,42.3l-0.3,1.3l-0.1,0.6l-0.1,0.7l-0.1,0.4l-0.1,0.4 l-0.1,0.3l-0.2,1.2l-0.9,4.5H54.9l0.9-4.4l0.2-0.9l0.1-0.4l0.2-0.8l0-0.1l0.2-0.7l0.1-0.6l0.3-1.2L73.4,27h16.5l16.5,76.3 L106.8,104.8z M37.8,107.6v-0.3v-0.8v-0.2V106v-0.1v-0.3v0v-0.8v-1.2V69.9l-11,24.5L15.3,69.9v32.9v2.1v0.6v0.2v0.3v0.2v0.6v0.5 v0.5v0.8v4.4H0v-4.4v-0.8v-0.5v-0.6v-1.7v-2.2V27h14l12.4,30.8L39.5,27h13.2l0,77c0,0,0-0.3,0-0.3l0,1.2v0.7v0.4v0.1v0.3v0.2v0.5 v0.3v1.2v4.3H37.8v-4.4V107.6z M153.7,105.6v0.5 M137.1,103.8L125.3,75v28.6v1.2v0.7v1.6v0.2v0.9v4.6h-15.3v-4.4v-0.9v-0.4v-0.5 v-0.3v-0.2v-0.4v-0.2v-0.7V104V27.1h12.2l16.3,40.4V27.1h15.2v76.4v1.4v0.7v0.7v0.4v0.6v0.4v0.7v4.4h-12.8l-1.8-4.4l-0.4-0.9 l-0.2-0.5l-0.2-0.6l-0.1-0.3l-0.1-0.2l-0.5-1.2L137.1,103.8z M340.1,108.4c0,0.1,0,0.1-0.1,0.2c0,0,0,0,0,0c0,0,0,0,0,0 c-1.4,3.3-4.6,4.4-10.6,4.4h-21.8c-5.4,0-8.2-1.2-9.5-4.4c-0.2-0.5-0.4-1.3-0.4-1.3c0,0,0-0.1,0-0.1l-0.1-0.6c0-0.1,0-0.3-0.1-0.4 l0-0.4c0-0.3-0.1-0.6-0.1-1l0-0.4c0-0.4,0-0.9,0-1.3V37.7c0-7.4,3.1-10.5,11.3-10.5h21.1c8.4,0,11.2,2.7,11.2,9.8v66.1 c0,0.4,0,0.8,0,1.2l0,0.7c0,0.3,0,0.5-0.1,0.7l0,0.1c0,0.1,0,0.2,0,0.4l0,0.2c0,0.1,0,0.2-0.1,0.3l-0.1,0.3c0,0.1-0.1,0.2-0.1,0.4 C340.4,107.4,340.3,108,340.1,108.4z M324.9,43.1h-11.6v54h11.6V43.1z\\\" /><polyline points=\\\"204,106.3 204.2,105.5 204.3,104.9 204.6,103.7 221.1,27.2 237.6,27.2 254.2,103.4 254.5,104.9 254.6,105.5 254.7,105.7 254.7,106 254.8,106.2 254.9,106.7 255,107.3 255,107.5 255.2,108.3 256.2,113 239.6,113 238.8,109.2 238.5,107.6 238.4,107.1 238.3,106.5 238.2,105.9 238.2,105.8 238,104.9 237.8,103.7 229.3,61.2 220.9,103.6 220.6,104.9 220.5,105.5 220.3,106.2 220.3,106.6 220.2,107 220.1,107.3 219.9,108.5 219,113 202.6,113 203.5,108.6 203.7,107.7 203.8,107.2 204,106.4 204,106.3\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Get a list of custom key starting with c_\n **/\nexport const getCustomKeys = (obj) => {\n    if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n        throw new Error('Invalid input. Expecting an object as an input.')\n    }\n\n    return Object.keys(obj).filter((key) => key.startsWith('c_'))\n}\n","/**\n * Prior-URL bookkeeping for the Bloomreach pixel's `br_data.explicit_referrer` (FIND-6732).\n *\n * Bloomreach cannot derive a referrer itself on SPA navigations: `document.referrer` only ever\n * reflects the document that loaded the app, so every virtual pageview after the entry page would\n * otherwise report the entry page. The pixel therefore needs `br_prior_url` — the page the user\n * was on before the page being tracked — which advances only on an actual navigation.\n *\n * Two globals are kept:\n *   - `window.__BR_EXPLICIT_CURRENT_URL__`: the URL of the page the pixel is currently tracking.\n *   - `window.__BR_EXPLICIT_PRIOR_URL__`: the URL of the page before it (`br_prior_url`).\n *\n * This is deliberately separate from `window.__BR_PRIOR_REFERRER__`, which holds the *current* page\n * URL after a pageview and feeds the Discovery API `ref_url` (see `utils/get-ref-url.js`,\n * FIND-5648). Reusing that global would change its meaning for the search/suggest requests too;\n * FIND-6732 requires the Discovery `referringUrl` behaviour to stay unchanged.\n */\n\n/**\n * Advances the prior/current URL pair for the page being tracked and returns the value to send as\n * `br_data.explicit_referrer`.\n *\n * - First pageview of the session: no prior page is known, so `document.referrer` is used (the\n *   external entry referrer), matching `explicit_referrer = document.referrer || ''` in the spec.\n * - Subsequent pageviews on a new URL: the page that was being tracked becomes the prior page.\n * - Repeated pageviews for the same URL (PLP sort/reset filters, dual VIEW_CATEGORY + VIEW_SEARCH):\n *   nothing advances, so the real previous page is preserved instead of being replaced by the\n *   page's own URL or by a stale `document.referrer`.\n *\n * @returns {string} the previous page URL, `document.referrer` when there is none, otherwise ''\n */\nexport const resolveExplicitReferrer = () => {\n    if (typeof window === 'undefined') {\n        return ''\n    }\n\n    const currentHref = window.location.href\n\n    if (window.__BR_EXPLICIT_CURRENT_URL__ !== currentHref) {\n        window.__BR_EXPLICIT_PRIOR_URL__ =\n            window.__BR_EXPLICIT_CURRENT_URL__ || document.referrer || ''\n        window.__BR_EXPLICIT_CURRENT_URL__ = currentHref\n    }\n\n    return window.__BR_EXPLICIT_PRIOR_URL__ || ''\n}\n","import {useCallback, useRef} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {usePixel} from '@salesforce/retail-react-app/app/contexts'\n\nimport {PIXEL_CONSTANTS} from '../constants'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {resolveExplicitReferrer} from '../utils/br-explicit-referrer'\nimport {\n    logPageView,\n    logAddToCartEvent,\n    logSuggestClickEvent,\n    logSuggestSubmitEvent\n} from './helpers/pixel-debounce'\n\n/**\n * Custom hook `usePixelAnalytics` for tracking various user interactions and page views\n * using pixel analytics. It constructs payloads based on event types and logs them\n * using the pixel tracker. Supported events include product views, category views,\n * search results, conversions, add to cart actions, search events, suggestions,\n * widget views, and widget clicks. The hook utilizes configuration settings and\n * constants to ensure accurate data tracking and logging.\n *\n * @returns {Function} trackPageView - A function to log page views and events\n * based on the provided data.\n */\nexport const usePixelAnalytics = () => {\n    const {\n        locale: {id}\n    } = useMultiSite()\n    const hasExecutedRef = useRef(false) // Ref to track execution status\n\n    const {site: siteConfig} = useMultiSite()\n    const {\n        pixel: {domain_key = []}\n    } = siteConfig\n    const {PAGETYPE, EVENT_TYPES, EVENT} = PIXEL_CONSTANTS\n\n    // Get setInitialPageView and LD flag from pixel context\n    // This allows us to defer pixel loading until we have the correct ptype\n    const {setInitialPageView, isDeferredPixelLoadingEnabled, isPixelInitialized} = usePixel()\n\n    // LD flag to control whether explicit_referrer is attached to page view payloads\n    const isExplicitReferrerEnabled = useVariant(LD_KEYS.enableBrExplicitReferrer, false)\n\n    // LD flag to control the pending payload handling (see PixelProvider.setInitialPageView)\n    const isPendingPayloadUpdateEnabled = useVariant(LD_KEYS.enablePixelPendingPayloadUpdate, false)\n\n    const getKeyByLocaleId = (localeId) => {\n        const match = domain_key?.find((item) => item.id === localeId)\n        return match ? match.key : null\n    }\n\n    const waitForPixel = () =>\n        new Promise((resolve) => {\n            const checkPixelLoaded = () => {\n                if (window.BrTrk?.getTracker()) {\n                    resolve(window.BrTrk?.getTracker())\n                } else {\n                    setTimeout(checkPixelLoaded, 400)\n                }\n            }\n\n            checkPixelLoaded()\n        })\n\n    // When the LD flag is on: stamp the previous page URL onto the payload. The prior/current\n    // pair advances only when the URL actually changed, so repeated page views for the same URL\n    // (PLP sort/reset filters, dual VIEW_CATEGORY + VIEW_SEARCH) keep reporting the real previous\n    // page instead of the page itself or a stale document.referrer.\n    // When the LD flag is off (old behavior): pass the payload through unchanged.\n    const withExplicitReferrer = useCallback(\n        (payload) =>\n            isExplicitReferrerEnabled\n                ? {...payload, explicit_referrer: resolveExplicitReferrer()}\n                : payload,\n        [isExplicitReferrerEnabled]\n    )\n\n    // Helper to handle page view events - either sets initial payload or logs directly\n    const handlePageViewEvent = useCallback(\n        (payload) => {\n            const payloadWithReferrer = withExplicitReferrer(payload)\n\n            // Capture the current page URL as the prior referrer immediately, before the debounced\n            // pixel fires. This ensures ref_url is available for the next page's search request\n            // without waiting for the debounce (Discovery API behaviour, unchanged by FIND-6732).\n            window.__BR_PRIOR_REFERRER__ = window.location.href\n\n            // When deferred loading is disabled (LD flag off), use old behavior: always call logPageView\n            if (!isDeferredPixelLoadingEnabled) {\n                waitForPixel().then(() => {\n                    logPageView(payloadWithReferrer)\n                })\n                return\n            }\n\n            // When deferred loading is enabled (LD flag on):\n            // Check if pixel is already loaded (indicates subsequent page navigation)\n            // If loaded, call logPageView directly. If not, call setInitialPageView to trigger pixel loading.\n            if (window.BrTrk?.getTracker()) {\n                // Pixel already loaded - this is a subsequent page view, log directly\n                logPageView(payloadWithReferrer)\n            } else if (isPendingPayloadUpdateEnabled && isPixelInitialized) {\n                // The pixel script has loaded but Bloomreach hasn't created its tracker yet, so\n                // there is no auto-fired page view left to carry this payload and\n                // setInitialPageView no longer accepts it. Wait for the tracker instead of\n                // dropping the page view.\n                waitForPixel().then(() => {\n                    logPageView(payloadWithReferrer)\n                })\n            } else {\n                // Pixel not loaded - this is the first page view, set initial payload\n                // The PixelScript will load with this payload and Bloomreach will auto-fire the page view\n                setInitialPageView(payloadWithReferrer)\n            }\n        },\n        [\n            setInitialPageView,\n            isDeferredPixelLoadingEnabled,\n            withExplicitReferrer,\n            isPendingPayloadUpdateEnabled,\n            isPixelInitialized\n        ]\n    )\n\n    const handleAnalyticsEvent = useCallback(\n        (data) => {\n            if (typeof window === 'undefined' || !domain_key) {\n                return\n            }\n\n            let payload\n            switch (data.event) {\n                case EVENT_TYPES.HOME_PAGE_VIEW:\n                    payload = {\n                        ptype: PAGETYPE.HOME_PAGE,\n                        sid: undefined,\n                        url: window.location.href,\n                        orig_ref_url: window.location.href\n                    }\n                    handlePageViewEvent(payload)\n                    break\n                case EVENT_TYPES.VIEW_PRODUCT:\n                    payload = {\n                        ptype: PAGETYPE.PRODUCT,\n                        prod_id: data.pid,\n                        prod_name: data.title,\n                        sku: data.pid,\n                        url: window.location.href,\n                        orig_ref_url: window.location.href\n                    }\n                    handlePageViewEvent(payload)\n                    return\n                case EVENT_TYPES.VIEW_CATEGORY:\n                    payload = {\n                        ptype: PAGETYPE.PRODUCT_CATEGORY,\n                        cat_id: data.cat_id,\n                        cat: data.cat_crumb,\n                        sid: undefined,\n                        url: data.url || window.location.href,\n                        orig_ref_url: window.location.href\n                    }\n                    handlePageViewEvent(payload)\n                    return\n                case EVENT_TYPES.VIEW_SEARCH:\n                    payload = {\n                        ptype: PAGETYPE.SEARCH_RESULT,\n                        search_term: data.query,\n                        sid: undefined,\n                        url: data.url || window.location.href\n                    }\n                    handlePageViewEvent(payload)\n                    return\n                case EVENT_TYPES.VIEW_CONVERSION:\n                    payload = {\n                        ptype: PAGETYPE.CONVERSION,\n                        is_conversion: 1,\n                        basket_value: data.cartTotal,\n                        order_id: data.orderId,\n                        currency: data.currency,\n                        orig_ref_url: window.location.href,\n                        basket: {\n                            items: data.cart.map((item) => {\n                                // Apply masterId and __generated suffix logic for conversion tracking\n                                const masterId = item.masterId\n                                const productId = item.id\n                                let prod_id = masterId || productId\n                                let sku = productId\n\n                                // Add __generated suffix for simple/master products (when prod_id === sku)\n                                if (prod_id === sku) {\n                                    sku = `${productId}__generated`\n                                }\n\n                                return {\n                                    prod_id: prod_id,\n                                    sku: sku,\n                                    name: item.title,\n                                    quantity: item.count,\n                                    price: item.price\n                                }\n                            })\n                        }\n                    }\n\n                    handlePageViewEvent(payload)\n                    return\n                case EVENT_TYPES.ADD_TO_CART:\n                    // Events inherit explicit_referrer from window.br_data, which only carries\n                    // this page's value once the debounced page view has fired. Stamp it here so\n                    // an event firing inside that window doesn't report the previous page's\n                    // referrer.\n                    payload = withExplicitReferrer({\n                        prod_id: data.pid,\n                        sku: data.sku_id || data.pid,\n                        url: window.location.href,\n                        orig_ref_url: window.location.href,\n                        ...(data.prod_collection_id && {\n                            prod_collection_id: data.prod_collection_id\n                        })\n                    })\n\n                    // For product sets, fire events immediately without debouncing\n                    // to ensure all child products are tracked\n                    if (data.prod_collection_id) {\n                        waitForPixel().then((tracker) => {\n                            const finalPayload = {...window.br_data, ...payload}\n                            tracker.logEvent(\n                                EVENT.ADDTOCART.GROUP.CART,\n                                EVENT.ADDTOCART.ACTION_TYPE.CLICK_ADD,\n                                finalPayload\n                            )\n                        })\n                    } else {\n                        logAddToCartEvent(payload)\n                    }\n                    return\n                case EVENT_TYPES.SEARCH:\n                    payload = withExplicitReferrer({\n                        q: data.query,\n                        catalogs: [{name: getKeyByLocaleId(id)}],\n                        sid: undefined,\n                        url: data.url || window.location.href,\n                        orig_ref_url: window.location.href\n                    })\n                    window.br_data = {...window.br_data, ...payload}\n                    logSuggestSubmitEvent(payload)\n                    break\n                case EVENT_TYPES.SUGGEST:\n                    payload = withExplicitReferrer({\n                        aq: data.userQuery,\n                        q: data.query,\n                        catalogs: [{name: getKeyByLocaleId(id)}],\n                        sid: undefined,\n                        url: data.url || window.location.href,\n                        orig_ref_url: window.location.href\n                    })\n                    window.br_data = {...window.br_data, ...payload}\n                    logSuggestClickEvent(payload)\n                    hasExecutedRef.current = true // Update the ref value\n                    break\n                default:\n                    console.log('[useAnalytics] unknown event', data)\n                    return\n            }\n        },\n        [\n            handlePageViewEvent,\n            withExplicitReferrer,\n            domain_key,\n            EVENT_TYPES,\n            PAGETYPE,\n            EVENT,\n            getKeyByLocaleId,\n            id\n        ]\n    )\n\n    const waitForPixelTrackEvents = () => {\n        return new Promise((resolve) => {\n            resolve()\n            const interval = setInterval(() => {\n                if (hasExecutedRef.current) {\n                    // Check the ref value\n                    clearInterval(interval)\n                    resolve()\n                }\n            }, 300)\n        })\n    }\n\n    return {handleAnalyticsEvent, waitForPixelTrackEvents}\n}\n\n/**\n * Extracts the search term from a given URL's path.\n *\n * The function parses the URL, splits the pathname into segments,\n * and returns the second-to-last segment as the search term.\n * If the URL does not have enough segments, it returns an empty string.\n *\n * @param {string} url - The URL from which to extract the search term.\n * @returns {string} The extracted search term or an empty string if not found.\n */\nconst searchTermFromUrl = (url) => {\n    const urlObj = new URL(url)\n    const pathSegments = urlObj.pathname.split('/').filter((segment) => segment.length > 0)\n\n    if (pathSegments.length < 2) {\n        return ''\n    }\n\n    return pathSegments[pathSegments.length - 2]\n}\n\n/**\n * Prepares a search term based on the suggestion type and URL.\n *\n * @param {string} suggestionType - The type of suggestion, which can be 'product', 'category', or 'phrase'.\n * @param {string} url - The URL from which to extract the search term.\n * @returns {string|null} - Returns the search term extracted from the URL based on the suggestion type.\n *                          Returns an empty string for unknown suggestion types or null if the query parameter is not found.\n */\nexport const prepareSearchTerm = (suggestionType, url) => {\n    switch (suggestionType) {\n        case 'product':\n            return searchTermFromUrl(url)\n        case 'category':\n            return url\n        case 'phrase':\n            return new URLSearchParams(url.split('?')[1]).get('q') || null\n        default:\n            return ''\n    }\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-cn\",\n  \"use\": \"flag-cn-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" id=\\\"flag-cn\\\">\\n    <g clip-path=\\\"url(#flag-cn_clip0)\\\">\\n        <g clip-path=\\\"url(#flag-cn_clip1)\\\">\\n            <path d=\\\"M32 4H4v18.667h28V4z\\\" fill=\\\"#EE1C25\\\" />\\n            <path d=\\\"M8.666 5.867l1.646 5.065-4.309-3.13h5.326l-4.308 3.13 1.645-5.065zM13.698 5.008l-.155 1.768-.914-1.522 1.634.695-1.73.398 1.165-1.34zM15.87 7.083l-.83 1.57-.25-1.758 1.235 1.275-1.749-.305 1.594-.782zM16.076 10.213l-1.398 1.095.488-1.707.609 1.667-1.473-.991 1.774-.064zM13.663 11.527L13.58 13.3l-.975-1.483 1.66.626-1.711.47 1.109-1.386z\\\" fill=\\\"#FF0\\\" />\\n        </g>\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 0H0v24h24V0zM12.5 21a8.5 8.5 0 100-17 8.5 8.5 0 000 17z\\\" fill=\\\"#fff\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"flag-cn_clip0\\\">\\n            <path fill=\\\"#fff\\\" d=\\\"M0 0h24v24H0z\\\" />\\n        </clipPath>\\n        <clipPath id=\\\"flag-cn_clip1\\\">\\n            <path fill=\\\"#fff\\\" transform=\\\"translate(4 4)\\\" d=\\\"M0 0h28v18.667H0z\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"like\",\n  \"use\": \"like-usage\",\n  \"viewBox\": \"0 0 30 28\",\n  \"content\": \"<symbol viewBox=\\\"0 0 30 28\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"like\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"m18.741 11.63 1.837-3.686c0.3732-0.73309 0.5566-1.5481 0.5333-2.3704v-0.46222c0-0.11826-0.0115-0.23382-0.0335-0.34562-1e-3 -0.00477-0.0019-0.00953-0.0029-0.01429-0.0141-0.06846-0.0321-0.13548-0.0538-0.20081-2e-4 -5.9e-4 -4e-4 -0.00118-6e-4 -0.00176-0.2353-0.70617-0.9017-1.2153-1.6869-1.2153h-0.166c-0.2525 0.00188-0.4762 0.16365-0.557 0.40296l-0.7111 2.1096c-0.2206 0.65833-0.7188 1.1868-1.363 1.4459l-0.5096 0.20148c-0.9303 0.38132-1.7178 1.0445-2.2518 1.8963l-1.446 2.3703c-0.4323 0.6918-1.1899 1.1125-2.0053 1.1141h-0.0095-1.0548v9.4815h0.69926c0.03816-5e-4 0.07624-5e-4 0.11434 0 1.0221 0.0144 2.0026 0.4159 2.742 1.1259 0.7573 0.7581 1.7847 1.1844 2.8562 1.1852h7.3956c0.9671-0.0039 1.8348-0.5949 2.1926-1.4933l1.2681-3.1645c0.335-0.841 0.5079-1.7377 0.5097-2.6429v-3.366c0-1.3091-1.0613-2.3703-2.3704-2.3703h-5.9259zm4.3071-2.6667h1.6188c2.7819 0 5.037 2.2552 5.037 5.037v3.3713c-0.0024 1.2413-0.2395 2.471-0.6988 3.6242l-0.0022 0.0054-1.266 3.1591c-3e-4 1e-3 -7e-4 0.0019-0.0011 0.0028-0.761 1.9076-2.6041 3.1623-4.6581 3.1705l-0.0108 1e-4h-7.3975c-1.7659-0.0013-3.4595-0.6988-4.7139-1.9403-0.2595-0.243-0.6032-0.3761-0.95906-0.3711l-0.01884 3e-4h-1.2169c-0.59762 0.6896-1.4799 1.1259-2.4642 1.1259h-2.3704c-1.8 0-3.2593-1.4592-3.2593-3.2593v-10.667c0-1.8001 1.4592-3.2593 3.2593-3.2593h2.3704c1.0395 0 1.9653 0.4866 2.5621 1.2444h1.294l1.3544-2.2204 0.0087-0.01386c0.8301-1.3239 2.054-2.3546 3.4998-2.9472l0.0155-0.00633 0.3842-0.15189 0.6689-1.9846c0.4446-1.3162 1.6745-2.206 3.0637-2.2163l0.0099-7.3e-5h0.1759c2.4546 0 4.4444 1.9898 4.4444 4.4444v0.4286c0.0269 1.1832-0.2234 2.3554-0.7299 3.4232zm-16.455 2.7459c-0.08716-0.0504-0.18836-0.0792-0.2963-0.0792h-2.3704c-0.32728 0-0.59259 0.2653-0.59259 0.5926v10.667c0 0.3273 0.26531 0.5926 0.59259 0.5926h2.3704c0.10794 0 0.20914-0.0288 0.2963-0.0793 0.17713-0.1024 0.2963-0.2939 0.2963-0.5133v-10.667c0-0.2194-0.11917-0.4109-0.2963-0.5134z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"grid\",\n  \"use\": \"grid-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"grid\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1 9.00024V1.00024H9V9.00024H1ZM2 2.00024H8V8.00024H2V2.00024Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M1 19.0002V11.0002H9V19.0002H1ZM2 12.0002H8V18.0002H2V12.0002Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 1.00024V9.00024H19V1.00024H11ZM18 2.00024H12V8.00024H18V2.00024Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 19.0002V11.0002H19V19.0002H11ZM12 12.0002H18V18.0002H12V12.0002Z\\\" fill=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useCallback, useContext} from 'react'\nimport {MultiSiteContext} from '@salesforce/retail-react-app/app/contexts'\n\n/**\n * Custom React hook to get the function that returns usefule multi-site values, the site, the locale and\n * the function used to build URLs following the App configuration.\n * @returns {{site, locale, buildUrl: (function(*, *, *): *)}}\n */\nconst useMultiSite = () => {\n    const context = useContext(MultiSiteContext)\n    if (context === undefined) {\n        throw new Error('useMultiSite must be used within MultiSiteProvider')\n    }\n    const {buildUrl: originalFn, site, locale} = context\n\n    const buildUrl = useCallback(\n        (path, siteRef, localeRef) => {\n            return originalFn(\n                path,\n                siteRef ? siteRef : site?.alias || site?.id,\n                localeRef ? localeRef : locale?.alias || locale?.id\n            )\n        },\n        [originalFn, site, locale]\n    )\n    return {site, locale, buildUrl}\n}\n\nexport default useMultiSite\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"visibility\",\n  \"use\": \"visibility-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"visibility\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21.9878 11.7C20.3582 7.61646 16.3881 4.95484 11.9939 5C7.629 4.97475 3.69114 7.61877 2.05997 11.67C2.02156 11.7758 2.00129 11.8874 2.00001 12C1.99948 12.1063 2.01986 12.2116 2.05997 12.31C3.68479 16.3691 7.62406 19.022 11.9939 19C16.3588 19.0252 20.2967 16.3812 21.9279 12.33C21.9706 12.2254 21.9911 12.113 21.9878 12C22.0041 11.9007 22.0041 11.7993 21.9878 11.7ZM11.9939 17C8.6124 16.9924 5.5333 15.0498 4.06875 12C5.52824 8.94598 8.61076 7.00199 11.9939 7.00199C15.3771 7.00199 18.4596 8.94598 19.9191 12C18.4545 15.0498 15.3754 16.9924 11.9939 17ZM8.99575 12C8.99575 10.3431 10.3381 9 11.9939 9C13.6498 9 14.9921 10.3431 14.9921 12C14.9921 13.6569 13.6498 15 11.9939 15C10.3381 15 8.99575 13.6569 8.99575 12Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {isProductOrderable} from 'pandora-shared-app/overrides/app/hooks/use-add-to-bag-flow/utils/orderability-helpers'\nimport {defaultCarouselConfig} from '../constants'\n\nexport const processProductIDs = (ids) => {\n    if (!ids || typeof ids !== 'string' || ids.trim() === '') {\n        return []\n    }\n\n    const uniqueIDs = ids.includes(',')\n        ? [\n              ...new Set(\n                  ids\n                      .split(',')\n                      .map((id) => id.trim())\n                      .filter(Boolean)\n              )\n          ]\n        : [ids.trim()]\n\n    return uniqueIDs.length > 0 ? uniqueIDs : []\n}\n\nexport const findImage = (imageGroups) => {\n    const imageGroup = imageGroups?.find((group) => group?.viewType === 'main_rect_base')\n    return imageGroup?.images?.[0] || null\n}\n\nexport function getSalePrice(productPromotions, price) {\n    // Check if productPromotions exists and is an array\n    if (productPromotions !== undefined && productPromotions !== null) {\n        // Loop through productPromotions to find the first valid promotionalPrice\n        for (let promo of productPromotions) {\n            if (promo.promotionalPrice) {\n                return promo.promotionalPrice\n            }\n        }\n    }\n    // Return the original price if no promotionalPrice is found or productPromotions doesn't exist\n    return price\n}\n\n// Build repeated custom fields for both c_extend.custom and custom\nconst buildCustomFields = (product) => ({\n    metalName: product?.c_metalName,\n    metalGroup: product?.c_metalGroup,\n    category: product?.c_primaryCategory,\n    size: product?.variants?.[0]?.variationValues?.size || null,\n    discount: 0,\n    // Click & Collect properties - using correct Einstein property names\n    availableForFindInStore:\n        product?.c_availableForFindInStore ??\n        product?.availableForFindInStore ??\n        product?.custom?.availableForFindInStore,\n    availableForInStorePickup:\n        product?.c_availableForInStorePickup ??\n        product?.availableForInStorePickup ??\n        product?.custom?.availableForInStorePickup,\n    // Other custom properties that might be needed\n    nonPurchasable: product?.c_nonPurchasable ?? product?.custom?.nonPurchasable ?? false,\n    status: product?.c_status ?? product?.custom?.status,\n    isSneakPeekProduct:\n        product?.c_isSneakPeekProduct ?? product?.custom?.isSneakPeekProduct ?? false,\n    isNotifyMe: product?.c_isNotifyMe ?? product?.custom?.isNotifyMe ?? false\n})\n\n/**\n * DOL by-ID responses carry no `productInStock` - the field only exists on search hits - so it is\n * derived from size / inventory orderability here. Without it the tile defaults to \"in stock\" and\n * offers Add to Bag for a product whose every size is sold out.\n * @param {object} product - a single product from the DOL `/products` response\n * @returns {object} tile-shaped product\n */\nexport const transformProduct = (product) => ({\n    currency: product?.currency,\n    hitType: product?.type?.master ? 'master' : '',\n    productId: product?.id,\n    productName: product?.name,\n    productType: product?.type,\n    variationAttributes: product?.variationAttributes || [],\n    variants: product?.variants || [],\n    c_extend: {\n        custom: buildCustomFields(product),\n        recommendation: {},\n        isLowInventory: false,\n        isNew: false,\n        isEngravable: product?.isEngravable || product?.c_engravable,\n        variants: product?.variants || [],\n        productUrl: product?.slugUrl || product?.c_slugUrl,\n        inventory: product?.inventory,\n        priceInfo: product?.c_extend?.priceInfo,\n        productInStock: isProductOrderable(product)\n    },\n    representedProduct: {\n        id: product?.variants?.[0]?.productId || null\n    },\n    price: product?.price,\n    salePrice: getSalePrice(\n        product?.productPromotions ? product.productPromotions : null,\n        product?.price\n    ),\n    pricePerUnit: product?.pricePerUnit,\n    orderable: product?.orderable,\n    primaryImage: findImage(product?.imageGroups),\n    // Add properties needed for BuyFromTile filtering\n    isEngravable: product?.isEngravable || product?.c_engravable,\n    giftCardType: product?.giftCardType,\n    stylingStudio: product?.stylingStudio,\n    custom: buildCustomFields(product),\n    // The tile reads the Notify Me capability off the root product, not off `custom`.\n    isNotifyMe: buildCustomFields(product).isNotifyMe\n})\n\nexport const handleClick = (product) => {\n    const productUrl = product?.c_extend?.productUrl || ''\n\n    // Ensure the product URL exists before proceeding\n    if (!productUrl) {\n        console.error('No product URL available')\n        return\n    }\n\n    window.location.href = productUrl\n}\n\nexport const mergeCarouselConfig = (customConfig = {}, defaultConfig = defaultCarouselConfig) => {\n    const allBreakpointKeys = new Set([\n        ...Object.keys(defaultConfig.breakpoints || {}),\n        ...Object.keys(customConfig.breakpoints || {})\n    ])\n\n    const mergedBreakpoints = [...allBreakpointKeys].reduce((acc, key) => {\n        acc[key] = {\n            ...(defaultConfig.breakpoints?.[key] || {}),\n            ...(customConfig.breakpoints?.[key] || {})\n        }\n        return acc\n    }, {})\n\n    return {\n        ...defaultConfig,\n        ...customConfig,\n        breakpoints: mergedBreakpoints\n    }\n}\n\nconst shouldDuplicate = (products, slidesPerGroup) => {\n    return (\n        products.length > slidesPerGroup && // More products than slides per group\n        products.length < slidesPerGroup * 2 && // Less than double the slides per group\n        products.length % slidesPerGroup !== 0 // Not a perfect multiple\n    )\n}\n\nexport const duplicateOnceIfNeeded = (products, slidesPerGroup, force = false) => {\n    if (force || shouldDuplicate(products, slidesPerGroup)) {\n        return [\n            ...products.map((product) => ({\n                ...product,\n                key: `${product.productId}`\n            })),\n            ...products.map((product, index) => ({\n                ...product,\n                key: `${product.productId}-duplicate-${index}`\n            }))\n        ]\n    }\n\n    return products.map((product) => ({\n        ...product,\n        key: `${product.productId}`\n    }))\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"red-cross\",\n  \"use\": \"red-cross-usage\",\n  \"viewBox\": \"0 0 26 25\",\n  \"content\": \"<symbol viewBox=\\\"0 0 26 25\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"red-cross\\\">\\n<g id=\\\"red-cross_cross\\\" clip-path=\\\"url(#red-cross_clip0_8436_6937)\\\">\\n<path id=\\\"red-cross_Icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0454 12.4204C12.0844 12.4594 12.0844 12.5227 12.0454 12.5618L0.582611 24.0246C0.543834 24.0633 0.54352 24.1261 0.581907 24.1653L1.3169 24.9151C1.35583 24.9548 1.41969 24.9552 1.45902 24.9158L12.9292 13.4456C12.9683 13.4066 13.0316 13.4066 13.0707 13.4456L24.5334 24.9084C24.5722 24.9472 24.635 24.9475 24.6741 24.9091L25.424 24.1741C25.4637 24.1352 25.464 24.0713 25.4247 24.032L13.9545 12.5618C13.9154 12.5227 13.9154 12.4594 13.9545 12.4204L25.4173 0.957575C25.456 0.918799 25.4564 0.856028 25.418 0.816865L24.683 0.0670183C24.644 0.0272977 24.5802 0.026978 24.5409 0.066307L13.0707 11.5365C13.0316 11.5756 12.9683 11.5756 12.9292 11.5365L1.46646 0.0737421C1.42768 0.0349657 1.36491 0.0346516 1.32575 0.0730381L0.575899 0.808027C0.536178 0.846961 0.535859 0.910823 0.575188 0.950152L12.0454 12.4204Z\\\" fill=\\\"#D91F46\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"red-cross_clip0_8436_6937\\\">\\n<rect width=\\\"25\\\" height=\\\"25\\\" fill=\\\"white\\\" transform=\\\"translate(0.5)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"signout\",\n  \"use\": \"signout-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"signout\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.16667 15.8333H8.75C8.98012 15.8333 9.16667 16.0199 9.16667 16.25V17.0833C9.16667 17.3135 8.98012 17.5 8.75 17.5H4.16667C3.24619 17.5 2.5 16.7538 2.5 15.8333L2.5 4.16667C2.5 3.24619 3.24619 2.5 4.16667 2.5L8.75 2.5C8.98012 2.5 9.16667 2.68655 9.16667 2.91667V3.75C9.16667 3.98012 8.98012 4.16667 8.75 4.16667L4.16667 4.16667L4.16667 15.8333ZM13.0333 5.125L17.3167 9.4C17.4324 9.5181 17.4981 9.67632 17.5 9.84167V10.1583C17.4999 10.324 17.4339 10.4829 17.3167 10.6L13.0333 14.875C12.9551 14.9539 12.8486 14.9983 12.7375 14.9983C12.6264 14.9983 12.5199 14.9539 12.4417 14.875L11.85 14.2917C11.7711 14.2134 11.7268 14.1069 11.7268 13.9958C11.7268 13.8847 11.7711 13.7782 11.85 13.7L14.725 10.8333L6.25 10.8333C6.01988 10.8333 5.83333 10.6468 5.83333 10.4167V9.58333C5.83333 9.35322 6.01988 9.16667 6.25 9.16667L14.725 9.16667L11.85 6.3C11.7716 6.2232 11.7274 6.11807 11.7274 6.00833C11.7274 5.89859 11.7716 5.79347 11.85 5.71667L12.4417 5.125C12.5199 5.04612 12.6264 5.00175 12.7375 5.00175C12.8486 5.00175 12.9551 5.04612 13.0333 5.125Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"bag\",\n  \"use\": \"bag-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"bag\\\">\\n    <g clip-path=\\\"url(#bag_clip0_42049_18142)\\\">\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.99858 1C7.95877 1 6.27558 2.52684 6.02953 4.5H5.02327C5.27413 1.97334 7.40591 0 9.99858 0C12.76 0 14.9986 2.23858 14.9986 5V6.5H18.5482L19.797 20H0.200195L1.44895 6.5H2.44966L2.36223 7.5H2.36071L1.29696 19H18.7002L17.6364 7.5H14.987C14.8205 9.83358 12.8746 11.675 10.4986 11.675H4.99858V6.5H13.9986V5C13.9986 2.79086 12.2077 1 9.99858 1ZM13.9837 7.5H5.99858V10.675H10.4986C12.322 10.675 13.8197 9.28063 13.9837 7.5Z\\\" fill=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"bag_clip0_42049_18142\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"currentColor\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-left-big\",\n  \"use\": \"chevron-left-big-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-left-big\\\">\\n<g id=\\\"chevron-left-big_Chevron left\\\" clip-path=\\\"url(#chevron-left-big_clip0_3221_123719)\\\">\\n<path id=\\\"chevron-left-big_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.93423 10.0002L15.1266 0.807815L14.4195 0.100708L4.52002 10.0002L14.4195 19.8997L15.1266 19.1926L5.93423 10.0002Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"chevron-left-big_clip0_3221_123719\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useContext} from 'react'\nimport {CurrencyContext} from '@salesforce/retail-react-app/app/contexts'\n\n/**\n * Custom React hook to get the currency for the active locale and to change it to a different currency\n * @returns {{currency: string, setCurrency: function}[]}\n */\nexport const useCurrency = () => {\n    const context = useContext(CurrencyContext)\n    if (context === undefined) {\n        throw new Error('useCurrency must be used within CurrencyProvider')\n    }\n    return context\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"filter\",\n  \"use\": \"filter-usage\",\n  \"viewBox\": \"0 0 18 18\",\n  \"content\": \"<symbol viewBox=\\\"0 0 18 18\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"filter\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.82291 1.99998H17.4919C17.7677 1.99998 17.9914 2.22383 17.9914 2.49998V3.49998C17.9914 3.77612 17.7677 3.99998 17.4919 3.99998H5.82291C5.33634 5.37752 3.92904 6.20385 2.49033 5.95677C1.05163 5.7097 0 4.46109 0 2.99998C0 1.53887 1.05163 0.290257 2.49033 0.0431805C3.92904 -0.203896 5.33634 0.622429 5.82291 1.99998ZM2.00653 2.99998C2.00653 3.55226 2.45382 3.99998 3.00558 3.99998C3.55734 3.99998 4.00463 3.55226 4.00463 2.99998C4.00463 2.44769 3.55734 1.99998 3.00558 1.99998C2.45382 1.99998 2.00653 2.44769 2.00653 2.99998ZM17.4919 7.99998H11.8172C11.387 6.81352 10.2609 6.0235 8.9999 6.0235C7.73891 6.0235 6.61279 6.81352 6.18257 7.99998H0.507946C0.232065 7.99998 0.00841915 8.22383 0.00841915 8.49998V9.49998C0.00841915 9.77612 0.232065 9.99998 0.507946 9.99998H6.18257C6.61279 11.1864 7.73891 11.9765 8.9999 11.9765C10.2609 11.9765 11.387 11.1864 11.8172 9.99998H17.4919C17.7677 9.99998 17.9914 9.77612 17.9914 9.49998V8.49998C17.9914 8.22383 17.7677 7.99998 17.4919 7.99998ZM8.00085 8.99998C8.00085 9.55226 8.44814 9.99998 8.9999 9.99998C9.55166 9.99998 9.99895 9.55226 9.99895 8.99998C9.99895 8.44769 9.55166 7.99998 8.9999 7.99998C8.44814 7.99998 8.00085 8.44769 8.00085 8.99998ZM14.9942 12C13.7272 12.0035 12.5992 12.8042 12.1769 14H0.507946C0.232065 14 0.00841915 14.2238 0.00841915 14.5V15.5C0.00841915 15.7761 0.232065 16 0.507946 16H12.1769C12.6853 17.4394 14.1926 18.267 15.6786 17.9227C17.1646 17.5783 18.1552 16.1719 17.9799 14.6553C17.8047 13.1387 16.5195 11.9957 14.9942 12ZM13.9952 15C13.9952 15.5523 14.4425 16 14.9942 16C15.546 16 15.9933 15.5523 15.9933 15C15.9933 14.4477 15.546 14 14.9942 14C14.4425 14 13.9952 14.4477 13.9952 15Z\\\" fill=\\\"#181818\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {getCncAbtestSegment} from 'pandora-shared-app/overrides/app/utils/cnc-abtest-segment'\nimport {getCookie} from 'react-use-cookie'\n\nexport const getInitialDataObject = ({\n    locale,\n    customer,\n    isMobile,\n    isContextEnabled,\n    loqateEnabled,\n    isCncAbtestApp\n}) => {\n    const localeId = locale.id.toLowerCase()\n    const [language, country_code] = localeId.split('-')\n\n    const getCustomerData = (field, defaultValue = null) => customer[field] || defaultValue\n    const customerAddress = customer?.addresses?.[0] || null\n\n    const crmLoyaltyData = customer?.c_crmLoyaltyData ? JSON.parse(customer.c_crmLoyaltyData) : null\n    const accountBalance = crmLoyaltyData?.accountBalance ?? null\n\n    let abtestSegments = []\n\n    if (isContextEnabled) {\n        try {\n            const contextCookie = getCookie('expSegGrp')\n\n            if (contextCookie) {\n                const parsedExpSegGrp = contextCookie\n                    ? JSON.parse(decodeURIComponent(contextCookie))\n                    : null\n\n                abtestSegments.push({\n                    abtest_id: parsedExpSegGrp?.abtest_id || '',\n                    segment_control: parsedExpSegGrp?.segment_control,\n                    segment_id: parsedExpSegGrp?.segment_id || ''\n                })\n            }\n        } catch (err) {\n            console.warn('Failed to parse expSegGrp cookie', err)\n        }\n    }\n\n    // C&C A/B arm for direct PDP entry — seeded here to survive the utag_data re-seed on load.\n    if (isCncAbtestApp) {\n        const cncSegment = getCncAbtestSegment(country_code, loqateEnabled)\n        if (cncSegment) abtestSegments.push(cncSegment)\n    }\n\n    return {\n        site_id: localeId,\n        country_code,\n        language,\n        currency: locale.preferredCurrency,\n        customer_first_name: getCustomerData('firstName'),\n        customer_last_name: getCustomerData('lastName'),\n        customer_crm_id: customer.isRegistered ? customer.c_masterCRMID : null,\n        customer_email_id: getCustomerData('email'),\n        customer_city: customerAddress?.city || null,\n        customer_zip: customerAddress?.postalCode || null,\n        login_status: customer.isRegistered\n            ? TEALIUM_CONSTANTS.CUSTOMER.STATUS.LOGGED_IN\n            : TEALIUM_CONSTANTS.CUSTOMER.STATUS.NOT_LOGGED_IN,\n        platform: TEALIUM_CONSTANTS.OTHER.PLATFORM,\n        experience: TEALIUM_CONSTANTS.OTHER.EXPERIENCE,\n        user_device_type: isMobile\n            ? TEALIUM_CONSTANTS.USER_DEVICE_TYPE.MOBILE\n            : TEALIUM_CONSTANTS.USER_DEVICE_TYPE.DESKTOP,\n        customer_creationDate: getCustomerData('creationDate'),\n        customer_loyalty_tier: accountBalance ? accountBalance.tierLevel : null,\n        customer_loyalty_pendingpoints: accountBalance ? accountBalance.pendingPoints : null,\n        customer_loyalty_availablepoints: accountBalance ? accountBalance.availablePoints : null,\n        customer_loyalty_pointsAmount: accountBalance ? accountBalance.conversionAmount : null,\n        abtest_segments: abtestSegments\n    }\n}\n","export const CLUSTER_MAPPING = {\n    ANZ: ['en-AU', 'en-NZ'],\n    BRIS: ['en-GB', 'en-IE'],\n    CHINA: ['zh-HK', 'en-HK'],\n    EAEU: ['pl-PL', 'ro-RO', 'cs-CZ', 'sk-SK', 'hu-HU'],\n    LAPAC: ['en-SG', 'ja-JP'],\n    NAM: ['en-US', 'en-CA', 'fr-CA'],\n    NOEU: [\n        'de-DE',\n        'de-AT',\n        'da-DK',\n        'sv-SE',\n        'nl-NL',\n        'nl-BE',\n        'fr-BE',\n        'de-CH',\n        'fr-CH',\n        'it-CH',\n        'nb-NO'\n    ],\n    SOEU: ['it-IT', 'tr-TR', 'el-GR'],\n    STARTER: ['en-ZA', 'en-AE', 'ar-AE', 'zh-TW'],\n    WEEU: ['fr-FR', 'es-ES', 'pt-PT'],\n    LATAM: ['es-MX', 'es-PA', 'es-PE', 'es-CL', 'es-CO', 'es-AR', 'pt-BR']\n}\n\nexport const getClusterFromSite = (siteId) => {\n    for (const [cluster, siteIds] of Object.entries(CLUSTER_MAPPING)) {\n        if (siteIds.includes(siteId)) {\n            return cluster\n        }\n    }\n    return null\n}\n\nconst isNonEmptyString = (value) => typeof value === 'string' && value.trim().length > 0\n\n/**\n * Cluster-scoped Amplience delivery key, optionally qualified by a context\n * ('SOEU' + 'plp-recommendations-zones' => 'soeu-plp-recommendations-zones';\n * with context 'search' => 'soeu-plp-recommendations-zones-search').\n *\n * @param {string|null} clusterName - Cluster from getClusterFromSite\n * @param {string} baseKey - Content-type key shared by every cluster\n * @param {string} [context] - Context qualifier (omit for the default item)\n * @returns {string|null}\n */\nexport const buildClusterDeliveryKey = (clusterName, baseKey, context) => {\n    if (!isNonEmptyString(clusterName) || !isNonEmptyString(baseKey)) return null\n\n    const key = `${clusterName.trim().toLowerCase()}-${baseKey.trim().toLowerCase()}`\n    return isNonEmptyString(context) ? `${key}-${context.trim().toLowerCase()}` : key\n}\n","/*\n * Copyright (c) 2025, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport const isServer = () => typeof window === 'undefined'\n","const parseCookieHeader = (cookieHeader) =>\n    cookieHeader.split(';').reduce((acc, cookie) => {\n        const [key, value] = cookie.trim().split('=')\n        acc[key] = value\n        return acc\n    }, {})\n\nexport const getRawCookieValue = (cookieHeader, cookieName) => {\n    if (!cookieHeader || !cookieName) return null\n\n    const cookies = parseCookieHeader(cookieHeader)\n    return cookies[cookieName] || null\n}\n\nexport const getParsedCookieValue = (cookieHeader, cookieName) => {\n    if (!cookieHeader || !cookieName) return null\n\n    const cookies = parseCookieHeader(cookieHeader)\n    const rawValue = cookies[cookieName]\n    if (!rawValue) return null\n\n    try {\n        const decoded = decodeURIComponent(decodeURIComponent(rawValue))\n        return JSON.parse(decoded)\n    } catch (err) {\n        console.error('Failed to decode or parse cookie:', err)\n        return null\n    }\n}\n\nconst decodeJwt = (token) => {\n    const parts = token.split('.')\n\n    if (parts.length !== 3) {\n        throw new Error('Invalid JWT format')\n    }\n\n    const base64Url = parts[1]\n    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n    // Pad with '=' to make length a multiple of 4\n    const padded = base64 + '='.repeat((4 - (base64.length % 4)) % 4)\n    const jsonPayload = decodeURIComponent(\n        atob(padded)\n            .split('')\n            .map(function (c) {\n                return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n            })\n            .join('')\n    )\n\n    return JSON.parse(jsonPayload)\n}\n\nexport const getUsid = (token) => {\n    try {\n        const payload = decodeJwt(token)\n\n        const match = payload?.sub.match(/usid:([a-z0-9-]+)/i)\n\n        const usid = match?.[1] || null\n\n        return usid\n    } catch (err) {\n        console.error('JWT decode error:', err.message)\n        return null\n    }\n}\n","/**\n * @fileoverview Transforms SCAPI product format to DOL (Data Object Layer) format.\n * This is a temporary file to handle the product response in SCAPI format and transform to DOL format.\n */\n\n/** @typedef {import('../types/product').SCAPIProduct} SCAPIProduct */\n/** @typedef {import('../types/product').DOLProduct} DOLProduct */\n/** @typedef {import('../types/product').DOLCustomFields} DOLCustomFields */\n/** @typedef {import('../types/product').DOLStylingStudio} DOLStylingStudio */\n/** @typedef {import('../types/product').DOLSizeTable} DOLSizeTable */\n\n/**\n * Mapping from SCAPI size table types to normalized DOL types.\n * @type {Record<string, string>}\n */\nconst sizeTableTypeMap = {\n    Rings: 'ring',\n    Bracelets: 'bracelet',\n    Necklaces: 'necklace'\n}\n\n/**\n * Creates normalized size table from an SCAPI size table (c_sizeTable).\n * Converts type values to lowercase singular form so downstream consumers\n * (size guide content asset keys, globalSizeTableConfig lookups, regional\n * size options) resolve correctly.\n * @param {Object} [sizeTable] - Source size table from SCAPI\n * @returns {DOLSizeTable|undefined} Normalized size table, or the falsy input unchanged\n */\nexport const normalizeSizeTable = (sizeTable) =>\n    sizeTable && {\n        ...sizeTable,\n        type: sizeTableTypeMap[sizeTable.type] ?? sizeTable.type\n    }\n\n/**\n * Transforms an SCAPI product response to DOL format.\n *\n * The transformation includes:\n * - Mapping c_geminiName to name (with fallback)\n * - Mapping c_geminiShortDescription to shortDescription (with fallback)\n * - Normalizing custom fields (removing c_ prefix)\n * - Creating stylingStudio object from bracelet builder flags\n * - Normalizing sizeTable type values\n *\n * @param {SCAPIProduct|undefined} product - The SCAPI product to transform\n * @returns {DOLProduct|null} The transformed DOL product, or null if input is falsy\n */\nexport const transformScapiToDol = (product) => {\n    if (!product) return null\n\n    /**\n     * Creates normalized custom fields object from SCAPI product.\n     * Removes c_ prefix and maps to DOL custom fields structure.\n     * @param {SCAPIProduct} product - Source SCAPI product\n     * @returns {DOLCustomFields} Normalized custom fields\n     */\n    const createCustomFields = (product) => ({\n        category: product.c_primaryCategory,\n        subCategory: product.c_subCategory,\n        countryofOrigin: product.c_countryofOrigin,\n        color: product.c_color,\n        metalName: product.c_metalName,\n        metalGroup: product.c_metalGroup,\n        metalGroupDefault: product.c_metalGroupDefault,\n        materialGroup: product.c_materialGroup,\n        materialGroupDefault: product.c_materialGroupDefault,\n        status: product.c_status,\n        uspShort: product.c_uspShort,\n        importantInformationShort: product.c_importantInformationShort,\n        importantInformationLong: product.c_importantInformationLong,\n        handFinished: product.c_handFinished,\n        handFinishedInformationShort: product.c_handFinishedInformationShort,\n        depth: product.c_Depth,\n        width: product.c_Width,\n        height: product.c_Height,\n        colorDefault: product.c_colorDefault,\n        diamondCaratWeight: product.c_diamondCaratWeight,\n        stoneName: product.c_stoneName,\n        Collection: product.c_Collection,\n        size: product.c_size ?? null,\n        nonPurchasable: product.c_nonPurchasable ?? false,\n        isNotifyMe: product.c_isNotifyMe,\n        hasBundlePriceSum: product?.hasBundlePriceSum,\n        availableForInStorePickup: product?.c_availableForInStorePickup,\n        availableForFindInStore: product?.c_availableForFindInStore,\n        isSneakPeekProduct: product?.c_isSneakPeekProduct ?? false,\n        isEarlyAccessProduct: product?.c_isEarlyAccessProduct ?? false,\n        isPreloaded: !!product.isPreloaded,\n        storeThreshold: product?.c_storeThreshold,\n        isPartOfSet: !!product?.c_isPartOfSet,\n        hideCarbonFootPrintInfo: !!product?.c_hideCarbonFootPrintInfo\n    })\n\n    /**\n     * Creates styling studio configuration from SCAPI product.\n     * Maps bracelet builder flags to the stylingStudio structure.\n     * @param {SCAPIProduct} product - Source SCAPI product\n     * @returns {DOLStylingStudio} Styling studio configuration\n     */\n    const createStylingStudioField = (product) => ({\n        braceletBuilder: {\n            isEnabled: product?.c_braceletBuilderInclusion ?? false,\n            hasEntryPoint: product?.c_braceletBuilderEntryPoint ?? false\n        }\n    })\n\n    return {\n        productId: product.id,\n        name: product.name,\n        slugUrl: product.slugUrl,\n        ean: product.ean,\n        shortDescription: product.shortDescription,\n        longDescription: product.longDescription,\n        primaryCategoryId: product.primaryCategoryId,\n        productType: product.type,\n        master: {\n            masterId: product?.c_extend?.masterProductId || product.master?.masterId\n        },\n        variants: product.variants,\n        isEngravable: product.c_engravable,\n        components: product.c_components,\n        imageSequence: product.c_imageSequence,\n        assurances: product.c_assurances,\n        careInstructions: product.c_careInstructions,\n        badgeDetails: product.c_badges,\n        compatibility: product.c_compatibility,\n        currency: product?.currency,\n        options: product.options,\n        bundledProducts: product.bundledProducts,\n        setProducts: product.setProducts,\n        productPromotions: product.productPromotions,\n        nameDetails: product.c_nameDetails,\n        collabFlag: product.c_collabFlag,\n        price: product?.c_price,\n        giftCardType: product.c_gcType,\n        custom: createCustomFields(product),\n        variationAttributes: product?.variationAttributes,\n        recommendations: product?.c_recommendations,\n        variantCollectionName: product?.c_variantCollectionName,\n        inventory: product?.inventory,\n        sizeTable: normalizeSizeTable(product?.c_sizeTable),\n        sizeTableId: product?.c_sizeTableId,\n        pageMetaTags: product?.pageMetaTags,\n        stylingStudio: createStylingStudioField(product),\n        digitalSizeGroup: product?.c_digitalSizeGroup\n    }\n}\n","/*\n *  Icon Loader Utility\n *\n * This utility provides dynamic loading and caching for non-critical icon sets.\n * It implements lazy loading with error boundaries and memory caching for\n * optimal performance.\n *\n * FEATURES:\n * - Dynamic imports for icon categories\n * - Memory caching to avoid re-loading\n * - Error handling with fallbacks\n * - Loading state management\n * - Performance monitoring\n */\n\n// Icon category cache to avoid re-importing\nconst iconCache = new Map()\n\n// Loading states for each category\nconst loadingStates = new Map()\n\n/**\n * Icon Categories for Dynamic Loading\n */\nexport const ICON_CATEGORIES = {\n    COLLABORATION: 'collaboration',\n    PICTOGRAM: 'pictogram',\n    SOCIAL_MEDIA: 'social-media',\n    BNPL: 'bnpl',\n    FEATURE: 'feature',\n    PAYMENT: 'payment'\n}\n\n/**\n * Error types for icon loading\n */\nexport const ICON_LOAD_ERRORS = {\n    NETWORK_ERROR: 'NETWORK_ERROR',\n    PARSE_ERROR: 'PARSE_ERROR',\n    TIMEOUT_ERROR: 'TIMEOUT_ERROR',\n    UNKNOWN_ERROR: 'UNKNOWN_ERROR'\n}\n\n/**\n * Load icon category with caching and error handling\n * @param {string} category - Icon category to load\n * @param {Object} options - Loading options\n * @returns {Promise<Object>} Icon set object\n */\nexport const loadIconCategory = async (category, options = {}) => {\n    const {timeout = 5000, retries = 2, onLoadStart, onLoadEnd, onError} = options\n\n    //  Check cache first to avoid re-loading\n    if (iconCache.has(category)) {\n        return iconCache.get(category)\n    }\n\n    //  Check if already loading to avoid duplicate requests\n    if (loadingStates.has(category)) {\n        return loadingStates.get(category)\n    }\n\n    //  Create loading promise\n    const loadingPromise = loadIconCategoryInternal(category, {\n        timeout,\n        retries,\n        onLoadStart,\n        onLoadEnd,\n        onError\n    })\n\n    //  Store loading promise to prevent duplicates\n    loadingStates.set(category, loadingPromise)\n\n    try {\n        const iconSet = await loadingPromise\n\n        //  Cache successful result\n        iconCache.set(category, iconSet)\n\n        //  Clean up loading state\n        loadingStates.delete(category)\n\n        return iconSet\n    } catch (error) {\n        //  Clean up loading state on error\n        loadingStates.delete(category)\n        throw error\n    }\n}\n\n/**\n * Internal icon loading implementation\n * @param {string} category - Icon category\n * @param {Object} options - Loading options\n * @returns {Promise<Object>} Icon set\n */\nconst loadIconCategoryInternal = async (category, options) => {\n    const {timeout, retries, onLoadStart, onLoadEnd, onError} = options\n\n    //  Notify loading start\n    if (onLoadStart) {\n        onLoadStart(category)\n    }\n\n    const startTime = performance.now()\n\n    try {\n        //  Create timeout promise\n        const timeoutPromise = new Promise((_, reject) => {\n            setTimeout(() => {\n                reject(new Error(`Icon loading timeout for category: ${category}`))\n            }, timeout)\n        })\n\n        //  Create import promise based on category\n        const importPromise = getImportPromise(category)\n\n        //  Race between import and timeout\n        const iconModule = await Promise.race([importPromise, timeoutPromise])\n\n        const loadTime = performance.now() - startTime\n\n        //  Notify loading end\n        if (onLoadEnd) {\n            onLoadEnd(category, loadTime)\n        }\n\n        return iconModule\n    } catch (error) {\n        const loadTime = performance.now() - startTime\n\n        //  Determine error type\n        const errorType = getErrorType(error)\n\n        //  Log error with context\n        if (typeof window !== 'undefined' && window.console) {\n            console.error(` Failed to load ${category} icons:`, {\n                error: error.message,\n                type: errorType,\n                loadTime: loadTime.toFixed(2),\n                category\n            })\n        }\n\n        //  Notify error\n        if (onError) {\n            onError(category, error, errorType)\n        }\n\n        //  Retry logic\n        if (retries > 0 && errorType !== ICON_LOAD_ERRORS.PARSE_ERROR) {\n            await new Promise((resolve) => setTimeout(resolve, 1000)) // Wait 1s before retry\n            return loadIconCategoryInternal(category, {\n                ...options,\n                retries: retries - 1\n            })\n        }\n\n        throw error\n    }\n}\n\n/**\n * Get import promise for specific category\n * @param {string} category - Icon category\n * @returns {Promise} Import promise\n */\nconst getImportPromise = (category) => {\n    switch (category) {\n        case ICON_CATEGORIES.COLLABORATION:\n            return import(\n                /* webpackChunkName: \"icons-collaboration\" */ '../lazy/collaboration-icons'\n            )\n        case ICON_CATEGORIES.PICTOGRAM:\n            return import(/* webpackChunkName: \"icons-pictogram\" */ '../lazy/pictogram-icons')\n        case ICON_CATEGORIES.SOCIAL_MEDIA:\n            return import(/* webpackChunkName: \"icons-social-media\" */ '../lazy/social-media-icons')\n        case ICON_CATEGORIES.BNPL:\n            return import(/* webpackChunkName: \"icons-bnpl\" */ '../lazy/bnpl-icons')\n        case ICON_CATEGORIES.FEATURE:\n            return import(/* webpackChunkName: \"icons-feature\" */ '../lazy/feature-icons')\n        case ICON_CATEGORIES.PAYMENT:\n            return import(/* webpackChunkName: \"icons-payment\" */ '../lazy/payment-icons')\n        default:\n            throw new Error(`Unknown icon category: ${category}`)\n    }\n}\n\n/**\n * Determine error type from error object\n * @param {Error} error - Error object\n * @returns {string} Error type\n */\nconst getErrorType = (error) => {\n    if (error.message.includes('timeout')) {\n        return ICON_LOAD_ERRORS.TIMEOUT_ERROR\n    }\n    if (error.message.includes('Network') || error.message.includes('fetch')) {\n        return ICON_LOAD_ERRORS.NETWORK_ERROR\n    }\n    if (error.message.includes('parse') || error.message.includes('syntax')) {\n        return ICON_LOAD_ERRORS.PARSE_ERROR\n    }\n    return ICON_LOAD_ERRORS.UNKNOWN_ERROR\n}\n\n/**\n * Preload icon categories for better performance\n * @param {Array<string>} categories - Categories to preload\n * @param {Object} options - Preload options\n */\nexport const preloadIconCategories = async (categories, options = {}) => {\n    const {priority = 'low'} = options\n\n    //  Use requestIdleCallback for low priority preloading\n    if (priority === 'low' && typeof window !== 'undefined' && window.requestIdleCallback) {\n        window.requestIdleCallback(() => {\n            categories.forEach((category) => {\n                loadIconCategory(category).catch(() => {\n                    // Silently fail preloading\n                })\n            })\n        })\n    } else {\n        //  Load immediately for high priority\n        await Promise.allSettled(categories.map((category) => loadIconCategory(category)))\n    }\n}\n\n/**\n * Get cached icon category if available\n * @param {string} category - Icon category\n * @returns {Object|null} Cached icon set or null\n */\nexport const getCachedIconCategory = (category) => {\n    return iconCache.get(category) || null\n}\n\n/**\n * Check if icon category is currently loading\n * @param {string} category - Icon category\n * @returns {boolean} Loading state\n */\nexport const isIconCategoryLoading = (category) => {\n    return loadingStates.has(category)\n}\n\n/**\n * Clear icon cache (useful for testing or memory management)\n */\nexport const clearIconCache = () => {\n    iconCache.clear()\n    loadingStates.clear()\n}\n\n/**\n * Get cache statistics\n * @returns {Object} Cache stats\n */\nexport const getIconCacheStats = () => {\n    return {\n        cachedCategories: Array.from(iconCache.keys()),\n        loadingCategories: Array.from(loadingStates.keys()),\n        cacheSize: iconCache.size,\n        loadingCount: loadingStates.size\n    }\n}\n\n//  Export for debugging in development\nif (typeof window !== 'undefined' && process.env.NODE_ENV === 'development') {\n    window.__PANDORA_ICON_CACHE__ = {\n        cache: iconCache,\n        loadingStates,\n        getStats: getIconCacheStats,\n        clear: clearIconCache\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {createContext} from '@chakra-ui/react-utils'\n\nconst [Provider, useScrollArea] = createContext({\n    name: 'ScrollAreaContext',\n    errorMessage:\n        'useScrollArea: `context` is undefined. Seems you forgot to wrap components within `<ScrollAreaProvider />`'\n})\n\n/**\n * ScrollAreaProvider is a React component that provides the scroll area context to its children.\n *\n * @param {Object} props - The component props.\n * @param {React.ReactNode} props.children - The child components that will have access to the user segment context.\n * @param {String} props.scrollAreaSelector - the scroll area query selector\n * @returns {JSX.Element} A context provider component that supplies the user segment data to its children.\n */\nconst ScrollAreaProvider = ({children, scrollAreaSelector}) => {\n    return <Provider value={{scrollAreaSelector}}>{children}</Provider>\n}\n\nScrollAreaProvider.propTypes = {\n    children: PropTypes.node,\n    scrollAreaSelector: PropTypes.string\n}\n\nexport {ScrollAreaProvider, useScrollArea}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-youtube\",\n  \"use\": \"social-youtube-usage\",\n  \"viewBox\": \"0 0 22 16\",\n  \"content\": \"<symbol viewBox=\\\"0 0 22 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-youtube\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M17.5399 0.339985L18.9999 0.489985C20.7284 0.685348 22.0264 2.1607 21.9999 3.89999V12.1C22.0264 13.8393 20.7284 15.3146 18.9999 15.51L17.5999 15.66C13.2315 16.11 8.82835 16.11 4.45991 15.66L2.99991 15.51C1.27143 15.3146 -0.0265361 13.8393 -9.13677e-05 12.1V3.89999C-0.0265361 2.1607 1.27143 0.685348 2.99991 0.489985L4.39991 0.339985C8.76835 -0.109992 13.1715 -0.109992 17.5399 0.339985ZM10.1099 11.22L13.9999 8.61999H14.0599C14.2695 8.48341 14.3959 8.25017 14.3959 7.99999C14.3959 7.7498 14.2695 7.51656 14.0599 7.37999L10.1699 4.77999C9.94024 4.62475 9.64368 4.60885 9.39873 4.73865C9.15379 4.86845 9.00041 5.12278 8.99991 5.39999V10.6C9.01281 10.8581 9.15765 11.0913 9.38324 11.2173C9.60883 11.3433 9.8834 11.3443 10.1099 11.22Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {StaticContentImage} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-image'\nimport {RichTextEditor} from 'pandora-shared-app/overrides/app/components/rich-text-editor'\nimport {\n    buildImageSrc,\n    buildLegacyImageSrc\n} from 'pandora-shared-app/overrides/app/hooks/utils/ring-sizer-entry'\nimport {DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION} from 'pandora-shared-app/overrides/app/utils/media'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nexport const FingerSizerFlow = ({fingerSizerModule}) => {\n    const enableRingSizerRefactoring = useVariant(LD_KEYS.enablePdpRingSizerRefactoring, false)\n    const image = fingerSizerModule?.image\n\n    const mobileImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'mobile', DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE)\n                : buildLegacyImageSrc(image, 'mobile'),\n        [enableRingSizerRefactoring, image]\n    )\n    const desktopImageSrc = useMemo(\n        () =>\n            enableRingSizerRefactoring\n                ? buildImageSrc(image, 'desktop', DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP)\n                : buildLegacyImageSrc(image, 'desktop'),\n        [enableRingSizerRefactoring, image]\n    )\n\n    if (!fingerSizerModule) return null\n\n    const {desktopTitle, desktopDescription, desktopRichText} = fingerSizerModule\n    const imageAlt = image?.imageAltText || ''\n\n    const hasAnyContent = Boolean(\n        desktopTitle || desktopDescription || desktopRichText || mobileImageSrc || desktopImageSrc\n    )\n    if (!hasAnyContent) return null\n\n    return (\n        <Flex direction=\"column\" gap={2} textStyle=\"bodySm\" data-auto=\"fingerSizerFlow\">\n            {desktopTitle && (\n                <Text as=\"h3\" textStyle=\"bodyMd\" data-testid=\"finger-sizer-flow-heading\">\n                    {desktopTitle}\n                </Text>\n            )}\n            {desktopDescription && (\n                <Box color=\"black3a\" data-testid=\"finger-sizer-flow-description\">\n                    {desktopDescription}\n                </Box>\n            )}\n            {mobileImageSrc && (\n                <Box display={{base: 'block', xl: 'none'}} mt={4} data-auto=\"fingerSizerFlowImage\">\n                    <StaticContentImage\n                        src={mobileImageSrc}\n                        alt={imageAlt}\n                        enableRingSizerUiEnhancements\n                        type=\"ring\"\n                        width=\"100%\"\n                        data-testid=\"finger-sizer-flow-image\"\n                    />\n                </Box>\n            )}\n            {desktopImageSrc && (\n                <Box display={{base: 'none', xl: 'block'}} mt={4} data-auto=\"fingerSizerFlowImage\">\n                    <StaticContentImage\n                        src={desktopImageSrc}\n                        alt={imageAlt}\n                        enableRingSizerUiEnhancements\n                        type=\"ring\"\n                        width=\"100%\"\n                        data-testid=\"finger-sizer-flow-image-desktop\"\n                    />\n                </Box>\n            )}\n            {desktopRichText && (\n                <Box color=\"black3a\" mt={4} data-testid=\"finger-sizer-flow-richtext\">\n                    <RichTextEditor content={desktopRichText} />\n                </Box>\n            )}\n        </Flex>\n    )\n}\n\nFingerSizerFlow.propTypes = {\n    fingerSizerModule: PropTypes.shape({\n        desktopTitle: PropTypes.string,\n        desktopDescription: PropTypes.string,\n        desktopRichText: PropTypes.string,\n        image: PropTypes.object\n    })\n}\n","import {useState, useEffect} from 'react'\n\nconst XL_MEDIA_QUERY = '(min-width: 80em)'\n\nconst resolvePlacement = () => {\n    if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n        return 'bottom'\n    }\n    return window.matchMedia(XL_MEDIA_QUERY).matches ? 'right' : 'bottom'\n}\n\nexport const useResponsivePlacement = (enabled = true) => {\n    const [placement, setPlacement] = useState(() => (enabled ? resolvePlacement() : undefined))\n\n    useEffect(() => {\n        if (!enabled || typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n            return undefined\n        }\n        const mql = window.matchMedia(XL_MEDIA_QUERY)\n        const onChange = () => setPlacement(mql.matches ? 'right' : 'bottom')\n        onChange()\n        mql.addEventListener('change', onChange)\n        return () => mql.removeEventListener('change', onChange)\n    }, [enabled])\n\n    return placement\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport useResetPasswordFields from '@salesforce/retail-react-app/app/components/forms/useResetPasswordFields'\nimport Field from '@salesforce/retail-react-app/app/components/field'\n\nconst ResetPasswordFields = ({form, prefix = ''}) => {\n    const fields = useResetPasswordFields({form, prefix})\n\n    return (\n        <Box>\n            <Field {...fields.email} />\n        </Box>\n    )\n}\n\nResetPasswordFields.propTypes = {\n    /** Object returned from `useForm` */\n    form: PropTypes.object.isRequired,\n\n    /** Optional prefix for field names */\n    prefix: PropTypes.string\n}\n\nexport default ResetPasswordFields\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useIntl} from 'react-intl'\n\nexport default function useResetPasswordFields({\n    form: {\n        control,\n        formState: {errors}\n    },\n    prefix = ''\n}) {\n    const {formatMessage} = useIntl()\n\n    const fields = {\n        email: {\n            name: `${prefix}email`,\n            label: formatMessage({\n                defaultMessage: 'Email',\n                id: 'use_reset_password_fields.label.email'\n            }),\n            placeholder: 'you@email.com',\n            defaultValue: '',\n            type: 'email',\n            autoComplete: 'email',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter a valid email address.',\n                    id: 'use_reset_password_fields.error.required_email'\n                })\n            },\n            error: errors[`${prefix}email`],\n            control\n        }\n    }\n\n    return fields\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {Fragment} from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Alert, Button, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {AlertIcon, BrandLogo} from '@salesforce/retail-react-app/app/components/icons'\nimport {noop} from '@salesforce/retail-react-app/app/utils/utils'\nimport ResetPasswordFields from '@salesforce/retail-react-app/app/components/forms/reset-password-fields'\n\nconst ResetPasswordForm = ({submitForm, clickSignIn = noop, form}) => {\n    return (\n        <Fragment>\n            {!form.formState.isSubmitSuccessful ? (\n                <>\n                    <Stack justify=\"center\" align=\"center\" spacing={8}>\n                        <BrandLogo width=\"60px\" height=\"auto\" />\n                        <Stack spacing={2}>\n                            <Text align=\"center\" fontSize=\"xl\" fontWeight=\"semibold\">\n                                <FormattedMessage\n                                    defaultMessage=\"Reset Password\"\n                                    id=\"reset_password_form.title.reset_password\"\n                                />\n                            </Text>\n                            <Text fontSize=\"sm\" align=\"center\" color=\"gray.700\">\n                                <FormattedMessage\n                                    defaultMessage=\"Enter your email to receive instructions on how to reset your password\"\n                                    id=\"reset_password_form.message.enter_your_email\"\n                                />\n                            </Text>\n                        </Stack>\n                    </Stack>\n                    <form onSubmit={form.handleSubmit(submitForm)} data-testid=\"sf-auth-modal-form\">\n                        <Stack paddingTop={8} spacing={8} paddingLeft={4} paddingRight={4}>\n                            {form.formState.errors?.global && (\n                                <Alert status=\"error\">\n                                    <AlertIcon color=\"red.500\" boxSize={4} />\n                                    <Text fontSize=\"sm\" ml={3}>\n                                        {form.formState.errors.global.message}\n                                    </Text>\n                                </Alert>\n                            )}\n                            <ResetPasswordFields form={form} />\n                            <Stack spacing={6}>\n                                <Button\n                                    type=\"submit\"\n                                    onClick={() => form.clearErrors('global')}\n                                    isLoading={form.formState.isSubmitting}\n                                >\n                                    <FormattedMessage\n                                        defaultMessage=\"Reset Password\"\n                                        id=\"reset_password_form.button.reset_password\"\n                                    />\n                                </Button>\n\n                                <Stack direction=\"row\" spacing={1} justify=\"center\">\n                                    <Text fontSize=\"sm\">\n                                        <FormattedMessage\n                                            defaultMessage=\"Or return to\"\n                                            id=\"reset_password_form.message.return_to_sign_in\"\n                                            description=\"Precedes link to return to sign in\"\n                                        />\n                                    </Text>\n                                    <Button variant=\"link\" size=\"sm\" onClick={clickSignIn}>\n                                        <FormattedMessage\n                                            defaultMessage=\"Sign in\"\n                                            id=\"reset_password_form.action.sign_in\"\n                                        />\n                                    </Button>\n                                </Stack>\n                            </Stack>\n                        </Stack>\n                    </form>\n                </>\n            ) : (\n                <Stack justify=\"center\" align=\"center\" spacing={6}>\n                    <BrandLogo width=\"60px\" height=\"auto\" />\n                    <Text align=\"center\" fontSize=\"xl\" fontWeight=\"semibold\">\n                        <FormattedMessage\n                            defaultMessage={'Password Reset'}\n                            id=\"auth_modal.password_reset_success.title.password_reset\"\n                        />\n                    </Text>\n                    <Stack spacing={6} pt={4}>\n                        <Text align=\"center\" fontSize=\"sm\">\n                            <FormattedMessage\n                                defaultMessage=\"You will receive an email at <b>{email}</b> with a link to reset your password shortly.\"\n                                id=\"auth_modal.password_reset_success.info.will_email_shortly\"\n                                values={{\n                                    email: form.getValues('email'),\n\n                                    b: (chunks) => <b>{chunks}</b>\n                                }}\n                            />\n                        </Text>\n\n                        <Button onClick={clickSignIn}>\n                            <FormattedMessage\n                                defaultMessage=\"Back to Sign In\"\n                                id=\"auth_modal.password_reset_success.button.back_to_sign_in\"\n                            />\n                        </Button>\n                    </Stack>\n                </Stack>\n            )}\n        </Fragment>\n    )\n}\n\nResetPasswordForm.propTypes = {\n    submitForm: PropTypes.func,\n    clickSignIn: PropTypes.func,\n    form: PropTypes.object\n}\n\nexport default ResetPasswordForm\n","import {useEffect, useMemo, useState} from 'react'\nimport {useQueries, useQueryClient} from '@tanstack/react-query'\n\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport {useAuthorizationHeader} from '@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader'\nimport {MAX_CACHE_AGE} from '@salesforce/retail-react-app/app/constants'\n\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useVariant} from './use-variant'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {filterProductItems, FILTERED_BASKET_ITEM_KEYS} from '../utils/get-filtered-product-items'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\nimport {getApiData} from './useCustomQuery'\n\nconst STALE_TIME_MS = MAX_CACHE_AGE * 1000\n// DOL /products list endpoint caps at 24 IDs per request.\nconst CHUNK_SIZE = 24\n\nconst stripVariantSuffix = (productId) => productId?.replace(/-\\d+$/, '') || productId\n\nconst chunkArray = (arr, size) => {\n    const chunks = []\n    for (let i = 0; i < arr.length; i += size) {\n        chunks.push(arr.slice(i, i + size))\n    }\n    return chunks\n}\n\n/**\n * Returns the deduped list of base product IDs from the basket that are not\n * already present under ['products', [id]] in the React Query cache.\n *\n * @param {Object|null} basket\n * @param {import('@tanstack/react-query').QueryClient} queryClient\n * @returns {string[]}\n */\nconst getMissingBaseIds = (basket, queryClient) => {\n    if (!basket?.productItems?.length) return []\n    const items = filterProductItems(basket.productItems, FILTERED_BASKET_ITEM_KEYS)\n    if (!items.length) return []\n\n    const baseIds = [\n        ...new Set(items.map((item) => stripVariantSuffix(item.productId)).filter(Boolean))\n    ]\n    // Sort so that basket reorderings don't invalidate the chunk query keys.\n    return baseIds\n        .filter((id) => !queryClient.getQueryData(['products', [id]]))\n        .sort((a, b) => a.localeCompare(b))\n}\n\n/**\n * Warms the React Query cache for basket product IDs that would otherwise\n * be missing when buildCartState runs, so cart_state datalayer emissions on\n * PDP / PLP / ATC are enriched with catalog attributes (category, collection,\n * metal, material, carat_weight, size, image_url, url, discount, promotion_id).\n *\n * Fetches missing IDs in batches of up to 24 via the DOL products list\n * endpoint, then unwraps the {products: [...]} response and seeds each product\n * into ['products', [id]] — the same key useProducts uses — so the cache is\n * shared and PDP visits or repeat views cost zero extra requests.\n *\n * Gated by the enableGlobalCartStateEnrichment LD flag (default OFF).\n *\n * @param {Object|null} basket - Current basket from useCurrentBasket\n * @returns {number} A signature that changes when any batch settles, so callers\n *   can include it as a memo dependency and re-run buildCartState against a warm cache.\n */\nexport const useCartStateProducts = (basket) => {\n    const enableEnrichment = useVariant(LD_KEYS.enableGlobalCartStateEnrichment, false)\n    const queryClient = useQueryClient()\n    const {site, locale} = useMultiSite()\n    const baseUrl = useAppOrigin(true)\n    const authenticatedMethod = useAuthorizationHeader(getApiData)\n\n    // Mirror the flags/params useProducts uses so cached products stay\n    // compatible with what PDP writes under the same key.\n    const enableNewProductsPricingAPI = useVariant(LD_KEYS.enableNewProductsPricingAPI, false)\n    const enableNewProductsInventoryAPI = useVariant(LD_KEYS.enableNewProductsInventoryAPI, false)\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disablePdpGetProductsOrganisationIdShortCodeSiteIdParameters,\n        true\n    )\n    const enableDolAuthHeaderInjection = useVariant(LD_KEYS.enableDolAuthHeaderInjection, false)\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId, shortCode}\n            },\n            dolAPI: {proxyPath},\n            targetEnvironment\n        }\n    } = getConfig()\n\n    const productsUrl = getCustomApiPaths(proxyPath, organizationId).PRODUCTS\n\n    const isBrowser = typeof window !== 'undefined'\n    const isEnabled = enableEnrichment && isBrowser && Boolean(baseUrl)\n\n    const missingIds = useMemo(() => {\n        if (!isEnabled) return []\n        return getMissingBaseIds(basket, queryClient)\n    }, [isEnabled, basket, queryClient])\n\n    const chunks = useMemo(() => chunkArray(missingIds, CHUNK_SIZE), [missingIds])\n\n    const headers = useMemo(\n        () => ({\n            ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channeltype: 'online'}),\n            'x-environment': targetEnvironment\n        }),\n        [isDolQ3MigrationEnabled, dolChannelHeaders, targetEnvironment]\n    )\n\n    const buildQueryParams = (chunkIds) => {\n        const params = {\n            locale: locale.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId: site?.id,\n                      organisationId: organizationId,\n                      shortCode\n                  }),\n            // DOL /products list endpoint rejects set_products / bundled_products\n            // (only the detail endpoint /products/{id} accepts those). Keeping the\n            // rest aligned with useProducts so the cache we seed is compatible with\n            // what PDP later reads under the same key.\n            expand: [\n                'assurances',\n                'components',\n                'compatibility',\n                'custom',\n                'variants',\n                'careInstructions',\n                'recommendations',\n                'sizeTable',\n                'pageMetaTags',\n                'stylingStudio',\n                'options',\n                'images'\n            ],\n            productIds: chunkIds.join(',')\n        }\n        if (!enableNewProductsPricingAPI) {\n            params.expand.push('prices', 'promotions')\n        }\n        if (!enableNewProductsInventoryAPI) {\n            params.expand.push('availability')\n        }\n        return params\n    }\n\n    const results = useQueries({\n        queries: chunks.map((chunkIds) => ({\n            queryKey: ['cart-state-enrichment', chunkIds],\n            queryFn: () =>\n                authenticatedMethod({\n                    baseUrl,\n                    apiOptions: {path: productsUrl, queryParams: buildQueryParams(chunkIds)},\n                    headers,\n                    enableDolAuthHeaderInjection\n                }),\n            staleTime: STALE_TIME_MS,\n            retry: 1,\n            enabled: isEnabled,\n            meta: {displayName: 'useCartStateProducts'}\n        }))\n    })\n\n    // Seed each returned product into the shared ['products', [id]] cache so\n    // buildCartState (and useProducts on subsequent PDP visits) find products\n    // under the key they already read from.\n    const settleSignature = results\n        .map((r) => (r.isSuccess ? r.dataUpdatedAt || 0 : 0))\n        .reduce((acc, ts) => acc + ts, 0)\n\n    // seedTick bumps AFTER setQueryData writes land, so consumers that memoize\n    // on the returned value re-run their reads against the warm cache. Without\n    // this extra render, buildCartState would evaluate on the render where the\n    // effect hasn't run yet and emit fallback items despite a successful fetch.\n    const [seedTick, setSeedTick] = useState(0)\n\n    useEffect(() => {\n        let seededAny = false\n        results.forEach((result) => {\n            if (!result.isSuccess) return\n            // DOL list endpoint returns {products: [...]}. Each product is\n            // SCAPI-shaped (top-level `id`, `c_*` fields); buildCartState runs\n            // it through transformScapiToDol on read.\n            const list = result.data?.products\n            if (!Array.isArray(list)) return\n            list.forEach((product) => {\n                const id = product?.id\n                if (id) {\n                    queryClient.setQueryData(['products', [id]], product)\n                    seededAny = true\n                }\n            })\n        })\n        if (seededAny) {\n            setSeedTick((t) => t + 1)\n        }\n        // settleSignature is the only external trigger — a new query success.\n    }, [settleSignature, queryClient])\n\n    return seedTick\n}\n","// Define the function to create the constant map for custom APIs\nconst createCustomAPIPaths = (proxyPath, organizationId) => {\n    return {\n        PREFERENCES: `${proxyPath}/custom/preference/v1/organizations/${organizationId}/preference`,\n        DOL_PREFERENCES: `${proxyPath}/preferences`,\n        EMAIL_SUBSCRIBE: `${proxyPath}/custom/email-subscribe/v1/organizations/${organizationId}/email-subscribe`,\n        PRODUCT_SEARCH: `${proxyPath}/product-search`,\n        PRODUCTS: `${proxyPath}/products`,\n        CONTENT_ASSET: `${proxyPath}/custom/content-assets/v1/organizations/${organizationId}`,\n        CONTENT_SLOTS: `${proxyPath}/custom/content-slots/v1/organizations/${organizationId}/global`,\n        TRADING_BANNER: `${proxyPath}/trading-banner`,\n        SEARCH_SUGGESTION: `${proxyPath}/search-suggestion`,\n        DATA: `${proxyPath}/custom/data/v1/organizations/${organizationId}/data`,\n        DOL_DATA: `${proxyPath}/custom-data`,\n        URL_MAPPING: `${proxyPath}/url-mapping`,\n        CUSTOMERS: `${proxyPath}/customers`,\n        USER_PRICE_CONTEXT: `${proxyPath}/user-insight/`,\n        CATEGORY: `${proxyPath}/categories`,\n        DROP_A_HINT: `${proxyPath}/send-a-hint`,\n        NOTIFY_ME: `${proxyPath}/notify-me`,\n        DOL_CARTS: `${proxyPath}/carts`,\n        PRODUCT_SEARCH_V2: `${proxyPath}/products/search`,\n        STORES_SEARCH: `${proxyPath}/stores/search`,\n        PRODUCT_PROMOTIONS: `${proxyPath}/prices/promotions`,\n        DELIVERY_ESTIMATES: `${proxyPath}/promises/delivery-estimates`,\n        INVENTORY_SEARCH: `${proxyPath}/inventory`,\n        RECOMMENDATIONS: `${proxyPath}/recommendations`\n    }\n}\n\nconst createCustomerAPIPathsWithParams = (proxyPath, customerId, params) => {\n    return {\n        CUSTOMER_PRODUCT_LISTS: `${proxyPath}/customers/${customerId}/product-lists`,\n        CUSTOMER_PRODUCT_LIST_ITEMS: `${proxyPath}/customers/${customerId}/product-lists/${params.listId}/items`,\n        CUSTOMER_BASKETS: `${proxyPath}/customers/${customerId}/baskets`\n    }\n}\n\nexport const getCustomApiPaths = (proxyPath, organizationId) =>\n    createCustomAPIPaths(proxyPath, organizationId)\n\nexport const getCustomerApiPaths = (proxyPath, customerId, params = {}) =>\n    createCustomerAPIPathsWithParams(proxyPath, customerId, params)\n","import {useLocation} from 'react-router-dom'\n\n/**\n * Build a localized error page URL preserving the current locale\n * @param {string} errorPagePath - The error page path (e.g., '/page-not-found', '/something-went-wrong')\n * @param {Function} buildUrl - The buildUrl function from useMultiSite\n * @returns {string} - The localized error page URL\n */\nexport const buildErrorPageUrl = (errorPagePath, buildUrl) => {\n    // If buildUrl is available, use it to preserve locale\n    if (buildUrl) {\n        return buildUrl(errorPagePath)\n    }\n\n    // Fallback: try to preserve locale from current pathname\n    if (typeof window !== 'undefined') {\n        const currentPath = window.location.pathname\n        const localeRegex = /^\\/([a-z]{2})\\//\n        const localeMatch = localeRegex.exec(currentPath)\n\n        if (localeMatch) {\n            const locale = localeMatch[1]\n            return `/${locale}${errorPagePath}`\n        }\n    }\n\n    // Final fallback: return the error page without locale\n    return errorPagePath\n}\n\n/**\n * Hook version that can be used in React components\n * @param {string} errorPagePath - The error page path\n * @returns {string} - The localized error page URL\n */\nexport const useBuildErrorPageUrl = (errorPagePath) => {\n    const location = useLocation()\n\n    // Extract locale from current pathname\n    const localeRegex = /^\\/([a-z]{2})\\//\n    const localeMatch = localeRegex.exec(location.pathname)\n    const locale = localeMatch ? localeMatch[1] : null\n\n    return locale ? `/${locale}${errorPagePath}` : errorPagePath\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"next\",\n  \"use\": \"next-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"next\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.0658 10.0001L4.87344 0.807693L5.58055 0.100586L15.48 10.0001L5.58055 19.8996L4.87344 19.1925L14.0658 10.0001Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cross\",\n  \"use\": \"cross-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cross\\\">\\n<g clip-path=\\\"url(#cross_clip0_616_3114)\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.22195 9.92215C9.261 9.96121 9.261 10.0245 9.22195 10.0636L0.0798673 19.2057C0.0410909 19.2444 0.0407769 19.3072 0.0791634 19.3464L0.639153 19.9177C0.678087 19.9574 0.74195 19.9577 0.781279 19.9184L9.92902 10.7706C9.96807 10.7316 10.0314 10.7316 10.0704 10.7706L19.2125 19.9127C19.2513 19.9515 19.3141 19.9518 19.3532 19.9134L19.9245 19.3534C19.9643 19.3145 19.9646 19.2506 19.9253 19.2113L10.7775 10.0636C10.7385 10.0245 10.7385 9.96121 10.7775 9.92215L19.9196 0.780076C19.9584 0.7413 19.9587 0.678529 19.9203 0.639366L19.3603 0.0680556C19.3214 0.0283351 19.2575 0.0280159 19.2182 0.0673449L10.0704 9.21508C10.0314 9.25414 9.96807 9.25414 9.92902 9.21508L0.786943 0.0730087C0.748166 0.0342323 0.685395 0.0339183 0.646233 0.0723047L0.0749222 0.632295C0.0352016 0.671228 0.0348823 0.735091 0.0742113 0.77442L9.22195 9.92215Z\\\" fill=\\\"#27251F\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"cross_clip0_616_3114\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import breakpoints from 'pandora-shared-app/overrides/app/theme/foundations/breakpoints'\n\n/**\n * Replaces all placeholders in format {{placeholder}}\n * Example: Pay as little as {{price}} today\n * placeholderData = {price: 100}\n * result string Pay as little as 100 today\n * @param {string} str\n * @param {Object<string, any>} placeholderData\n * @returns {string}\n */\nexport const replacePlaceholders = (str, placeholderData = {}) => {\n    return str.replace(/{{\\s*(\\w+)\\s*}}/g, (match, key) => {\n        return key in placeholderData ? placeholderData[key] : match\n    })\n}\n\n/**\n * Converts a rem value (string or number) to px, using the provided or default root font size.\n * @param {string|number} rem - The rem value to convert (e.g., '48rem' or 48).\n * @param {number} [rootFontSize=16] - The root font size in px.\n * @returns {number} The value in px.\n */\nexport function remToPx(rem, rootFontSize = 16) {\n    if (typeof rem === 'string') {\n        return parseFloat(rem) * rootFontSize\n    }\n    return rem * rootFontSize\n}\n\n// Export commonly used breakpoints in px\nexport const MOBILE_MAX_WIDTH = remToPx(breakpoints.md)\nexport const TABLET_MAX_WIDTH = remToPx(breakpoints.xl)\nexport const DESKTOP_2XL_BREAKPOINT = remToPx(breakpoints['2xl'])\n\n/**\n * Returns the device type ('mobile', 'tablet', 'desktop') based on the given width in px.\n * @param {number} width - The width in pixels.\n * @returns {'mobile' | 'tablet' | 'desktop'}\n */\nexport function getDeviceTypeFromWidth(width) {\n    if (width <= MOBILE_MAX_WIDTH) return 'mobile'\n    if (width <= TABLET_MAX_WIDTH) return 'tablet'\n    return 'desktop'\n}\n\n/**\n * Checks if the given pathname is the home page.\n * @param {string} pathname\n * @returns {boolean}\n */\nexport function isHomePage(pathname) {\n    return /^\\/([a-z]{2}(-[a-z]{2})?)?\\/?\\/?$/.test(pathname)\n}\n\n/**\n * Checks if the given pathname is a Product Detail Page.\n * Matches paths ending with a file extension (e.g. /en-gb/p/product-id.html)\n * or containing /product/ (Salesforce base URL pattern).\n * @param {string} pathname\n * @returns {boolean}\n */\nexport function isPdpPage(pathname) {\n    return pathname.includes('/product/') || /\\.[a-zA-Z]{1,5}$/.test(pathname)\n}\n\n/**\n * Checks if the given pathname is a Product List Page.\n * @param {string} pathname\n * @returns {boolean}\n */\nexport function isPlpPage(pathname) {\n    return (\n        pathname.startsWith('/search') ||\n        (/^\\/[a-z]{2}(-[a-z]{2})?\\//.test(pathname) && !/\\.[a-zA-Z]{1,5}$/.test(pathname))\n    )\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hand-with-heart-pictogram\",\n  \"use\": \"hand-with-heart-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol viewBox=\\\"0 0 64 64\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"hand-with-heart-pictogram\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24.6182 7.06424C23.6301 7.71983 22.7877 8.82919 22.2769 10.5189C21.424 13.3401 22.1771 16.1174 23.5797 18.6387C24.8687 20.9558 26.6787 23.0061 28.1941 24.6011V18.9658H29.1941V26.1216H22.0369V25.1216H27.3097C25.8095 23.5323 24.0103 21.4696 22.7058 19.1249C21.2328 16.477 20.3583 13.4097 21.3197 10.2295C21.8849 8.35979 22.849 7.038 24.0653 6.23097C25.2807 5.4246 26.7045 5.16099 28.1373 5.32996C29.9962 5.54919 31.8887 6.49571 33.4417 7.96879C34.9948 6.49571 36.8872 5.54919 38.7462 5.32996C40.179 5.16099 41.6028 5.4246 42.8181 6.23097C44.0344 7.038 44.9986 8.35979 45.5638 10.2296C46.6893 13.9526 45.8908 17.2159 44.2212 20.1712C42.6184 23.0082 40.1931 25.5941 37.8807 28.0597L37.6347 28.322L34.1134 31.5929C35.7782 31.6803 37.2496 31.9401 38.3902 32.3002C39.0961 32.523 39.6967 32.7909 40.141 33.0953C40.5658 33.3864 40.9449 33.7786 41.0072 34.279C41.0661 34.7526 40.8637 35.1587 40.5714 35.4732C40.2842 35.782 39.8821 36.0371 39.4377 36.2467C38.5449 36.6677 37.3571 36.9629 36.185 37.107C36.0254 37.1266 35.8618 37.1463 35.695 37.1664L35.6932 37.1666C34.1786 37.3494 32.3955 37.5645 30.9192 37.9899C30.0997 38.2261 29.4174 38.5159 28.941 38.8718C28.4745 39.2202 28.2395 39.603 28.2147 40.048C28.2023 40.2838 28.388 40.6112 29.1112 40.958C29.7943 41.2855 30.7752 41.5338 31.8788 41.6907C32.975 41.8465 34.1592 41.9077 35.2299 41.8778C36.305 41.8478 37.2303 41.7269 37.8304 41.5366C37.8326 41.5359 37.8349 41.5351 37.8371 41.5344C38.5098 41.3193 39.5231 40.704 40.7434 39.8088C41.9476 38.9255 43.3043 37.807 44.6513 36.6346C47.3447 34.2905 49.9758 31.752 51.2282 30.4996L51.2334 30.4944L51.2387 30.4894C53.6161 28.2472 56.081 27.4078 57.8033 27.6153C58.6644 27.7191 59.409 28.0999 59.7749 28.7872C60.1459 29.4838 60.0448 30.337 59.5529 31.1978L59.5473 31.2075L59.5414 31.217C58.5638 32.7628 54.8025 37.7743 50.9814 42.5835C49.0671 44.9928 47.13 47.3611 45.5091 49.2305C44.6989 50.1648 43.9643 50.9784 43.349 51.6116C42.7453 52.2328 42.2235 52.7153 41.8466 52.9534L41.8457 52.954C41.4698 53.1902 40.8826 53.339 40.2206 53.4461C39.5367 53.5567 38.6954 53.6335 37.7554 53.6875C35.8745 53.7954 33.5545 53.8138 31.2227 53.8144C30.6287 53.8146 30.034 53.8136 29.4451 53.8126C27.716 53.8097 26.0373 53.8069 24.5745 53.8335C23.5947 53.8514 22.7192 53.8823 21.9963 53.9346C21.2643 53.9875 20.7204 54.0604 20.387 54.1526C19.4187 54.4202 17.7009 55.2452 16.0069 56.1707C14.3201 57.0922 12.7324 58.0716 12.0296 58.6159C11.8257 58.7739 11.5351 58.7508 11.3587 58.5626C11.0524 58.2359 10.6335 57.6156 10.1488 56.8374C9.65543 56.0454 9.06866 55.0478 8.42323 53.9348C8.12367 53.4183 7.81128 52.8766 7.48917 52.3181C6.42013 50.4643 5.24409 48.425 4.0751 46.5045C3.96803 46.3287 3.97975 46.1051 4.10462 45.9414C8.46454 40.2243 13.244 36.6321 17.3559 34.4682C21.4544 32.3112 24.9148 31.5609 26.6484 31.5609V32.5609C25.1242 32.5609 21.825 33.2463 17.8216 35.3531C13.896 37.419 9.31752 40.8397 5.10725 46.2778C6.22423 48.1229 7.3434 50.0635 8.35935 51.8252C8.68031 52.3818 8.99124 52.921 9.28828 53.4332C9.93336 54.5455 10.5133 55.5312 10.9976 56.3087C11.3251 56.8346 11.5983 57.2474 11.8116 57.5367C12.6724 56.9337 14.0823 56.0827 15.5274 55.2931C17.2151 54.3711 19.0265 53.4911 20.1206 53.1887C20.5559 53.0684 21.1842 52.9907 21.9242 52.9372C22.6732 52.883 23.5691 52.8517 24.5563 52.8337C26.0299 52.8069 27.7234 52.8097 29.4556 52.8126C30.0423 52.8136 30.6338 52.8146 31.2224 52.8144C33.5553 52.8138 35.8491 52.7952 37.6981 52.6891C38.6231 52.636 39.4258 52.5616 40.0609 52.4589C40.7176 52.3527 41.1242 52.2262 41.3132 52.1075C41.5772 51.9406 42.0239 51.5403 42.6318 50.9147C43.2286 50.3006 43.9494 49.5027 44.7536 48.5753C46.3613 46.7212 48.2885 44.3652 50.1984 41.9614C54.0176 37.1548 57.7364 32.1963 58.6901 30.6921C59.0726 30.0179 59.0466 29.5471 58.8923 29.2572C58.7322 28.9565 58.3491 28.6883 57.6836 28.6082C56.3539 28.4479 54.1725 29.0992 51.9301 31.2119C50.6641 32.4776 48.0194 35.0291 45.3078 37.389C43.9505 38.5702 42.5705 39.7087 41.3349 40.6151C40.1192 41.507 38.9928 42.2126 38.1496 42.4844C38.1469 42.4853 38.1442 42.4862 38.1415 42.487C37.4103 42.7205 36.3735 42.8463 35.2578 42.8774C34.1334 42.9088 32.8927 42.8449 31.738 42.6807C30.5906 42.5176 29.4947 42.2509 28.6788 41.8597C27.9035 41.4879 27.1679 40.8931 27.2162 39.9939C27.2619 39.169 27.7158 38.5387 28.3425 38.0706C28.9594 37.6099 29.7745 37.2791 30.6423 37.029C32.2018 36.5796 34.069 36.3548 35.5706 36.1741L35.5777 36.1732C35.7443 36.1532 35.9063 36.1337 36.063 36.1144C37.1687 35.9785 38.2447 35.7037 39.0111 35.3422C39.3963 35.1606 39.6726 34.9712 39.839 34.7923C40.0001 34.6189 40.0262 34.4939 40.0148 34.4025C40.0068 34.3378 39.9294 34.1626 39.5757 33.9202C39.2415 33.6912 38.7416 33.4597 38.0892 33.2538C36.7889 32.8433 34.9673 32.5607 32.875 32.5607C32.6695 32.5607 32.4848 32.4349 32.4097 32.2435C32.3345 32.0521 32.3841 31.8343 32.5348 31.6944L36.9288 27.6129L37.1149 27.4144C39.4561 24.9177 41.8081 22.4094 43.3505 19.6793C44.9238 16.8945 45.6332 13.9149 44.6066 10.5189C44.0958 8.82919 43.2533 7.71983 42.2653 7.06424C41.2762 6.40798 40.0978 6.17749 38.8633 6.32308C37.2429 6.51417 35.5453 7.35396 34.1357 8.68837C34.6805 9.30564 35.1683 9.99389 35.579 10.7422C36.1049 11.7004 36.4805 13.3806 36.3165 14.8396C36.2339 15.5743 36.0087 16.3074 35.5428 16.8655C35.061 17.4427 34.3595 17.7863 33.439 17.7857C32.5192 17.785 31.8187 17.4404 31.3378 16.8628C30.8728 16.3043 30.6483 15.5713 30.5662 14.8368C30.4033 13.3783 30.7792 11.6993 31.3044 10.7422C31.7152 9.99389 32.203 9.30564 32.7477 8.68837C31.3382 7.35396 29.6405 6.51417 28.0202 6.32308C26.7857 6.17749 25.6073 6.40798 24.6182 7.06424ZM33.4417 9.41324C32.9695 9.95735 32.5434 10.5632 32.1811 11.2234C31.7581 11.9941 31.4192 13.4654 31.5601 14.7258C31.6299 15.3508 31.8119 15.8694 32.1063 16.223C32.3848 16.5574 32.7964 16.7852 33.4397 16.7857C34.084 16.7861 34.4962 16.5587 34.7751 16.2246C35.07 15.8714 35.2525 15.353 35.3228 14.7279C35.4644 13.4673 35.1259 11.995 34.7024 11.2234C34.34 10.5632 33.914 9.95735 33.4417 9.41324Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Tracking asset resolution for content modules (INS-4800).\n *\n * Tracking must report *whatever asset is shown to the customer*. The rendering\n * layer (INS-4798: components/media/utils.js + utils/media.js) already decides\n * that, honoring the \"Global: Aprimo DAM Primary\" LD flag. This module mirrors\n * the SAME field conventions and flag semantics so tracking cannot drift from\n * what is rendered — rather than re-implementing a parallel, divergent model.\n *\n * Aprimo assets live in SIBLING fields alongside their Amplience counterparts\n * (`aprimoImg`/`aprimoDesktopImg`/`aprimoMobileImg`/`aprimoVideo`/…), each\n * carrying `aprimoData.{cdnUrl,id,fileName}`. Amplience images carry\n * `diImage.image.{id,name}`; Amplience videos carry `{id,name}` on the node.\n */\n\n// Amplience-source fields across every module convention:\n//  - <Media> responsive:      desktopImg / mobileImg / desktopVideo / mobileVideo\n//  - <Media> non-responsive:  img / video\n//  - generateConsistentImageUrl / page-cover / feature-video: desktop / mobile\nconst AMPLIENCE_FIELDS = [\n    'desktopImg',\n    'mobileImg',\n    'img',\n    'desktop',\n    'mobile',\n    'desktopVideo',\n    'mobileVideo',\n    'video'\n]\n\n// Aprimo-source sibling fields (each resolves via aprimoData.cdnUrl).\nconst APRIMO_FIELDS = [\n    'aprimoDesktopImg',\n    'aprimoMobileImg',\n    'aprimoImg',\n    'aprimoDesktopVideo',\n    'aprimoMobileVideo',\n    'aprimoVideo'\n]\n\n/**\n * Extracts tracking {id, name} from a single CMS media node, honoring the\n * \"Global: Aprimo DAM Primary\" flag (INS-4800 AC 3 & 4):\n *   flag OFF -> Amplience wins, Aprimo fallback\n *   flag ON  -> Aprimo wins, Amplience fallback\n * When only one source is present, that source is used regardless of the flag.\n * An incomplete Aprimo node (cdnUrl but no id/fileName) is treated as absent so\n * the caller can fall back to Amplience (or vice versa).\n *\n * In real content Amplience and Aprimo live in sibling fields (img vs aprimoImg),\n * so a single node rarely carries both; the flag still governs that dual case here\n * rather than defaulting to one source — keeping the semantics aligned with the ACs.\n *\n * @param {Object} [node] - CMS media node (image or video)\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false]\n * @returns {{id: string, name: string}|null}\n */\nexport const resolveTrackedAsset = (node, {aprimoPrimary = false} = {}) => {\n    if (!node) return null\n\n    // Aprimo (image or video): fileName is the tracking-name equivalent.\n    const aprimoAsset =\n        node.aprimoData?.cdnUrl && node.aprimoData?.id && node.aprimoData?.fileName\n            ? {id: node.aprimoData.id, name: node.aprimoData.fileName}\n            : null\n\n    // Amplience: image nested under diImage.image; video-link carries id/name on the node.\n    const amplienceImage = node.diImage?.image\n    let amplienceAsset = null\n    if (amplienceImage?.id && amplienceImage?.name) {\n        amplienceAsset = {id: amplienceImage.id, name: amplienceImage.name}\n    } else if (node.id && node.name) {\n        amplienceAsset = {id: node.id, name: node.name}\n    }\n\n    return aprimoPrimary ? aprimoAsset || amplienceAsset : amplienceAsset || aprimoAsset\n}\n\n/**\n * Resolves the tracked asset(s) for a single media container, using the same\n * flag-aware source priority the renderer applies:\n *   flag OFF -> Amplience first, Aprimo fallback\n *   flag ON  -> Aprimo first, Amplience fallback\n * The preferred source is used whenever it yields any asset; only when it is\n * entirely absent do we fall back to the other source (INS-4800 AC 3 & 4).\n *\n * @param {Object} [container] - Object holding media node fields (e.g. item.media,\n *  item.smallImage, item.image, a carousel entry, a story chapter's media, …)\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false]\n * @returns {{asset_id: string[], asset_name: string[]}}\n */\nexport const getTrackedAssets = (container, {aprimoPrimary = false} = {}) => {\n    const ids = new Set()\n    const names = new Set()\n\n    const collect = (fields) => {\n        let found = false\n        fields.forEach((field) => {\n            const asset = resolveTrackedAsset(container[field], {aprimoPrimary})\n            if (asset?.id && asset?.name) {\n                ids.add(String(asset.id).replace(/\\//g, '')) // Remove slashes from ID\n                names.add(asset.name)\n                found = true\n            }\n        })\n        return found\n    }\n\n    if (container) {\n        // Flag-aware source priority at the field level (img vs aprimoImg, …).\n        // resolveTrackedAsset applies the same flag priority within any dual node,\n        // so a node carrying both schemas also resolves per the flag.\n        const preferred = aprimoPrimary ? APRIMO_FIELDS : AMPLIENCE_FIELDS\n        const fallback = aprimoPrimary ? AMPLIENCE_FIELDS : APRIMO_FIELDS\n        if (!collect(preferred)) {\n            collect(fallback)\n        }\n    }\n\n    return {asset_id: [...ids], asset_name: [...names]}\n}\n\n/**\n * Extracts unique tracking asset_id/asset_name for a whole content item, across\n * every module-specific media container. Delegates resolution to getTrackedAssets\n * so the flag-aware Amplience/Aprimo selection matches what is rendered.\n *\n * @param {Object} item - The content item to extract asset info from\n * @param {Object} [options]\n * @param {boolean} [options.aprimoPrimary=false] - Whether Aprimo takes priority\n *  over Amplience (controlled by the \"Global: Aprimo DAM Primary\" LD flag)\n * @returns {{asset_id: string[], asset_name: string[]}}\n */\nexport const getAssetInfo = (item, {aprimoPrimary = false} = {}) => {\n    const ids = new Set()\n    const names = new Set()\n\n    const addFrom = (container) => {\n        if (!container) return\n        const {asset_id, asset_name} = getTrackedAssets(container, {aprimoPrimary})\n        asset_id.forEach((id) => ids.add(id))\n        asset_name.forEach((name) => names.add(name))\n    }\n\n    if (item) {\n        // Single media containers sitting directly on the item.\n        //   media                 -> full-screen-media-tile, shop-the-look, explore-prompt\n        //   image                 -> page-cover, editorial-link\n        //   video                 -> feature-video\n        //   smallImage/largeMedia -> inset-media-tile\n        //   largeImage            -> entry-points-tile\n        ;['media', 'image', 'video', 'smallImage', 'largeMedia', 'largeImage'].forEach((field) =>\n            addFrom(item[field])\n        )\n\n        // Array containers whose entries are (or wrap) a media container.\n        //   productImagesCarousel -> promo-inset-tile (entry IS the container)\n        //   imageCarousel         -> craft-and-quality (entry.image is the container)\n        //   entryPoints           -> entry-points-tile (entry.smallImage is the container)\n        //   storyChapter          -> stories / qna-single (entry.media is the container)\n        //   tabs                  -> tabbed-guide (entry.media is the container)\n        //   pageSections          -> text-and-media (entry.textAndMedia.media is the container)\n        const addCollection = (collection, pick) => {\n            if (!Array.isArray(collection)) return\n            collection.forEach((entry) => addFrom(pick(entry)))\n        }\n        addCollection(item.productImagesCarousel, (entry) => entry)\n        addCollection(item.imageCarousel, (entry) => entry?.image)\n        addCollection(item.cards, (entry) => entry?.image)\n        addCollection(item.entryPoints, (entry) => entry?.smallImage)\n        addCollection(item.storyChapter, (entry) => entry?.media)\n        addCollection(item.tabs, (entry) => entry?.media)\n        addCollection(item.pageSections, (entry) => entry?.textAndMedia?.media)\n    }\n\n    return {asset_id: [...ids], asset_name: [...names]}\n}\n","import {useMemo} from 'react'\nimport {flatten, isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {useCategory} from 'pandora-shared-app/overrides/app/hooks'\n\nimport {CAT_MENU_DEFAULT_ROOT_CATEGORY} from '../constants'\n\n// Module-level storage for SSR-extracted navigation categories\nlet initialNavCategories = null\n\n// On client, try to restore from window (set by server render)\nif (!isServer && window.__INITIAL_NAV_CATEGORIES__) {\n    initialNavCategories = window.__INITIAL_NAV_CATEGORIES__\n}\n\n/**\n * Stores only top-level navigation categories (without nested children) for server-side injection into window\n * This keeps the HTML payload small while providing enough data for initial render\n */\nexport const storeInitialNavCategories = (categories) => {\n    if (isServer && categories?.length > 0) {\n        // Extract only top-level category data (no deep nesting) to minimize payload\n        initialNavCategories = categories.map((cat) => ({\n            id: cat.id,\n            name: cat.name,\n            c_slugURL: cat.c_slugURL,\n            c_relSlugURL: cat.c_relSlugURL,\n            c_showInMenu: cat.c_showInMenu,\n            c_bubbleImageUrl: cat.c_bubbleImageUrl,\n            categories: []\n        }))\n    }\n    return initialNavCategories\n}\n\nexport const useMenuCategories = (categoryId = CAT_MENU_DEFAULT_ROOT_CATEGORY, levels = 3) => {\n    // Only use placeholderData for root navigation category\n    const isRootNavigation = categoryId === CAT_MENU_DEFAULT_ROOT_CATEGORY\n\n    const {data: categoriesTree} = useCategory(\n        {parameters: {id: categoryId, levels}},\n        {\n            // Use initial nav categories as placeholderData only for root navigation to prevent empty state during hydration\n            placeholderData:\n                isRootNavigation && initialNavCategories\n                    ? {\n                          id: categoryId,\n                          categories: initialNavCategories\n                      }\n                    : undefined,\n            ...(isRootNavigation\n                ? {\n                      staleTime: Infinity,\n                      refetchOnMount: false,\n                      refetchOnWindowFocus: false\n                  }\n                : {})\n        }\n    )\n\n    const menuCategories = useMemo(() => {\n        if (!categoriesTree) {\n            // Return initial nav categories during loading to prevent empty state (only for root navigation)\n            return isRootNavigation ? initialNavCategories || [] : []\n        }\n\n        const flattenedCategories = flatten(categoriesTree, 'categories')\n        const rootCategory = flattenedCategories[categoryId] ?? {}\n\n        return (rootCategory.categories || rootCategory.parentCategoryTree) ?? []\n    }, [categoriesTree, categoryId, isRootNavigation])\n\n    // Store categories on server-side for window injection (only for root navigation)\n    if (isRootNavigation) {\n        storeInitialNavCategories(menuCategories)\n    }\n\n    return menuCategories\n}\n","import {useHistory} from 'react-router-dom'\nimport {useCmsAction} from 'pandora-shared-app/overrides/app/hooks/use-cms-action'\nimport {useTrackTealiumEvent} from 'pandora-shared-app/overrides/app/utils/use-tealium-tracking'\nimport {isStorybook} from 'pandora-shared-app/overrides/app/utils/is-storybook'\nimport {removeInvisibleChars} from 'pandora-shared-app/overrides/app/utils/string-utils'\n\nconst DEFAULT_VALUE = !isStorybook()\n\nconst cleanLinkData = (linkData) => {\n    if (!linkData || typeof linkData.value !== 'string') {\n        return linkData\n    }\n\n    return {\n        ...linkData,\n        value: removeInvisibleChars(linkData.value)\n    }\n}\n\nexport const useContentLinkLogic = ({\n    linkData,\n    contentMeta,\n    disabled,\n    stopPropagation,\n    useAnalytics = DEFAULT_VALUE,\n    enabled = DEFAULT_VALUE\n}) => {\n    const history = useHistory()\n    const cleanedLinkData = cleanLinkData(linkData)\n    const {action: ctaAction, isLoading} = useCmsAction(cleanedLinkData)\n    const {trackEvent} = UseTrackTealiumEvent()\n\n    if (!enabled) {\n        return {}\n    }\n\n    const handleClick = (event) => {\n        event.preventDefault()\n\n        if (stopPropagation) {\n            event.stopPropagation()\n        }\n\n        if (disabled) {\n            return\n        }\n\n        // Check for noAction FIRST, before any navigation\n        if (ctaAction?.noAction) {\n            return\n        }\n\n        trackEvent({\n            contentMeta,\n            enabled: useAnalytics,\n            contentType: linkData?.contentType\n        })\n\n        if (linkData?.target) {\n            ctaAction.router = !linkData?.target\n        }\n\n        if (ctaAction?.router) {\n            history.push(ctaAction?.value)\n        } else if (linkData?.target) {\n            window?.open(ctaAction?.value, '_blank', 'noopener,noreferrer')\n        } else if (ctaAction?.class) {\n            // intentional empty check\n        } else {\n            window.location.href = ctaAction?.value\n        }\n    }\n\n    let linkProps\n    if (ctaAction?.class) {\n        linkProps = {\n            className: ctaAction?.value\n        }\n    } else if (ctaAction?.router) {\n        linkProps = {\n            to: ctaAction?.value,\n            role: 'link',\n            'aria-roledescription': 'link'\n        }\n    } else {\n        linkProps = {\n            href: ctaAction?.value,\n            target: linkData?.target ? '_blank' : undefined,\n            rel: 'noopener noreferrer'\n        }\n    }\n\n    return {linkProps, handleClick, isLoading}\n}\n\n// Custom hook for Tealium logic\nconst UseTrackTealiumEvent = () => {\n    return useTrackTealiumEvent()\n}\n","import {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\n\nexport const useTrackTealiumEvent = () => {\n    const {link} = useTealium()\n\n    const trackEvent = ({contentMeta, enabled, contentType}) => {\n        if (!enabled) return\n\n        link({\n            estore_event: ['content_clicked'],\n            content_id: contentMeta?.deliveryId || '',\n            content_name: contentMeta?.name || '',\n            content_type: contentType || contentMeta?.schema?.split('/').pop() || ''\n        })\n    }\n\n    return {trackEvent}\n}\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Component(s)\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component(s)\nimport Link from 'pandora-shared-app/overrides/app/components/link/'\n\nimport {\n    LinkType,\n    ContentMetaType,\n    StylePropType\n} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Custom Hook(s)\nimport {useContentLinkLogic} from 'pandora-shared-app/overrides/app/hooks/use-content-link-logic'\n\nimport {\n    COLORS,\n    COLOR_SCHEMES,\n    DIRECTIONS,\n    SIZES,\n    VARIANTS\n} from 'pandora-shared-app/overrides/app/components/link/constants'\n\nexport const ContentLink = ({\n    dataAuto,\n    size = SIZES.LARGE,\n    variant = VARIANTS.UNDERLINE,\n    colorScheme = COLOR_SCHEMES.LIGHT,\n    color = COLORS.PRIMARY,\n    rootStyles,\n    linkData,\n    contentMeta,\n    customClickHandler,\n    disabled = false,\n    stopPropagation = false,\n    children,\n    enabled,\n    useAnalytics,\n    direction = DIRECTIONS.LEFT,\n    contentType,\n    ...rest\n}) => {\n    const linkDataWithContentType = useMemo(\n        () => (contentType ? {...linkData, contentType} : linkData),\n        [contentType, linkData]\n    )\n    const {linkProps, handleClick, isLoading} = useContentLinkLogic({\n        linkData: linkDataWithContentType,\n        contentMeta,\n        disabled,\n        useAnalytics,\n        stopPropagation,\n        enabled\n    })\n\n    const cursor = isLoading ? 'default' : 'pointer'\n    const shouldHandleClick = isLoading ? undefined : handleClick\n\n    if (children) {\n        return (\n            <Box\n                tabIndex={disabled ? -1 : 0}\n                {...linkProps}\n                cursor={cursor}\n                onClick={customClickHandler ?? shouldHandleClick}\n                disabled={disabled}\n                {...rootStyles}\n                {...rest}\n            >\n                {children}\n            </Box>\n        )\n    }\n\n    return (\n        <Link\n            {...linkProps}\n            onClick={customClickHandler ?? handleClick}\n            data-auto={dataAuto}\n            disabled={disabled}\n            version=\"new\"\n            size={size}\n            variant={variant}\n            colorScheme={colorScheme}\n            color={color}\n            direction={direction}\n            isAbsolute={true}\n            noHref={!!customClickHandler}\n            {...rest}\n        >\n            {linkData?.text}\n        </Link>\n    )\n}\n\nContentLink.propTypes = {\n    size: PropTypes.oneOf(Object.values(SIZES)),\n    variant: PropTypes.oneOf(Object.values(VARIANTS)),\n    colorScheme: PropTypes.oneOf(Object.values(COLOR_SCHEMES)),\n    color: PropTypes.oneOf(Object.values(COLORS)),\n    direction: PropTypes.oneOf(Object.values(DIRECTIONS)),\n    rootStyles: StylePropType,\n    disabled: PropTypes.bool,\n    children: PropTypes.node,\n    linkData: LinkType,\n    contentMeta: ContentMetaType,\n    customClickHandler: PropTypes.func,\n    stopPropagation: PropTypes.bool,\n    useAnalytics: PropTypes.bool,\n    enabled: PropTypes.bool,\n    dataAuto: PropTypes.string,\n    contentType: PropTypes.string\n}\n\nContentLink.displayName = 'ContentLink'\n","import {useMemo} from 'react'\nimport {useProduct} from '@salesforce/commerce-sdk-react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useCategoryFromCache} from 'pandora-shared-app/overrides/app/hooks/use-category-from-cache'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {\n    parseIdFromValue,\n    buildCategoryUrl,\n    buildProductUrl,\n    buildBasicCmsAction\n} from '../components/content-link/utils/content-link-utils'\n\n/**\n * Custom hook that handles CMS action resolution with conditional data fetching\n * @param {object} cta - CMS call-to-action object with type and value\n * @returns {object} - Action object and loading state\n */\nexport const useCmsAction = (cta) => {\n    const type = cta?.type\n    const value = cta?.value\n    const {buildUrl} = useMultiSite()\n    const isCategoryCacheEnabled = useVariant(LD_KEYS.enableCmsActionCategoryCache, false)\n    // Discover tab sunset (FIND-6068): only pin category CTAs to the Shop tab once the\n    // Discover tab itself is sunset (main-content flag OFF), so the flag is the single\n    // switch for the whole sunset.\n    const enablePlpMainContent = useVariant(LD_KEYS.enablePlpMainContent, true)\n\n    // Parse ID for category and product types\n    const parsedData = type === 'category' || type === 'product' ? parseIdFromValue(value) : null\n    const isCategoryCta = type === 'category' && !!parsedData?.id\n    const shouldFetchProduct = type === 'product' && !!parsedData?.id\n\n    const {category: categoryData, isLoading: isCategoryLoading} = useCategoryFromCache(\n        parsedData?.id,\n        {enabled: isCategoryCacheEnabled && isCategoryCta, withApiFallback: isCategoryCta}\n    )\n\n    const productQuery = useProduct(\n        {\n            parameters: {id: parsedData?.id}\n        },\n        {\n            enabled: shouldFetchProduct\n        }\n    )\n\n    // Determine loading state\n    const isLoading = isCategoryLoading || (shouldFetchProduct && productQuery.isLoading)\n\n    // Build action object based on type\n    const action = useMemo(() => {\n        // Handle data-dependent types\n        if (type === 'product') {\n            if (!productQuery.data || isLoading) {\n                return {router: false, value: '#', reloadDocument: 'reloadDocument', noAction: true}\n            }\n            const productUrl = buildProductUrl(value, productQuery.data)\n            return {router: false, value: productUrl, reloadDocument: 'reloadDocument'}\n        }\n\n        if (type === 'category') {\n            if (!categoryData || isLoading) {\n                return {router: true, value: '#', noAction: true}\n            }\n            const categoryUrl = buildCategoryUrl(value, categoryData, !enablePlpMainContent)\n            return {router: true, value: buildUrl(categoryUrl)}\n        }\n\n        // Handle basic types that don't need async data\n        return buildBasicCmsAction(cta, buildUrl)\n    }, [\n        type,\n        value,\n        productQuery.data,\n        categoryData,\n        isLoading,\n        cta,\n        buildUrl,\n        enablePlpMainContent\n    ])\n\n    return {\n        action,\n        isLoading\n    }\n}\n","import {useEffect} from 'react'\nimport {useLocation} from 'react-router-dom'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {omitNullable, pick} from '@salesforce/commerce-sdk-react/hooks/utils'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getCustomKeys} from '../utils/get-custom-keys'\nimport {getApiData} from './useCustomQuery'\nimport {useInfiniteQuery} from './use-infinite-query'\nimport {queryKeyHelpers} from './query-key-helpers'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {\n    defaultProductQueryOptions,\n    defaultSearchRequestOptions,\n    getSearchProviderHeaderValue\n} from '../api_keys/search-keys'\nimport {useServerContext} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\nimport {transformBRSearchResponse} from './helpers/product-search-mapper'\nimport {canonicalRefinementsMapper} from '../utils/seo-filters-mapper'\nimport {setLdContextAttr} from '../utils/set-ld-context-attr'\nimport {getParsedCookieValue, getRawCookieValue} from '../utils/server-cookies'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useUrlMapping} from './use-url-mapping'\nimport {getDolChannelHeaders} from '../utils/dol-channel-headers'\nimport useCookie from 'react-use-cookie'\nimport {BR_UID_COOKIE} from '../constants'\nimport {useUserPriceSegment} from '@salesforce/retail-react-app/app/contexts'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {useConsent} from 'pandora-shared-app/overrides/app/components/onetrust'\nimport {useEffectiveDateTime} from './use-effective-date-time'\n\n/** @typedef {import('./types/product-search').UseProductSearchResult} UseProductSearchResult */\n\nconst pushUniqueRefineKeys = (param, input) => {\n    const [paramKey] = param.split('=')\n    // If paramKey is not found in the array, append it as a new entry\n    const keyExists = input.some((item) => item.startsWith(paramKey))\n    if (keyExists) {\n        const index = input.findIndex((item) => item.startsWith(paramKey))\n\n        if (index !== -1) {\n            // Replace the item at the found index with newValue\n            input[index] = param\n        }\n    } else {\n        input.push(param)\n    }\n    return input\n}\n\n/**\n * The keys that are allowed to be passed to the product search endpoint.\n * @type {string[]}\n */\nexport const productSearchParamKeys = [\n    'q',\n    'refine',\n    'sort',\n    'currency',\n    'locale',\n    'expand',\n    'offset',\n    'limit',\n    'select',\n    'allImages',\n    'allVariationProperties',\n    'perPricebook',\n    'url',\n    'customerSegment'\n]\n\n/**\n * @deprecated Use `useProductSearchV2` instead.\n * Product search via SFCC/Bloomreach (v1 contract).\n *\n * @param {{ parameters: Object }} apiOptions\n * @param {import('@tanstack/react-query').UseInfiniteQueryOptions} [queryOptions]\n * @returns {UseProductSearchResult}\n */\nexport const useProductSearch = (apiOptions, queryOptions = {}) => {\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const location = useLocation()\n    const appOrigin = useAppOrigin(true)\n    const {getUserPriceContext} = useUserPriceSegment()\n    const basePath = `${appOrigin}${location.pathname}${location.search}`\n    const rawSourceFlag = useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce')\n    const {isPreviewMode} = useEffectiveDateTime()\n    const sourceFlag = isPreviewMode ? 'salesforce' : rawSourceFlag\n    const isBloomreachEnabled = sourceFlag === 'bloomreach'\n    const isContextEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const isSsrPriceContextFixEnabled = useVariant(\n        LD_KEYS.enableGlobalSsrPriceContextCookieHandling,\n        false\n    )\n    const enableProductSearchOn404 = useVariant(LD_KEYS.enableProductSearchOn404, false)\n    const enableBrAbTesting = useVariant(LD_KEYS.enableBrAbTesting, false)\n    // [FIND-6492] DOL Q3 channel migration. Flag ON → drop the deprecated `source`\n    // query param, send `searchProvider` as a header (per DOL Search API spec), and\n    // add mandatory channelname ('pva') / channeltype headers. Flag OFF → legacy\n    // `source` query param, no new headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolQ3Headers = isDolQ3MigrationEnabled\n        ? {...getDolChannelHeaders('pva'), searchProvider: getSearchProviderHeaderValue(sourceFlag)}\n        : {}\n    const proxyPath = appConfig.dolAPI.proxyPath\n\n    const {parameters: apiParams} = apiOptions\n\n    const [brCookie] = useCookie(BR_UID_COOKIE, 'undefined')\n    const {allowTracking, selectedDnt} = useConsent()\n\n    // When enableBrAbTesting is ON: resolve cookie value for personalization checks.\n    // When OFF: always null — no behaviour change from pre-feature state.\n    const brCookieValue = enableBrAbTesting ? (brCookie !== 'undefined' ? brCookie : null) : null\n\n    // When enableBrAbTesting is ON: check if personalization is available BEFORE the query runs.\n    // When true on SPA navigation, the initial fetch is already personalized — no refetch needed.\n    // On direct page load (SSR → hydration), this is false server-side (typeof document check),\n    // so usePersonalizedRefetch's post-hydration refetch handles that case.\n    // When enableBrAbTesting is OFF: always false — no behaviour change from pre-feature state.\n    const hasPersonalizationAvailable = Boolean(\n        enableBrAbTesting &&\n            isBloomreachEnabled &&\n            brCookieValue &&\n            typeof document !== 'undefined' &&\n            allowTracking &&\n            selectedDnt !== true\n    )\n\n    if (hasPersonalizationAvailable) {\n        document.cookie = `userId=${brCookieValue}; path=/; SameSite=Lax`\n    }\n    const defaultParams = {\n        ...defaultSearchRequestOptions(sourceFlag, isDolQ3MigrationEnabled),\n        locale: locale.id,\n        url: basePath\n    }\n    const allowedParamKeys = [...productSearchParamKeys, ...getCustomKeys(apiParams)]\n    const allowedParameters = pick(apiParams, allowedParamKeys)\n    const parameters = omitNullable({\n        ...defaultParams,\n        ...allowedParameters\n    })\n    const {...restOptions} = parameters\n    const queryKey = queryKeyHelpers.productSearch.queryKey(restOptions)\n    const {req, res} = useServerContext()\n\n    const {data: urlMapping} = useUrlMapping()\n\n    // Allow product search even when urlMapping fails (404) if we have urlSegment\n    // This enables showing parent category products on invalid URLs\n    // Allow product search even when urlMapping fails (404) if we have urlSegment\n    // This enables showing parent category products on invalid URLs\n    const isQueryEnabled = Boolean(\n        queryOptions.enabled &&\n            (!!(urlMapping && apiParams.urlSegment) ||\n                apiParams?.isCgidManual ||\n                (enableProductSearchOn404 && !!apiParams.urlSegment) ||\n                !!(urlMapping && apiParams.q))\n    )\n\n    useEffect(() => {\n        setLdContextAttr(isBloomreachEnabled)\n    }, [isBloomreachEnabled])\n\n    const method = async ({parameters, path, ...restOptions}) => {\n        if (isServer && isContextEnabled) {\n            const cookieValue = isSsrPriceContextFixEnabled\n                ? getRawCookieValue(req.headers.cookie, 'expSegGrp')\n                : getParsedCookieValue(req.headers.cookie, 'expSegGrp')\n            if (cookieValue) {\n                await getUserPriceContext(cookieValue, {\n                    failSafe: isSsrPriceContextFixEnabled\n                })\n            }\n        }\n        //Need a flag for delete filters only\n        if (apiParams.urlSegment || urlMapping) {\n            if (urlMapping && !!apiParams.q) {\n                if (urlMapping?.refinements) {\n                    canonicalRefinementsMapper(\n                        parameters,\n                        urlMapping?.refinements,\n                        isBloomreachEnabled\n                    )\n                }\n            } else if (urlMapping?.destinationUrl && !apiParams.q) {\n                let redirectUrl = urlMapping.destinationUrl\n\n                if (urlMapping.copySourceParams) {\n                    let sourceQuery = ''\n\n                    if (res && req) {\n                        // Server-side\n                        const queryParams = req.query\n                        const query = new URLSearchParams(queryParams).toString()\n                        if (query) {\n                            sourceQuery = query\n                        }\n                    } else {\n                        // Client-side\n                        const search = window.location.search\n                        if (search) {\n                            sourceQuery = search.substring(1) // remove the '?'\n                        }\n                    }\n\n                    if (sourceQuery) {\n                        const separator = redirectUrl.includes('?') ? '&' : '?'\n                        redirectUrl += separator + sourceQuery\n                    }\n                }\n\n                return {redirect: {redirectUrl: redirectUrl, statusCode: urlMapping?.statusCode}}\n            }\n            //Move to component after implementing pre-fetch related changes\n            else if (urlMapping?.resourceId && !apiParams?.isCgidManual) {\n                const catKey = `cgid=${urlMapping.resourceId}`\n                const updatedArray = pushUniqueRefineKeys(catKey, parameters.refine)\n\n                parameters.refine = updatedArray\n                if (urlMapping?.refinements) {\n                    canonicalRefinementsMapper(\n                        parameters,\n                        urlMapping?.refinements,\n                        isBloomreachEnabled\n                    )\n                }\n            } else if (apiParams?.isCgidManual && apiParams?.urlSegment) {\n                // Manual category ID mode: use the provided urlSegment as cgid\n                parameters.refine.push(`cgid=${apiParams.urlSegment}`)\n            } else if (enableProductSearchOn404 && !urlMapping && apiParams?.urlSegment) {\n                // 404 mode: When URL mapping fails (404) but we have urlSegment, use it as cgid\n                // This allows us to show parent category products on invalid URLs\n                parameters.refine.push(`cgid=${apiParams.urlSegment}`)\n            }\n        }\n\n        const response = await getApiData({\n            ...restOptions,\n            apiOptions: {path, queryParams: parameters, skipCredentials: !isBloomreachEnabled}\n        })\n\n        if (isBloomreachEnabled) {\n            return transformBRSearchResponse({\n                ...response,\n                customerSegment: parameters.customerSegment\n            })\n        }\n\n        return response\n    }\n\n    const queryResult = useInfiniteQuery(\n        {\n            baseUrl: appOrigin,\n            path: getCustomApiPaths(proxyPath).PRODUCT_SEARCH,\n            parameters,\n            headers: {\n                'x-environment': appConfig?.targetEnvironment,\n                ...dolQ3Headers\n            }\n        },\n        {\n            meta: {\n                displayName: 'useProductSearch'\n            },\n            initialPageParam: 0,\n            getNextPageParam: (lastPage, allPages) => {\n                const {total, limit} = lastPage\n                const nextOffset = allPages.length * limit\n\n                return nextOffset < total ? nextOffset : undefined\n            },\n            ...queryOptions,\n            ...defaultProductQueryOptions,\n            enabled: isQueryEnabled\n        },\n        {\n            method,\n            queryKey: [queryKey, apiParams.urlSegment],\n            requiredParameters: Object.keys(defaultParams)\n        }\n    )\n\n    return {\n        ...queryResult,\n        hasPersonalizationAvailable\n    }\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hand-with-heart-primary\",\n  \"use\": \"hand-with-heart-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"hand-with-heart-primary\\\">\\n    <path d=\\\"M15.0654 2.53617C14.5254 1.22247 13.5308 0.486734 12.3915 0.500181C11.4742 0.511009 10.5803 1.00762 9.8771 1.87114C9.15785 1.02276 8.2556 0.537914 7.35552 0.528028C6.22372 0.515597 5.26701 1.25401 4.8417 2.57279C4.32568 4.17288 5.20073 5.72795 6.27567 7.00248C7.10551 7.9864 8.15377 8.91548 9.02802 9.69033C9.301 9.93228 9.55703 10.1592 9.78413 10.368L10.461 9.63197C10.2082 9.3995 9.93416 9.15648 9.64912 8.90375C8.78415 8.13681 7.81815 7.28028 7.04009 6.35777C5.99158 5.11457 5.45131 3.94058 5.79344 2.87973C6.11074 1.89583 6.73131 1.52123 7.34453 1.52797C7.9988 1.53515 8.81763 1.97701 9.46365 2.99431L9.89534 3.67408L10.3132 2.9857C10.9396 1.95365 11.7397 1.50795 12.4033 1.50011C13.039 1.49261 13.7172 1.88667 14.1405 2.91635C14.5639 3.9464 14.1443 4.9512 13.3433 5.89822C12.6816 6.68055 11.8445 7.3222 11.2375 7.78751C11.1109 7.88452 10.9943 7.97395 10.8914 8.05531L11.5117 8.83969C11.5988 8.77078 11.703 8.69112 11.8201 8.60154C12.4222 8.14121 13.367 7.41876 14.1068 6.54402C14.9894 5.50058 15.7049 4.09209 15.0654 2.53617Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M4.06619 12.1329C5.18745 11.7325 6.38139 11.5765 7.5679 11.6753L9.00251 11.7949L12.2307 12.078C13.1203 12.156 13.8393 12.836 13.9666 13.7199C14.1338 14.8795 13.2343 15.918 12.0627 15.918H7.91716V14.918H12.0627C12.6252 14.918 13.0571 14.4194 12.9769 13.8626C12.9157 13.4382 12.5705 13.1117 12.1434 13.0742L8.9173 12.7912L8.91514 12.7911L7.48485 12.6719C6.44044 12.5848 5.3895 12.7222 4.40253 13.0747L4.15743 13.1622C2.87543 13.6201 1.45324 13.4537 0.311523 12.7123L0.856129 11.8736C1.73632 12.4452 2.83275 12.5734 3.82109 12.2205L4.06619 12.1329Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M18.8757 14.6542C18.8757 14.0447 18.3029 13.5974 17.7115 13.7452L15.3303 14.3405L15.0878 13.3704L17.469 12.7751C18.6915 12.4695 19.8757 13.3941 19.8757 14.6542C19.8757 15.4181 19.4268 16.1107 18.7294 16.4225L12.8221 19.064C11.6963 19.5674 10.4272 19.6503 9.2455 19.2976L5.73449 18.2498C4.12634 17.7698 2.40369 17.8431 0.842116 18.4579L0.767211 18.4874L0.400879 17.5569L0.475784 17.5274C2.24557 16.8306 4.19791 16.7476 6.02047 17.2915L9.53148 18.3394C10.4839 18.6236 11.5066 18.5568 12.4139 18.1511L18.3212 15.5096C18.6585 15.3588 18.8757 15.0237 18.8757 14.6542Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useIntl} from 'react-intl'\n\nexport const CaratMessage = ({diamondCaratWeight}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {formatMessage} = useIntl()\n\n    return (\n        <Text {...styles.label} itemProp=\"label\" data-auto=\"lblTileCaratWeight\">\n            {formatMessage(\n                {\n                    id: 'product_tile.label.carat',\n                    defaultMessage: '{carat} carat'\n                },\n                {\n                    carat: diamondCaratWeight\n                }\n            )}\n        </Text>\n    )\n}\n\nCaratMessage.displayName = 'CaratMessage'\nCaratMessage.propTypes = {\n    diamondCaratWeight: PropTypes.string\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_for_unicef_logo_black_blue\",\n  \"use\": \"pandora_for_unicef_logo_black_blue-usage\",\n  \"viewBox\": \"0 0 206 35\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 206 35\\\" id=\\\"pandora_for_unicef_logo_black_blue\\\"><polygon points=\\\"54.4,11.3 54.7,11.3 54.7,11.3 54.4,8.4 54.4,8.3 54.3,8.3 54.3,8.4 54,11.3 54,11.3\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"56,11.5 56,11.5 56.5,8.9 56.5,8.8 56.4,8.8 56.4,8.8 55.3,11.3 55.3,11.3\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M55.5 12.6c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C55.1 12.4 55.3 12.6 55.5 12.6zM54.4 12.5c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C54 12.3 54.2 12.5 54.4 12.5z\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"52.7,11.5 53.4,11.3 53.4,11.3 52.3,8.8 52.3,8.8 52.2,8.8 52.2,8.9 52.7,11.5\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M52.8 12.2c0 .2.2.4.4.4.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4C53 11.8 52.8 12 52.8 12.2zM6.6 13.3H3.2l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h2.3l0 0c0 0-.1-.8-.1-2.3v-2.1l0 0c.3 0 1 .1 1.2.1C9 20.8 11 19.4 11 17 11 14.6 9 13.3 6.6 13.3zM6.5 18.9c-.3 0-.9 0-1.2-.1v-3.5h1.3c1.2 0 2.1.5 2.1 1.7C8.8 18.2 8 18.9 6.5 18.9zM17.5 14.3c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.3-.7 1.3v0h2.3l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0c0 0-.3-.4-.7-1.3L17.5 14.3zM14.5 20.3l1.7-4.2h0l1.8 4.2H14.5zM34 13.3 34 13.3l-2.1 0 0 0c0 0 .1.8.1 2.3v6h0l-6.4-8.2h-2.3l0 0c.3.5.4.9.4 1.2v8.4c0 1.4-.1 2.3-.1 2.3l0 0h2.1l0 0c0 0-.1-.8-.1-2.3v-6.1h0l6.4 8.4H34l0 0c0 0-.1-.8-.1-2.3v-7.3C34 14.2 34 13.3 34 13.3zM40.5 13.3h-4l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h1.2c.8 0 1.7.1 2.7.1 3.6 0 6.2-2.6 6.2-6C46.7 15.8 44.1 13.3 40.5 13.3zM40.3 23.3c-.6 0-1.1 0-1.4-.1-.2-.1-.2-.1-.2-.4v-7.5h1.6c2.6 0 4.2 1.7 4.2 4C44.5 21.6 42.8 23.3 40.3 23.3zM54.4 13.2c-3.4 0-6.1 2.6-6.1 6.1 0 3.5 2.7 6.1 6.1 6.1 3.5 0 6.1-2.6 6.1-6.1C60.5 15.8 57.8 13.2 54.4 13.2zM54.4 23.4c-2.2 0-3.9-1.8-3.9-4.1 0-2.3 1.7-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1C58.3 21.6 56.6 23.4 54.4 23.4zM68.9 21.1c-.3-.5-.7-.8-1.2-1v0c1.2-.3 2.4-1.7 2.4-3.1 0-2-1.5-3.7-3.8-3.7h-3.8l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h2.3l0 0c0 0-.1-.8-.1-2.3v-2.3c1.1 0 1.6.2 2 .9l1 1.6c.8 1.3 1.1 2.1 1.1 2.1l0 0h2.7v0c0 0-.7-.8-1.5-2.1L68.9 21.1zM65.8 18.7c-.3 0-.7 0-1.1-.1v-3.4H66c1.3 0 1.9.8 1.9 1.8C68 17.9 67.3 18.7 65.8 18.7zM84.1 23.9l-4.2-9.6c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.3-.7 1.3v0H75l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0C84.8 25.2 84.5 24.7 84.1 23.9zM76.9 20.3l1.7-4.2h0l1.8 4.2H76.9zM97.7 24.2v-2.4h0c-.3 0-.5 0-.7 0v-.7c.2 0 .4 0 .7 0h.1v-.4c0-1.1.5-1.6 1.4-1.6.4 0 .7.1.9.2v.7h0c-.3-.2-.5-.3-.8-.3-.4 0-.7.3-.7 1v.4h.5c.4 0 .7 0 .9 0v.7c-.2 0-.6 0-.9 0h-.5v2.4c0 .4 0 .7 0 .9h-.8C97.7 24.9 97.7 24.6 97.7 24.2zM99.9 23.2c0-1.1.9-2 2-2 1.1 0 2 .9 2 2 0 1.1-.9 2-2 2C100.8 25.2 99.9 24.3 99.9 23.2zM103.3 23.2c0-.8-.6-1.4-1.3-1.4-.7 0-1.3.6-1.3 1.4 0 .8.6 1.4 1.3 1.4C102.7 24.6 103.3 24 103.3 23.2zM104.8 24.2v-2c0-.4 0-.7 0-.9h.6l0 .4h0c.2-.3.6-.5 1-.5.2 0 .5.1.6.1v.8h0c-.1-.1-.3-.3-.6-.3-.5 0-.8.4-.8 1v1.4c0 .4 0 .7 0 .9h-.8C104.8 24.9 104.8 24.6 104.8 24.2z\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M191.4 7.6c-4.3 0-7.8 3.5-7.8 7.8 0 4.3 3.5 7.8 7.8 7.8 4.3 0 7.8-3.5 7.8-7.8C199.2 11.1 195.7 7.6 191.4 7.6zM197.4 11c-.4.3-.8.5-1.3.7-.3-.5-.6-1-.9-1.5.3-.2.6-.4.9-.7C196.7 10.1 197.1 10.5 197.4 11zM194.2 8.4c.6.3 1.2.6 1.8 1-.3.2-.6.4-.9.6-.4-.4-.8-.8-1.3-1.2C193.9 8.7 194 8.6 194.2 8.4zM194.8 10.2c-.4.2-.9.4-1.3.5-.2-.4-.4-.9-.7-1.3.3-.1.5-.2.7-.4C194 9.4 194.4 9.8 194.8 10.2zM193.8 8.3c-.1.1-.2.2-.3.4-.4-.3-.9-.5-1.3-.7C192.8 8 193.3 8.1 193.8 8.3zM193.2 8.9c-.2.1-.4.2-.6.3-.2-.4-.5-.7-.8-1C192.4 8.4 192.8 8.6 193.2 8.9zM191.5 8.2c.3.3.6.7.8 1.1-.3.1-.5.1-.8.1C191.5 9.4 191.5 8.5 191.5 8.2zM191.5 9.8c.3 0 .7-.1 1-.2.2.4.5.8.6 1.2-.5.1-1.1.2-1.6.2C191.5 11 191.5 9.9 191.5 9.8zM191.2 8.2c0 .2 0 1.1 0 1.2-.3 0-.5-.1-.8-.1C190.6 8.9 190.9 8.6 191.2 8.2zM190.1 9.2c-.2-.1-.4-.2-.6-.3.4-.3.9-.5 1.3-.7C190.6 8.5 190.3 8.8 190.1 9.2zM190.5 7.9c-.5.2-.9.4-1.3.7-.1-.1-.2-.2-.3-.4C189.4 8.1 190 8 190.5 7.9zM195.9 21.3c-1-.6-1.1-1.4-1-1.7.1-.3.3-.2.4-.2.7 0 1.4-.2 2.3-1.1 1-1 1.3-3.3-.2-4.8-1.7-1.6-3.4-1.3-4.5.1-.2.3-.8.5-1.3.5-.7 0-.3.5-.3.7 0 .1-.1.2-.2.2-.2-.1-.1.3-.1.4 0 .1-.1.2-.2.2-.3 0-.2.3-.2.4 0 .1 0 .2-.1.3-.1.1-.2.3-.2.5 0 .3.3.6.8.9.5.4.6.7.6 1 0 .3 0 .7.1.9.1.3.1.9-.6 1-.9 0-2.4.7-2.5.8-.5.2-1.1.2-1.6.1-.3-.2-.5-.4-.8-.6-.1-.3.1-.7.2-1 .3.3.7.3.9.3.2 0 1.4-.2 1.6-.2.2-.1.2 0 .3 0 .4.2 1.1.2 1.3-.6.2-.9-.3-.6-.4-.6-.1 0-.2 0-.1 0 .1-.2-.1-.2-.1-.2-.2 0-.6.2-.7.3-.1.1-.2.1-.2.1-.3-.2-1.3.1-1.6-.4 0-.1-.2-2.2-.4-2.6 0-.1-.1-.2 0-.3.2-.4.9 0 1.3 0 .4 0 .5-.2.6-.3.1-.1.2-.1.3-.1.1-.1 0-.2 0-.2 0-.1.1 0 .1-.1.1-.1 0-.2 0-.3.1-.2.4 0 .2-.5-.1-.2 0-.5.2-.6.2-.3 1-1.4-.4-2.6-1.4-1.1-2.7-1-3.6-.1-.9 1-.4 2.4-.4 2.7.1.4-.2.7-.5.8-.2.1-.8.5-1.2.8.1-3 1.9-5.7 4.7-6.8.1.1.3.3.4.4-.3.2-1 .8-1 .8s.1 0 .2 0c.1 0 .2.1.2.1s.6-.5.9-.7c.2.2.5.3.7.4-.1.2-.5.9-.5.9s.1 0 .1.1c.1 0 .1.1.1.1s.4-.7.5-.9c.3.1.6.2 1 .2 0 .1 0 1.2 0 1.3-.2 0-.7 0-.8 0l-.1 0 .1.1c.1.1.1.1.1.2l0 0 0 0c.1 0 .6 0 .7 0 0 .1 0 2.3 0 2.3h.3c0 0 0-.4 0-.5.5 0 .9-.1 1.4-.1l0 0 .4-.4-.2 0c-.5.1-1 .1-1.4.1 0 0-.1 0-.2 0 0-.1 0-1.4 0-1.5.6 0 1.2-.1 1.8-.2.2.4.5 1.3.5 1.3l.3-.1c0 0-.3-.9-.5-1.3.5-.2 1-.4 1.4-.6.4.4.7.9.9 1.4-.2.1-.7.3-.6.3.3 0 .6.1.6.1s.1-.1.2-.1c0 .1.1.2.1.2l.4.2 0-.1c0 0-.1-.3-.2-.4.4-.2.9-.5 1.3-.8.8 1.2 1.2 2.6 1.2 4.1C198.8 17.8 197.7 20 195.9 21.3zM182.8 9.7l-.1.1c-.5.4-1.5 1.5-1.3 2.7 0 0 0 .1 0 .1 0 0 .1.2.1.2l.1-.1c.6-.6 1.1-1.6 1.3-2.7l.1-.3L182.8 9.7zM180.7 11.7l-.1.1c-.1.2-.2.6-.3 1.2-.1.8-.1 1.9.6 2.7 0 0 .1.1.1.1l.1.1.1-.5c.1-.9 0-2.7-.4-3.5l-.1-.3L180.7 11.7zM179.9 14.9l0 .1c-.1.8 0 2.7 1.6 3.8 0 0 .2.1.2.1l0-.2c0-.7-.9-2.9-1.5-3.7l-.2-.2L179.9 14.9zM180.2 18.3l0 .1c.2 1.1 1.3 2.9 2.9 3.5l.2.1-.1-.2c-.3-.8-1.9-2.8-2.9-3.4l-.2-.1L180.2 18.3zM183.5 11.3l-.1.1c-1.2.7-1.8 1.6-1.7 2.8l0 .3.2-.1c.7-.5 1.5-1.9 1.7-2.7l.1-.3L183.5 11.3zM182.8 13.8 182.8 13.8c-.4.4-1.4 1.5-1.3 2.8 0 .2.1.4.1.7l.1.2.1-.2c.5-.7 1.1-2.5 1.1-3.3L182.8 13.8 182.8 13.8zM182.8 16.1l-.1.1c-.5.8-.8 1.5-.8 2.3 0 .5.2 1 .5 1.5l.1.2.1-.2c.2-.4.4-1.8.4-2.8 0-.4 0-.7-.1-.9l-.1-.2L182.8 16.1zM183.4 18.6l0 .1c-.2.5-.2 1-.2 1.4 0 1 .5 1.8 1.4 2.4l.1.1 0-.2c0 0 0-.2 0-.2 0-.8-.6-3-1.1-3.6l-.1-.2L183.4 18.6zM181.7 21.8l.1.1c.7 1.1 1.8 2.5 3.9 2.2l.2 0-.1-.1c-.4-.6-2.9-2-3.8-2.2l-.2 0L181.7 21.8zM181.9 21.8 181.9 21.8 181.9 21.8zM184.8 24.6 184.8 24.6l-.3.1.3.1c1.3.5 3 .7 4 .4.4-.1.6-.3.9-.6 1.7.2 3.3 1.6 4.2 2.7l.1.1.1 0c.1 0 .3-.2.3-.2l.1-.1-.1-.1c-1-1.3-2.5-2-2.5-2.1C190.3 24.3 187.9 23.8 184.8 24.6z\\\" style=\\\"fill:#61ACEC\\\" /><path d=\\\"m184.9 21.1 0 .1c.2 1.2.7 2.9 2.8 2.7l.1 0 0-.1c-.1-.6-2.1-2.2-2.8-2.7l-.2-.1L184.9 21.1zM199.8 9.5l.1.3c.2 1.1.7 2.1 1.3 2.7l.1.1c0 0 .1-.2.1-.2 0 0 0-.1 0-.1.2-1.2-.9-2.2-1.3-2.7l-.1-.1L199.8 9.5zM202 11.5l-.1.3c-.3.8-.5 2.7-.4 3.5l.1.5.1-.1c0 0 .1-.1.1-.1.7-.8.7-1.9.6-2.7-.1-.5-.2-1-.3-1.2l-.1-.1L202 11.5zM202.8 14.7l-.2.2c-.6.8-1.5 3-1.5 3.7l0 .2c0 0 .2-.1.2-.1 1.6-1 1.6-3 1.6-3.8l0-.1L202.8 14.7zM202.6 18.2l-.2.1c-1 .6-2.6 2.6-2.9 3.4l-.1.2.2-.1c1.6-.5 2.7-2.3 2.9-3.5l0-.1L202.6 18.2zM199.2 11.2l.1.3c.2.8 1 2.2 1.7 2.8l.2.2 0-.3c.1-1.1-.5-2-1.7-2.8l-.1-.1L199.2 11.2zM199.9 13.7l0 .3c0 .8.6 2.6 1.1 3.3l.1.2.1-.2c.1-.2.1-.4.1-.7.1-1.3-.9-2.4-1.2-2.7L199.9 13.7 199.9 13.7zM199.8 16l-.1.2c-.1.2-.1.5-.1.9 0 1.1.1 2.4.4 2.8l.1.2.1-.2c.3-.5.5-1 .5-1.5 0-.7-.2-1.5-.8-2.3l-.1-.1L199.8 16zM199.3 18.5l-.1.2c-.5.6-1.1 2.8-1.1 3.6 0 0 0 .2 0 .2l0 .2.1-.1c.9-.6 1.3-1.4 1.4-2.4 0-.5-.1-.9-.2-1.4l0-.1L199.3 18.5zM201.1 21.7l-.2 0c-.9.1-3.4 1.6-3.8 2.2l-.1.1.2 0c2.1.4 3.2-1.1 3.9-2.2l.1-.1L201.1 21.7zM200.9 21.8 200.9 21.8 200.9 21.8zM191 25c-.1 0-1.6.8-2.5 2.1l-.1.1.1.1c.1.1.2.2.3.2l.1 0 0-.1c.9-1.2 2.5-2.6 4.2-2.7.3.3.5.5.9.6 1 .3 2.6.2 4-.4l.3-.1-.3-.1 0 0C194.8 23.8 192.4 24.3 191 25zM197.9 21l-.2.1c-.7.5-2.6 2.1-2.8 2.7l0 .1.1 0c2.1.2 2.6-1.5 2.8-2.7l0-.1L197.9 21zM143.9 8.1h2.7v2.4h-2.7V8.1zM144.1 25.2V13.3h2.2v11.8H144.1zM127.2 13.3h2.2v11.8h-2.2v-1.7h0c-.9 1.5-2.4 2.1-4.1 2.1-2.5 0-3.9-1.9-3.9-4.3v-7.9h2.2v7c0 2.1.5 3.6 2.6 3.6.9 0 2.2-.5 2.6-1.7.4-1.1.4-2.5.4-2.8V13.3zM133.9 15.1 133.9 15.1c.8-1.5 2.5-2.1 3.6-2.1.8 0 4.5.2 4.5 4v8.2h-2.2v-7.5c0-2-.8-3-2.7-3 0 0-1.2-.1-2.2.9-.3.3-.9.8-.9 3.2v6.4h-2.2V13.3h2.2V15.1zM155.8 17.1c-.1-1.5-.8-2.5-2.4-2.5-2.1 0-3 1.8-3 4.6 0 2.8.8 4.6 3 4.6 1.5 0 2.4-1 2.5-2.7h2.2c-.2 2.7-2.2 4.3-4.8 4.3-3.8 0-5.3-2.7-5.3-6.1 0-3.5 1.7-6.3 5.5-6.3 2.5 0 4.4 1.6 4.5 4.1H155.8zM161.4 19.7c-.2 2.1.7 4.2 3 4.2 1.7 0 2.6-.7 2.9-2.4h2.3c-.4 2.7-2.4 4-5.2 4-3.8 0-5.3-2.7-5.3-6.1 0-3.5 1.7-6.3 5.5-6.3 3.5.1 5.2 2.3 5.2 5.6v1.1H161.4zM167.4 18.1c0-2-.8-3.5-3-3.5-1.9 0-3 1.6-3 3.5H167.4zM172.3 25.1V14.9h-2v-1.6h2v-2.5c.1-2.6 2-3.3 3.7-3.3.5 0 1.1.1 1.6.2v1.9c-.4 0-.8-.1-1.1-.1-1.3 0-2 .3-1.9 1.6v2.2h2.7v1.6h-2.7v10.2H172.3z\\\" style=\\\"fill:#61ACEC\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const filterSizeTable = (sizeTable, variants) => {\n    const variantSizeKeys = new Set(variants?.map((v) => v.variationValues.size))\n    const filteredSizes = Object.fromEntries(\n        Object.entries(sizeTable?.sizes).filter(\n            ([sizeKey, sizeInfo]) =>\n                variantSizeKeys.has(sizeKey) &&\n                sizeInfo.names &&\n                Object.keys(sizeInfo.names).length > 0\n        )\n    )\n\n    return {\n        ...sizeTable,\n        sizes: filteredSizes\n    }\n}\n\nexport const getMeasurementOptions = (type, measurements, intl) => {\n    const result = []\n\n    if (type === 'ring') {\n        if (measurements?.innerCircumference) {\n            result.push({\n                key: 'innerCircumference',\n                label: intl.formatMessage({\n                    defaultMessage: 'Circumference',\n                    id: 'product.size_selector.label.circumference'\n                })\n            })\n        }\n\n        if (measurements?.innerDiameter) {\n            result.push({\n                key: 'innerDiameter',\n                label: intl.formatMessage({\n                    defaultMessage: 'Diameter',\n                    id: 'product.size_selector.label.diameter'\n                })\n            })\n        }\n    }\n\n    if (type === 'bracelet') {\n        if (measurements?.wristSize) {\n            result.push({\n                key: 'wristSize',\n                label: intl.formatMessage({\n                    defaultMessage: 'Wrist size',\n                    id: 'product.size_selector.label.wrist_size'\n                })\n            })\n        }\n    }\n\n    // For necklace → no measurement selector\n    return result\n}\n\nexport const getRegionalSizeOptions = (type, names, intl) => {\n    if (!type || !names) return []\n    const result = []\n\n    if (type === 'ring') {\n        if (names.imperial)\n            result.push({\n                key: 'imperial',\n                label: intl.formatMessage({\n                    defaultMessage: 'US sizes',\n                    id: 'product.size_selector.label.ring_us'\n                }),\n                labelSingular: intl.formatMessage({\n                    defaultMessage: 'US size',\n                    id: 'product.size_selector.label_sing.ring_us'\n                })\n            })\n        if (names.metric)\n            result.push({\n                key: 'metric',\n                label: intl.formatMessage({\n                    defaultMessage: 'EU sizes',\n                    id: 'product.size_selector.label.ring_eu'\n                }),\n                labelSingular: intl.formatMessage({\n                    defaultMessage: 'EU size',\n                    id: 'product.size_selector.label_sing.ring_eu'\n                })\n            })\n        if (names.wheatsheaf)\n            result.push({\n                key: 'wheatsheaf',\n                label: intl.formatMessage({\n                    defaultMessage: 'UK sizes',\n                    id: 'product.size_selector.label.ring_uk'\n                }),\n                labelSingular: intl.formatMessage({\n                    defaultMessage: 'UK size',\n                    id: 'product.size_selector.label_sing.ring_uk'\n                })\n            })\n    }\n\n    if (type === 'bracelet') {\n        if (names.imperial)\n            result.push({\n                key: 'imperial',\n                label: intl.formatMessage({\n                    defaultMessage: 'Bracelet size in inches',\n                    id: 'product.size_selector.label.bracelet_inch'\n                })\n            })\n        if (names.metric)\n            result.push({\n                key: 'metric',\n                label: intl.formatMessage({\n                    defaultMessage: 'Bracelet size in cm',\n                    id: 'product.size_selector.label.bracelet_cm'\n                })\n            })\n    }\n\n    if (type === 'necklace') {\n        if (names.imperial)\n            result.push({\n                key: 'imperial',\n                label: intl.formatMessage({\n                    defaultMessage: 'Necklace size in inches',\n                    id: 'product.size_selector.label.necklace_inch'\n                })\n            })\n        if (names.metric)\n            result.push({\n                key: 'metric',\n                label: intl.formatMessage({\n                    defaultMessage: 'Necklace size in cm',\n                    id: 'product.size_selector.label.necklace_cm'\n                })\n            })\n    }\n\n    return result\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"check-site-locator\",\n  \"use\": \"check-site-locator-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"check-site-locator\\\">\\n<g clip-path=\\\"url(#check-site-locator_clip0_10264_336)\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.89336 13.6863L5.35355 10.1465L4.64645 10.8536L9.10663 15.3138L15.1832 4.81781L14.3178 4.31678L8.89336 13.6863Z\\\" fill=\\\"currentColor\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"check-site-locator_clip0_10264_336\\\">\\n<rect width=\\\"12\\\" height=\\\"12\\\" fill=\\\"white\\\" transform=\\\"translate(4 4)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Remove locale prefix from url path\n * @param urlPath - The URL path to remove the locale prefix from\n * @returns {string} - The URL path with the locale prefix removed\n */\nexport const removeLocalePrefix = (urlPath) => urlPath.replace(/^\\/[a-z]{2}(?=\\/)/, '')\n","import {removeLocalePrefix} from './remove-locale-prefix'\n\nexport const NON_CATEGORY_ROUTES = ['/', '/page-not-found', '/something-went-wrong']\n\n/**\n * Checks if a given URL path is a non-category route.\n * Removes locale prefixes, query parameters, and hash fragments from the URL before checking.\n *\n * @param {string} urlPath - The URL path to check (e.g., \"/en/search\", \"/category?param=value\").\n * @returns {boolean} - Returns true if the path is a non-category route, false otherwise.\n */\nexport const isNonCategoryRoute = (urlPath, disableDoubleLocale) => {\n    // Remove locale prefix if present\n    const path = disableDoubleLocale ? urlPath : removeLocalePrefix(urlPath)\n\n    // Remove query parameters and hash fragments\n    const cleanPath = path.split(/[?#]/)[0]\n\n    // Normalize the path (remove trailing slash)\n    const normalizedPath =\n        cleanPath.endsWith('/') && cleanPath.length > 1 ? cleanPath.slice(0, -1) : cleanPath\n\n    return NON_CATEGORY_ROUTES.includes(normalizedPath)\n}\n","/**\n * Remove parameters from url\n * @param urlPath - The URL path to remove parameters\n * @returns {string} - The URL path with the parameters removed\n */\nexport const removeParameters = (urlPath) => urlPath.split(/[?#]/)[0]\n","/**\n * Map url segment for search\n * @param urlPath - The URL path to map\n * @returns {string} - The URL path mapped\n */\nexport const mapUrlSegment = (urlPath) => {\n    if (\n        urlPath &&\n        typeof urlPath === 'string' &&\n        (urlPath.startsWith('/search') || urlPath.startsWith('/Search'))\n    ) {\n        return `/pwa${urlPath}`\n    }\n    return urlPath\n}\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {\n    Button,\n    Stack,\n    Text,\n    Alert,\n    AlertIcon\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {BrandLogo} from '@salesforce/retail-react-app/app/components/icons'\n\nconst PasswordlessEmailConfirmation = ({form, submitForm, email = ''}) => {\n    return (\n        <form\n            onSubmit={form.handleSubmit(submitForm)}\n            data-testid=\"sf-form-resend-passwordless-email\"\n        >\n            <Stack spacing={6}>\n                <Stack\n                    justify=\"center\"\n                    align=\"center\"\n                    spacing={6}\n                    role=\"alert\"\n                    aria-live=\"polite\"\n                    aria-labelledby=\"email-confirmation-title\"\n                    aria-describedby=\"email-confirmation-desc email-confirmation-spam\"\n                    tabIndex=\"-1\"\n                >\n                    <BrandLogo width=\"60px\" height=\"auto\" aria-hidden={true} />\n                    <Text\n                        align=\"center\"\n                        fontSize=\"xl\"\n                        fontWeight=\"semibold\"\n                        id=\"email-confirmation-title\"\n                    >\n                        <FormattedMessage\n                            defaultMessage=\"Check Your Email\"\n                            id=\"auth_modal.check_email.title.check_your_email\"\n                        />\n                    </Text>\n                    {form.formState.errors?.global && (\n                        <Alert status=\"error\">\n                            <AlertIcon color=\"red.500\" boxSize={4} />\n                            <Text fontSize=\"sm\" ml={3}>\n                                {form.formState.errors.global.message}\n                            </Text>\n                        </Alert>\n                    )}\n                    <Stack spacing={10}>\n                        <Text align=\"center\" fontSize=\"md\" id=\"email-confirmation-desc\">\n                            <FormattedMessage\n                                defaultMessage=\"We just sent a login link to <b>{email}</b>\"\n                                id=\"auth_modal.check_email.description.just_sent\"\n                                values={{\n                                    email: email,\n                                    b: (chunks) => <b>{chunks}</b>\n                                }}\n                            />\n                        </Text>\n                        <Text align=\"center\" fontSize=\"sm\" id=\"email-confirmation-spam\">\n                            <FormattedMessage\n                                defaultMessage=\"The link may take a few minutes to arrive, check your spam folder if you're having trouble finding it\"\n                                id=\"auth_modal.check_email.description.check_spam_folder\"\n                            />\n                        </Text>\n                    </Stack>\n                </Stack>\n                <Button type=\"submit\">\n                    <FormattedMessage\n                        defaultMessage=\"Resend Link\"\n                        id=\"auth_modal.check_email.button.resend_link\"\n                    />\n                </Button>\n            </Stack>\n        </form>\n    )\n}\n\nPasswordlessEmailConfirmation.propTypes = {\n    form: PropTypes.object,\n    submitForm: PropTypes.func,\n    email: PropTypes.string\n}\n\nexport default PasswordlessEmailConfirmation\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React, {useEffect, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {defineMessage, useIntl} from 'react-intl'\nimport {useForm} from 'react-hook-form'\nimport {\n    Modal,\n    ModalBody,\n    ModalCloseButton,\n    ModalContent,\n    ModalOverlay,\n    useDisclosure,\n    useToast\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {\n    AuthHelpers,\n    useAuthHelper,\n    useCustomer,\n    useCustomerId,\n    useCustomerType,\n    useShopperBasketsV2Mutation as useShopperBasketsMutation\n} from '@salesforce/commerce-sdk-react'\nimport {useCustomerBaskets} from 'pandora-shared-app/overrides/app/hooks/use-customer-baskets'\nimport LoginForm from '@salesforce/retail-react-app/app/components/login'\nimport ResetPasswordForm from '@salesforce/retail-react-app/app/components/reset-password'\nimport RegisterForm from '@salesforce/retail-react-app/app/components/register'\nimport PasswordlessEmailConfirmation from '@salesforce/retail-react-app/app/components/email-confirmation/index'\nimport {noop} from '@salesforce/retail-react-app/app/utils/utils'\nimport {\n    API_ERROR_MESSAGE,\n    FEATURE_UNAVAILABLE_ERROR_MESSAGE,\n    LOGIN_TYPES,\n    PASSWORDLESS_ERROR_MESSAGES,\n    USER_NOT_FOUND_ERROR\n} from '@salesforce/retail-react-app/app/constants'\nimport useNavigation from '@salesforce/retail-react-app/app/hooks/use-navigation'\nimport {usePrevious} from '@salesforce/retail-react-app/app/hooks/use-previous'\nimport {usePasswordReset} from '@salesforce/retail-react-app/app/hooks/use-password-reset'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {isAbsoluteURL} from '@salesforce/retail-react-app/app/page-designer/utils'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\n\nexport const LOGIN_VIEW = 'login'\nexport const REGISTER_VIEW = 'register'\nexport const PASSWORD_VIEW = 'password'\nexport const EMAIL_VIEW = 'email'\n\nconst LOGIN_ERROR = defineMessage({\n    defaultMessage: \"Something's not right with your email or password. Try again.\",\n    id: 'auth_modal.error.incorrect_email_or_password'\n})\n\nconst CREATE_ACCOUNT_FIRST_ERROR_MESSAGE = defineMessage({\n    defaultMessage:\n        'This feature is not currently available. You must create an account to access this feature.',\n    id: 'global.error.create_account'\n})\n\nexport const AuthModal = ({\n    initialView = LOGIN_VIEW,\n    initialEmail = '',\n    onLoginSuccess = noop,\n    onRegistrationSuccess = noop,\n    isOpen,\n    onOpen,\n    onClose,\n    isPasswordlessEnabled = false,\n    isSocialEnabled = false,\n    idps = [],\n    ...props\n}) => {\n    const {formatMessage} = useIntl()\n    const customerId = useCustomerId()\n    const {isRegistered, customerType} = useCustomerType()\n    const prevAuthType = usePrevious(customerType)\n\n    const customer = useCustomer(\n        {parameters: {customerId}},\n        {enabled: !!customerId && isRegistered}\n    )\n\n    const navigate = useNavigation()\n    const [currentView, setCurrentView] = useState(initialView)\n    const form = useForm()\n    const toast = useToast()\n    const login = useAuthHelper(AuthHelpers.LoginRegisteredUserB2C)\n    const register = useAuthHelper(AuthHelpers.Register)\n    const appOrigin = useAppOrigin()\n\n    const [loginType, setLoginType] = useState(LOGIN_TYPES.PASSWORD)\n    const [passwordlessLoginEmail, setPasswordlessLoginEmail] = useState(initialEmail)\n    const {getPasswordResetToken} = usePasswordReset()\n    const authorizePasswordlessLogin = useAuthHelper(AuthHelpers.AuthorizePasswordless)\n    const passwordlessConfigCallback = getConfig().app.login?.passwordless?.callbackURI\n    const callbackURL = isAbsoluteURL(passwordlessConfigCallback)\n        ? passwordlessConfigCallback\n        : `${appOrigin}${passwordlessConfigCallback}`\n\n    const {data: baskets} = useCustomerBaskets(\n        {parameters: {customerId}},\n        {enabled: !!customerId && !isServer, keepPreviousData: true}\n    )\n    const mergeBasket = useShopperBasketsMutation('mergeBasket')\n\n    const submitForm = async (data) => {\n        form.clearErrors()\n\n        const onLoginSuccess = () => {\n            navigate('/account')\n        }\n\n        const handlePasswordlessLogin = async (email) => {\n            try {\n                const redirectPath = window.location.pathname + window.location.search\n                await authorizePasswordlessLogin.mutateAsync({\n                    userid: email,\n                    callbackURI: `${callbackURL}?redirectUrl=${redirectPath}`\n                })\n                setCurrentView(EMAIL_VIEW)\n            } catch (error) {\n                let message\n                /* istanbul ignore next */\n                if (USER_NOT_FOUND_ERROR.test(error.message)) {\n                    message = formatMessage(CREATE_ACCOUNT_FIRST_ERROR_MESSAGE)\n                } else {\n                    message = PASSWORDLESS_ERROR_MESSAGES.some((msg) => msg.test(error.message))\n                        ? formatMessage(FEATURE_UNAVAILABLE_ERROR_MESSAGE)\n                        : formatMessage(API_ERROR_MESSAGE)\n                }\n                form.setError('global', {type: 'manual', message})\n            }\n        }\n\n        return {\n            login: async (data) => {\n                if (loginType === LOGIN_TYPES.PASSWORD) {\n                    /* istanbul ignore next */\n                    try {\n                        await login.mutateAsync({\n                            username: data.email,\n                            password: data.password\n                        })\n                        const hasBasketItem = baskets?.baskets?.[0]?.productItems?.length > 0\n                        // we only want to merge basket when the user is logged in as a recurring user\n                        // only recurring users trigger the login mutation, new user triggers register mutation\n                        // this logic needs to stay in this block because this is the only place that tells if a user is a recurring user\n                        // if you change logic here, also change it in login page\n                        const shouldMergeBasket = hasBasketItem && prevAuthType === 'guest'\n                        if (shouldMergeBasket) {\n                            mergeBasket.mutate({\n                                headers: {\n                                    // This is not required since the request has no body\n                                    // but CommerceAPI throws a '419 - Unsupported Media Type' error if this header is removed.\n                                    'Content-Type': 'application/json'\n                                },\n                                parameters: {\n                                    createDestinationBasket: true\n                                }\n                            })\n                        }\n                    } catch (error) {\n                        /* istanbul ignore next */\n                        const message = /Unauthorized/i.test(error.message)\n                            ? formatMessage(LOGIN_ERROR)\n                            : formatMessage(API_ERROR_MESSAGE)\n                        form.setError('global', {type: 'manual', message})\n                    }\n                } else if (loginType === LOGIN_TYPES.PASSWORDLESS) {\n                    setPasswordlessLoginEmail(data.email)\n                    await handlePasswordlessLogin(data.email)\n                }\n            },\n            register: async (data) => {\n                /* istanbul ignore next */\n                try {\n                    const body = {\n                        customer: {\n                            firstName: data.firstName,\n                            lastName: data.lastName,\n                            email: data.email,\n                            login: data.email\n                        },\n                        password: data.password\n                    }\n\n                    await register.mutateAsync(body)\n                    onLoginSuccess()\n                } catch (error) {\n                    form.setError('global', {\n                        type: 'manual',\n                        message: formatMessage(API_ERROR_MESSAGE)\n                    })\n                }\n            },\n            password: async (data) => {\n                /* istanbul ignore next */\n                try {\n                    await getPasswordResetToken(data.email)\n                } catch (e) {\n                    const message =\n                        e.response?.status === 400\n                            ? formatMessage(FEATURE_UNAVAILABLE_ERROR_MESSAGE)\n                            : formatMessage(API_ERROR_MESSAGE)\n                    form.setError('global', {type: 'manual', message})\n                }\n            },\n            email: async () => {\n                await handlePasswordlessLogin(passwordlessLoginEmail)\n            }\n        }[currentView](data)\n    }\n\n    // Reset form and local state when opening the modal\n    useEffect(() => {\n        if (isOpen) {\n            setLoginType(LOGIN_TYPES.PASSWORD)\n            setCurrentView(initialView)\n            form.reset()\n        }\n    }, [isOpen])\n\n    // Auto-focus the first field in each form view\n    useEffect(() => {\n        const initialField = {\n            [LOGIN_VIEW]: 'email',\n            [REGISTER_VIEW]: 'firstName',\n            [PASSWORD_VIEW]: 'email'\n        }[currentView]\n        const fieldsRef = form.control?.fieldsRef?.current\n        fieldsRef?.[initialField]?.ref.focus()\n    }, [form.control?.fieldsRef?.current])\n\n    // Clear form state when changing views\n    useEffect(() => {\n        form.reset()\n    }, [currentView])\n\n    useEffect(() => {\n        setPasswordlessLoginEmail(initialEmail)\n    }, [initialEmail])\n\n    useEffect(() => {\n        // Lets determine if the user has either logged in, or registed.\n        const loggingIn = currentView === LOGIN_VIEW\n        const registering = currentView === REGISTER_VIEW\n        const isNowRegistered = isOpen && isRegistered && (loggingIn || registering)\n        // If the customer changed, but it's not because they logged in or registered. Do nothing.\n        if (!isNowRegistered) {\n            return\n        }\n\n        // We are done with the modal.\n        onClose()\n\n        // Show a toast only for those registed users returning to the site.\n        /* istanbul ignore next */\n        if (loggingIn) {\n            toast({\n                variant: 'subtle',\n                title: `${formatMessage(\n                    {\n                        defaultMessage: 'Welcome {name},',\n                        id: 'auth_modal.info.welcome_user'\n                    },\n                    {\n                        name: customer.data?.firstName || ''\n                    }\n                )}`,\n                description: `${formatMessage({\n                    defaultMessage: \"You're now signed in.\",\n                    id: 'auth_modal.description.now_signed_in'\n                })}`,\n                status: 'success',\n                position: 'top-right',\n                isClosable: true\n            })\n\n            // Execute action to be performed on successful login\n            onLoginSuccess()\n        }\n\n        /* istanbul ignore next */\n        if (registering) {\n            // Execute action to be performed on successful registration\n            onRegistrationSuccess()\n        }\n    }, [isRegistered])\n\n    const onBackToSignInClick = () =>\n        initialView === PASSWORD_VIEW ? onClose() : setCurrentView(LOGIN_VIEW)\n\n    return (\n        <Modal\n            size=\"sm\"\n            closeOnOverlayClick={false}\n            data-testid=\"sf-auth-modal\"\n            isOpen={isOpen}\n            onOpen={onOpen}\n            onClose={onClose}\n            {...props}\n        >\n            <ModalOverlay />\n            <ModalContent>\n                <ModalCloseButton\n                    aria-label={formatMessage({\n                        id: 'auth_modal.button.close.assistive_msg',\n                        defaultMessage: 'Close login form'\n                    })}\n                />\n                <ModalBody pb={8} bg=\"white\" paddingBottom={14} marginTop={14}>\n                    {!form.formState.isSubmitSuccessful && currentView === LOGIN_VIEW && (\n                        <LoginForm\n                            form={form}\n                            submitForm={submitForm}\n                            clickCreateAccount={() => setCurrentView(REGISTER_VIEW)}\n                            handlePasswordlessLoginClick={() =>\n                                setLoginType(LOGIN_TYPES.PASSWORDLESS)\n                            }\n                            handleForgotPasswordClick={() => setCurrentView(PASSWORD_VIEW)}\n                            isPasswordlessEnabled={isPasswordlessEnabled}\n                            isSocialEnabled={isSocialEnabled}\n                            idps={idps}\n                            setLoginType={setLoginType}\n                        />\n                    )}\n                    {!form.formState.isSubmitSuccessful && currentView === REGISTER_VIEW && (\n                        <RegisterForm\n                            form={form}\n                            submitForm={submitForm}\n                            clickSignIn={onBackToSignInClick}\n                        />\n                    )}\n                    {currentView === PASSWORD_VIEW && (\n                        <ResetPasswordForm\n                            form={form}\n                            submitForm={submitForm}\n                            clickSignIn={onBackToSignInClick}\n                        />\n                    )}\n                    {currentView === EMAIL_VIEW && (\n                        <PasswordlessEmailConfirmation\n                            form={form}\n                            submitForm={submitForm}\n                            email={passwordlessLoginEmail}\n                        />\n                    )}\n                </ModalBody>\n            </ModalContent>\n        </Modal>\n    )\n}\n\nAuthModal.propTypes = {\n    initialView: PropTypes.oneOf([LOGIN_VIEW, REGISTER_VIEW, PASSWORD_VIEW, EMAIL_VIEW]),\n    initialEmail: PropTypes.string,\n    isOpen: PropTypes.bool.isRequired,\n    onOpen: PropTypes.func.isRequired,\n    onClose: PropTypes.func.isRequired,\n    onLoginSuccess: PropTypes.func,\n    onRegistrationSuccess: PropTypes.func,\n    isPasswordlessEnabled: PropTypes.bool,\n    isSocialEnabled: PropTypes.bool,\n    idps: PropTypes.arrayOf(PropTypes.string)\n}\n\n/**\n *\n * @param {('register'|'login'|'password'|'email')} initialView - the initial view for the modal\n * @returns {Object} - Object props to be spread on to the AuthModal component\n */\nexport const useAuthModal = (initialView = LOGIN_VIEW) => {\n    const {isOpen, onOpen, onClose} = useDisclosure()\n    const {passwordless = {}, social = {}} = getConfig().app.login || {}\n\n    return {\n        initialView,\n        isOpen,\n        onOpen,\n        onClose,\n        isPasswordlessEnabled: !!passwordless?.enabled,\n        isSocialEnabled: !!social?.enabled,\n        idps: social?.idps\n    }\n}\n","/*\n * Copyright (c) 2022, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useEffect, useRef} from 'react'\nexport const usePrevious = (value) => {\n    const ref = useRef()\n\n    useEffect(() => {\n        ref.current = value\n    }, [value])\n\n    return ref.current\n}\n","export const METAL_FILTERS = {\n    'sterling silver':\n        'linear-gradient(134.08deg, #ADB3B6 7.62%, #D8DADE 28.96%, #E5E6EA 51.2%, #D8DADE 72.1%, #ADB3B6 92.99%)',\n    silver: 'linear-gradient(134.08deg, #ADB3B6 7.62%, #D8DADE 28.96%, #E5E6EA 51.2%, #D8DADE 72.1%, #ADB3B6 92.99%)',\n    platinum:\n        'linear-gradient(134.08deg, #ADB3B6 0%, #C1C4C8 25%, #D5D6DC 51.04%, #C1C4C8 75.52%, #ADB3B6 100%)',\n    'rose gold plated':\n        'linear-gradient(134.1deg, #B9816D 6.04%, #F1B895 27.77%, #FEC5A3 50.41%, #F1B895 71.69%, #B9816D 92.97%)',\n    'pandora rose':\n        'linear-gradient(134.1deg, #B9816D 6.04%, #F1B895 27.77%, #FEC5A3 50.41%, #F1B895 71.69%, #B9816D 92.97%)',\n    'gold plated':\n        'linear-gradient(134.1deg, #D0B971 6.04%, #E9D998 27.77%, #EEDE9C 50.41%, #E9D998 71.69%, #D0B971 92.97%)',\n    'two-tone':\n        'linear-gradient(134.1deg, #ADB3B6 6.04%, #E5E6EA 49.05%, #D0B971 49.05%, #EEDE9C 92.97%)',\n    'two tone':\n        'linear-gradient(134.1deg, #ADB3B6 6.04%, #E5E6EA 49.05%, #D0B971 49.05%, #EEDE9C 92.97%)',\n    gold: 'linear-gradient(134.1deg, #D0B971 6.04%, #E9D998 27.77%, #EEDE9C 50.41%, #E9D998 71.69%, #D0B971 92.97%)',\n    'white gold':\n        'linear-gradient(134.1deg, #D9D9D9 6.04%, #F1F1F1 27.77%, #F8F8F8 50.41%, #F1F1F1 71.69%, #D9D9D9 92.97%)',\n    'ruthenium plated':\n        'linear-gradient(134.1deg, #808588 6.04%, #9A9B9F 27.77%, #ABABB0 50.41%, #9A9B9F 71.69%, #808588 92.97%)',\n    grey: 'linear-gradient(134.1deg, #808588 6.04%, #9A9B9F 27.77%, #ABABB0 50.41%, #9A9B9F 71.69%, #808588 92.97%)',\n    anodized:\n        'linear-gradient(134.1deg, #808588 6.04%, #9A9B9F 27.77%, #ABABB0 50.41%, #9A9B9F 71.69%, #808588 92.97%)',\n    'tri-tone':\n        'linear-gradient(134.1deg, #BA826E 6.04%, #FEC5A3 39.08%, #ADB3B6 39.09%, #E5E6EA 63.09%, #D0B971 63.1%, #EEDE9C 92.97%)',\n    'tri tone':\n        'linear-gradient(134.1deg, #BA826E 6.04%, #FEC5A3 39.08%, #ADB3B6 39.09%, #E5E6EA 63.09%, #D0B971 63.1%, #EEDE9C 92.97%)',\n    'mix of metals': 'linear-gradient(180deg, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 60%)',\n    'no metal': 'white',\n    white: 'white'\n}\n","export const APPLICATION = {\n    PLP_PRODUCT_GROUP: 'plp-product-group',\n    PLP_LINK_AND_SHEET: 'plp-link-and-sheet',\n    PDP_EXPOSED_PRODUCT: 'pdp-exposed-product',\n    PDP_SHEET: 'pdp-sheet'\n}\n\nexport const getGridConfig = {\n    'plp-product-group': {\n        templateAreas: {\n            base: `\"header\" \"media\" \"description\" \"products\"`,\n            xl: `\"header header\" \"media products\" \"description products\"`\n        },\n        templateRows: {\n            base: 'auto auto auto auto',\n            xl: 'auto auto 1fr'\n        }\n    },\n    'plp-link-and-sheet': {\n        templateAreas: {\n            base: `\"header\" \"media\" \"description\"`,\n            xl: `\"media\" \"header\" \"description\"`\n        },\n        templateRows: {\n            base: 'auto auto auto'\n        }\n    }\n}\n\nexport const gridBreakpoints = {\n    'plp-product-group': {\n        colSpanHeader: {base: 6, xl: 12},\n        colStartHeader: {base: 1},\n\n        colSpanMedia: {base: 6, xl: 4},\n        colStartMedia: {base: 1},\n\n        colSpanDescription: {base: 6, xl: 4},\n        colStartDescription: {base: 1},\n\n        colSpanProducts: {base: 6},\n        colStartProducts: {base: 1, xl: 7}\n    },\n    'plp-link-and-sheet': {\n        colSpanHeader: {base: 6, md: 4},\n        colStartHeader: {base: 1, md: 2},\n\n        colSpanMedia: {base: 6, md: 4},\n        colStartMedia: {base: 1, md: 2},\n\n        colSpanDescription: {base: 6, md: 4},\n        colStartDescription: {base: 1, md: 2}\n    }\n}\n\n// Width of the video [Sound]/[Pause] control strip, flush to the bottom\n// inline-end corner of the tile. Two 64px buttons: `controlIcon.width: 16` in\n// video-controls.style.js, with both buttons on by default (audioBtnEnabled /\n// playBtnEnabled in video-player/index.jsx). The shop CTA reserves this lane so\n// it can never overlap the controls — over-reserving if a button is ever\n// disabled is harmless, covering the controls is not.\nexport const VIDEO_CONTROLS_LANE_WIDTH = '128px'\n\nexport const mediaConfig = {\n    aspectRatio: '3:4',\n    controlWrapperPosition: {\n        bottom: 0,\n        right: 0\n    },\n    copyrightTextPosition: 'plp-video-controller-right',\n    dataAuto: 'shop-the-look'\n}\n","/**\n * Flattens a nested category tree into a flat object with category IDs as keys\n * @param {Object|Array} categories - The category tree to flatten\n * @param {string} childKey - The key that contains child categories (default: 'categories')\n * @returns {Object} Flattened categories with category IDs as keys\n */\nexport const flattenCategoryTree = (categories, childKey = 'categories') => {\n    const result = {}\n\n    const recurse = (category) => {\n        if (category && category.id) {\n            result[category.id] = category\n        }\n        if (category && category[childKey] && Array.isArray(category[childKey])) {\n            category[childKey].forEach(recurse)\n        }\n    }\n\n    if (Array.isArray(categories)) {\n        categories.forEach(recurse)\n    } else {\n        recurse(categories)\n    }\n\n    return result\n}\n\n/**\n * Builds the parent category tree by walking up from a given category ID\n * @param {string} categoryId - The category ID to start from\n * @param {Object} flatCategories - Flattened category object (from flattenCategoryTree)\n * @param {string|null} stopAtRoot - Root category ID to stop at (e.g., 'root' or CAT_MENU_DEFAULT_ROOT_CATEGORY)\n * @param {boolean} filterHidden - Whether to filter out categories with c_hideFromBreadcrumb === true\n * @returns {Array} Array of parent categories from root to current category\n */\nexport const buildParentCategoryTree = (\n    categoryId,\n    flatCategories,\n    stopAtRoot = null,\n    filterHidden = false\n) => {\n    const parents = []\n    let currentId = categoryId\n\n    // Walk up the tree by finding parents\n    while (currentId) {\n        const category = flatCategories[currentId]\n        if (!category) break\n\n        // Add current category to the trail\n        parents.unshift(category)\n\n        // Find parent by searching for category that contains this as a child\n        let parentId = null\n        for (const [id, possibleParent] of Object.entries(flatCategories)) {\n            if (possibleParent.categories?.some((child) => child.id === currentId)) {\n                parentId = id\n                break\n            }\n        }\n\n        // If no parent found, we're done\n        if (!parentId) break\n\n        // Stop if we reached the specified root (don't include it in next iteration)\n        if (stopAtRoot && parentId === stopAtRoot) break\n\n        // If stopAtRoot is null, automatically stop at 'root' category (don't include it)\n        if (!stopAtRoot && parentId === 'root') break\n\n        currentId = parentId\n    }\n\n    // Filter out hidden categories if requested\n    if (filterHidden) {\n        return parents.filter((category) => category?.c_hideFromBreadcrumb !== true)\n    }\n\n    return parents\n}\n","import {useEffect, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useConsent} from 'pandora-shared-app/overrides/app/components/onetrust'\nimport {usePixel} from '@salesforce/retail-react-app/app/contexts'\nimport {useVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {logPageView} from '../../hooks/helpers/pixel-debounce'\n\n// Stable default so a missing payload doesn't produce a new object identity on every render and\n// re-trigger the pending-payload effect below.\nconst EMPTY_PAYLOAD = {}\n\nexport const PixelScript = ({initialPayload = EMPTY_PAYLOAD}) => {\n    const {\n        site: siteConfig,\n        locale: {id}\n    } = useMultiSite()\n\n    const {\n        pixel: {account_id, script: baseURL, domain_key, debug, test_data}\n    } = siteConfig\n\n    const {allowFunctional, allowPersonalisation, selectedDnt} = useConsent()\n    const enableBrAbTesting = useVariant(LD_KEYS.enableBrAbTesting, false)\n    const enableBrExplicitReferrer = useVariant(LD_KEYS.enableBrExplicitReferrer, false)\n    const enablePixelPendingPayloadUpdate = useVariant(\n        LD_KEYS.enablePixelPendingPayloadUpdate,\n        false\n    )\n    const scriptRef = useRef(null)\n    const trackedPayloadRef = useRef(initialPayload)\n\n    const {setPixelInitialized} = usePixel()\n    const loadHandlerRef = useRef(null)\n\n    const getKeyByLocaleId = (localeId) => {\n        const match = domain_key?.find((item) => item.id === localeId)\n        return match ? match.key : null\n    }\n\n    // Function to initialize Bloomreach pixel\n    const initializePixel = () => {\n        if (typeof window === 'undefined' || !account_id || !baseURL) {\n            return\n        }\n\n        // Clean up any existing script first to avoid duplicates\n        cleanupPixel()\n\n        // Set up window.br_data with initial payload including ptype\n        window.br_data = {\n            acct_id: account_id,\n            title: document.title,\n            lang: id,\n            domain_key: getKeyByLocaleId(id),\n            debug: debug || false,\n            test_data: test_data || false,\n            ...(enableBrExplicitReferrer && {explicit_referrer: document.referrer || ''}),\n            ...initialPayload\n        }\n\n        // Create and add script tag\n        const script = document.createElement('script')\n        script.src = `${baseURL}/br-trk-${account_id}.js`\n        script.async = true\n        document.head.appendChild(script)\n\n        const handleLoad = () => {\n            // Pixel script loaded. Set the isPixelInitialized state variable to true\n            setPixelInitialized(true)\n\n            // When A/B testing is enabled: wait for Bloomreach to fully initialize\n            // (window.BrTrk object creation), then dispatch event to signal the\n            // usePersonalizedRefetch hook that the _br_uid_2 cookie is ready.\n            if (enableBrAbTesting) {\n                const checkBloomreachReady = () => {\n                    if (window.BrTrk) {\n                        // BrTrk object exists - Bloomreach is fully initialized and cookie should be created\n                        window.dispatchEvent(new CustomEvent('bloomreach-initialized'))\n                    } else {\n                        // Not ready yet, check again in 100ms\n                        setTimeout(checkBloomreachReady, 100)\n                    }\n                }\n\n                // Start checking after a small initial delay\n                setTimeout(checkBloomreachReady, 50)\n            }\n        }\n\n        script.addEventListener('load', handleLoad)\n        loadHandlerRef.current = handleLoad\n\n        // Store reference for cleanup\n        scriptRef.current = script\n    }\n\n    // Function to de-initialize Bloomreach pixel\n    const cleanupPixel = () => {\n        if (scriptRef.current && scriptRef.current.parentNode) {\n            if (loadHandlerRef.current) {\n                scriptRef.current.removeEventListener('load', loadHandlerRef.current)\n            }\n            scriptRef.current.parentNode.removeChild(scriptRef.current)\n            scriptRef.current = null\n            loadHandlerRef.current = null\n        }\n\n        // Clean up global objects created by Bloomreach\n        if (window.BrTrk) {\n            delete window.BrTrk\n        }\n    }\n\n    useEffect(() => {\n        // Use selectedDnt (without defaultDnt fallback) instead of effectiveDnt to avoid a race\n        // condition introduced by the enable-slas-token-dnt-fix flag. When the user accepts consent,\n        // setDnt(false) sets the DNT cookie synchronously but the SLAS JWT still reflects the old\n        // dnt value. getDnt({includeDefaults:true}) detects the mismatch, deletes the cookie, and\n        // falls back to defaultDnt=true — making effectiveDnt=true even though consent was granted.\n        // selectedDnt returns undefined during this async window (no explicit user opt-in to DNT),\n        // so `selectedDnt !== true` correctly allows the pixel to load immediately.\n        const hasConsent = allowFunctional && allowPersonalisation && selectedDnt !== true\n\n        if (hasConsent) {\n            initializePixel()\n        } else {\n            cleanupPixel()\n        }\n\n        return () => {\n            cleanupPixel()\n        }\n    }, [\n        allowFunctional,\n        allowPersonalisation,\n        selectedDnt,\n        account_id,\n        baseURL,\n        enableBrAbTesting,\n        enableBrExplicitReferrer\n    ])\n\n    // Keep window.br_data in sync when the pending payload is replaced (e.g. a fast\n    // category-to-category switch while the pixel is still loading). Patches the existing\n    // br_data/tracker in place instead of tearing down and recreating the <script> tag —\n    // re-injecting the script here would risk a second BR script load / duplicate auto-fired\n    // pageview and a stale checkBloomreachReady polling loop from the previous load.\n    //\n    // Gated by the same flag that enables the pending-payload updates in PixelProvider: with the\n    // flag off, setInitialPageView only ever emits one payload, so this effect must not introduce\n    // behaviour of its own.\n    useEffect(() => {\n        const isPayloadReplaced = trackedPayloadRef.current !== initialPayload\n        trackedPayloadRef.current = initialPayload\n\n        // Nothing to do on mount or when only the flag changed: initializePixel already seeded\n        // window.br_data with this payload.\n        if (\n            !enablePixelPendingPayloadUpdate ||\n            !isPayloadReplaced ||\n            !scriptRef.current ||\n            typeof window === 'undefined'\n        ) {\n            return\n        }\n\n        window.br_data = {...window.br_data, ...initialPayload}\n\n        // If Bloomreach already created its tracker, the auto-fired pageview happened with the\n        // previous payload, so patching br_data alone would lose this page view — send it\n        // explicitly. While the tracker doesn't exist yet, br_data above is enough: the auto-fired\n        // pageview on script load picks up the latest payload.\n        if (window.BrTrk?.getTracker()) {\n            logPageView(initialPayload)\n        }\n    }, [initialPayload, enablePixelPendingPayloadUpdate])\n\n    return null\n}\n\nPixelScript.displayName = 'PixelScript'\n\nPixelScript.propTypes = {\n    initialPayload: PropTypes.object\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useMemo} from 'react'\nimport {useLocation} from 'react-router-dom'\n\n// Utils\nimport {buildUrlSet} from '@salesforce/retail-react-app/app/utils/url'\n\n/*\n * Generate a memoized list of page size urls. Chaning the page size will reset\n * the offset to zero to simplify things.\n */\nexport const useSortUrls = ({options = []}) => {\n    const location = useLocation()\n\n    return useMemo(\n        () =>\n            buildUrlSet(\n                `${location.pathname}${location.search}`,\n                'sort',\n                options.map(({id}) => id),\n                {\n                    offset: 0\n                }\n            ),\n        [location.pathname, location.search, options]\n    )\n}\n","import {useCallback} from 'react'\nimport {useServerContext} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\nimport {canonicalBRRefinementsMapper} from '../utils/seo-filters-mapper'\nimport {pushUniqueRefineKeys} from './helpers/search-hook-utils'\nimport {transformBRSearchResponse} from './helpers/product-search-mapper'\nimport {getApiData} from './useCustomQuery'\nimport {getParsedCookieValue, getRawCookieValue} from '../utils/server-cookies'\n\n/**\n * Builds a redirect URL based on a given URL mapping and optionally copies\n * query parameters from the source request.\n *\n * This function handles both server-side (Node.js `req`, `res` objects)\n * and client-side (browser `window.location.search`) contexts to\n * retrieve source query parameters.\n *\n * @param {object} urlMapping - An object containing URL mapping information.\n * @param {string} urlMapping.destinationUrl - The base URL to redirect to.\n * @param {boolean} [urlMapping.copySourceParams=false] - If true, query parameters\n * from the source URL will be appended to the destination URL.\n * @param {import('http').IncomingMessage} [req] - The Node.js HTTP incoming message object (server-side context).\n * @param {import('http').ServerResponse} [res] - The Node.js HTTP server response object (server-side context).\n * @returns {string} The complete redirect URL, potentially including copied query parameters.\n */\nexport const buildRedirectUrl = (urlMapping, req, res) => {\n    let redirectUrl = urlMapping.destinationUrl\n\n    if (urlMapping.copySourceParams) {\n        let sourceQuery = ''\n\n        if (res && req) {\n            // Server-side\n            const queryParams = req.query\n            const query = new URLSearchParams(queryParams).toString()\n            if (query) {\n                sourceQuery = query\n            }\n        } else {\n            // Client-side\n            const search = window.location.search\n            if (search) {\n                sourceQuery = search.substring(1) // remove the '?'\n            }\n        }\n\n        if (sourceQuery) {\n            const separator = redirectUrl.includes('?') ? '&' : '?'\n            redirectUrl += separator + sourceQuery\n        }\n    }\n\n    return redirectUrl\n}\n\n/**\n * @note This hook is currently not in active use and is intended for future integration\n * after a related function is refactored.\n * Custom hook to handle URL mapping logic and redirects\n * @param {Object} apiParams - API parameters\n * @param {Object} parameters - Processed search parameters\n * @param {boolean} isBloomreachEnabled - Whether Bloomreach is enabled\n * @param {Object} req - Server request object\n * @param {Object} res - Server response object\n * @returns {Object} URL mapping data and redirect information\n */\nexport const useProductSearchUrlHandler = (\n    apiParams,\n    parameters,\n    urlMapping,\n    isBloomreachEnabled\n) => {\n    const {req, res} = useServerContext()\n\n    const processUrlMapping = useCallback(() => {\n        if (!apiParams.urlSegment && !urlMapping) return parameters\n\n        const updatedParameters = {...parameters}\n\n        if (urlMapping && apiParams.text) {\n            if (urlMapping?.refinements) {\n                canonicalBRRefinementsMapper(updatedParameters, urlMapping?.refinements)\n            }\n        } else if (urlMapping?.destinationUrl && !apiParams.text) {\n            return {\n                redirect: {\n                    redirectUrl: buildRedirectUrl(urlMapping, req, res),\n                    statusCode: urlMapping?.statusCode\n                }\n            }\n        } else if (urlMapping?.resourceId && !apiParams?.isCgidManual) {\n            const catKey = `${urlMapping.resourceId}`\n            const updatedArray = pushUniqueRefineKeys('', updatedParameters.refine)\n\n            updatedParameters.refine = updatedArray\n            updatedParameters.categoryId = catKey\n\n            if (urlMapping?.refinements) {\n                canonicalBRRefinementsMapper(\n                    updatedParameters,\n                    urlMapping?.refinements,\n                    isBloomreachEnabled\n                )\n            }\n        } else if (apiParams?.isCgidManual && apiParams?.urlSegment) {\n            updatedParameters.refine.push(`cgid=${apiParams.urlSegment}`)\n        }\n\n        return updatedParameters\n    }, [apiParams, parameters, urlMapping, isBloomreachEnabled, req, res])\n\n    return processUrlMapping\n}\n\n/**\n * @note This hook is currently not in active use and is intended for future integration\n * after a product-search hook is refactored.\n * Custom hook to handle URL mapping logic and redirects\n */\nexport const useProductSearchMethod = (\n    getUserPriceContext,\n    isContextEnabled,\n    processUrlMapping,\n    isBloomreachEnabled,\n    isSsrPriceContextFixEnabled = false\n) => {\n    const {req} = useServerContext()\n\n    return useCallback(\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        async ({parameters, path, ...restOptions}) => {\n            if (isServer && isContextEnabled) {\n                const cookieValue = isSsrPriceContextFixEnabled\n                    ? getRawCookieValue(req.headers.cookie, 'expSegGrp')\n                    : getParsedCookieValue(req.headers.cookie, 'expSegGrp')\n                if (cookieValue) {\n                    await getUserPriceContext(cookieValue, {\n                        failSafe: isSsrPriceContextFixEnabled\n                    })\n                }\n            }\n\n            const processedParameters = processUrlMapping()\n\n            // Handle redirect case\n            if (processedParameters.redirect) {\n                return processedParameters\n            }\n\n            const response = await getApiData({\n                ...restOptions,\n                apiOptions: {\n                    path,\n                    queryParams: processedParameters,\n                    skipCredentials: !isBloomreachEnabled\n                }\n            })\n\n            return transformBRSearchResponse({\n                ...response,\n                customerSegment: processedParameters.customerSegment\n            })\n        },\n        [\n            getUserPriceContext,\n            isContextEnabled,\n            processUrlMapping,\n            isBloomreachEnabled,\n            isSsrPriceContextFixEnabled,\n            req\n        ]\n    )\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"mute\",\n  \"use\": \"mute-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"mute\\\">\\n    <g clip-path=\\\"url(#mute_clip0_2290_131256)\\\">\\n        <path d=\\\"M19 7L13 13\\\" stroke=\\\"currentColor\\\" />\\n        <path d=\\\"M19 13L13 7\\\" stroke=\\\"currentColor\\\" />\\n        <path d=\\\"M0.5 13.1941V6.94659H3.5L10.5 1.5V18.5L3.5 13.1941H0.5Z\\\" stroke=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"mute_clip0_2290_131256\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"currentColor\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * @file dol-channel-headers.js\n *\n * [FIND-6492] Shared utility for DOL Q3 channel headers.\n *\n * DOL is deprecating the legacy `channelname: 'pwa'` value and the `source`\n * query param, and making `channelname` / `channeltype` mandatory headers on\n * all FIND-owned DOL API calls (enforcement target: 15-Sep-2026).\n *\n * `getDolChannelHeaders` is a pure mapping function (easily unit-tested).\n * `resolveChannelContext` derives the page context from the current pathname.\n * `useDolChannelHeaders` is the hook consumers should use — it reads the route\n * via `useLocation` and lets a caller override the context explicitly.\n *\n * Valid DOL Q3 channelName allowlist:\n *   engraving, styling, mpos, kwi, sfrc, plp, pdp, pva, charm, groupsite\n * FIND uses: 'plp' (PLP/category), 'pdp' (PDP), 'pva' (general PWA default).\n * Inspire uses: 'content' (Amplience content endpoints via DOL proxy).\n */\nimport {useLocation} from 'react-router-dom'\n\nconst CHANNEL_NAME_ALLOWLIST = {\n    plp: 'plp',\n    pdp: 'pdp',\n    pva: 'pva',\n    content: 'content'\n}\n\n/** General PWA default when no page-specific value applies. */\nexport const DEFAULT_CHANNEL_NAME = 'pva'\nexport const CHANNEL_TYPE = 'online'\n\n/**\n * Maps a page context to the mandatory DOL channel headers.\n *\n * @param {'plp'|'pdp'|'pva'|'content'} [pageContext] - Page context. Unknown/omitted → 'pva'.\n * @returns {{channelname: string, channeltype: string}}\n */\nexport const getDolChannelHeaders = (pageContext) => ({\n    channelname: CHANNEL_NAME_ALLOWLIST[pageContext] ?? DEFAULT_CHANNEL_NAME,\n    channeltype: CHANNEL_TYPE\n})\n\n/**\n * Derives the channel context from a pathname.\n *\n * Pandora URL scheme:\n *   - PDP: product path ending in `.html`\n *     (e.g. `/en/rings/statement-rings/sparkling-butterfly-bold-ring/194270C01.html`)\n *   - PLP: locale prefix + at least one category segment\n *     (e.g. `/en/gifts/`, `/en/rings/statement-rings/`)\n *   - PVA: everything else (e.g. the locale home `/en/`)\n *\n * @param {string} [pathname]\n * @returns {'pdp'|'plp'|'pva'}\n */\nexport const resolveChannelContext = (pathname = '') => {\n    // Strip query/hash in case a full URL (or href) is passed in.\n    const path = pathname.split(/[?#]/)[0]\n\n    if (path.endsWith('.html')) return 'pdp'\n\n    // Non-empty path segments; first is the locale (e.g. `en`).\n    const segments = path.split('/').filter(Boolean)\n\n    // locale + at least one category segment → PLP.\n    if (segments.length >= 2) return 'plp'\n    return 'pva'\n}\n\n/**\n * Hook returning the mandatory DOL channel headers for the current page.\n *\n * @param {'plp'|'pdp'|'pva'} [explicitContext] - When provided, wins over the\n *   route-derived context. Search and price hooks pass 'pva' explicitly.\n * @returns {{channelname: string, channeltype: string}}\n */\nexport const useDolChannelHeaders = (explicitContext) => {\n    const {pathname} = useLocation()\n    const context = explicitContext ?? resolveChannelContext(pathname)\n    return getDolChannelHeaders(context)\n}\n","import {useCallback} from 'react'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {isStorybook} from 'pandora-shared-app/overrides/app/utils/is-storybook'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {resolveTrackedAsset} from 'pandora-shared-app/overrides/app/hooks/get-asset-info-helpers'\n\nconst isStorybookEnv = isStorybook()\nconst noopView = () => {}\n\nexport const useDrawerAnalytics = () => {\n    let view = noopView\n    try {\n        const tealium = useTealium()\n        // Only use the real view function if not in Storybook\n        view = isStorybookEnv ? noopView : tealium.view\n    } catch (e) {\n        // Do nothing since we are in storybook\n        // this is to prevent the error when storybook is not running\n        // Silently handle the error when tealium is not available\n    }\n\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const getBaseUrl = () => {\n        const {pathname, origin} = window.location\n        const [firstPath = '', secondPath = ''] = pathname.split('/').filter(Boolean)\n        return `${origin}/${firstPath}/${secondPath}`\n    }\n\n    const getFullUrl = () => {\n        const {pathname, origin} = window.location\n        return `${origin}${pathname}`\n    }\n\n    // Resolves the shown asset for a drawer media node, honoring the Aprimo flag.\n    // Aprimo lives in sibling fields (aprimoImg/aprimoVideo); the shared\n    // resolveTrackedAsset extracts {id, name} from whichever source is shown, so\n    // drawer tracking matches the render layer instead of re-parsing the CMS shape.\n    const getAssetInfo = (media) => {\n        if (!media) return {}\n\n        const {mediaType} = media\n        const isVideo = mediaType === 'video'\n        const amplienceNode = isVideo ? media.video : media.img\n        const aprimoNode = isVideo ? media.aprimoVideo : media.aprimoImg\n\n        const hasAprimo = !!aprimoNode?.aprimoData?.cdnUrl\n        const chosen = aprimoPrimary\n            ? (hasAprimo && aprimoNode) || amplienceNode\n            : amplienceNode || (hasAprimo && aprimoNode) || null\n\n        const asset = resolveTrackedAsset(chosen, {aprimoPrimary})\n        if (!asset) {\n            return {asset_type: '', asset_id: '', asset_name: ''}\n        }\n\n        return {\n            asset_type: isVideo ? 'video' : 'image',\n            asset_id: asset.id,\n            asset_name: asset.name\n        }\n    }\n\n    const formatContentData = (content) => {\n        if (!content) return []\n\n        // Handle content block format\n        if (Array.isArray(content?.contentBlock)) {\n            return content.contentBlock.map((block, index) => ({\n                content_parent_id: content._meta?.deliveryId || '',\n                content_child_id: `${content._meta?.deliveryId}_block_${index}`,\n                content_name: content._meta?.name || '',\n                content_type: content._meta?.schema?.split('/').pop() || '',\n                content_placement: 'drawer_content',\n                click_text: block.link?.text || '',\n                click_type: 'link',\n                content_product_id: [],\n                copy_type: block.subHeading ? 'h2' : 'body',\n                asset_type: '',\n                asset_id: '',\n                asset_name: '',\n                ...getAssetInfo(block.media)\n            }))\n        }\n\n        // Handle story module format\n        if (Array.isArray(content?.storyChapter)) {\n            return content.storyChapter.map((chapter, index) => {\n                const assetInfo = getAssetInfo(chapter.media)\n\n                return {\n                    content_parent_id: content._meta?.deliveryId || '',\n                    content_child_id: `${content._meta?.deliveryId}_story_${index}`,\n                    content_name: content._meta?.name || '',\n                    content_type: content._meta?.schema?.split('/').pop() || '',\n                    content_placement: 'drawer_content',\n                    click_text: chapter.link?.text || '',\n                    click_type: 'link',\n                    content_product_id: [],\n                    copy_type: 'body',\n                    ...assetInfo\n                }\n            })\n        }\n\n        return []\n    }\n\n    const trackDrawerView = useCallback(\n        ({sheetType, virtualPagePath, products = [], content = null, useFullUrl = false}) => {\n            if (isStorybookEnv) return\n\n            // Only track if we have products data for shop-the-look drawer\n            if (\n                sheetType === TEALIUM_CONSTANTS.DRAWER.TYPES.SHOP_THE_LOOK &&\n                products.length === 0\n            ) {\n                return\n            }\n\n            const trackingData = {\n                estore_event: ['virtual_pageview'],\n                virtual_page_url: useFullUrl ? getFullUrl() : getBaseUrl(),\n                virtual_page_path: virtualPagePath\n            }\n\n            if (products?.length > 0) {\n                trackingData.products = products\n            }\n\n            const content_loaded = formatContentData(content)\n            if (content_loaded.length > 0) {\n                trackingData.content_loaded = content_loaded\n            }\n\n            view(trackingData)\n        },\n        [view]\n    )\n\n    const trackDrawerClose = useCallback(\n        ({virtualPagePath, products = [], content = null, useFullUrl = false, dismissMethod}) => {\n            if (isStorybookEnv) return\n\n            const trackingData = {\n                estore_event: ['virtual_pageview_closed'],\n                virtual_page_url: useFullUrl ? getFullUrl() : getBaseUrl(),\n                virtual_page_path: virtualPagePath\n            }\n\n            if (products?.length > 0) {\n                trackingData.products = products\n            }\n\n            const content_loaded = formatContentData(content)\n            if (content_loaded.length > 0) {\n                trackingData.content_loaded = content_loaded\n            }\n            if (dismissMethod) {\n                trackingData.dismiss_method = dismissMethod\n            }\n            view(trackingData)\n        },\n        [view]\n    )\n\n    return {trackDrawerView, trackDrawerClose}\n}\n","import {useEffect, useCallback, useRef} from 'react'\nimport {useDrawerAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-drawer-analytics'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {LD_KEYS} from '../../../api_keys/ld-keys'\n\nconst SKIP_DRAWER_TRAKING_TYPES = [\n    TEALIUM_CONSTANTS.DRAWER.TYPES.SIZE_SELECTOR,\n    TEALIUM_CONSTANTS.DRAWER.TYPES.CLICK_AND_COLLECT,\n    TEALIUM_CONSTANTS.DRAWER.TYPES.PROMOTION_DETAILS\n]\n\n// SIZE_GUID tracking is controlled via virtualPagePath prop - if passed, tracking is enabled\nconst CONDITIONALLY_TRACKED_TYPES = [TEALIUM_CONSTANTS.DRAWER.TYPES.SIZE_GUID]\n\nexport const useDrawerTracking = ({\n    isOpen,\n    sheetType,\n    virtualPagePath,\n    products,\n    content,\n    contentMeta,\n    useFullUrl = false,\n    // Opt out of all tracking for this drawer (no virtual_pageview fired on open).\n    // Used by drawers that are sub-steps of a flow already tracked by a parent drawer,\n    // e.g. ring sizer baseline and measurement open inside the size guide flow.\n    skipTracking = false,\n    // Keep hasTrackedRef=true when the drawer temporarily closes because a sub-drawer\n    // opens on top of it, so the parent doesn't re-fire virtual_pageview when it\n    // becomes visible again. Used by the size guide when ring sizer opens over it.\n    retainTracking = false\n}) => {\n    const {trackDrawerView, trackDrawerClose} = useDrawerAnalytics()\n    const hasTrackedRef = useRef(false)\n    const enableClosingDrawerTracking = useVariant(LD_KEYS.enableClosingDrawerTracking, false)\n\n    useEffect(() => {\n        if (skipTracking) return\n        if (isOpen && !hasTrackedRef.current) {\n            // For shop-the-look, only track when we have products\n            // No tracking for size selector drawer\n            if (\n                (sheetType === TEALIUM_CONSTANTS.DRAWER.TYPES.SHOP_THE_LOOK &&\n                    (!products || products.length === 0)) ||\n                SKIP_DRAWER_TRAKING_TYPES.includes(sheetType)\n            ) {\n                return\n            }\n            // Conditionally tracked types require virtualPagePath to be set\n            if (CONDITIONALLY_TRACKED_TYPES.includes(sheetType) && !virtualPagePath) {\n                return\n            }\n            trackDrawerView({\n                sheetType,\n                virtualPagePath,\n                products,\n                content,\n                contentMeta,\n                useFullUrl\n            })\n            hasTrackedRef.current = true\n        } else if (!isOpen && !retainTracking) {\n            // retainTracking: don't reset the ref when the drawer is temporarily\n            // hidden by a sub-drawer (e.g. ring sizer opening over size guide),\n            // so it won't re-fire when the parent drawer becomes visible again.\n            hasTrackedRef.current = false\n        }\n    }, [\n        isOpen,\n        sheetType,\n        virtualPagePath,\n        products,\n        content,\n        contentMeta,\n        useFullUrl,\n        skipTracking,\n        retainTracking,\n        trackDrawerView\n    ])\n\n    const handleCloseWithTracking = useCallback(\n        (dismissMethod) => {\n            // No tracking for size slector drawer\n            if (\n                !enableClosingDrawerTracking ||\n                sheetType === TEALIUM_CONSTANTS.DRAWER.TYPES.SIZE_SELECTOR\n            ) {\n                return\n            }\n            const includeDismissMethod =\n                dismissMethod && sheetType === TEALIUM_CONSTANTS.DRAWER.TYPES.IDLE_USER_OVERLAY\n            trackDrawerClose({\n                sheetType,\n                virtualPagePath,\n                products,\n                content,\n                contentMeta,\n                useFullUrl,\n                ...(includeDismissMethod ? {dismissMethod} : {})\n            })\n        },\n        [sheetType, virtualPagePath, products, content, contentMeta, useFullUrl, trackDrawerClose]\n    )\n\n    return {handleCloseWithTracking}\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useIntl} from 'react-intl'\n\nexport default function useLoginFields({\n    form: {\n        control,\n        formState: {errors}\n    },\n    prefix = ''\n}) {\n    const {formatMessage} = useIntl()\n    const fields = {\n        email: {\n            name: `${prefix}email`,\n            label: formatMessage({defaultMessage: 'Email', id: 'use_login_fields.label.email'}),\n            placeholder: 'you@email.com',\n            defaultValue: '',\n            type: 'email',\n            autoComplete: 'email',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter your email address.',\n                    id: 'use_login_fields.error.required_email'\n                })\n            },\n            error: errors?.[`${prefix}email`],\n            control\n        },\n        password: {\n            name: `${prefix}password`,\n            label: formatMessage({\n                defaultMessage: 'Password',\n                id: 'use_login_fields.label.password'\n            }),\n            defaultValue: '',\n            type: 'password',\n            rules: {\n                required: formatMessage({\n                    defaultMessage: 'Please enter your password.',\n                    id: 'use_login_fields.error.required_password'\n                })\n            },\n            error: errors?.[`${prefix}password`],\n            control\n        }\n    }\n    return fields\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"clearpay_white\",\n  \"use\": \"clearpay_white-usage\",\n  \"viewBox\": \"0 0 1581.987 294.733\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1581.987 294.733\\\" id=\\\"clearpay_white\\\"><g transform=\\\"matrix(1.3333333,0,0,-1.3333333,0,294.73333)\\\" id=\\\"clearpay_white_g10\\\"><g transform=\\\"scale(0.1)\\\" id=\\\"clearpay_white_g12\\\"><path id=\\\"clearpay_white_path14\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 9421.43,1697.36 8610.74,24.2383 H 8274.38 L 8577.25,649.449 8101.04,1697.36 h 345.05 l 305.94,-701.739 334.27,701.739 h 335.13\\\" /><path id=\\\"clearpay_white_path16\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 5394.89,24.2383 V 1697.36 h 292.28 v -154.44 c 87.92,109.29 218.62,175.83 375.44,175.83 320.79,0 572.67,-263.77 572.67,-613.08 0,-349.291 -256.62,-615.44 -579.79,-615.44 -149.7,0 -273.27,59.411 -358.82,159.2 V 24.2383 Z M 6335.87,1103.31 c 0,192.46 -144.95,339.81 -323.15,339.81 -178.22,0 -323.18,-142.6 -323.18,-339.81 0,-194.861 144.96,-339.822 323.18,-339.822 178.2,0 323.15,147.344 323.15,339.822\\\" /><path id=\\\"clearpay_white_path18\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 7690.83,509.25 V 663.699 C 7602.91,556.762 7472.21,490.23 7315.39,490.23 c -325.54,0 -572.67,261.391 -572.67,613.08 0,349.29 256.62,615.44 579.79,615.44 152.07,0 280.4,-66.55 368.32,-171.1 v 149.71 h 292.28 V 509.25 Z m -2.39,594.06 c 0,199.58 -144.92,339.79 -323.16,339.79 -178.2,0 -323.17,-142.58 -323.17,-339.79 0,-194.849 144.97,-339.81 323.17,-339.81 178.24,0 323.16,140.191 323.16,339.81\\\" /><path id=\\\"clearpay_white_path20\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 4868.19,1580.92 c 0,0 74.36,137.83 256.62,137.83 77.93,0 128.34,-26.82 128.34,-26.82 v -303.05 c 0,0 -109.97,67.91 -210.93,54.21 -100.95,-13.68 -164.85,-106.38 -164.53,-230.47 V 509.25 h -301.77 v 1188.11 h 292.27 v -116.44\\\" /><path id=\\\"clearpay_white_path22\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 11689.9,1764.37 -345.7,198.31 -350.5,201.11 c -232.3,133.3 -521.9,-34.42 -521.9,-302.28 v -45.14 c 0,-24.7 13.2,-47.51 34.6,-59.8 l 162.6,-93.3 c 45.1,-25.89 101.4,6.68 101.4,58.69 v 106.92 c 0,52.93 57.2,86.07 103.1,59.73 l 320.4,-183.81 319.4,-183.25 c 46.1,-26.48 46.1,-93.02 0,-119.48 L 11193.9,1218.81 10873.5,1035 c -45.9,-26.34 -103.1,6.8 -103.1,59.74 v 53.11 c 0,267.86 -289.6,435.58 -521.9,302.28 l -350.57,-201.12 -345.62,-198.3 c -233.43,-133.929 -233.43,-470.628 0,-604.562 L 9897.93,247.852 10248.5,46.7383 c 232.3,-133.3086 521.9,34.4219 521.9,302.2737 v 45.25 c 0,24.699 -13.2,47.508 -34.6,59.808 l -162.7,93.301 c -45.1,25.891 -101.3,-6.68 -101.3,-58.699 V 381.66 c 0,-52.941 -57.3,-86.09 -103.2,-59.738 l -320.3,183.808 -319.43,183.25 c -46.13,26.469 -46.13,93.008 0,119.481 l 319.43,183.258 320.3,183.811 c 45.9,26.34 103.2,-6.8 103.2,-59.74 v -53.11 c 0,-267.86 289.6,-435.578 521.9,-302.282 l 350.5,201.114 345.7,198.308 c 233.4,133.92 233.4,470.63 0,604.55\\\" /><path id=\\\"clearpay_white_path24\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 1217.98,951.969 C 1153.88,678.922 918.828,491.352 614.922,491.352 263.535,491.352 0,754.91 0,1103.91 c 0,349.02 268.289,614.93 619.68,614.93 296.777,0 529.46,-187.56 595.93,-455.85 H 906.965 c -54.617,106.84 -163.824,178.06 -284.914,178.06 -175.699,0 -322.895,-144.82 -322.895,-337.14 0,-192.301 147.196,-337.148 322.895,-337.148 125.832,0 235.043,71.238 287.285,185.207 h 308.644\\\" /><path id=\\\"clearpay_white_path26\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 1357.25,510.352 V 2185.91 H 1656.4 V 510.352 h -299.15\\\" /><path id=\\\"clearpay_white_path28\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 2701.56,1210.75 c -21.37,154.32 -147.2,246.92 -294.41,246.92 -147.19,0 -268.28,-90.22 -299.15,-246.92 z m -595.94,-185.2 c 21.37,-175.671 147.21,-275.409 306.28,-275.409 125.84,0 223.18,59.371 280.16,154.339 h 306.28 c -71.23,-251.671 -296.78,-413.128 -593.56,-413.128 -358.51,0 -610.18,251.679 -610.18,610.188 0,358.51 265.91,617.3 617.3,617.3 353.76,0 610.19,-261.17 610.19,-617.3 0,-26.12 -2.38,-52.24 -7.13,-75.99 h -909.34\\\" /><path id=\\\"clearpay_white_path30\\\" style=\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 4086.02,1103.91 c 0,199.44 -144.83,339.52 -322.9,339.52 -178.07,0 -322.89,-142.46 -322.89,-339.52 0,-194.68 144.82,-339.512 322.89,-339.512 178.07,0 322.9,140.082 322.9,339.512 z m 2.37,-593.558 V 664.68 c -87.85,-106.828 -218.43,-173.328 -375.12,-173.328 -325.28,0 -572.2,261.179 -572.2,612.558 0,349.02 256.42,614.93 579.32,614.93 151.94,0 280.15,-66.48 368,-170.95 v 149.58 h 292.03 V 510.352 h -292.03\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"heart\",\n  \"use\": \"heart-usage\",\n  \"viewBox\": \"0 0 14 12\",\n  \"content\": \"<symbol viewBox=\\\"0 0 14 12\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"heart\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11.1689 0.120671C12.6733 0.531043 13.8 1.94218 13.8 3.62072C13.8 4.70604 13.2117 5.83053 12.4666 6.83716C11.7099 7.85957 10.7324 8.83824 9.83397 9.64457L9.16603 8.90035C10.0402 8.11575 10.9627 7.18816 11.6628 6.24224C12.3746 5.28054 12.8 4.37462 12.8 3.62072C12.8 2.39454 11.9765 1.3775 10.9058 1.08542C9.87927 0.805406 8.48564 1.16948 7.32396 3.02761H6.47604C5.31438 1.16951 3.92079 0.80561 2.8943 1.08577C1.82354 1.37801 1 2.39525 1 3.62145C1 4.28778 1.3327 5.07777 1.91296 5.92784C2.4855 6.76659 3.25816 7.605 4.04521 8.35615C4.83007 9.1052 5.61688 9.75584 6.20854 10.2198C6.50398 10.4515 6.74985 10.6359 6.92126 10.762C7.00695 10.825 7.07398 10.8734 7.11923 10.9058L7.17037 10.9423L7.18295 10.9511L7.18587 10.9532L6.9 11.3634C6.61352 11.7732 6.61343 11.7731 6.61331 11.773L6.6118 11.772L6.60777 11.7692L6.59291 11.7587L6.53702 11.7189C6.48852 11.6841 6.41805 11.6332 6.32874 11.5675C6.15016 11.4362 5.89602 11.2455 5.59146 11.0067C4.98312 10.5297 4.16993 9.85752 3.35479 9.07956C2.54184 8.30369 1.7145 7.41085 1.08704 6.49162C0.467304 5.58373 0 4.58902 0 3.62145C0 1.94293 1.12666 0.531631 2.631 0.121054C4.02139 -0.258424 5.6196 0.234043 6.9 1.88753C8.18037 0.234032 9.77855 -0.258608 11.1689 0.120671Z\\\" fill=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useShopperCustomersMutation} from '../use-shopper-customers-mutation'\nimport {useCustomerProductLists} from './use-customer-product-lists'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\n\nconst onClient = typeof window !== 'undefined'\n\nexport const useWishList = ({enable = false}) => {\n    const {data: customer} = useCurrentCustomer()\n    const {customerId} = customer || {}\n    const createCustomerProductList = useShopperCustomersMutation('createCustomerProductList')\n\n    const {data: productLists, ...restOfQuery} = useCustomerProductLists({\n        onSuccess: (data) => {\n            if (!data?.total && customerId) {\n                createCustomerProductList.mutate({\n                    parameters: {customerId},\n                    body: {type: 'wish_list'}\n                })\n            }\n        },\n        enabled: onClient && Boolean(customerId) && enable\n    })\n    const wishLists = productLists?.data?.filter((list) => list.type === 'wish_list') || []\n\n    return {\n        data: wishLists[0],\n        ...restOfQuery\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {createContext} from '@chakra-ui/react-utils'\nimport {useWishList as useWishListCustom} from '../../hooks/wishlist/use-wish-list-dol'\n\nconst [Provider, useWishList] = createContext({\n    name: 'WishListContext',\n    errorMessage:\n        'useWishList: `context` is undefined. Seems you forgot to wrap components within `<WishListProvider />`'\n})\n\n/**\n * WishListProvider is a React component that provides the wish list context to its children.\n * It fetches the wish list data using the useWishList hook and passes it down through context.\n *\n * @param {Object} props - The component props.\n * @param {React.ReactNode} props.children - The child components that will have access to the user segment context.\n * @returns {JSX.Element} A context provider component that supplies the user segment data to its children.\n */\nconst WishListProvider = ({children}) => {\n    const results = useWishListCustom({enable: true})\n\n    return <Provider value={results}>{children}</Provider>\n}\n\nWishListProvider.propTypes = {\n    children: PropTypes.node\n}\n\nexport {WishListProvider, useWishList}\n","import {useCustomerId} from '@salesforce/commerce-sdk-react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useCustomQuery} from '../useCustomQuery'\nimport {getCustomerApiPaths} from '../../utils/get-custom-apis'\nimport {useDolCommonParams} from '../use-dol-common-params'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../../utils/dol-channel-headers'\n\nexport const useCustomerProductLists = (queryConfig = {}) => {\n    const customerId = useCustomerId()\n    const {site} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId}\n            },\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n\n    const isXEnvironmentHeaderEnabled = useVariant(\n        'enable-plp-x-environment-header-for-customer-product-lists',\n        false\n    )\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    const {locale, source} = useDolCommonParams()\n\n    const baseRequestParams = {\n        locale,\n        ...(source && {source})\n    }\n\n    const path = getCustomerApiPaths(proxyPath, customerId).CUSTOMER_PRODUCT_LISTS\n    // this key should always be same as salesforce useCustomerProductLists hook\n    // otherwise when we add remove items from the product list, it will not update the cache\n    // and we will see stale data\n    const key = [\n        '/commerce-sdk-react',\n        '/organizations/',\n        organizationId,\n        '/customers/',\n        customerId,\n        '/product-lists',\n        {\n            organizationId: organizationId,\n            customerId: customerId,\n            siteId: site.id\n        }\n    ]\n\n    return useCustomQuery(\n        key,\n        {\n            path,\n            queryParams: baseRequestParams,\n            method: 'GET',\n            headers: {\n                ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                ...(isXEnvironmentHeaderEnabled\n                    ? {'x-environment': appConfig?.targetEnvironment}\n                    : {})\n            }\n        },\n        {\n            enabled: !!customerId,\n            ...queryConfig\n        }\n    )\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {Stack} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport useRegistrationFields from '@salesforce/retail-react-app/app/components/forms/useRegistrationFields'\nimport Field from '@salesforce/retail-react-app/app/components/field'\nimport PasswordRequirements from '@salesforce/retail-react-app/app/components/forms/password-requirements'\n\nconst RegistrationFields = ({form, prefix = ''}) => {\n    const fields = useRegistrationFields({form, prefix})\n    const password = form.watch('password')\n\n    return (\n        <Stack spacing={5}>\n            <Field {...fields.firstName} />\n            <Field {...fields.lastName} />\n            <Field {...fields.email} />\n\n            <Stack spacing={3} pb={2}>\n                <Field {...fields.password} />\n                <PasswordRequirements value={password} />\n            </Stack>\n\n            <Field {...fields.acceptsMarketing} inputProps={{alignItems: 'flex-start'}} />\n        </Stack>\n    )\n}\n\nRegistrationFields.propTypes = {\n    /** Object returned from `useForm` */\n    form: PropTypes.object.isRequired,\n\n    /** Optional prefix for field names */\n    prefix: PropTypes.string\n}\n\nexport default RegistrationFields\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {Fragment} from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {\n    Alert,\n    Button,\n    Stack,\n    Text,\n    Link as ChakraLink\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {AlertIcon, BrandLogo} from '@salesforce/retail-react-app/app/components/icons'\nimport {noop} from '@salesforce/retail-react-app/app/utils/utils'\nimport RegistrationFields from '@salesforce/retail-react-app/app/components/forms/registration-fields'\nimport Link from '@salesforce/retail-react-app/app/components/link'\n\nconst RegisterForm = ({submitForm, clickSignIn = noop, form}) => {\n    return (\n        <Fragment>\n            <Stack justify=\"center\" align=\"center\" spacing={8}>\n                <BrandLogo width=\"60px\" height=\"auto\" />\n                <Stack spacing={2}>\n                    <Text align=\"center\" fontSize=\"xl\" fontWeight=\"semibold\">\n                        <FormattedMessage\n                            defaultMessage=\"Let's get started!\"\n                            id=\"register_form.heading.lets_get_started\"\n                        />\n                    </Text>\n                    <Text fontSize=\"sm\" align=\"center\" color=\"gray.700\">\n                        <FormattedMessage\n                            defaultMessage=\"Create an account and get first access to the very best products, inspiration and community.\"\n                            id=\"register_form.message.create_an_account\"\n                        />\n                    </Text>\n                </Stack>\n            </Stack>\n            <form\n                onSubmit={form.handleSubmit(submitForm)}\n                data-testid=\"sf-auth-modal-form-register\"\n            >\n                <Stack paddingTop={8} spacing={8} paddingLeft={4} paddingRight={4}>\n                    {form.formState.errors?.global && (\n                        <Alert status=\"error\">\n                            <AlertIcon color=\"red.500\" boxSize={4} />\n                            <Text fontSize=\"sm\" ml={3}>\n                                {form.formState.errors.global.message}\n                            </Text>\n                        </Alert>\n                    )}\n                    <RegistrationFields form={form} />\n                    <Stack spacing={6}>\n                        <Button\n                            type=\"submit\"\n                            onClick={() => form.clearErrors('global')}\n                            isLoading={form.formState.isSubmitting}\n                        >\n                            <FormattedMessage\n                                defaultMessage=\"Create Account\"\n                                id=\"register_form.button.create_account\"\n                            />\n                        </Button>\n\n                        <Stack direction=\"row\" spacing={1} justify=\"center\">\n                            <Text fontSize=\"sm\">\n                                <FormattedMessage\n                                    defaultMessage=\"Already have an account?\"\n                                    id=\"register_form.message.already_have_account\"\n                                />\n                            </Text>\n                            <Button variant=\"link\" size=\"sm\" onClick={clickSignIn}>\n                                <FormattedMessage\n                                    defaultMessage=\"Sign in\"\n                                    id=\"register_form.action.sign_in\"\n                                />\n                            </Button>\n                        </Stack>\n\n                        <Text fontSize=\"sm\" align=\"center\">\n                            <FormattedMessage\n                                id=\"register_form.message.agree_to_policy_terms\"\n                                defaultMessage=\"By creating an account, you agree to Salesforce <policy>Privacy Policy</policy> and <terms>Terms & Conditions</terms>\"\n                                values={{\n                                    policy: (chunks) => (\n                                        <ChakraLink as={Link} to=\"/privacy-policy\" color=\"blue.600\">\n                                            {chunks}\n                                        </ChakraLink>\n                                    ),\n\n                                    terms: (chunks) => (\n                                        <ChakraLink\n                                            as={Link}\n                                            to=\"/terms-conditions\"\n                                            color=\"blue.600\"\n                                        >\n                                            {chunks}\n                                        </ChakraLink>\n                                    )\n                                }}\n                            />\n                        </Text>\n                    </Stack>\n                </Stack>\n            </form>\n        </Fragment>\n    )\n}\n\nRegisterForm.propTypes = {\n    submitForm: PropTypes.func,\n    clickSignIn: PropTypes.func,\n    form: PropTypes.object\n}\n\nexport default RegisterForm\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pause\",\n  \"use\": \"pause-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"pause\\\">\\n    <g clip-path=\\\"url(#pause_clip0_12133_1247)\\\">\\n        <path d=\\\"M7 0.000244141H6V20.0002H7V0.000244141Z\\\" fill=\\\"currentColor\\\" />\\n        <path d=\\\"M14 0.000244141H13V20.0002H14V0.000244141Z\\\" fill=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"pause_clip0_12133_1247\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"currentColor\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\n\nexport const SizeChartEntry = ({sizeChartModule, children}) => {\n    if (!sizeChartModule) return null\n\n    const {title, description, showSizeChart} = sizeChartModule\n    const showTable = Boolean(showSizeChart) && Boolean(children)\n    const hasTextContent = Boolean(title || description)\n    if (!hasTextContent && !showTable) return null\n\n    return (\n        <Box data-auto=\"sizeChartEntry\" data-testid=\"size-chart-entry\">\n            <Box borderBottom=\"1px solid\" borderColor=\"black4\" mt={12} mb={8} />\n            {hasTextContent && (\n                <Flex direction=\"column\" gap={2} textStyle=\"bodySm\">\n                    {title && (\n                        <Text as=\"h3\" textStyle=\"bodyMd\" data-testid=\"size-chart-title\">\n                            {title}\n                        </Text>\n                    )}\n                    {description && (\n                        <Box color=\"black3a\" data-testid=\"size-chart-description\">\n                            {description}\n                        </Box>\n                    )}\n                </Flex>\n            )}\n            {showTable && children}\n        </Box>\n    )\n}\n\nSizeChartEntry.propTypes = {\n    sizeChartModule: PropTypes.shape({\n        title: PropTypes.string,\n        description: PropTypes.string,\n        showSizeChart: PropTypes.bool\n    }),\n    children: PropTypes.node\n}\n","export const SizeGuideStyles = {\n    tableContainer: {\n        mt: '4'\n    },\n    tableHeading: {\n        fontSize: '2.75',\n        color: 'black1',\n        py: 2,\n        pr: 2,\n        pl: 0,\n        border: 'none',\n        textTransform: 'none',\n        fontWeight: '400'\n    },\n    tableData: {\n        color: 'black3a',\n        py: 2,\n        px: 0,\n        border: 'none'\n    },\n    // OG-8800 — layout container for the tablet view (md–xl). JS switches between\n    // this and the linear layout via useBreakpointValue in size-guide-content.jsx,\n    // so no CSS display toggling is needed here.\n    tabletSection: {\n        display: 'flex',\n        flexDirection: 'column',\n        gap: '2rem'\n    },\n    tabletMultiEntryRow: {\n        display: 'grid',\n        gridTemplateColumns: '1fr 1fr',\n        gap: '2rem',\n        alignItems: 'flex-end'\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {\n    Box,\n    Table,\n    Thead,\n    Tbody,\n    Tr,\n    Th,\n    Td,\n    TableContainer\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {SizeGuideStyles} from '../size-guide.styles.js'\n\nconst SizeGuideTable = ({type, sizeTableData}) => {\n    const config = getConfig()\n    const intl = useIntl()\n    const sizeTableConfig = config.app.globalSizeTableConfig.productTypes[type]\n\n    const columnLabels = {\n        necklace: {\n            centimeters: intl.formatMessage({\n                defaultMessage: 'Centimeters',\n                id: 'product_details.size_guide.table.heading.necklace_metric'\n            }),\n            inches: intl.formatMessage({\n                defaultMessage: 'Inches',\n                id: 'product_details.size_guide.table.heading.necklace_imperial'\n            })\n        },\n        bracelet: {\n            wristSize: intl.formatMessage(\n                {\n                    defaultMessage: 'Wrist size{br}(in)',\n                    id: 'product_details.size_guide.table.heading.bracelet_wrist_size_in'\n                },\n                {br: <br />}\n            ),\n            braceletSize: intl.formatMessage(\n                {\n                    defaultMessage: 'Bracelet size{br}(in)',\n                    id: 'product_details.size_guide.table.heading.bracelet_size_in'\n                },\n                {br: <br />}\n            ),\n            wristSizeCm: intl.formatMessage(\n                {\n                    defaultMessage: 'Wrist size{br}(cm)',\n                    id: 'product_details.size_guide.table.heading.bracelet_wrist_size_cm'\n                },\n                {br: <br />}\n            ),\n            braceletSizeCm: intl.formatMessage(\n                {\n                    defaultMessage: 'Bracelet size{br}(cm)',\n                    id: 'product_details.size_guide.table.heading.bracelet_size_cm'\n                },\n                {br: <br />}\n            )\n        },\n        ring: {\n            innerCircumference: intl.formatMessage({\n                defaultMessage: 'Circumference',\n                id: 'product_details.size_guide.table.heading.ring_circumference'\n            }),\n            innerDiameter: intl.formatMessage({\n                defaultMessage: 'Diameter',\n                id: 'product_details.size_guide.table.heading.ring_diameter'\n            }),\n            us: intl.formatMessage({\n                defaultMessage: 'US',\n                id: 'product_details.size_guide.table.heading.ring_us'\n            }),\n            uk: intl.formatMessage({\n                defaultMessage: 'UK',\n                id: 'product_details.size_guide.table.heading.ring_uk'\n            }),\n            eu: intl.formatMessage({\n                defaultMessage: 'EU',\n                id: 'product_details.size_guide.table.heading.ring_eu'\n            })\n        }\n    }\n\n    return (\n        <Box {...SizeGuideStyles.tableContainer} data-auto=\"sizeGuideTable\">\n            <TableContainer>\n                <Table sx={{tableLayout: 'auto'}} overflowX={'auto'}>\n                    <Thead>\n                        <Tr>\n                            {sizeTableConfig?.tableHeadingSortOrder.map((tableHeading) => (\n                                <Th\n                                    key={tableHeading}\n                                    textStyle={'caption'}\n                                    {...SizeGuideStyles.tableHeading}\n                                >\n                                    {columnLabels[type]?.[tableHeading] || tableHeading}\n                                </Th>\n                            ))}\n                        </Tr>\n                    </Thead>\n                    <Tbody>\n                        {Object.entries(sizeTableData?.sizes).map(([id, size], idx) => (\n                            <Tr key={id} backgroundColor={idx % 2 === 0 ? 'black5' : 'none'}>\n                                {sizeTableConfig?.tableHeadingSortOrder.map((columnName) => {\n                                    const {names, measurements} = sizeTableConfig.tableData\n                                    let regionData\n                                    let columnParent\n                                    if (columnName in names) {\n                                        columnParent = 'names'\n                                        const configKey =\n                                            sizeTableConfig?.tableData?.names?.[columnName]\n                                        regionData = size.names?.[configKey]\n                                    } else if (columnName in measurements) {\n                                        columnParent = 'measurements'\n                                        const configKey =\n                                            sizeTableConfig?.tableData?.measurements?.[columnName]\n                                        regionData =\n                                            type === 'bracelet'\n                                                ? size.measurements?.wristSize?.[configKey]\n                                                : size.measurements?.[columnName]?.[configKey]\n                                    }\n                                    let displayValue = ''\n\n                                    if (regionData?.type === 'range') {\n                                        const valueFrom = regionData?.valueFrom ?? ''\n                                        const valueTo = regionData?.valueTo ?? ''\n                                        if (valueFrom && valueTo) {\n                                            displayValue = `${valueFrom}–${valueTo}`\n                                        }\n                                    } else {\n                                        const value =\n                                            regionData?.valueFrom ??\n                                            regionData?.valueTo ??\n                                            regionData?.value ??\n                                            ''\n                                        displayValue = value\n                                    }\n\n                                    if (\n                                        displayValue &&\n                                        (type === 'necklace' || columnParent !== 'names')\n                                    ) {\n                                        const unit = regionData?.unit ?? ''\n                                        if (unit) {\n                                            displayValue += ` ${unit}`\n                                        }\n                                    }\n\n                                    return (\n                                        <Td\n                                            key={columnName}\n                                            textStyle={'bodySm'}\n                                            {...SizeGuideStyles.tableData}\n                                        >\n                                            {displayValue}\n                                        </Td>\n                                    )\n                                })}\n                            </Tr>\n                        ))}\n                    </Tbody>\n                </Table>\n            </TableContainer>\n        </Box>\n    )\n}\n\nSizeGuideTable.propTypes = {\n    type: PropTypes.string,\n    sizeTableData: PropTypes.object\n}\n\nexport default SizeGuideTable\n","import React, {useMemo} from 'react'\nimport {Box, Button, Skeleton} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {usePdpStaticContent} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content'\nimport StaticContentBody from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-body'\nimport {SizeChartEntry} from 'pandora-shared-app/overrides/app/components/size-chart-entry'\nimport SizeGuideTable from './size-guide-table'\nimport {SizeGuideStyles} from '../size-guide.styles'\n\nconst isSizeChartField = (field) => field?.type?.toLowerCase() === 'sizechartmodule'\nconst isRingSizerField = (field) => field?.type?.toLowerCase() === 'ringsizermodule'\nconst isFingerSizerField = (field) => field?.type?.toLowerCase() === 'fingersizermodule'\nconst isEntryModuleField = (field) => {\n    const t = field?.type?.toLowerCase()\n    return t === 'ringsizermodule' || t === 'fingersizermodule'\n}\n\nconst extractSizeChartModule = (drawerBodyContent) => {\n    for (const item of drawerBodyContent || []) {\n        for (const field of item.contentFields || []) {\n            if (isSizeChartField(field) && field.sizeChartModule) {\n                return field.sizeChartModule\n            }\n        }\n    }\n    return null\n}\n\nconst contentHasRingSizerModule = (drawerBodyContent) => {\n    for (const item of drawerBodyContent || []) {\n        for (const field of item.contentFields || []) {\n            if (isRingSizerField(field) && field.ringSizerModule) {\n                return true\n            }\n        }\n    }\n    return false\n}\n\nconst contentHasFingerSizerModule = (drawerBodyContent) => {\n    for (const item of drawerBodyContent || []) {\n        for (const field of item.contentFields || []) {\n            if (isFingerSizerField(field) && field.fingerSizerModule) {\n                return true\n            }\n        }\n    }\n    return false\n}\n\nconst SizeGuideContent = ({\n    type,\n    digitalSizeGroup,\n    enableRingSizerUiEnhancements,\n    sizeTableData,\n    handleDrawerBack\n}) => {\n    const intl = useIntl()\n    const isTablet = useBreakpointValue({base: false, md: true, xl: false})\n    const normalizedDigitalSizeGroup = digitalSizeGroup?.toLowerCase()\n\n    const assetKey =\n        type === 'bracelet' && normalizedDigitalSizeGroup\n            ? `size-guide-${normalizedDigitalSizeGroup}`\n            : `size-guide-${type}`\n\n    const {\n        Component: PdpStaticContent,\n        drawerBodyContent,\n        isLoading\n    } = usePdpStaticContent({\n        assetKeys: [assetKey]\n    })\n\n    // sizeChartModule works on ANY size guide drawer (ring / necklace / bracelet …) —\n    // it is only gated by the LD flag as a rollout safety. The ring-specific new\n    // layout (linear/tablet) is still gated on type === 'ring' below.\n    const sizeChartModule = useMemo(\n        () => (enableRingSizerUiEnhancements ? extractSizeChartModule(drawerBodyContent) : null),\n        [enableRingSizerUiEnhancements, drawerBodyContent]\n    )\n\n    // Detect whether the moderator authored a `ringSizerModule` alongside the\n    // `fingerSizerModule` in the content asset. This drives the OG-8800 state matrix:\n    //   State 1: both authored           → finger sizer shown as collapsed CTA\n    //   State 2: only finger authored    → finger sizer shown expanded inline\n    //   State 3: only ring authored      → only ring entry, no finger content\n    //   Fallback: neither authored       → legacy content (via PdpStaticContent)\n    const hasRingSizerModule = useMemo(\n        () => contentHasRingSizerModule(drawerBodyContent),\n        [drawerBodyContent]\n    )\n    const hasFingerSizerModule = useMemo(\n        () => contentHasFingerSizerModule(drawerBodyContent),\n        [drawerBodyContent]\n    )\n    // State 2 renders the finger sizer expanded inline in the main size guide drawer\n    // (no nested drawer). The \"Choose a size\" CTA that normally sits at the bottom of\n    // the nested finger sizer drawer is added here so the customer can jump straight\n    // to size selection without hunting for the close button.\n    const isFingerOnlyState =\n        enableRingSizerUiEnhancements &&\n        type === 'ring' &&\n        hasFingerSizerModule &&\n        !hasRingSizerModule\n\n    // Ring + flag ON: split contentFields so sizeChartModule doesn't render inline.\n    const partitioned = useMemo(() => {\n        if (!enableRingSizerUiEnhancements || type !== 'ring' || !drawerBodyContent?.length) {\n            return null\n        }\n        const regularItems = []\n        for (const item of drawerBodyContent) {\n            const nonSizeChartFields = (item.contentFields || []).filter(\n                (f) => !isSizeChartField(f)\n            )\n            if (nonSizeChartFields.length > 0) {\n                regularItems.push({...item, contentFields: nonSizeChartFields})\n            }\n        }\n        return {regularItems}\n    }, [enableRingSizerUiEnhancements, type, drawerBodyContent])\n\n    // Trailing size chart section — same rendering rule for every type:\n    //   sizeChartModule authored → render SizeChartEntry (title + description +\n    //     optional SizeGuideTable gated by showSizeChart)\n    //   otherwise → plain SizeGuideTable fallback (legacy behaviour)\n    const trailingChart = sizeChartModule ? (\n        <Box data-auto=\"sizeChartSectionWrapper\">\n            <SizeChartEntry sizeChartModule={sizeChartModule}>\n                {sizeTableData && <SizeGuideTable type={type} sizeTableData={sizeTableData} />}\n            </SizeChartEntry>\n        </Box>\n    ) : (\n        sizeTableData && <SizeGuideTable type={type} sizeTableData={sizeTableData} />\n    )\n\n    // State 2 only: \"Choose a size\" CTA at the very bottom of the inline finger sizer\n    // flow, mirroring the button that lives inside the nested finger sizer drawer in\n    // State 1. Uses the shared translation id so IT / FR / etc all render correctly.\n    const chooseSizeButton = isFingerOnlyState && handleDrawerBack && (\n        <Button\n            width=\"100%\"\n            variant=\"primary\"\n            mt={8}\n            data-auto=\"chooseSizeButton\"\n            onClick={handleDrawerBack}\n        >\n            {intl.formatMessage({\n                defaultMessage: 'Choose a size',\n                id: 'product_view.heading.choose_size'\n            })}\n        </Button>\n    )\n\n    // Non-ring or flag OFF → fall back to legacy PdpStaticContent rendering.\n    // StaticContentBody ignores unknown types (including sizeChartModule fields) via\n    // its default switch case, so the module content only surfaces via SizeChartEntry.\n    if (!partitioned) {\n        return (\n            <Box data-auto=\"sizeGuideContentSection\">\n                <PdpStaticContent />\n                <Skeleton isLoaded={!isLoading}>{trailingChart}</Skeleton>\n                {chooseSizeButton}\n            </Box>\n        )\n    }\n\n    const {regularItems} = partitioned\n\n    // Render one layout at a time (not both) so entry components and their hooks\n    // (Tealium bindings, QR ref callback) are not duplicated per page.\n    const content = isTablet ? (\n        // Tablet: items with multiple entry modules render side-by-side in a 2-column\n        // grid; single-entry items stack as full-width rows.\n        <Box data-auto=\"sizeGuideTabletSection\" sx={SizeGuideStyles.tabletSection}>\n            {regularItems.map((item, itemIdx) => {\n                const entryFieldCount = (item.contentFields || []).filter(isEntryModuleField).length\n                const key = item._meta?.deliveryId || item.id || String(itemIdx)\n\n                if (entryFieldCount > 1) {\n                    const entryFields = (item.contentFields || []).filter(isEntryModuleField)\n                    const otherFields = (item.contentFields || []).filter(\n                        (f) => !isEntryModuleField(f)\n                    )\n                    return (\n                        <Box key={key}>\n                            <Box\n                                data-auto=\"sizeGuideTabletMultiEntryRow\"\n                                sx={SizeGuideStyles.tabletMultiEntryRow}\n                            >\n                                {entryFields.map((field, idx) => (\n                                    <StaticContentBody\n                                        key={`${key}-${idx}`}\n                                        drawerBodyContent={[{...item, contentFields: [field]}]}\n                                        isLoading={isLoading}\n                                        type={type}\n                                        hasRingSizerModule={hasRingSizerModule}\n                                    />\n                                ))}\n                            </Box>\n                            {otherFields.length > 0 && (\n                                <StaticContentBody\n                                    drawerBodyContent={[{...item, contentFields: otherFields}]}\n                                    isLoading={isLoading}\n                                    type={type}\n                                    hasRingSizerModule={hasRingSizerModule}\n                                />\n                            )}\n                        </Box>\n                    )\n                }\n\n                return (\n                    <StaticContentBody\n                        key={key}\n                        drawerBodyContent={[item]}\n                        isLoading={isLoading}\n                        type={type}\n                        hasRingSizerModule={hasRingSizerModule}\n                    />\n                )\n            })}\n        </Box>\n    ) : (\n        // Mobile + Desktop: linear\n        <Box data-auto=\"sizeGuideLinearSection\">\n            <StaticContentBody\n                drawerBodyContent={regularItems}\n                isLoading={isLoading}\n                type={type}\n                hasRingSizerModule={hasRingSizerModule}\n            />\n        </Box>\n    )\n\n    return (\n        <Box data-auto=\"sizeGuideContentSection\">\n            {content}\n            <Skeleton isLoaded={!isLoading}>{trailingChart}</Skeleton>\n            {chooseSizeButton}\n        </Box>\n    )\n}\n\nSizeGuideContent.propTypes = {\n    type: PropTypes.string,\n    digitalSizeGroup: PropTypes.string,\n    enableRingSizerUiEnhancements: PropTypes.bool,\n    sizeTableData: PropTypes.object,\n    handleDrawerBack: PropTypes.func\n}\n\nexport default SizeGuideContent\n","import React from 'react'\nimport {Icon} from '@chakra-ui/react'\n\n/**\n * Ring Sizer Icons - Inline SVG components\n *\n * These icons are defined inline rather than using the sprite loader to ensure\n * they are only loaded when the ring sizer feature is enabled (via LD flag).\n * This prevents adding ~3KB to the critical bundle for all users.\n */\n\nexport const PlusThinIcon = (props) => (\n    <Icon viewBox=\"0 0 16 16\" {...props}>\n        <g clipPath=\"url(#plus-thin-clip)\">\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M8.5 7.6C8.44477 7.6 8.4 7.55523 8.4 7.5V0.1C8.4 0.0447715 8.35523 0 8.3 0H7.7C7.64477 0 7.6 0.0447711 7.6 0.0999996V7.5C7.6 7.55523 7.55523 7.6 7.5 7.6H0.1C0.0447715 7.6 0 7.64477 0 7.7V8.3C0 8.35523 0.0447711 8.4 0.0999996 8.4H7.5C7.55523 8.4 7.6 8.44477 7.6 8.5V15.9C7.6 15.9552 7.64477 16 7.7 16H8.3C8.35523 16 8.4 15.9552 8.4 15.9V8.5C8.4 8.44477 8.44477 8.4 8.5 8.4H15.9C15.9552 8.4 16 8.35523 16 8.3V7.7C16 7.64477 15.9552 7.6 15.9 7.6H8.5Z\"\n                fill=\"currentColor\"\n            />\n        </g>\n        <defs>\n            <clipPath id=\"plus-thin-clip\">\n                <rect width=\"16\" height=\"16\" fill=\"white\" />\n            </clipPath>\n        </defs>\n    </Icon>\n)\n\nexport const MinusThinIcon = (props) => (\n    <Icon viewBox=\"0 0 16 16\" {...props}>\n        <rect y=\"7.59998\" width=\"16\" height=\"0.8\" rx=\"0.1\" fill=\"currentColor\" />\n    </Icon>\n)\n\nexport const ArrowOne30Icon = (props) => (\n    <Icon viewBox=\"0 0 13 13\" {...props}>\n        <path\n            d=\"M12.5 1C12.5 0.723858 12.2761 0.5 12 0.5L7.5 0.5C7.22386 0.5 7 0.723858 7 1C7 1.27614 7.22386 1.5 7.5 1.5L11.5 1.5L11.5 5.5C11.5 5.77614 11.7239 6 12 6C12.2761 6 12.5 5.77614 12.5 5.5L12.5 1ZM11.6464 0.646447L0.332738 11.9602L1.03985 12.6673L12.3536 1.35355L11.6464 0.646447Z\"\n            fill=\"white\"\n        />\n    </Icon>\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n/**\n * Credit Card SVG Component for Ring Sizer calibration\n *\n * Standard credit card dimensions (ISO/IEC 7810 ID-1):\n * - Width: 85.6mm\n * - Height: 53.98mm\n * - Aspect ratio: 1.586\n *\n * SVG viewBox: 525 x 331 (maintains 1.586 ratio)\n * The component scales based on the height prop while preserving aspect ratio.\n *\n * Card number layout: 4444 4444 4444 4444\n * - Digit width: ~16px, spacing between digits: ~3.5px\n * - Group spacing: ~28px\n */\nconst CreditCardSVG = ({height}) => {\n    // Aspect ratio of standard credit card (85.6mm / 53.98mm)\n    const ASPECT_RATIO = 1.586\n    const width = height * ASPECT_RATIO\n\n    // Card number positioning constants\n    const DIGIT_WIDTH = 16\n    const DIGIT_SPACING = 3.5\n    const GROUP_SPACING = 28\n    const NUMBER_Y = 217\n    const FIRST_DIGIT_X = 70\n\n    // Generate x positions for all 16 digits (4 groups of 4)\n    const getDigitX = (groupIndex, digitIndex) => {\n        const groupOffset = groupIndex * (4 * (DIGIT_WIDTH + DIGIT_SPACING) + GROUP_SPACING)\n        const digitOffset = digitIndex * (DIGIT_WIDTH + DIGIT_SPACING)\n        return FIRST_DIGIT_X + groupOffset + digitOffset\n    }\n\n    return (\n        <svg\n            width={width}\n            height={height}\n            viewBox=\"0 0 525 331\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            style={{display: 'block'}}\n        >\n            <defs>\n                {/* Reusable \"4\" digit - normalized to origin (0,0) */}\n                <path\n                    id=\"digit-4\"\n                    d=\"M9.28 22.4C9.344 21.472 9.44 19.744 9.44 18.016V16.64H4.224C2.848 16.64 1.408 16.736 0 16.8V14.016L9.024 0H12.576C12.512 0.864 12.416 2.528 12.416 4.384V14.08H16V16.8L12.416 16.64V18.016C12.416 19.744 12.512 21.472 12.576 22.4H9.28ZM9.408 4.224L3.136 14.08H9.44V4.224H9.408Z\"\n                />\n            </defs>\n\n            {/* Card fill - gold/beige color with fixed 2px gray border */}\n            <rect\n                x=\"1\"\n                y=\"1\"\n                width=\"523\"\n                height=\"329\"\n                rx=\"20\"\n                ry=\"20\"\n                fill=\"#F2DBB3\"\n                stroke=\"#757575\"\n                strokeWidth=\"2\"\n                vectorEffect=\"non-scaling-stroke\"\n            />\n\n            {/* Card number: 4444 4444 4444 4444 - using reusable digit */}\n            <g fill=\"#757575\">\n                {[0, 1, 2, 3].map((groupIndex) =>\n                    [0, 1, 2, 3].map((digitIndex) => (\n                        <use\n                            key={`digit-${groupIndex}-${digitIndex}`}\n                            href=\"#digit-4\"\n                            x={getDigitX(groupIndex, digitIndex)}\n                            y={NUMBER_Y}\n                        />\n                    ))\n                )}\n            </g>\n        </svg>\n    )\n}\n\nCreditCardSVG.propTypes = {\n    height: PropTypes.number.isRequired\n}\n\nexport default CreditCardSVG\n","/**\n * Ring Sizer Styles\n *\n * Uses Chakra theme size tokens where possible (from foundations/sizes.js):\n * - 1 = 4px, 2 = 8px, 3 = 12px, 4 = 16px, 5 = 20px, 6 = 24px, 8 = 32px, 10 = 40px, 11 = 44px, etc.\n * - Theme sizes go up to 45 (180px), larger values use pixel strings\n *\n * Color tokens: black1, black3a, black5 (#F7F7F7), loyaltyGold\n */\nexport const RingSizerStyles = {\n    ringSizerContentText: {\n        fontSize: '3.25' // 13px\n    },\n    creditCardContainer: {\n        position: 'relative',\n        width: 'auto',\n        marginTop: 5 // 20px\n    },\n    creditCardOuterContainer: {\n        position: 'relative'\n    },\n    creditCardInnerContainer: {\n        marginLeft: -8, // -32px\n        overflow: 'hidden'\n    },\n    creditCardTextHeight: {\n        fontSize: 4, // 16px\n        position: 'absolute',\n        left: 30, // 120px\n        top: 15 // 60px\n    },\n    creditCardSliderButton: {\n        marginTop: '-1', // -4px\n        height: '11', // 44px\n        width: '11', // 44px\n        padding: '0'\n    },\n    ccHeightSliderTrack: {\n        backgroundColor: 'black3a',\n        height: 'px', // 1px\n        left: -5.5, // -22px\n        width: 'calc(100% + 44px) !important'\n    },\n    ringRadiusContainer: {\n        backgroundColor: 'black5', // #F7F7F7\n        justifyContent: 'center',\n        alignItems: 'center',\n        position: 'relative',\n        marginTop: 4, // 16px\n        height: '344px', // No theme token for 300px\n        width: '100%'\n    },\n    ringPreface: {\n        borderRadius: '50%',\n        borderColor: 'loyaltyGold',\n        position: 'absolute',\n        zIndex: 1\n    },\n    ringCircle: {\n        backgroundColor: 'black1',\n        display: 'flex',\n        borderRadius: '50%',\n        maxWidth: 'calc(100% - 32px)', // calc(100% - size 8)\n        maxHeight: 'calc(100% - 72px)', // calc(100% - size 18)\n        alignItems: 'center',\n        justifyContent: 'center',\n        zIndex: 3\n    },\n    ringCircleInner: {\n        position: 'relative',\n        width: '100%',\n        height: '100%',\n        transformOrigin: 'center',\n        transform: 'rotate(45deg)',\n        zIndex: 5\n    },\n    ringSizeValue: {\n        position: 'absolute',\n        color: 'white',\n        display: 'inline-flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n        width: '100%',\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0\n    },\n    ringCircleArrow1: {\n        position: 'absolute',\n        transformOrigin: 'center',\n        transform: 'rotate(-45deg)',\n        top: '5px',\n        left: 'calc(50% - 8px)'\n    },\n    ringCircleArrow2: {\n        position: 'absolute',\n        transformOrigin: 'center',\n        transform: 'rotate(45deg)',\n        top: 'calc(50% - 8px)',\n        right: '5px'\n    },\n    ringCircleArrow3: {\n        position: 'absolute',\n        transformOrigin: 'center',\n        transform: 'rotate(135deg)',\n        bottom: '5px',\n        left: 'calc(50% - 8px)'\n    },\n    ringCircleArrow4: {\n        position: 'absolute',\n        transformOrigin: 'center',\n        transform: 'rotate(225deg)',\n        top: 'calc(50% - 8px)',\n        left: '5px'\n    },\n    ringSizeDialContainer: {\n        backgroundColor: 'black1',\n        display: 'flex',\n        justifyContent: 'center',\n        position: 'absolute',\n        color: 'white',\n        height: 6, // 24px\n        overflow: 'hidden',\n        width: 10, // 40px\n        zIndex: 10\n    },\n    ringSizeList: {\n        flexDirection: 'column',\n        alignItems: 'center',\n        position: 'absolute',\n        transition: 'top 350ms ease 0s'\n    },\n    unitToggle: {\n        position: 'absolute',\n        bottom: 2.5, // 10px\n        width: 'auto'\n    },\n    regionalMenuButton: {\n        display: 'block',\n        alignItems: 'center',\n        variant: 'unstyled',\n        gap: 1, // 4px\n        fontSize: 5,\n        lineHeight: 5,\n        color: 'black1',\n        right: 0,\n        left: 0,\n        px: 1, // 4px\n        py: 1, // 4px\n        textTransform: 'none',\n        position: 'absolute',\n        bottom: 2, // 8px\n        _hover: {\n            opacity: 0.8\n        },\n        _active: {\n            opacity: 1\n        }\n    },\n    regionalMenuList: {\n        display: 'flex',\n        flexDirection: 'column',\n        minW: '240px', // No theme token for 240px\n        padding: 1.5, // 6px\n        alignItems: 'flex-start',\n        gap: 5, // 20px\n        zIndex: 15\n    },\n    regionalMenuItem: {\n        display: 'flex',\n        gap: 5, // 20px\n        justifyContent: 'space-between'\n    },\n    controlContainer: {\n        backgroundColor: 'white',\n        height: 11, // 44px\n        marginTop: 8, // 32px\n        position: 'relative'\n    },\n\n    footerContainer: {\n        backgroundColor: 'white',\n        paddingTop: 1.5, // 6px (closest to 5px)\n        paddingX: 8, // 32px\n        paddingBottom: 0,\n        position: 'relative',\n        zIndex: 2,\n        width: 'calc(100% + 64px)', // calc(100% + size 16)\n        marginTop: -1.5, // -6px (closest to -5px)\n        marginX: -8 // -32px\n    },\n    footerMeasureContainer: {\n        backgroundColor: 'white',\n        display: 'flex',\n        flexDirection: 'column',\n        justifyContent: 'center',\n        paddingTop: 1.5, // 6px (closest to 5px)\n        paddingX: 8, // 32px\n        paddingBottom: 0,\n        position: 'relative',\n        zIndex: 2,\n        height: 32, // 128px\n        width: 'calc(100% + 64px)', // calc(100% + size 16)\n        marginTop: -1.5, // -6px (closest to -5px)\n        marginX: -8 // -32px\n    }\n}\n","/* global globalThis */\nimport React, {useState, useEffect, useMemo, useCallback, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Button,\n    Flex,\n    HStack,\n    VStack,\n    Slider,\n    SliderThumb,\n    SliderTrack,\n    Text,\n    Menu,\n    MenuButton,\n    MenuList,\n    MenuItem,\n    MenuChakraButton\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {\n    StaticChevronRightIcon,\n    StaticChevronLeftIcon,\n    CheckIcon\n} from 'pandora-shared-app/overrides/app/components/icons'\nimport {PlusThinIcon, MinusThinIcon, ArrowOne30Icon} from './ring-sizer-icons'\nimport {ChevronDownIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {useIntl} from 'react-intl'\nimport {RingSizerStyles} from '../ring-sizer.styles'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nconst RingSizerMeasurementDrawer = ({\n    isRingSizerMeasurementDrawerOpen,\n    handleDrawerClose,\n    handleDrawerBack,\n    cardHeightPxMm,\n    ringSizerTable,\n    selectedRegionalSize,\n    handleChangeRegionalSize,\n    regionalSizeOptions,\n    onComplete,\n    availableSizeNames\n}) => {\n    const enableTrackingFix = useVariant(LD_KEYS.enablePdpRingSizerTrackingFix, false)\n    const enableRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const [isPrefaceActive, setIsPrefaceActive] = useState(!enableRingSizerUiEnhancements)\n    const intl = useIntl()\n    const {link} = useTealium()\n\n    // Helper to check if size is available (needed for initial state)\n    const availableSet = useMemo(() => {\n        const arr = Array.isArray(availableSizeNames) ? availableSizeNames : []\n        return new Set(arr.map((s) => String(s).trim().toLowerCase()))\n    }, [availableSizeNames])\n\n    // Shared helper to check if a specific index is available\n    const isIndexAvailable = useCallback(\n        (index) => {\n            const entry = ringSizerTable[index] || {}\n            const regionKey = selectedRegionalSize?.key || 'metric'\n            const candidates = [\n                entry?.[regionKey],\n                entry?.metric,\n                entry?.imperial,\n                entry?.wheatsheaf\n            ].filter((v) => v != null)\n            const candidateStrings = candidates.map((v) => String(v).trim())\n            return candidateStrings.some((c) => availableSet.has(c.toLowerCase()))\n        },\n        [ringSizerTable, selectedRegionalSize, availableSet]\n    )\n\n    // Initialize to nearest available size instead of just middle\n    const initialRingIndex = useMemo(() => {\n        const middle = Math.floor(ringSizerTable.length / 2)\n\n        // If no sizes are available at all, use middle as safe fallback\n        if (availableSet.size === 0) {\n            return middle\n        }\n\n        // Check if middle is available\n        if (isIndexAvailable(middle)) {\n            return middle\n        }\n\n        // Search for nearest available\n        const maxDistance = Math.max(middle, ringSizerTable.length - 1 - middle)\n        for (let distance = 1; distance <= maxDistance; distance++) {\n            const lowerIndex = middle - distance\n            if (lowerIndex >= 0 && isIndexAvailable(lowerIndex)) {\n                return lowerIndex\n            }\n            const higherIndex = middle + distance\n            if (higherIndex < ringSizerTable.length && isIndexAvailable(higherIndex)) {\n                return higherIndex\n            }\n        }\n\n        // Fallback to middle if no available size found (edge case)\n        return middle\n    }, [ringSizerTable, availableSet, isIndexAvailable])\n\n    const [ringIndex, setRingIndex] = useState(initialRingIndex)\n    // Item height = 26px text + 8px margin (theme token 2 = 8px)\n    const itemHeight = 26 + 8\n\n    // Reset internal state when parent opens the drawer\n    // Uses a ref to track previous open state to detect open transitions\n    const prevOpenRef = useRef(false)\n    useEffect(() => {\n        const wasOpen = prevOpenRef.current\n        prevOpenRef.current = isRingSizerMeasurementDrawerOpen\n\n        // Only reset when transitioning from closed to open\n        if (isRingSizerMeasurementDrawerOpen && !wasOpen) {\n            setIsPrefaceActive(!enableRingSizerUiEnhancements)\n            setRingIndex(initialRingIndex)\n        }\n    }, [isRingSizerMeasurementDrawerOpen, initialRingIndex, enableRingSizerUiEnhancements])\n\n    // px/mm calibration value from baseline drawer\n    // With SVG credit card, no correction factor needed - edges are mathematically precise\n    const pxPerMm = cardHeightPxMm ?? 0\n\n    useEffect(() => {\n        if (!isPrefaceActive) return\n        const middle = Math.floor(ringSizerTable.length / 2)\n        const max = ringSizerTable.length - 1\n        const min = 0\n        let animationCancelled = false\n        const delay = (ms) => new Promise((res) => setTimeout(res, ms))\n        const animateTo = async (startIndex, targetIndex) => {\n            const step = targetIndex > startIndex ? 1 : -1\n            let currentIndex = startIndex\n            while (currentIndex !== targetIndex) {\n                if (animationCancelled) return\n                currentIndex += step\n                setRingIndex(currentIndex)\n                await delay(80)\n            }\n        }\n        const animateSlider = async () => {\n            await animateTo(middle, max)\n            if (animationCancelled) return\n            await delay(300)\n            await animateTo(max, min)\n            if (animationCancelled) return\n            await delay(300)\n            await animateTo(min, middle)\n            if (animationCancelled) return\n            await delay(300)\n            const availableIndex = findNearestAvailableIndex(middle)\n            if (availableIndex !== middle) {\n                await animateTo(middle, availableIndex)\n            }\n            setIsPrefaceActive(false)\n        }\n        const timeout = setTimeout(animateSlider, 100)\n        const skipAnimation = () => {\n            animationCancelled = true\n            const availableIndex = findNearestAvailableIndex(middle)\n            setRingIndex(availableIndex)\n            setIsPrefaceActive(false)\n        }\n        globalThis.addEventListener('mousedown', skipAnimation)\n        return () => {\n            clearTimeout(timeout)\n            globalThis.removeEventListener('mousedown', skipAnimation)\n            animationCancelled = true\n        }\n    }, [isPrefaceActive, ringSizerTable.length, availableSizeNames, selectedRegionalSize])\n\n    const getCurrentCandidates = () => {\n        const entry = ringSizerTable[ringIndex] || {}\n        const regionKey = selectedRegionalSize?.key || 'metric'\n        const candidates = [\n            entry?.[regionKey],\n            entry?.metric,\n            entry?.imperial,\n            entry?.wheatsheaf\n        ].filter((v) => v != null)\n        return candidates.map((v) => String(v).trim())\n    }\n\n    const isCurrentAvailable = () => {\n        const cands = getCurrentCandidates()\n        return cands.some((c) => availableSet.has(c.toLowerCase()))\n    }\n\n    const findNearestAvailableIndex = (targetIndex) => {\n        // If no sizes are available at all, return target as safe fallback\n        if (availableSet.size === 0) {\n            return targetIndex\n        }\n\n        // First check if target is available\n        if (isIndexAvailable(targetIndex)) {\n            return targetIndex\n        }\n\n        // Search outward from target in both directions\n        const maxDistance = Math.max(targetIndex, ringSizerTable.length - 1 - targetIndex)\n        for (let distance = 1; distance <= maxDistance; distance++) {\n            // Check lower index first (prefer smaller sizes if equidistant)\n            const lowerIndex = targetIndex - distance\n            if (lowerIndex >= 0 && isIndexAvailable(lowerIndex)) {\n                return lowerIndex\n            }\n\n            // Then check higher index\n            const higherIndex = targetIndex + distance\n            if (higherIndex < ringSizerTable.length && isIndexAvailable(higherIndex)) {\n                return higherIndex\n            }\n        }\n\n        // Fallback to target if no available size found (edge case)\n        return targetIndex\n    }\n\n    /**\n     * Handles \"Select This Size\" button click with analytics tracking.\n     * Tracks: estore_event: [\"button_clicked\"], button_id: \"size_guide_completed\"\n     * Also signals sizeGuideApplied: true to parent for Add to Bag tracking.\n     */\n    const handleSelectSize = () => {\n        // Track ring sizer journey completion\n        link({\n            estore_event: [TEALIUM_CONSTANTS.ESTORE_EVENT.BUTTON_CLICKED],\n            button_id: TEALIUM_CONSTANTS.BUTTON_ID.SIZE_GUIDE_COMPLETED\n        })\n\n        const entry = ringSizerTable[ringIndex] || {}\n        const regionKey = selectedRegionalSize?.key || 'metric'\n        const labels = {\n            metric: entry.metric,\n            imperial: entry.imperial,\n            wheatsheaf: entry.wheatsheaf\n        }\n        const mmInnerDiameter = Number.parseFloat(entry.metric)\n        const sizeName = labels[regionKey] || labels.metric || String(mmInnerDiameter || '')\n\n        if (typeof onComplete === 'function') {\n            onComplete({\n                regionKey,\n                sizeName,\n                normalizedSize: {\n                    mmInnerDiameter: Number.isNaN(mmInnerDiameter) ? undefined : mmInnerDiameter,\n                    labels\n                },\n                sizeGuideApplied: true // Signal that ring sizer was used for Add to Bag tracking\n            })\n        }\n    }\n\n    const VerticalNumberList = () => {\n        return (\n            <>\n                {ringSizerTable.map((sizeObj) => (\n                    <Box key={String(sizeObj.metric)} my={1}>\n                        {' '}\n                        {/* 4px vertical margin */}\n                        {sizeObj.metric}\n                    </Box>\n                ))}\n            </>\n        )\n    }\n\n    const sizeDialPosition = (sizeIndex, itemH) => {\n        return sizeIndex * itemH\n    }\n\n    const regionalSizeHeader = regionalSizeOptions?.length ? (\n        <Text>{regionalSizeOptions[0].labelSingular}</Text>\n    ) : null\n\n    return (\n        <FullDrawerSheet\n            backgroundColor=\"white\"\n            isOpen={isRingSizerMeasurementDrawerOpen}\n            onClose={handleDrawerClose}\n            handleOnBack={handleDrawerBack}\n            isNestedDrawer={Boolean(handleDrawerBack)}\n            virtualPagePath=\"size-guide\"\n            skipTracking={enableTrackingFix}\n            bodyStyles={{paddingTop: 2}}\n            bodyContent={\n                <>\n                    <Text textStyle=\"bodyMd\" pb={2} data-auto=\"ringSizerMeasureStepTitle\">\n                        {intl.formatMessage({\n                            defaultMessage: 'Measure a ring',\n                            id: 'ring_sizer.header.measurement_step'\n                        })}\n                    </Text>\n                    <Text\n                        textStyle=\"bodySm\"\n                        color=\"black3a\"\n                        data-auto=\"ringSizerMeasureInstructions\"\n                    >\n                        {intl.formatMessage({\n                            defaultMessage:\n                                'Lay your phone flat. Place ring on the screen and adjust size of the circle to just meet the inner edge of the ring.',\n                            id: 'ring_sizer.description.measure_step'\n                        })}\n                    </Text>\n\n                    {isPrefaceActive && (\n                        <Box\n                            position=\"fixed\"\n                            top={0}\n                            left={0}\n                            width=\"100vw\"\n                            height=\"100vh\"\n                            zIndex={9999}\n                            onTouchStart={() => {\n                                setRingIndex(Math.floor(ringSizerTable.length / 2))\n                                setIsPrefaceActive(false)\n                            }}\n                        />\n                    )}\n\n                    <Flex {...RingSizerStyles.ringRadiusContainer}>\n                        {isPrefaceActive && (\n                            <Box\n                                {...RingSizerStyles.ringPreface}\n                                height={`${\n                                    (ringSizerTable[ringIndex].metric / Math.PI) * pxPerMm\n                                }px`}\n                                width={`${\n                                    (ringSizerTable[ringIndex].metric / Math.PI) * pxPerMm\n                                }px`}\n                                borderWidth={`${\n                                    ((ringSizerTable[ringIndex].metric / Math.PI) * pxPerMm) / 2 +\n                                    10\n                                }px`}\n                            />\n                        )}\n\n                        <Box\n                            data-testid=\"ring-circle\"\n                            data-auto=\"ringSizerMeasureCircle\"\n                            height={(ringSizerTable[ringIndex].metric / Math.PI) * pxPerMm + 'px'}\n                            width={(ringSizerTable[ringIndex].metric / Math.PI) * pxPerMm + 'px'}\n                            {...RingSizerStyles.ringCircle}\n                        >\n                            <Box {...RingSizerStyles.ringCircleInner}>\n                                <ArrowOne30Icon w={4} h={4} {...RingSizerStyles.ringCircleArrow1} />\n                                <ArrowOne30Icon w={4} h={4} {...RingSizerStyles.ringCircleArrow2} />\n                                <ArrowOne30Icon w={4} h={4} {...RingSizerStyles.ringCircleArrow3} />\n                                <ArrowOne30Icon w={4} h={4} {...RingSizerStyles.ringCircleArrow4} />\n                            </Box>\n                        </Box>\n\n                        <Box {...RingSizerStyles.ringSizeDialContainer}>\n                            <Flex\n                                top={sizeDialPosition(ringIndex, itemHeight) * -1 - 5 + 'px'}\n                                {...RingSizerStyles.ringSizeList}\n                            >\n                                {VerticalNumberList()}\n                            </Flex>\n                        </Box>\n\n                        {!isPrefaceActive && (\n                            <Box {...RingSizerStyles.regionalMenuContainer}>\n                                {regionalSizeOptions?.length > 1 ? (\n                                    <Menu>\n                                        <MenuButton\n                                            as={MenuChakraButton}\n                                            data-testid=\"regional-size-button\"\n                                            data-auto=\"btnRingSizerRegionalSize\"\n                                            {...RingSizerStyles.regionalMenuButton}\n                                        >\n                                            {selectedRegionalSize.labelSingular}{' '}\n                                            {ringSizerTable[ringIndex]?.[selectedRegionalSize.key]}\n                                            <ChevronDownIcon boxSize={4} mb={0.5} ml={2} />\n                                        </MenuButton>\n                                        <MenuList {...RingSizerStyles.regionalMenuList}>\n                                            {regionalSizeOptions.map((option) => (\n                                                <MenuItem\n                                                    key={option.key}\n                                                    onClick={() =>\n                                                        // setTimeout used to avoid race condition after selecting an item\n                                                        // Without setTimeout: Click -> menu tries to close + state updates -> conflict\n                                                        // With setTimeout: defers the state update to the next event loop tick, so the menu closes first.\n                                                        setTimeout(\n                                                            () => handleChangeRegionalSize(option),\n                                                            0\n                                                        )\n                                                    }\n                                                    color={\n                                                        selectedRegionalSize.key === option.key\n                                                            ? 'black'\n                                                            : 'black3a'\n                                                    }\n                                                    data-testid={`regional-option-${option.key}`}\n                                                    {...RingSizerStyles.regionalMenuItem}\n                                                >\n                                                    <Text>{option.labelSingular}</Text>\n                                                    {selectedRegionalSize.key === option.key && (\n                                                        <CheckIcon\n                                                            boxSize=\"5\"\n                                                            data-testid=\"check-icon\"\n                                                        />\n                                                    )}\n                                                </MenuItem>\n                                            ))}\n                                        </MenuList>\n                                    </Menu>\n                                ) : (\n                                    <>{regionalSizeHeader}</>\n                                )}\n                            </Box>\n                        )}\n                    </Flex>\n\n                    {/* Slider row: 6 cols on mobile, 4 cols (centered) on tablet */}\n                    {!isPrefaceActive && (\n                        <HStack\n                            spacing={8} // 32px\n                            width={{base: '100%', md: 'calc(4/6 * 100%)'}}\n                            mx=\"auto\"\n                            {...RingSizerStyles.controlContainer}\n                        >\n                            <Button\n                                variant=\"action\"\n                                colorScheme=\"light\"\n                                data-testid=\"rs-measure-size-minus\"\n                                data-auto=\"btnRingSizerMeasureMinus\"\n                                {...RingSizerStyles.creditCardSliderButton}\n                                aria-label={intl.formatMessage({\n                                    defaultMessage: 'Decrease ring size',\n                                    id: 'ring_sizer.aria.decrease_ring_size'\n                                })}\n                                onClick={() => (ringIndex > 0 ? setRingIndex(ringIndex - 1) : null)}\n                            >\n                                <MinusThinIcon w={4} h={4} />\n                            </Button>\n\n                            <Slider\n                                data-testid=\"rs-measure-slider\"\n                                data-auto=\"ringSizerMeasureSlider\"\n                                minWidth=\"auto\"\n                                min={0}\n                                max={ringSizerTable.length - 1}\n                                onChange={(val) => setRingIndex(val)}\n                                value={ringIndex}\n                            >\n                                <SliderTrack {...RingSizerStyles.ccHeightSliderTrack} />\n                                <SliderThumb\n                                    aria-label={intl.formatMessage({\n                                        defaultMessage: 'Adjust ring size',\n                                        id: 'ring_sizer.aria.ring_size_slider'\n                                    })}\n                                    height=\"11\"\n                                    width=\"11\"\n                                    borderRadius=\"0\"\n                                    backgroundColor=\"black1\"\n                                >\n                                    <StaticChevronLeftIcon w={3} h={3} stroke=\"white\" />\n                                    <StaticChevronRightIcon w={3} h={3} stroke=\"white\" />\n                                </SliderThumb>\n                            </Slider>\n\n                            <input type=\"hidden\" data-testid=\"ring-size-value\" value={ringIndex} />\n\n                            <Button\n                                variant=\"action\"\n                                colorScheme=\"light\"\n                                data-testid=\"rs-measure-size-plus\"\n                                data-auto=\"btnRingSizerMeasurePlus\"\n                                {...RingSizerStyles.creditCardSliderButton}\n                                aria-label={intl.formatMessage({\n                                    defaultMessage: 'Increase ring size',\n                                    id: 'ring_sizer.aria.increase_ring_size'\n                                })}\n                                onClick={() =>\n                                    ringIndex < ringSizerTable.length - 1\n                                        ? setRingIndex(ringIndex + 1)\n                                        : null\n                                }\n                            >\n                                <PlusThinIcon w={4} h={4} />\n                            </Button>\n                        </HStack>\n                    )}\n                </>\n            }\n            footerContent={\n                isPrefaceActive ? null : (\n                    <Box width=\"100%\">\n                        <VStack width=\"100%\" spacing={8}>\n                            {' '}\n                            {/* 32px */}\n                            {isCurrentAvailable() ? (\n                                <Button\n                                    variant=\"primary\"\n                                    colorScheme=\"primary\"\n                                    width=\"100%\"\n                                    onClick={handleSelectSize}\n                                    data-auto=\"btnRingSizerSelectSize\"\n                                >\n                                    {intl.formatMessage({\n                                        defaultMessage: 'Select this size',\n                                        id: 'ring_sizer.button.select_size'\n                                    })}\n                                </Button>\n                            ) : (\n                                <Text\n                                    textAlign=\"center\"\n                                    color=\"black3a\"\n                                    fontSize=\"3.25\"\n                                    data-testid=\"size-not-stocked\"\n                                    data-auto=\"ringSizerSizeNotStocked\"\n                                >\n                                    {intl.formatMessage({\n                                        defaultMessage: 'Unfortunately we do not stock this size',\n                                        id: 'ring_sizer.label.not_available'\n                                    })}\n                                </Text>\n                            )}\n                        </VStack>\n                    </Box>\n                )\n            }\n            footerStyles={{borderTop: 'none'}}\n            footerHeight={isPrefaceActive ? '0' : '32'}\n        />\n    )\n}\n\nRingSizerMeasurementDrawer.propTypes = {\n    isRingSizerMeasurementDrawerOpen: PropTypes.bool,\n    handleDrawerClose: PropTypes.func,\n    handleDrawerBack: PropTypes.func,\n    cardHeightPxMm: PropTypes.number,\n    ringSizerTable: PropTypes.arrayOf(\n        PropTypes.shape({\n            imperial: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n            metric: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n            wheatsheaf: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n        })\n    ),\n    selectedRegionalSize: PropTypes.shape({\n        key: PropTypes.string,\n        labelSingular: PropTypes.string\n    }),\n    handleChangeRegionalSize: PropTypes.func.isRequired,\n    regionalSizeOptions: PropTypes.arrayOf(\n        PropTypes.shape({\n            key: PropTypes.string,\n            labelSingular: PropTypes.string\n        })\n    ),\n    onComplete: PropTypes.func,\n    /** Array of variant size names available to select (e.g., productSizes[0].values[].name) */\n    availableSizeNames: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n}\n\nexport default RingSizerMeasurementDrawer\n","import React, {useState, useMemo, useEffect, useCallback, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Button,\n    HStack,\n    VStack,\n    Slider,\n    SliderThumb,\n    SliderTrack,\n    Text,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {\n    StaticChevronRightIcon,\n    StaticChevronLeftIcon\n} from 'pandora-shared-app/overrides/app/components/icons'\nimport {PlusThinIcon, MinusThinIcon} from './partials/ring-sizer-icons'\nimport {useIntl} from 'react-intl'\nimport CreditCardSVG from './partials/credit-card-svg'\nimport {RingSizerStyles} from './ring-sizer.styles'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport RingSizerMeasurementDrawer from './partials/ring-sizer-measurement'\nimport {getRegionalSizeOptions} from '../size-selector/utils'\n\nconst CARD_HEIGHT_MM = 53.98\n\nconst clamp = (val, min, max) => Math.min(Math.max(val, min), max)\n\nfunction parseAndSortRingSizes(sizeTableData) {\n    const sizes = sizeTableData?.sizes ?? {}\n    const pick = (n) => n?.valueTo ?? n?.value ?? n?.valueFrom ?? undefined\n\n    return Object.values(sizes)\n        .filter((s) => s && typeof s === 'object')\n        .map((s) => {\n            const names = s.names ?? {}\n            const metricNum = Number(pick(names.metric))\n            if (!Number.isFinite(metricNum)) return null\n            return {\n                metric: metricNum,\n                imperial: pick(names.imperial),\n                wheatsheaf: pick(names.wheatsheaf)\n            }\n        })\n        .filter(Boolean)\n        .sort((a, b) => a.metric - b.metric)\n}\n\nconst RingSizerDrawer = ({\n    isRingSizerDrawerOpen,\n    handleDrawerClose,\n    handleDrawerBack,\n    sizeTable,\n    selectedRegionalSize: selectedRegionalSizeProp,\n    initialSelectedRegionalSize,\n    handleChangeRegionalSize: handleChangeRegionalSizeProp,\n    onComplete,\n    availableSizeNames\n}) => {\n    const intl = useIntl()\n    const enableTrackingFix = useVariant(LD_KEYS.enablePdpRingSizerTrackingFix, false)\n    const enableQrCodeTracking = useVariant(LD_KEYS.enablePdpRingSizerQrCodeTracking, false)\n    const {view} = useTealium()\n\n    const isTablet = useBreakpointValue({base: false, md: true}) ?? false\n\n    // Card height constraints based on device screen analysis:\n    // - Mobile max 380px: Safe for iPhone SE (667px viewport) and small Android (800px viewport)\n    // - Tablet max 500px: Tablets have more vertical space for easier calibration\n    const CARD_HEIGHT_MIN = 180\n    const CARD_HEIGHT_MAX = isTablet ? 500 : 380\n\n    const initialCardHeight = useMemo(\n        () => Math.round((CARD_HEIGHT_MIN + CARD_HEIGHT_MAX) / 2),\n        [CARD_HEIGHT_MIN, CARD_HEIGHT_MAX]\n    )\n    const [cardHeight, setCardHeight] = useState(initialCardHeight)\n\n    useEffect(() => {\n        setCardHeight((prev) => clamp(prev, CARD_HEIGHT_MIN, CARD_HEIGHT_MAX))\n    }, [CARD_HEIGHT_MIN, CARD_HEIGHT_MAX])\n\n    const [isRingSizerMeasurementDrawerOpen, setIsRingSizerMeasurementDrawerOpen] = useState(false)\n    const [isBaselineDrawerOpen, setIsBaselineDrawerOpen] = useState(true)\n    const hasTrackedTryOnRef = useRef(false)\n\n    // Reset internal state when parent opens the drawer\n    // Uses a ref to track previous open state to detect open transitions\n    const prevOpenRef = useRef(false)\n    useEffect(() => {\n        const wasOpen = prevOpenRef.current\n        prevOpenRef.current = isRingSizerDrawerOpen\n\n        // Only reset when transitioning from closed to open\n        if (isRingSizerDrawerOpen && !wasOpen) {\n            setIsBaselineDrawerOpen(true)\n            setIsRingSizerMeasurementDrawerOpen(false)\n            setCardHeight(initialCardHeight)\n            hasTrackedTryOnRef.current = false\n        }\n    }, [isRingSizerDrawerOpen, initialCardHeight])\n\n    const ringSizerTable = useMemo(() => parseAndSortRingSizes(sizeTable), [sizeTable])\n\n    // Region options derived from the table shape\n    const regionalSizeOptions = useMemo(() => {\n        const firstSizeNames = Object.values(sizeTable?.sizes ?? {})[0]?.names\n        return getRegionalSizeOptions(sizeTable?.type, firstSizeNames, intl)\n    }, [sizeTable?.type, sizeTable?.sizes, intl])\n\n    const [internalSelectedRegion, setInternalSelectedRegion] = useState(\n        () => initialSelectedRegionalSize ?? regionalSizeOptions?.[0] ?? 'metric'\n    )\n    const isControlled = selectedRegionalSizeProp != null\n    const selectedRegionalSize = isControlled ? selectedRegionalSizeProp : internalSelectedRegion\n\n    useEffect(() => {\n        if (!isControlled) {\n            const next = initialSelectedRegionalSize ?? regionalSizeOptions?.[0] ?? 'metric'\n            setInternalSelectedRegion(next)\n        }\n    }, [regionalSizeOptions, initialSelectedRegionalSize, isControlled])\n\n    const handleChangeRegionalSize = useCallback(\n        (value) => {\n            if (!isControlled) setInternalSelectedRegion(value)\n            if (handleChangeRegionalSizeProp) handleChangeRegionalSizeProp(value)\n        },\n        [isControlled, handleChangeRegionalSizeProp]\n    )\n\n    const pxPerMm = useMemo(() => cardHeight / CARD_HEIGHT_MM, [cardHeight])\n\n    const canMeasure = ringSizerTable.length > 0 && Number.isFinite(pxPerMm) && pxPerMm > 0\n\n    // Track if viewport is tall enough for sticky footer\n    // Threshold accounts for card container needing space above the footer\n    // On small devices (iPhone SE: 667px, Android 800px), switch to inline footer\n    const CARD_CONTAINER_MIN_HEIGHT = CARD_HEIGHT_MAX + 30 // Card max + padding\n    const [useInlineFooter, setUseInlineFooter] = useState(false)\n    const bodyRef = useRef(null)\n\n    useEffect(() => {\n        const checkViewportHeight = () => {\n            // Fixed UI heights: header (~60px) + instructions (~80px) + footer (~180px) + safari toolbar (~50px)\n            const fixedUIHeight = 370\n            const availableHeight = window.innerHeight - fixedUIHeight\n            // If available space is less than card container min height, use inline footer\n            setUseInlineFooter(availableHeight < CARD_CONTAINER_MIN_HEIGHT)\n        }\n\n        checkViewportHeight()\n        window.addEventListener('resize', checkViewportHeight)\n        return () => window.removeEventListener('resize', checkViewportHeight)\n    }, [CARD_CONTAINER_MIN_HEIGHT])\n\n    const onMinus = useCallback(() => {\n        setCardHeight((h) => clamp(h - 1, CARD_HEIGHT_MIN, CARD_HEIGHT_MAX))\n    }, [CARD_HEIGHT_MIN, CARD_HEIGHT_MAX])\n\n    const onPlus = useCallback(() => {\n        setCardHeight((h) => clamp(h + 1, CARD_HEIGHT_MIN, CARD_HEIGHT_MAX))\n    }, [CARD_HEIGHT_MIN, CARD_HEIGHT_MAX])\n\n    const onSliderChange = useCallback(\n        (val) => setCardHeight(clamp(val, CARD_HEIGHT_MIN, CARD_HEIGHT_MAX)),\n        [CARD_HEIGHT_MIN, CARD_HEIGHT_MAX]\n    )\n\n    const goToMeasurement = useCallback(() => {\n        if (!canMeasure) return\n\n        // req #4: fire try-on virtual pageview once per drawer open when user starts measurement via QR\n        if (enableQrCodeTracking && !hasTrackedTryOnRef.current && typeof window !== 'undefined') {\n            const params = new URLSearchParams(window.location.search)\n            if (\n                params.get(TEALIUM_CONSTANTS.RING_SIZER_QR.SOURCE_PARAM_KEY) ===\n                TEALIUM_CONSTANTS.RING_SIZER_QR.SOURCE_PARAM_VALUE\n            ) {\n                hasTrackedTryOnRef.current = true\n                view({\n                    estore_event: [TEALIUM_CONSTANTS.DRAWER.EVENTS.VIEW],\n                    virtual_page_name: TEALIUM_CONSTANTS.RING_SIZER_QR.VIRTUAL_PAGE_NAME.TRY_ON,\n                    virtual_page_url: TEALIUM_CONSTANTS.RING_SIZER_QR.VIRTUAL_PAGE_URL.TRY_ON,\n                    traffic_source: TEALIUM_CONSTANTS.RING_SIZER_QR.TRAFFIC_SOURCE,\n                    user_device_type: TEALIUM_CONSTANTS.USER_DEVICE_TYPE.MOBILE\n                })\n            }\n        }\n\n        setIsRingSizerMeasurementDrawerOpen(true)\n        requestAnimationFrame(() => setIsBaselineDrawerOpen(false))\n    }, [canMeasure, enableQrCodeTracking, view])\n\n    const baselineClose = useCallback(() => {\n        setIsRingSizerMeasurementDrawerOpen(false)\n        if (typeof handleDrawerClose === 'function') handleDrawerClose()\n    }, [handleDrawerClose])\n\n    const baselineBack = useCallback(() => {\n        setIsRingSizerMeasurementDrawerOpen(false)\n        if (typeof handleDrawerBack === 'function') handleDrawerBack()\n    }, [handleDrawerBack])\n\n    const measurementClose = useCallback(() => {\n        setIsRingSizerMeasurementDrawerOpen(false)\n        setIsBaselineDrawerOpen(false)\n        requestAnimationFrame(() => {\n            if (typeof handleDrawerClose === 'function') handleDrawerClose()\n        })\n    }, [handleDrawerClose])\n\n    const measurementBack = useCallback(() => {\n        setIsBaselineDrawerOpen(true)\n        requestAnimationFrame(() => setIsRingSizerMeasurementDrawerOpen(false))\n    }, [])\n\n    const measurementComplete = useCallback(\n        (result) => {\n            setIsRingSizerMeasurementDrawerOpen(false)\n            if (typeof onComplete === 'function') onComplete(result)\n        },\n        [onComplete]\n    )\n\n    const instructionId = 'ring-sizer-calibration-instructions'\n\n    // Footer controls component - rendered either in footer slot or inline in body\n    // Grid layout: Mobile = 6/6 cols, Tablet = 4/6 cols for slider, 6/6 for button\n    const renderFooterControls = (isInline) => (\n        <Box\n            ref={bodyRef}\n            width=\"100%\"\n            marginTop={isInline ? 8 : undefined} // 32px\n        >\n            <VStack width=\"100%\" spacing={8} mb={isInline ? 8 : 9}>\n                <HStack\n                    spacing={8} // 32px\n                    width={{base: '100%', md: 'calc(4/6 * 100%)'}}\n                    mx=\"auto\"\n                >\n                    <Button\n                        variant=\"action\"\n                        colorScheme=\"light\"\n                        data-testid=\"rs-card-size-minus\"\n                        data-auto=\"btnRingSizerBaselineMinus\"\n                        {...RingSizerStyles.creditCardSliderButton}\n                        onClick={onMinus}\n                        aria-label={intl.formatMessage({\n                            defaultMessage: 'Decrease card height',\n                            id: 'ring_sizer.aria.decrease_card_height'\n                        })}\n                    >\n                        <MinusThinIcon w={4} h={4} />\n                    </Button>\n\n                    <Slider\n                        minWidth=\"auto\"\n                        min={CARD_HEIGHT_MIN}\n                        max={CARD_HEIGHT_MAX}\n                        onChange={onSliderChange}\n                        value={cardHeight}\n                        data-testid=\"rs-card-slider\"\n                        data-auto=\"ringSizerBaselineSlider\"\n                        aria-label={intl.formatMessage({\n                            defaultMessage: 'Adjust credit card height',\n                            id: 'ring_sizer.aria.card_slider'\n                        })}\n                        aria-describedby={instructionId}\n                    >\n                        <SliderTrack {...RingSizerStyles.ccHeightSliderTrack} />\n                        <SliderThumb\n                            height=\"11\"\n                            width=\"11\"\n                            borderRadius=\"0\"\n                            backgroundColor=\"black1\"\n                        >\n                            <StaticChevronLeftIcon w={3} h={3} stroke=\"white\" />\n                            <StaticChevronRightIcon w={3} h={3} stroke=\"white\" />\n                        </SliderThumb>\n                    </Slider>\n\n                    <Button\n                        variant=\"action\"\n                        colorScheme=\"light\"\n                        data-testid=\"rs-card-size-plus\"\n                        data-auto=\"btnRingSizerBaselinePlus\"\n                        {...RingSizerStyles.creditCardSliderButton}\n                        onClick={onPlus}\n                        aria-label={intl.formatMessage({\n                            defaultMessage: 'Increase card height',\n                            id: 'ring_sizer.aria.increase_card_height'\n                        })}\n                    >\n                        <PlusThinIcon w={4} h={4} />\n                    </Button>\n                </HStack>\n                {/* Continue button: always 6 cols (full width) */}\n                <Button\n                    variant=\"primary\"\n                    colorScheme=\"primary\"\n                    width=\"100%\"\n                    onClick={goToMeasurement}\n                    isDisabled={!canMeasure}\n                    data-auto=\"btnRingSizerBaselineContinue\"\n                >\n                    {intl.formatMessage({\n                        defaultMessage: 'Continue',\n                        id: 'ring_sizer.button.calibration_step'\n                    })}\n                </Button>\n            </VStack>\n        </Box>\n    )\n\n    return (\n        <>\n            <FullDrawerSheet\n                backgroundColor=\"white\"\n                isOpen={isRingSizerDrawerOpen && isBaselineDrawerOpen}\n                onClose={baselineClose}\n                handleOnBack={baselineBack}\n                isNestedDrawer={Boolean(handleDrawerBack)}\n                virtualPagePath=\"size-guide\"\n                skipTracking={enableTrackingFix}\n                bodyStyles={{paddingTop: '2'}}\n                bodyContent={\n                    <Box\n                        as=\"section\"\n                        aria-label=\"Ring sizer base line content\"\n                        data-auto=\"ringSizerBaselineSection\"\n                    >\n                        <Box>\n                            <Text textStyle=\"bodyMd\" pb=\"2\" data-auto=\"ringSizerCalibrationTitle\">\n                                {intl.formatMessage({\n                                    defaultMessage: 'Calibrate your screen',\n                                    id: 'ring_sizer.header.calibration_step'\n                                })}\n                            </Text>\n                            <Text\n                                id={instructionId}\n                                textStyle=\"bodySm\"\n                                color=\"black3a\"\n                                data-auto=\"ringSizerBaselineInstructions\"\n                            >\n                                {intl.formatMessage({\n                                    defaultMessage:\n                                        'Lay your phone flat. Place a credit card on the screen, and adjust size until no gold is showing and only the dark outline is visible.',\n                                    id: 'ring_sizer.description.calibration_step'\n                                })}\n                            </Text>\n                        </Box>\n\n                        <Box\n                            minHeight={`${CARD_CONTAINER_MIN_HEIGHT}px`}\n                            height={useInlineFooter ? 'auto' : CARD_HEIGHT_MAX + 30}\n                            {...RingSizerStyles.creditCardOuterContainer}\n                        >\n                            <Box {...RingSizerStyles.creditCardInnerContainer}>\n                                <Box\n                                    data-testid=\"rs-card-container\"\n                                    data-auto=\"ringSizerCardContainer\"\n                                    {...RingSizerStyles.creditCardContainer}\n                                    height={cardHeight + 'px'}\n                                    width={`${cardHeight * 1.586}px`}\n                                    marginLeft={{\n                                        base: `calc(100vw - ${cardHeight * 1.586}px - 90px)`,\n                                        md: `calc(100vw - ${cardHeight * 1.586}px - 200px)`\n                                    }}\n                                >\n                                    <CreditCardSVG height={cardHeight} />\n                                </Box>\n                            </Box>\n                        </Box>\n\n                        {/* Inline footer when viewport is too short */}\n                        {useInlineFooter && renderFooterControls(true)}\n                    </Box>\n                }\n                footerContent={useInlineFooter ? null : renderFooterControls(false)}\n                footerStyles={{borderTop: 'none'}}\n                footerHeight={useInlineFooter ? undefined : '45'}\n            />\n\n            {isRingSizerMeasurementDrawerOpen && (\n                <RingSizerMeasurementDrawer\n                    isRingSizerMeasurementDrawerOpen={isRingSizerMeasurementDrawerOpen}\n                    handleDrawerClose={measurementClose}\n                    handleDrawerBack={measurementBack}\n                    cardHeightPxMm={pxPerMm}\n                    ringSizerTable={ringSizerTable}\n                    selectedRegionalSize={selectedRegionalSize}\n                    handleChangeRegionalSize={handleChangeRegionalSize}\n                    regionalSizeOptions={regionalSizeOptions}\n                    onComplete={measurementComplete}\n                    availableSizeNames={availableSizeNames}\n                />\n            )}\n        </>\n    )\n}\n\nRingSizerDrawer.propTypes = {\n    isRingSizerDrawerOpen: PropTypes.bool,\n    handleDrawerClose: PropTypes.func,\n    handleDrawerBack: PropTypes.func,\n    sizeTable: PropTypes.object,\n    selectedRegionalSize: PropTypes.any,\n    initialSelectedRegionalSize: PropTypes.any,\n    handleChangeRegionalSize: PropTypes.func,\n    onComplete: PropTypes.func,\n    availableSizeNames: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))\n}\n\nexport default RingSizerDrawer\n","import React, {useEffect, useState, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport SizeGuideContent from './partials/size-guide-content'\nimport SizeGuideTable from './partials/size-guide-table'\nimport {\n    RingSizerProvider,\n    useRingSizerContext\n} from 'pandora-shared-app/overrides/app/contexts/ring-sizer'\nimport {\n    FingerSizerProvider,\n    useFingerSizerContext\n} from 'pandora-shared-app/overrides/app/contexts/finger-sizer'\nimport RingSizerDrawer from '../ring-sizer'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {\n    Box,\n    Button,\n    Skeleton,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {usePdpStaticContent} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content'\nimport {FingerSizerFlow} from 'pandora-shared-app/overrides/app/components/finger-sizer-flow'\nimport {SizeChartEntry} from 'pandora-shared-app/overrides/app/components/size-chart-entry'\n\nconst isFingerSizerField = (field) => field?.type?.toLowerCase() === 'fingersizermodule'\nconst isSizeChartField = (field) => field?.type?.toLowerCase() === 'sizechartmodule'\n\nconst FingerSizerContent = ({type, digitalSizeGroup, sizeTableData}) => {\n    const normalizedDigitalSizeGroup = digitalSizeGroup?.toLowerCase()\n    const assetKey =\n        type === 'bracelet' && normalizedDigitalSizeGroup\n            ? `size-guide-${normalizedDigitalSizeGroup}`\n            : `size-guide-${type}`\n\n    const {drawerBodyContent, isLoading} = usePdpStaticContent({assetKeys: [assetKey]})\n\n    const {fingerSizerModule, sizeChartModule} = useMemo(() => {\n        let fingerSizer = null\n        let sizeChart = null\n        for (const item of drawerBodyContent || []) {\n            for (const field of item.contentFields || []) {\n                if (!fingerSizer && isFingerSizerField(field)) {\n                    fingerSizer = field.fingerSizerModule\n                }\n                if (!sizeChart && isSizeChartField(field)) {\n                    sizeChart = field.sizeChartModule\n                }\n            }\n        }\n        return {fingerSizerModule: fingerSizer, sizeChartModule: sizeChart}\n    }, [drawerBodyContent])\n\n    return (\n        <Box data-auto=\"fingerSizerContentSection\">\n            <Skeleton isLoaded={!isLoading}>\n                {fingerSizerModule && <FingerSizerFlow fingerSizerModule={fingerSizerModule} />}\n                {sizeChartModule ? (\n                    <Box data-auto=\"fingerSizerSizeChartWrapper\">\n                        <SizeChartEntry sizeChartModule={sizeChartModule}>\n                            {sizeTableData && (\n                                <SizeGuideTable type={type} sizeTableData={sizeTableData} />\n                            )}\n                        </SizeChartEntry>\n                    </Box>\n                ) : (\n                    sizeTableData && <SizeGuideTable type={type} sizeTableData={sizeTableData} />\n                )}\n            </Skeleton>\n        </Box>\n    )\n}\n\nFingerSizerContent.propTypes = {\n    type: PropTypes.string,\n    digitalSizeGroup: PropTypes.string,\n    sizeTableData: PropTypes.object\n}\n\nconst SizeGuideDrawer = ({\n    isSizeGuideDrawerOpen,\n    handleDrawerClose,\n    handleDrawerBack,\n    finalFocusRef,\n    sizeTableData,\n    sizeTableFull,\n    type,\n    selectedRegionalSize,\n    onRingSizerComplete,\n    availableSizeNames,\n    digitalSizeGroup,\n    autoOpenRingSizer,\n    onAutoOpenConsumed\n}) => {\n    const intl = useIntl()\n    const {isRingSizerOpen, closeRingSizer, isRingSizerEnabled, openRingSizer} =\n        useRingSizerContext()\n    const {isFingerSizerOpen, closeFingerSizer} = useFingerSizerContext()\n    const enableTrackingFix = useVariant(LD_KEYS.enablePdpRingSizerTrackingFix, false)\n    const enableRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const isMobile = useBreakpointValue({base: true, xl: false})\n\n    const [localRegionalSize, setLocalRegionalSize] = useState(selectedRegionalSize)\n\n    useEffect(() => {\n        if (isSizeGuideDrawerOpen) setLocalRegionalSize(selectedRegionalSize)\n    }, [isSizeGuideDrawerOpen, selectedRegionalSize])\n\n    useEffect(() => {\n        if (autoOpenRingSizer && isRingSizerEnabled) {\n            openRingSizer()\n            onAutoOpenConsumed?.()\n        }\n    }, [autoOpenRingSizer, isRingSizerEnabled, openRingSizer, onAutoOpenConsumed])\n\n    return (\n        <>\n            <FullDrawerSheet\n                sheetType={TEALIUM_CONSTANTS.DRAWER.TYPES.SIZE_GUID}\n                virtualPagePath=\"size-guide\"\n                isOpen={\n                    isSizeGuideDrawerOpen &&\n                    !isRingSizerOpen &&\n                    !(\n                        enableRingSizerUiEnhancements &&\n                        isMobile &&\n                        type === 'ring' &&\n                        isFingerSizerOpen\n                    )\n                }\n                retainTracking={\n                    enableTrackingFix &&\n                    (isRingSizerOpen ||\n                        (enableRingSizerUiEnhancements &&\n                            isMobile &&\n                            type === 'ring' &&\n                            isFingerSizerOpen))\n                }\n                onClose={handleDrawerClose}\n                handleOnBack={handleDrawerBack}\n                headerText={intl.formatMessage({\n                    defaultMessage: 'Size guide',\n                    id: 'product_view.heading.size_guide'\n                })}\n                isNestedDrawer={!!handleDrawerBack}\n                bodyContent={\n                    <SizeGuideContent\n                        type={type}\n                        digitalSizeGroup={digitalSizeGroup}\n                        enableRingSizerUiEnhancements={enableRingSizerUiEnhancements}\n                        sizeTableData={sizeTableData}\n                        handleDrawerBack={handleDrawerBack}\n                    />\n                }\n                finalFocusRef={finalFocusRef}\n            />\n            {isRingSizerEnabled && isRingSizerOpen && (\n                <RingSizerDrawer\n                    isRingSizerDrawerOpen={isRingSizerOpen}\n                    handleDrawerBack={closeRingSizer}\n                    handleDrawerClose={handleDrawerClose}\n                    initialSelectedRegionalSize={localRegionalSize}\n                    sizeTable={sizeTableFull}\n                    onComplete={(result) => {\n                        closeRingSizer()\n                        onRingSizerComplete?.(result)\n                    }}\n                    availableSizeNames={availableSizeNames}\n                />\n            )}\n            {enableRingSizerUiEnhancements && isMobile && type === 'ring' && isFingerSizerOpen && (\n                <FullDrawerSheet\n                    sheetType={TEALIUM_CONSTANTS.DRAWER.TYPES.SIZE_GUID}\n                    virtualPagePath=\"finger-sizer\"\n                    isOpen={isFingerSizerOpen}\n                    onClose={handleDrawerClose}\n                    handleOnBack={closeFingerSizer}\n                    isNestedDrawer={true}\n                    bodyContent={\n                        <>\n                            <FingerSizerContent\n                                type={type}\n                                digitalSizeGroup={digitalSizeGroup}\n                                sizeTableData={sizeTableData}\n                            />\n                            <Button\n                                width=\"100%\"\n                                variant=\"primary\"\n                                mt={8}\n                                data-auto=\"chooseSizeButton\"\n                                onClick={handleDrawerBack}\n                            >\n                                {intl.formatMessage({\n                                    defaultMessage: 'Choose a size',\n                                    id: 'product_view.heading.choose_size'\n                                })}\n                            </Button>\n                        </>\n                    }\n                    finalFocusRef={finalFocusRef}\n                />\n            )}\n        </>\n    )\n}\n\nSizeGuideDrawer.propTypes = {\n    isSizeGuideDrawerOpen: PropTypes.bool,\n    handleDrawerClose: PropTypes.func,\n    handleDrawerBack: PropTypes.func,\n    sizeTableData: PropTypes.object,\n    sizeTableFull: PropTypes.object,\n    type: PropTypes.oneOf(['ring', 'necklace', 'bracelet']),\n    finalFocusRef: PropTypes.shape({\n        current: PropTypes.any\n    }),\n    selectedRegionalSize: PropTypes.any,\n    onRingSizerComplete: PropTypes.func,\n    availableSizeNames: PropTypes.arrayOf(\n        PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n    ),\n    digitalSizeGroup: PropTypes.string,\n    autoOpenRingSizer: PropTypes.bool,\n    onAutoOpenConsumed: PropTypes.func\n}\n\nconst SizeGuideDrawerWithProvider = (props) => (\n    <RingSizerProvider>\n        <FingerSizerProvider>\n            <SizeGuideDrawer {...props} />\n        </FingerSizerProvider>\n    </RingSizerProvider>\n)\n\nSizeGuideDrawerWithProvider.propTypes = SizeGuideDrawer.propTypes\n\nexport default SizeGuideDrawerWithProvider\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n    Link as ChakraLink,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\n\nimport {Link as SPALink, NavLink as NavSPALink} from 'react-router-dom'\n\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nimport {SIZES, COLOR_SCHEMES, DIRECTIONS, VARIANTS} from './constants'\n\nconst Link = React.forwardRef(\n    (\n        {\n            href,\n            to,\n            useNavLink = false,\n            isAbsolute,\n            size,\n            variant,\n            colorScheme,\n            color,\n            direction,\n            version = 'old',\n            noHref = false,\n            ...props\n        },\n        ref\n    ) => {\n        const _href = to || href\n        const {buildUrl} = useMultiSite()\n        const updatedHref = buildUrl(_href)\n\n        const styles = useMultiStyleConfig('NewLink', {\n            size,\n            variant,\n            colorScheme,\n            color,\n            direction\n        })\n\n        if (isAbsolute) {\n            return (\n                <ChakraLink\n                    as=\"a\"\n                    {...props}\n                    href={noHref ? undefined : _href}\n                    ref={ref}\n                    sx={version === 'new' && styles?.container}\n                />\n            )\n        }\n\n        return (\n            <ChakraLink\n                as={useNavLink ? NavSPALink : SPALink}\n                {...(useNavLink && {exact: true})}\n                {...props}\n                to={updatedHref}\n                ref={ref}\n                sx={version === 'new' && styles?.container}\n            />\n        )\n    }\n)\n\nLink.propTypes = {\n    href: PropTypes.string,\n    to: PropTypes.string,\n    useNavLink: PropTypes.bool,\n    isAbsolute: PropTypes.bool,\n\n    size: PropTypes.oneOf(Object.values(SIZES)),\n    variant: PropTypes.oneOf(Object.values(VARIANTS)),\n    colorScheme: PropTypes.oneOf(Object.values(COLOR_SCHEMES)),\n    color: PropTypes.string,\n    direction: PropTypes.oneOf(Object.values(DIRECTIONS)),\n    version: PropTypes.oneOf(['old', 'new']),\n    noHref: PropTypes.bool\n}\n\nLink.displayName = 'Link'\n\nexport default React.memo(Link)\n","/**\n * @file ld-keys.js\n *\n * This file exports preference keys to be used across the application.\n * `LD_KEYS` - It represents a key used for identifying a specific launch darkly flag ID.\n *\n * These naming conventions help in understanding the role and usage of each export at a glance:\n * - `LD_KEYS` is a constant value that should not change, hence the UPPER_SNAKE_CASE.\n *\n * @exports LD_KEYS - Constant query key for feature flag ID.\n */\nexport const LD_KEYS = {\n    defaultSearchSourceFlag: 'pwa-search-engine',\n    kcpFeatureTileSummerSaleMedia: 'enable-content-kcp-feature-tile-summer-sale-theme',\n    kcpEntryPointsBlueSaleTheme: 'enable-content-kcp-entry-points-blue-sale-theme',\n    enableContentCommercePreviewToolbar: 'enable-content-commerce-preview-toolbar',\n    // INS-5089 - Shop The Look product grid served by the DOL Product API. Off = the legacy\n    // ProductGrid/ProductFetcher path; turning it off is the kill switch, no deploy needed.\n    enableContentShopTheLookDolProductGridRefactored:\n        'enable-content-shop-the-look-dol-product-grid-refactored',\n    // INS-5195 - Add to Bag CTA on Shop The Look product tiles. Additive with the per-product\n    // buy-from-tile capability: the CTA needs both this flag and that capability.\n    enableContentShopTheLookAddToBag: 'enable-content-shop-the-look-add-to-bag'\n}\n","/*\n * Copyright (c) 2025, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {version} from 'react'\n\n// In React 19.0.0 or newer, we must use a camelCase prop to avoid \"Warning: Invalid DOM property\",\n// while in React 18 or older, we must use a lowercase prop to avoid it.\n// See https://github.com/facebook/react/pull/25927\nconst [majorStr] = version.split('.', 1)\nconst major = parseInt(majorStr, 10)\nconst fetchPriorityPropName = major > 18 ? 'fetchPriority' : 'fetchpriority'\n\n/**\n * Even on older React versions that don't support the `fetchPriority` property natively,\n * this method guarantees that a `fetchPriority` property gets returned to the consumer.\n * That property then simply isn't enumerable, but due to its availability simplifies\n * code that operates on top of this property.\n * @param {Object} obj\n * @param {string} [priority]\n * @returns {Object}\n */\nfunction ensureFetchPriority(obj, priority) {\n    if (priority) {\n        const value = ['high', 'low'].includes(priority) ? priority : 'auto'\n        obj[fetchPriorityPropName] = value\n        if (major <= 18) {\n            Object.defineProperty(obj, 'fetchPriority', {value, enumerable: false})\n        }\n    }\n    return obj\n}\n\n/**\n * Utility to return optimized image properties based on **explicitly** provided\n * `loading` strategies.\n * @param {{[key: string]: any}} props Image properties\n * @param {('lazy' | 'eager')} [props.loading] Loading strategy\n * @param {('high' | 'low' | 'auto')} [props.fetchPriority] Fetch priority\n * @param {('sync' | 'async' | 'auto')} [props.decoding] Decoding strategy\n * @return {Object} Optimized properties for your image component\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/loading}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchPriority}\n */\nexport function getImageAttributes(props) {\n    const {fetchPriority, ...imageProps} = props\n    const priority = fetchPriority?.toLowerCase?.()\n    const loadingStrategy = props?.loading?.toLowerCase?.()\n    if (loadingStrategy === 'lazy' && !['sync', 'auto'].includes(props.decoding?.toLowerCase?.())) {\n        return ensureFetchPriority(\n            {\n                ...imageProps,\n                decoding: 'async'\n            },\n            priority\n        )\n    } else if (loadingStrategy === 'eager') {\n        return ensureFetchPriority(imageProps, priority || 'high')\n    }\n    return ensureFetchPriority(imageProps, priority)\n}\n\n/**\n * Utility to return the attributes for a `<link preload>` element that's related to\n * an `<img>` element with the given `props`.\n * @param {{[key: string]: any}} props Image properties\n * @param {('lazy' | 'eager')} [props.loading] Loading strategy\n * @param {('high' | 'low' | 'auto')} [props.fetchPriority] Fetch priority\n * @param {string} [props.sizes] Layout width of the image\n * @param {string} [props.srcSet] One or more image candidate strings, separated using commas\n * @param {string} [props.media] Media query for responsive preloading\n * @param {string} [props.type] MIME type of the resource the element points to\n * @returns {({rel: string, as: string, href: string, fetchPriority?: ('high' | 'low' | 'auto'), media?: string, type?: string, imageSizes?: string, imageSrcSet?: string} | undefined)}\n */\nexport function getImageLinkAttributes(props) {\n    const loadingStrategy = props?.loading?.toLowerCase?.()\n    const fetchPriority = props?.fetchPriority?.toLowerCase?.()\n    return fetchPriority === 'high' && (!loadingStrategy || loadingStrategy === 'eager')\n        ? {\n              rel: 'preload',\n              as: 'image',\n              href: props.src,\n              fetchPriority,\n              ...(props.type ? {type: props.type} : {}),\n              ...(props.media ? {media: props.media} : {}),\n              ...(props.sizes ? {imageSizes: props.sizes} : {}),\n              ...(props.srcSet ? {imageSrcSet: props.srcSet} : {})\n          }\n        : undefined\n}\n","/*\n * Copyright (c) 2024, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport createLogger from '@salesforce/pwa-kit-runtime/utils/logger-factory'\n\nconst logger = Object.freeze(createLogger({packageName: 'retail-react-app'}))\nexport default logger\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-down\",\n  \"use\": \"chevron-down-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-down\\\">\\n<path d=\\\"M12.7201 15.7802C12.5796 15.9209 12.3889 16 12.1901 16.0002H11.8101C11.6117 15.9979 11.4218 15.919 11.2801 15.7802L6.1501 10.6402C6.05544 10.5463 6.0022 10.4185 6.0022 10.2852C6.0022 10.1518 6.05544 10.024 6.1501 9.93016L6.8601 9.22016C6.95226 9.1261 7.07841 9.07309 7.2101 9.07309C7.34179 9.07309 7.46793 9.1261 7.5601 9.22016L12.0001 13.6702L16.4401 9.22016C16.534 9.12551 16.6618 9.07227 16.7951 9.07227C16.9284 9.07227 17.0562 9.12551 17.1501 9.22016L17.8501 9.93016C17.9448 10.024 17.998 10.1518 17.998 10.2852C17.998 10.4185 17.9448 10.5463 17.8501 10.6402L12.7201 15.7802Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {AspectRatio, Box, Text} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nimport {Media} from 'pandora-shared-app/overrides/app/components/media'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\n// Types\nimport {ContentMediaType} from 'pandora-shared-app/overrides/app/utils/types'\n\nconst ASPECT_RATIO = '3:4'\nconst ASPECT_RATIO_VALUE = 3 / 4\n\nconst mediaConfig = {\n    aspectRatio: ASPECT_RATIO,\n    dataAuto: 'editorialLink'\n}\n\nconst style = {\n    maxWidth: '400px',\n    margin: 'auto'\n}\n\nexport const EditorialLink = ({data, mediaWidth, isFirstPanel = false, ...rest}) => {\n    const {image, link, _meta} = data\n\n    const mediaData = {\n        mediaType: 'image',\n        isVideo: false,\n        img: image?.img,\n        copyright: image?.copyright,\n        imageAltText: image?.imageAltText || link?.text\n    }\n\n    if (mediaWidth) {\n        mediaConfig.qWidth = mediaWidth\n    }\n\n    return (\n        <ContentLink linkData={link} contentMeta={_meta} rootStyles={style} {...rest}>\n            <Box data-testid=\"image-and-text\">\n                <AspectRatio ratio={ASPECT_RATIO_VALUE}>\n                    <Media\n                        media={mediaData}\n                        mediaConfig={mediaConfig}\n                        isActive\n                        isFirstPanel={isFirstPanel}\n                    />\n                </AspectRatio>\n\n                <Box mt={4}>\n                    <Text textStyle=\"bodySm\">{link?.text}</Text>\n                </Box>\n            </Box>\n        </ContentLink>\n    )\n}\n\nEditorialLink.propTypes = {\n    data: PropTypes.shape({\n        _meta: PropTypes.object,\n        image: ContentMediaType,\n        link: PropTypes.shape({\n            type: PropTypes.string,\n            value: PropTypes.string,\n            text: PropTypes.string,\n            target: PropTypes.bool\n        })\n    }).isRequired,\n    mediaWidth: PropTypes.number,\n    isFirstPanel: PropTypes.bool\n}\n\nEditorialLink.displayName = 'EditorialLink'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Image} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {getImageUrl} from 'pandora-shared-app/overrides/app/utils/media'\n\nconst ASPECT_RATIO = {base: '326/200', xl: '476/244'}\n\nconst IMAGE_CONTAINER_PROPS = {\n    sx: {aspectRatio: ASPECT_RATIO},\n    overflow: 'hidden'\n}\n\nconst COVER_IMAGE_PROPS = {\n    width: '100%',\n    height: '100%',\n    objectFit: 'cover'\n}\n\nexport const getImageSrc = (content) => {\n    if (!content?.image) return null\n    const {defaultHost, endpoint, name} = content.image\n    return getImageUrl({defaultHost, endpoint, name})\n}\n\nexport const StaticContentImage = ({src, alt, enableRingSizerUiEnhancements, type, ...rest}) => {\n    if (!src) return null\n\n    const isRingEnhanced = enableRingSizerUiEnhancements && type === 'ring'\n\n    if (isRingEnhanced) {\n        return (\n            <Box {...IMAGE_CONTAINER_PROPS} {...rest}>\n                <Image {...COVER_IMAGE_PROPS} src={src} alt={alt} />\n            </Box>\n        )\n    }\n\n    return <Image src={src} alt={alt} {...rest} />\n}\n\nStaticContentImage.propTypes = {\n    src: PropTypes.string,\n    alt: PropTypes.string,\n    enableRingSizerUiEnhancements: PropTypes.bool,\n    type: PropTypes.string\n}\n\nStaticContentImage.displayName = 'StaticContentImage'\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_bridgerton_black\",\n  \"use\": \"pandora_bridgerton_black-usage\",\n  \"viewBox\": \"0 0 120 26\",\n  \"content\": \"<symbol viewBox=\\\"0 0 120 26\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"pandora_bridgerton_black\\\">\\n<g clip-path=\\\"url(#pandora_bridgerton_black_clip0_46276_223652)\\\">\\n<path d=\\\"M1.16464 13.7071H2.51646C2.89081 13.7071 3.14038 13.6428 3.34835 13.5142C3.68111 13.3214 3.86828 12.9357 3.86828 12.4857C3.86828 12.0357 3.68111 11.6714 3.34835 11.4571C3.14038 11.3285 2.89081 11.2642 2.51646 11.2642H1.16464V13.6857V13.7071ZM0 17.1571V10.1714H2.55806C3.0156 10.1714 3.43154 10.2571 3.7643 10.3857C4.57539 10.7714 5.09532 11.5642 5.09532 12.5071C5.09532 13.45 4.57539 14.2428 3.7643 14.6285C3.43154 14.7785 3.0156 14.8428 2.55806 14.8428H1.16464V17.1785H0V17.1571Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M7.36229 13.3643L6.90475 14.6286H9.15085L8.69331 13.3643C8.44374 12.6786 8.04859 11.6286 8.04859 11.6286H8.0278C8.0278 11.6286 7.63265 12.6786 7.38308 13.3643M10.0659 17.1572L9.54599 15.7429H6.468L5.94807 17.1572H4.67944L7.40388 10.15H8.65171L11.3761 17.1572H10.0659Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M17.0746 17.1571L14.475 13.5357L13.4559 12.1428V14.0071V17.1571H12.2913V10.1714H13.4767L16.0764 13.8142L17.0746 15.2071V13.3214V10.1714H18.2601V17.1571H17.0746Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M20.8805 16.0214H21.8995C22.6482 16.0214 23.2098 15.8928 23.6257 15.5928C24.208 15.1857 24.5408 14.4785 24.52 13.6642C24.52 12.85 24.208 12.1428 23.6257 11.7357C23.2306 11.4571 22.6482 11.3071 21.8995 11.3071H20.8805V16V16.0214ZM19.7158 17.1571V10.1714H21.9619C22.981 10.1714 23.8545 10.4285 24.4784 10.9C25.3103 11.5214 25.7678 12.5071 25.7678 13.6642C25.7678 14.8214 25.3103 15.8071 24.4784 16.4285C23.8545 16.9 22.981 17.1571 21.9619 17.1571H19.7158Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M30.156 11.1571C28.7834 11.1571 27.7851 12.2071 27.7851 13.6643C27.7851 15.1214 28.7834 16.1714 30.156 16.1714C31.5286 16.1714 32.5269 15.1214 32.5269 13.6643C32.5269 12.2071 31.5286 11.1571 30.156 11.1571ZM30.156 17.3286C28.0971 17.3286 26.5581 15.7643 26.5581 13.6643C26.5581 11.5643 28.0971 10 30.156 10C32.215 10 33.7539 11.5643 33.7539 13.6643C33.7539 15.7643 32.215 17.3286 30.156 17.3286Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M35.9583 13.7071H37.4765C37.8509 13.7071 38.1005 13.6428 38.3084 13.5142C38.6412 13.3214 38.8284 12.9357 38.8284 12.4857C38.8284 12.0357 38.6412 11.6714 38.3084 11.4571C38.1005 11.3285 37.8509 11.2642 37.4765 11.2642H35.9583V13.6857V13.7071ZM38.8284 17.1571L37.5389 14.8214H35.9583V17.1571H34.7937V10.1714H37.5181C37.9757 10.1714 38.3916 10.2571 38.7244 10.3857C39.5355 10.7714 40.0554 11.5642 40.0554 12.5071C40.0554 13.45 39.5771 14.1571 38.7868 14.5428H38.7452L40.2218 17.1785H38.8492L38.8284 17.1571Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M43.3207 13.3643L42.8632 14.6286H45.1093L44.6518 13.3643C44.4022 12.6786 44.007 11.6286 44.007 11.6286H43.9862C43.9862 11.6286 43.5911 12.6786 43.3415 13.3643M46.0452 17.1572L45.5252 15.7429H42.4473L41.9273 17.1572H40.6587L43.3831 10.15H44.631L47.3554 17.1572H46.0452Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M30.3846 9.4643C30.3846 9.3143 30.2598 9.20715 30.1351 9.20715C30.0103 9.20715 29.8855 9.3143 29.8855 9.4643C29.8855 9.6143 30.0103 9.72144 30.1351 9.72144C30.2598 9.72144 30.3846 9.6143 30.3846 9.4643Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M30.1145 7.38574L29.9065 8.9286H30.364L30.1977 7.38574H30.1145Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M31.0919 9.4643C31.0919 9.3143 30.9671 9.20715 30.8423 9.20715C30.7176 9.20715 30.5928 9.3143 30.5928 9.4643C30.5928 9.6143 30.7176 9.72144 30.8423 9.72144C30.9671 9.72144 31.0919 9.6143 31.0919 9.4643Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M31.3207 7.38574L30.6968 8.9286H31.1543L31.4039 7.38574H31.3207Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M29.1992 9.4643C29.1992 9.6143 29.324 9.72144 29.4488 9.72144C29.5736 9.72144 29.6984 9.6143 29.6984 9.4643C29.6984 9.3143 29.5736 9.20715 29.4488 9.20715C29.324 9.20715 29.1992 9.3143 29.1992 9.4643Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M28.8665 7.38574L29.1368 8.9286H29.5944L28.9496 7.38574H28.8665Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M118.066 10.2143V14.35L114.239 10.0857V17.1143H115.362V12.9786L119.168 17.2643V10.2143H118.066Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M111.286 10.5571C110.766 10.2357 110.184 10.0857 109.56 10.0857C108.936 10.0857 108.645 10.1714 108.229 10.3643C107.813 10.5571 107.438 10.8143 107.126 11.1357C106.814 11.4571 106.565 11.8428 106.399 12.2928C106.211 12.7428 106.128 13.1928 106.128 13.6857C106.128 14.1786 106.274 14.9285 106.586 15.4857C106.898 16.0428 107.314 16.4714 107.834 16.7928C108.353 17.1143 108.936 17.2857 109.56 17.2857C110.184 17.2857 110.745 17.1143 111.286 16.8143C111.806 16.4928 112.243 16.0643 112.534 15.5071C112.846 14.95 112.991 14.35 112.991 13.7071C112.991 13.0643 112.825 12.4428 112.534 11.9071C112.243 11.3714 111.806 10.9214 111.286 10.6V10.5571ZM111.203 15.4428C110.745 15.9357 110.184 16.1928 109.539 16.1928C108.894 16.1928 108.333 15.9357 107.875 15.4428C107.418 14.95 107.189 14.35 107.189 13.6643C107.189 12.9786 107.23 13.1286 107.314 12.8714C107.397 12.6143 107.501 12.3786 107.646 12.1857C107.792 11.9714 107.958 11.8 108.146 11.65C108.333 11.5 108.561 11.3714 108.79 11.2857C109.04 11.2 109.269 11.1571 109.518 11.1571C110.163 11.1571 110.724 11.3928 111.182 11.9071C111.639 12.4 111.868 13 111.868 13.6857C111.868 14.3714 111.639 14.9714 111.182 15.4643L111.203 15.4428Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M100.825 11.2642H102.738V17.1571H103.841V11.2642H105.733V10.1714H100.825V11.2642Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M99.2859 14.1785C99.7019 13.7285 99.9307 13.1714 99.9307 12.5714C99.9307 11.9714 99.7435 11.4571 99.3483 11.0071C99.2444 10.9 99.1612 10.8142 99.0572 10.7285C98.9532 10.6428 98.8492 10.5571 98.7244 10.4928C98.5996 10.4285 98.4749 10.3642 98.3501 10.3214C98.2253 10.2785 98.0797 10.2357 97.9549 10.2142C97.8301 10.1928 97.6846 10.1714 97.539 10.1714H95.3345V17.1571H96.4367V15.0357H97.3102C97.4558 15.0357 97.6014 15.0357 97.7262 14.9928L98.87 17.1571H100.118L98.766 14.6071C98.974 14.4785 99.1612 14.3285 99.3275 14.1571L99.2859 14.1785ZM97.2686 13.9642H96.3951V11.2642H97.4974C97.8925 11.2642 98.2253 11.4142 98.4749 11.7142C98.6828 11.95 98.7868 12.25 98.7868 12.5714C98.7868 12.8928 98.6828 13.2142 98.4541 13.45C98.1213 13.7928 97.7262 13.9642 97.2686 13.9642Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M89.948 17.1571H93.8371V16.0642H91.0502V13.6H93.8371V12.5285H91.0502V11.2642H93.8371V10.1714H89.948V17.1571Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M86.8075 14.2H87.3691V15.9357C87.0363 16.0857 86.7243 16.1714 86.3708 16.1714C85.7261 16.1714 85.1646 15.9143 84.707 15.4214C84.2495 14.9286 84.0207 14.3286 84.0207 13.6428C84.0207 12.9571 84.1247 12.7643 84.3327 12.3786C84.5406 11.9928 84.8318 11.6928 85.1854 11.4571C85.5389 11.2428 85.9341 11.1143 86.35 11.1143C86.7659 11.1143 87.2027 11.2428 87.577 11.5L88.201 10.6C87.6394 10.2357 87.0155 10.0428 86.35 10.0428C85.6845 10.0428 85.1646 10.2143 84.6238 10.5357C84.1039 10.8571 83.688 11.2857 83.376 11.8428C83.064 12.4 82.9185 13 82.9185 13.6428C82.9185 14.2857 83.064 14.8857 83.376 15.4428C83.688 16 84.1039 16.4286 84.6238 16.75C85.1438 17.0714 85.7261 17.2428 86.35 17.2428C86.9739 17.2428 87.5978 17.0714 88.1802 16.7071L88.4297 16.5571V13.1286C88.4505 13.1286 86.7867 13.1286 86.7867 13.1286V14.2H86.8075Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M80.0901 10.6428C79.5494 10.3214 78.9463 10.1714 78.3016 10.1714H76.825V17.1571H78.3016C78.9463 17.1571 79.5494 17.0071 80.0901 16.7071C80.6308 16.4071 81.0676 15.9785 81.3795 15.4642C81.6915 14.9285 81.8579 14.35 81.8579 13.7071C81.8579 13.0642 81.6915 12.4857 81.3795 11.95C81.0676 11.4142 80.6308 10.9857 80.0693 10.6642L80.0901 10.6428ZM80.0693 15.3785C79.591 15.8285 79.0087 16.0642 78.3224 16.0642H77.948V11.2428H78.3224C79.0087 11.2428 79.591 11.4785 80.0693 11.95C80.5477 12.4214 80.7972 13 80.7972 13.6642C80.7972 14.3285 80.5685 14.8857 80.0901 15.3571L80.0693 15.3785Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M75.3691 10.1714H74.2668V17.1571H75.3691V10.1714Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M72.0001 14.1785C72.416 13.7285 72.6448 13.1714 72.6448 12.5714C72.6448 11.9714 72.4576 11.4571 72.0624 11.0071C71.9585 10.9 71.8753 10.8142 71.7713 10.7285C71.6673 10.6428 71.5633 10.5571 71.4385 10.4928C71.3137 10.4285 71.189 10.3642 71.0642 10.3214C70.9394 10.2785 70.7938 10.2357 70.669 10.2142C70.5442 10.1928 70.3987 10.1714 70.2531 10.1714H68.0486V17.1571H69.1508V15.0357H70.0243C70.1699 15.0357 70.2947 15.0357 70.4403 14.9928L71.5841 17.1571H72.8319L71.4801 14.6071C71.6881 14.4785 71.8753 14.3285 72.0416 14.1571L72.0001 14.1785ZM70.0035 13.9642H69.13V11.2642H70.2323C70.6274 11.2642 70.9602 11.4142 71.2098 11.7142C71.4177 11.95 71.5217 12.25 71.5217 12.5714C71.5217 12.8928 71.4177 13.2142 71.189 13.45C70.8562 13.7928 70.4611 13.9642 70.0035 13.9642Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M65.7609 12.8714C65.7609 12.8714 65.7816 12.85 65.8024 12.8071C65.9896 12.5285 66.0936 12.2071 66.0936 11.8642C66.0936 11.5214 66.0312 11.3714 65.9272 11.1357C65.8648 10.9857 65.7817 10.8357 65.6569 10.7285C65.3033 10.3642 64.8874 10.1714 64.3674 10.1714H62.6829V17.1571H64.6794C65.0122 17.1571 65.3241 17.0928 65.6361 16.9428C65.948 16.7928 66.1976 16.6 66.4056 16.3428C66.7799 15.9142 66.9671 15.4428 66.9671 14.8642C66.9671 14.2857 66.7591 13.7714 66.3432 13.3214C66.156 13.1285 65.9688 12.9785 65.7401 12.85L65.7609 12.8714ZM63.8059 11.2642H64.3882C64.5754 11.2642 64.7418 11.3285 64.8666 11.4785L64.8874 11.5214C64.8874 11.5214 64.8874 11.5428 64.9082 11.5642C64.9082 11.5642 64.9082 11.5857 64.929 11.6071C64.9706 11.7142 64.9914 11.8214 64.9914 11.9071C64.9914 11.9928 64.9498 12.1428 64.8874 12.25C64.7418 12.4428 64.5338 12.55 64.2427 12.55H63.7851V11.2642H63.8059ZM65.5945 15.6785C65.3657 15.9357 65.0537 16.0857 64.7002 16.0857H63.8059V13.6428H64.4714C64.9082 13.6428 65.2825 13.7928 65.5529 14.1142C65.7609 14.35 65.8648 14.6071 65.8648 14.9071C65.8648 15.2071 65.7608 15.4642 65.5737 15.6785H65.5945Z\\\" fill=\\\"black\\\" />\\n<path d=\\\"M55.4871 8.92859H54.884H54.8632H54.572V18.4214H54.8632H55.2167H55.5079V8.92859H55.4871Z\\\" fill=\\\"black\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"pandora_bridgerton_black_clip0_46276_223652\\\">\\n<rect width=\\\"120\\\" height=\\\"12\\\" fill=\\\"white\\\" transform=\\\"translate(0 7)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2023, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useLocation} from 'react-router-dom'\n\nexport const usePDPSearchParams = (productId) => {\n    const {search} = useLocation()\n\n    const allParams = new URLSearchParams(search)\n    const productParams = new URLSearchParams(allParams.get(productId) || '')\n\n    return [allParams, productParams]\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cc-amex\",\n  \"use\": \"cc-amex-usage\",\n  \"viewBox\": \"0 0 38 22\",\n  \"content\": \"<symbol viewBox=\\\"0 0 38 22\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cc-amex\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" fill=\\\"white\\\" />\\n<path d=\\\"M10 2H28V11.7169L27.109 13.109L28 14.348V20H10V10.8399L10.5568 10.1995L10 9.58701V2Z\\\" fill=\\\"#016FD0\\\" />\\n<path d=\\\"M13.4942 14.5427V11.7167H16.4864L16.8074 12.1352L17.1391 11.7167H28V14.3478C28 14.3478 27.716 14.5399 27.3875 14.5427H21.3735L21.0116 14.0972V14.5427H19.8255V13.7823C19.8255 13.7823 19.6635 13.8884 19.3132 13.8884H18.9095V14.5427H17.1137L16.7931 14.1152L16.4676 14.5427L13.4942 14.5427ZM10 9.58676L10.6747 8.01367H11.8417L12.2246 8.89485V8.01367H13.6752L13.9031 8.65056L14.1241 8.01367H20.6357V8.33386C20.6357 8.33386 20.978 8.01367 21.5406 8.01367L23.6534 8.02107L24.0297 8.8907V8.01367H25.2436L25.5777 8.51321V8.01367H26.8028V10.8397H25.5777L25.2575 10.3385V10.8397H23.474L23.2947 10.3942H22.8152L22.6387 10.8397H21.4292C20.9452 10.8397 20.6357 10.526 20.6357 10.526V10.8397H18.8121L18.4501 10.3942V10.8397H11.6688L11.4896 10.3942H11.0116L10.8337 10.8397H10V9.58676Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M10.9135 8.36218L10.0034 10.4782H10.5959L10.7639 10.0545H11.7401L11.9071 10.4782H12.5127L11.6035 8.36218H10.9135ZM11.2502 8.85462L11.5478 9.59507H10.9518L11.2502 8.85462ZM12.5753 10.4778V8.36182L13.4173 8.36494L13.9071 9.72922L14.3851 8.36182H15.2204V10.4778H14.6913V8.91866L14.1306 10.4778H13.6667L13.1043 8.91866V10.4778H12.5753ZM15.5823 10.4778V8.36182H17.3085V8.83513H16.1169V9.19707H17.2807V9.64256H16.1169V10.0184H17.3085V10.4778H15.5823ZM17.6148 8.36218V10.4782H18.1438V9.72644H18.3665L19.0008 10.4782H19.6473L18.9512 9.69859C19.2369 9.67449 19.5315 9.42931 19.5315 9.04866C19.5315 8.60338 19.1821 8.36218 18.792 8.36218H17.6148ZM18.1438 8.83549H18.7485C18.8936 8.83549 18.9991 8.94896 18.9991 9.05822C18.9991 9.19879 18.8623 9.28096 18.7563 9.28096H18.1438V8.83549ZM20.2876 10.4778H19.7475V8.36182H20.2876V10.4778ZM21.5684 10.4778H21.4518C20.8877 10.4778 20.5452 10.0334 20.5452 9.42852C20.5452 8.8087 20.8838 8.36182 21.5962 8.36182H22.1809V8.86298H21.5748C21.2857 8.86298 21.0811 9.08866 21.0811 9.43373C21.0811 9.84353 21.315 10.0156 21.6519 10.0156H21.7911L21.5684 10.4778ZM22.7195 8.36218L21.8094 10.4782H22.4019L22.5698 10.0545H23.546L23.7131 10.4782H24.3187L23.4094 8.36218H22.7195ZM23.0562 8.85462L23.3538 9.59507H22.7578L23.0562 8.85462ZM24.3804 10.4778V8.36182H25.053L25.9118 9.69129V8.36182H26.4408V10.4778H25.79L24.9094 9.11356V10.4778H24.3804ZM13.8561 14.1808V12.0648H15.5823V12.5381H14.3907V12.9001H15.5545V13.3456H14.3907V13.7214H15.5823V14.1808H13.8561ZM22.3146 14.1808V12.0648H24.0408V12.5381H22.8491V12.9001H24.0074V13.3456H22.8491V13.7214H24.0407V14.1808H22.3146ZM15.6493 14.1808L16.4898 13.1359L15.6293 12.0648H16.2958L16.8082 12.7269L17.3225 12.0648H17.9628L17.1136 13.1228L17.9557 14.1808H17.2893L16.7917 13.5292L16.3062 14.1808H15.6493ZM18.0185 12.0652V14.1812H18.5614V13.513H19.1183C19.5894 13.513 19.9466 13.263 19.9466 12.7769C19.9466 12.3742 19.6665 12.0652 19.187 12.0652H18.0185ZM18.5614 12.5437H19.1478C19.3001 12.5437 19.4089 12.637 19.4089 12.7873C19.4089 12.9286 19.3006 13.031 19.1461 13.031H18.5614V12.5437ZM20.1763 12.0648V14.1808H20.7053V13.4291H20.928L21.5623 14.1808H22.2087L21.5127 13.4013C21.7983 13.3772 22.093 13.132 22.093 12.7513C22.093 12.306 21.7435 12.0648 21.3535 12.0648H20.1763ZM20.7053 12.5381H21.31C21.455 12.5381 21.5606 12.6516 21.5606 12.7609C21.5606 12.9015 21.4238 12.9836 21.3178 12.9836H20.7053V12.5381ZM24.2858 14.1808V13.7214H25.3445C25.5011 13.7214 25.569 13.6368 25.569 13.5439C25.569 13.455 25.5013 13.3651 25.3445 13.3651H24.8661C24.4502 13.3651 24.2186 13.1117 24.2186 12.7313C24.2186 12.392 24.4307 12.0648 25.0487 12.0648H26.0788L25.8561 12.5409H24.9651C24.7948 12.5409 24.7424 12.6303 24.7424 12.7156C24.7424 12.8033 24.8072 12.9001 24.9373 12.9001H25.4384C25.902 12.9001 26.1032 13.1631 26.1032 13.5074C26.1032 13.8776 25.879 14.1808 25.4132 14.1808H24.2858ZM26.2273 14.1808V13.7214H27.286C27.4427 13.7214 27.5105 13.6368 27.5105 13.5439C27.5105 13.455 27.4429 13.3651 27.286 13.3651H26.8076C26.3918 13.3651 26.1602 13.1117 26.1602 12.7313C26.1602 12.392 26.3723 12.0648 26.9902 12.0648H28.0204L27.7976 12.5409H26.9067C26.7364 12.5409 26.6839 12.6303 26.6839 12.7156C26.6839 12.8033 26.7487 12.9001 26.8788 12.9001H27.38C27.8436 12.9001 28.0447 13.1631 28.0447 13.5074C28.0447 13.8776 27.8206 14.1808 27.3548 14.1808H26.2273Z\\\" fill=\\\"#016FD0\\\" />\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" stroke=\\\"#DDDDDD\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pink-check\",\n  \"use\": \"pink-check-usage\",\n  \"viewBox\": \"0 0 26 25\",\n  \"content\": \"<symbol viewBox=\\\"0 0 26 25\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"pink-check\\\">\\n<g id=\\\"pink-check_check\\\" clip-path=\\\"url(#pink-check_clip0_8436_6946)\\\">\\n<path id=\\\"pink-check_Icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.3738 0.648777C25.4209 0.677576 25.4358 0.739125 25.407 0.786251L10.6894 24.8696C10.6566 24.9233 10.583 24.9337 10.5366 24.8913L0.577679 15.7786C0.536933 15.7413 0.534126 15.6781 0.57141 15.6373L1.28023 14.8627C1.31752 14.8219 1.38077 14.8191 1.42151 14.8564L10.2611 22.9449C10.3075 22.9873 10.3811 22.9769 10.4139 22.9233L24.3404 0.134439C24.3692 0.0873135 24.4307 0.0724569 24.4778 0.101256L25.3738 0.648777Z\\\" fill=\\\"#FF93A0\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"pink-check_clip0_8436_6946\\\">\\n<rect width=\\\"25\\\" height=\\\"25\\\" fill=\\\"white\\\" transform=\\\"translate(0.5)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"afterpay_white\",\n  \"use\": \"afterpay_white-usage\",\n  \"viewBox\": \"0 0 1148.9 220.8\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1148.9 220.8\\\" id=\\\"afterpay_white\\\"><path fill=\\\"#FFFFFF\\\" d=\\\"m1131.4 44.6-34.6-19.8-35.1-20.1c-23.2-13.3-52.2 3.4-52.2 30.2v4.5c0 2.5 1.3 4.8 3.5 6l16.3 9.3c4.5 2.6 10.1-.7 10.1-5.9V38.1c0-5.3 5.7-8.6 10.3-6l32 18.4 31.9 18.3c4.6 2.6 4.6 9.3 0 11.9L1081.7 99l-32 18.4c-4.6 2.6-10.3-.7-10.3-6v-5.3c0-26.8-29-43.6-52.2-30.2L952.1 96l-34.6 19.8c-23.3 13.4-23.3 47.1 0 60.5l34.6 19.8 35.1 20.1c23.2 13.3 52.2-3.4 52.2-30.2v-4.5c0-2.5-1.3-4.8-3.5-6l-16.3-9.3c-4.5-2.6-10.1.7-10.1 5.9v10.7c0 5.3-5.7 8.6-10.3 6l-32-18.4-31.9-18.3c-4.6-2.6-4.6-9.3 0-11.9l31.9-18.3 32-18.4c4.6-2.6 10.3.7 10.3 6v5.3c0 26.8 29 43.6 52.2 30.2l35.1-20.1 34.6-19.8C1154.7 91.6 1154.7 58 1131.4 44.6zM904.4 51.2l-81 167.3h-33.6l30.3-62.5L772.4 51.2h34.5l30.6 70.2 33.4-70.2L904.4 51.2 904.4 51.2zM94.5 110.6c0-20-14.5-34-32.3-34s-32.3 14.3-32.3 34c0 19.5 14.5 34 32.3 34S94.5 130.6 94.5 110.6M94.8 170v-15.4c-8.8 10.7-21.9 17.3-37.5 17.3C24.7 171.9 0 145.8 0 110.6c0-34.9 25.7-61.5 58-61.5 15.2 0 28 6.7 36.8 17.1v-15H124V170L94.8 170 94.8 170zM266 143.6c-10.2 0-13.1-3.8-13.1-13.8V77.1h18.8V51.2h-18.8v-29H223v29h-38.6V39.4c0-10 3.8-13.8 14.3-13.8h6.6v-23h-14.4c-24.7 0-36.4 8.1-36.4 32.8v15.9h-16.6v25.8h16.6V170h29.9V77.1H223v58.2c0 24.2 9.3 34.7 33.5 34.7h15.4v-26.4L266 143.6 266 143.6zM373.4 99.9c-2.1-15.4-14.7-24.7-29.5-24.7-14.7 0-26.9 9-29.9 24.7H373.4zM313.7 118.4c2.1 17.6 14.7 27.6 30.7 27.6 12.6 0 22.3-5.9 28-15.4h30.7c-7.1 25.2-29.7 41.3-59.4 41.3-35.9 0-61.1-25.2-61.1-61.1S309.2 49 344.4 49c35.4 0 61.1 26.1 61.1 61.8 0 2.6-.2 5.2-.7 7.6H313.7zM595.9 110.6c0-19.2-14.5-34-32.3-34-17.8 0-32.3 14.3-32.3 34 0 19.5 14.5 34 32.3 34C581.4 144.6 595.9 129.9 595.9 110.6M501.8 218.5V51.2H531v15.4c8.8-10.9 21.9-17.6 37.5-17.6 32.1 0 57.3 26.4 57.3 61.3s-25.7 61.5-58 61.5c-15 0-27.3-5.9-35.9-15.9v62.5h-30.1V218.5zM731.1 110.6c0-20-14.5-34-32.3-34s-32.3 14.3-32.3 34c0 19.5 14.5 34 32.3 34S731.1 130.6 731.1 110.6M731.4 170v-15.4c-8.8 10.7-21.9 17.3-37.5 17.3-32.6 0-57.3-26.1-57.3-61.3 0-34.9 25.7-61.5 58-61.5 15.2 0 28 6.7 36.8 17.1v-15h29.2V170L731.4 170 731.4 170zM449.1 62.8c0 0 7.4-13.8 25.7-13.8 7.8 0 12.8 2.7 12.8 2.7V82c0 0-11-6.8-21.1-5.4S450 87.2 450 99.6v70.3h-30.2V51.2H449L449.1 62.8 449.1 62.8z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport {useQueryClient} from '@tanstack/react-query'\n\nimport {useCurrentBasket} from './use-current-basket'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {filterProductItems, FILTERED_BASKET_ITEM_KEYS} from '../utils/get-filtered-product-items'\nimport {transformScapiToDol} from '../utils/transform-product-scapi-dol'\nimport {extractProductDetails, convertProductData} from './use-product-details-analytics'\nimport {useCartStateProducts} from './use-cart-state-products'\n\nconst buildCartTotals = (basket) => ({\n    cartTotalQuantity: (basket?.productItems || []).reduce(\n        (acc, item) => acc + (item.quantity || 0),\n        0\n    ),\n    cartTotalPrice: basket?.orderTotal || basket?.productTotal || 0\n})\n\nconst buildFallbackCartItem = (item, cartTotals, findingMethod = 'pdp') => ({\n    id: item.productId || '',\n    name: item.productName || '',\n    quantity: item.quantity || 0,\n    price: parseFloat(item.price || 0),\n    price_number: parseFloat(item.price || 0),\n    discount: 0,\n    bonus: 'No',\n    gift_status: 'No',\n    category: '',\n    collection: '',\n    metal: '',\n    material: '',\n    carat_weight: '',\n    size: '',\n    image_url: '',\n    url: '',\n    finding_method: findingMethod,\n    promotion_id: [],\n    ...cartTotals\n})\n\n/**\n * Builds the cart_state array from basket data, enriching each item with\n * product catalog attributes from the React Query cache where available.\n *\n * Items not present in the cache (e.g. not visited as PDPs this session) fall\n * back to the basic fields available from the basket item itself.\n *\n * @param {Object|null} basket - The current basket from useCurrentBasket\n * @param {import('@tanstack/react-query').QueryClient} queryClient - React Query client for cache reads\n * @param {Object} [options]\n * @param {boolean} [options.isDOLResponse=false] - Whether cached product data is in DOL format\n * @param {boolean} [options.shouldCleanBloomreachSuffix=false] - Whether to strip Bloomreach ID suffixes\n * @returns {Array} cart_state array in the same shape as the products[] datalayer array\n */\nexport const buildCartState = (\n    basket,\n    queryClient,\n    {isDOLResponse = false, shouldCleanBloomreachSuffix = false, currentProduct = null} = {}\n) => {\n    if (!basket?.productItems?.length) return []\n\n    const productItems = filterProductItems(basket.productItems, FILTERED_BASKET_ITEM_KEYS)\n    if (!productItems.length) return []\n\n    const cartTotals = buildCartTotals(basket)\n    const urlParams =\n        window === undefined ? new URLSearchParams() : new URLSearchParams(window.location?.search)\n\n    // Compute base ID for currentProduct once (it's already in DOL format from useProducts)\n    // DOL products already carry the base product ID (no variant suffix) — no regex needed\n    const currentProductBaseId =\n        currentProduct?.productId || currentProduct?.master?.masterId || null\n\n    return productItems.map((item) => {\n        const baseProductId = item.productId?.replace(/-\\d+$/, '') || item.productId\n\n        // currentProduct is already DOL-transformed by useProducts — use it directly\n        // to avoid race condition where cache isn't populated yet when basket loads\n        const isCurrentProduct = currentProductBaseId && currentProductBaseId === baseProductId\n        const cachedData = isCurrentProduct\n            ? currentProduct\n            : queryClient.getQueryData(['products', [baseProductId]])\n\n        if (cachedData) {\n            // currentProduct is already DOL format; cache data needs transform when not DOL\n            const dolProduct =\n                isCurrentProduct || isDOLResponse ? cachedData : transformScapiToDol(cachedData)\n\n            if (dolProduct) {\n                const itemFindingMethod =\n                    item.c_productFindingMethod || urlParams.get('product_finding_method') || 'pdp'\n                const productData = extractProductDetails(\n                    dolProduct,\n                    false,\n                    false,\n                    itemFindingMethod,\n                    shouldCleanBloomreachSuffix\n                )\n                productData.product_quantity = [item.quantity]\n\n                // Base product has no custom.size — find the variant by full productId\n                const matchingVariant = dolProduct?.variants?.find(\n                    (v) => v.productId === item.productId\n                )\n                if (matchingVariant?.variationValues?.size) {\n                    const rawSize = matchingVariant.variationValues.size\n                    productData.product_size = [\n                        rawSize === 'one size' ? 'one size' : (Number(rawSize) / 100).toString()\n                    ]\n                }\n\n                const converted = convertProductData(productData)\n                return {...converted, ...cartTotals}\n            }\n        }\n\n        const fallbackFindingMethod =\n            item.c_productFindingMethod || urlParams.get('product_finding_method') || 'pdp'\n        return buildFallbackCartItem(item, cartTotals, fallbackFindingMethod)\n    })\n}\n\n/**\n * Returns the cart_state array for the current basket, enriched with product\n * catalog attributes from the React Query cache.\n *\n * @returns {Array} cart_state array\n */\nexport const useCartState = (currentProduct = null) => {\n    const {data: basket} = useCurrentBasket()\n    const queryClient = useQueryClient()\n    const isDOLResponse = useVariant(LD_KEYS.enablePDPDOLResponse, false)\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n\n    // Warms ['products', [id]] cache for basket items not yet fetched. The\n    // returned tick advances AFTER cache writes commit so the memo re-runs\n    // against a warm cache (not on the same render the fetch settled).\n    const enrichmentRev = useCartStateProducts(basket)\n\n    return useMemo(\n        () =>\n            buildCartState(basket, queryClient, {\n                isDOLResponse,\n                shouldCleanBloomreachSuffix,\n                currentProduct\n            }),\n        [\n            basket,\n            queryClient,\n            isDOLResponse,\n            shouldCleanBloomreachSuffix,\n            currentProduct,\n            enrichmentRev\n        ]\n    )\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_diamonds_white\",\n  \"use\": \"pandora_diamonds_white-usage\",\n  \"viewBox\": \"0 0 283.46 82.45\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 283.46 82.45\\\" id=\\\"pandora_diamonds_white\\\"><defs></defs><g id=\\\"pandora_diamonds_white_Layer_1-2\\\" data-name=\\\"Layer 1\\\"><polygon points=\\\"177.86 10.23 179.04 10.23 179.1 10.17 178.1 .06 178.04 0 177.74 0 177.68 .06 176.63 10.17 176.68 10.23 177.86 10.23\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"183.56 10.88 183.62 10.82 185.33 1.76 185.27 1.71 184.98 1.65 184.92 1.71 181.15 10.29 181.21 10.35 183.56 10.88\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M181.8 14.76c.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35 0 .82.65 1.41 1.41 1.41ZM177.86 14.35c.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35 0 .82.65 1.41 1.41 1.41Z\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"172.16 10.88 174.51 10.35 174.57 10.29 170.81 1.71 170.75 1.65 170.45 1.71 170.39 1.76 172.1 10.82 172.16 10.88\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M172.51 13.35c0 .82.65 1.41 1.41 1.41.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35ZM12.05 17.29H.06l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h7.88l.06-.06s-.29-2.88-.29-7.88v-7.41l.06-.06c1.06.12 3.47.24 4.29.24 8.11 0 15.05-4.94 15.05-13.29s-7-12.7-15.05-12.7Zm-.35 19.23c-.94 0-3.06-.12-4-.29v-12.17h4.59c4.06 0 7.29 1.65 7.29 5.94s-2.82 6.53-7.88 6.53ZM49.61 20.64c-.88-2.06-1.18-3.29-1.18-3.29l-.06-.06h-6.41l-.06.06s-.24 1.23-1.12 3.29l-13.88 33.4c-1.18 2.82-2.35 4.35-2.35 4.35v.06h8.11l.06-.06c0-.24.18-1.23 1.18-3.7l2.53-6.29h17.87l2.7 6.29c.88 2.41 1.41 3.7 1.41 3.7l.06.06h8.11v-.06s-1.06-1.53-2.35-4.35l-14.64-33.4Zm-10.41 20.99 5.82-14.52h.06l6.29 14.52h-12.17ZM107.22 17.35l-.06-.06h-7.17l-.06.06s.29 2.88.29 7.88v20.7h-.06l-22.23-28.63h-7.88l-.06.06c.88 1.88 1.35 3.18 1.35 4.06v29.11c0 5-.29 7.88-.29 7.88l.06.06h7.17l.06-.06s-.29-2.88-.29-7.88v-21.11h.06l22.34 29.05h6.7l.06-.06s-.29-2.88-.29-7.88v-25.28c0-5 .29-7.88.29-7.88ZM129.56 17.29h-13.76l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h4.23c2.78 0 5.88.35 9.41.35 12.64 0 21.58-8.94 21.58-20.87s-8.76-20.64-21.46-20.64Zm-.47 34.75c-2 0-3.82-.06-4.88-.35-.65-.18-.76-.41-.76-1.53v-26.17h5.47c8.88 0 14.58 6 14.58 13.99s-5.7 14.05-14.41 14.05ZM177.86 16.7c-11.88 0-21.11 9.17-21.11 21.11s9.23 21.11 21.11 21.11 21.11-9.11 21.11-21.11-9.11-21.11-21.11-21.11Zm0 35.46c-7.64 0-13.58-6.23-13.58-14.35s5.94-14.35 13.58-14.35 13.64 6.23 13.64 14.35-5.94 14.35-13.64 14.35ZM228.31 44.45c-1-1.65-2.53-2.94-4.06-3.35v-.06c4.29-.94 8.29-5.94 8.29-10.94 0-6.82-5.23-12.82-13.29-12.82h-13.17l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h7.88l.06-.06s-.29-2.88-.29-7.88v-7.88c3.94 0 5.47.76 6.88 3l3.35 5.41c2.76 4.47 3.94 7.35 3.94 7.35l.06.06h9.41v-.06s-2.35-2.88-5.06-7.35l-4-6.59Zm-10.88-8.35c-.94 0-2.59 0-3.7-.24v-11.88h4.53c4.41 0 6.76 2.88 6.76 6.17 0 3.12-2.41 5.94-7.59 5.94ZM281.11 54.04l-14.64-33.4c-.88-2.06-1.18-3.29-1.18-3.29l-.06-.06h-6.41l-.06.06s-.24 1.23-1.12 3.29l-13.88 33.4c-1.18 2.82-2.35 4.35-2.35 4.35v.06h8.11l.06-.06c0-.24.18-1.23 1.18-3.7l2.53-6.29h17.87l2.7 6.29c.88 2.41 1.41 3.7 1.41 3.7l.06.06h8.11v-.06s-1.06-1.53-2.35-4.35Zm-25.05-12.41 5.82-14.52h.06l6.29 14.52h-12.17ZM26.12 71.05h2.46v8.98h5.58v2.22h-8.05v-11.2ZM41.46 70.97h2.27l4.8 11.28h-2.58l-1.02-2.51h-4.74l-1.02 2.51h-2.51l4.8-11.28Zm2.59 6.59-1.49-3.63-1.49 3.63h2.98ZM51.54 71.05h5.19c1.29 0 2.26.33 2.92.99.51.51.77 1.15.77 1.9v.03c0 .32-.04.6-.12.85s-.19.47-.32.66c-.13.2-.29.37-.46.52-.17.15-.36.28-.56.38.65.25 1.16.58 1.53 1 .37.42.56 1.01.56 1.75v.03c0 .51-.1.96-.29 1.34-.2.38-.48.7-.85.96-.37.26-.81.45-1.33.58s-1.09.19-1.72.19h-5.32v-11.2Zm4.67 4.53c.54 0 .98-.09 1.3-.28.32-.19.48-.49.48-.9v-.03c0-.37-.14-.66-.42-.86s-.68-.3-1.2-.3h-2.43v2.37h2.27Zm.66 4.51c.54 0 .97-.1 1.28-.3.31-.2.46-.5.46-.92v-.03c0-.37-.14-.67-.43-.89s-.75-.33-1.39-.33h-2.85v2.46h2.93ZM64.15 76.13h4.93v2.34h-4.93v-2.34ZM78.21 82.45c-.87 0-1.67-.14-2.39-.43s-1.34-.69-1.86-1.2c-.52-.51-.92-1.12-1.21-1.82-.29-.7-.43-1.47-.43-2.3v-.03c0-.8.15-1.55.44-2.25.29-.7.7-1.31 1.22-1.84.52-.53 1.14-.94 1.86-1.25.71-.3 1.5-.46 2.35-.46.5 0 .96.03 1.37.1.41.07.79.17 1.14.3.35.13.68.29.99.48.31.19.61.41.9.66l-1.55 1.87c-.21-.18-.43-.34-.64-.48-.21-.14-.43-.26-.66-.35-.23-.1-.48-.17-.74-.22-.27-.05-.56-.08-.88-.08-.45 0-.87.09-1.26.28-.39.19-.73.44-1.02.75-.29.32-.52.68-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .51.08.99.25 1.42.17.43.4.81.7 1.13.3.32.66.57 1.07.75.41.18.87.26 1.37.26.92 0 1.69-.23 2.32-.68v-1.61h-2.48v-2.13h4.86v4.86c-.58.49-1.26.91-2.06 1.26-.79.35-1.7.52-2.73.52ZM86.97 71.05h5.12c1.42 0 2.51.38 3.26 1.14.64.64.96 1.49.96 2.56v.03c0 .91-.22 1.65-.66 2.22-.44.57-1.02.99-1.74 1.26l2.74 4h-2.88l-2.4-3.58h-1.94v3.58h-2.46v-11.2Zm4.96 5.44c.61 0 1.07-.14 1.4-.43s.49-.67.49-1.15v-.03c0-.53-.17-.93-.51-1.2-.34-.27-.82-.4-1.42-.4h-2.45v3.22h2.5ZM105.57 82.45c-.86 0-1.66-.15-2.38-.46-.73-.3-1.35-.71-1.88-1.23-.53-.52-.94-1.12-1.23-1.82-.29-.7-.44-1.45-.44-2.25v-.03c0-.8.15-1.55.45-2.25.3-.7.71-1.31 1.24-1.84.53-.53 1.16-.94 1.89-1.25.73-.3 1.53-.46 2.39-.46s1.66.15 2.38.46c.73.3 1.35.71 1.88 1.23s.94 1.13 1.23 1.82c.29.7.44 1.45.44 2.25v.03c0 .8-.15 1.55-.45 2.25-.3.7-.71 1.31-1.24 1.84-.53.53-1.16.94-1.89 1.25-.73.3-1.53.46-2.39.46Zm.03-2.27c.49 0 .94-.09 1.36-.27.42-.18.77-.43 1.06-.75.29-.32.52-.69.69-1.11.17-.42.25-.87.25-1.35v-.03c0-.48-.08-.93-.25-1.36-.17-.43-.4-.8-.7-1.12-.3-.32-.66-.57-1.08-.76s-.87-.28-1.36-.28-.96.09-1.37.27c-.41.18-.76.43-1.06.75-.29.32-.52.69-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .48.08.93.25 1.36.17.43.4.8.7 1.12.3.32.66.57 1.07.76.41.19.87.28 1.37.28ZM113.83 71.05h2.64l2.32 7.58 2.51-7.62h2.11l2.51 7.62 2.32-7.58h2.58l-3.82 11.28h-2.14l-2.53-7.33-2.53 7.33h-2.14l-3.82-11.28ZM134.25 71.05h2.27l5.25 6.9v-6.9h2.43v11.2h-2.1l-5.42-7.12v7.12h-2.43v-11.2ZM154.88 71.05h4.37c.87 0 1.68.14 2.41.42.73.28 1.36.67 1.89 1.18.53.5.94 1.09 1.22 1.77.29.68.43 1.41.43 2.2v.03c0 .79-.14 1.53-.43 2.21s-.7 1.27-1.22 1.78c-.53.5-1.16.9-1.89 1.18-.73.29-1.53.43-2.41.43h-4.37v-11.2Zm4.37 8.98c.5 0 .96-.08 1.38-.24s.77-.39 1.06-.69c.29-.3.52-.65.69-1.06.17-.41.25-.86.25-1.36v-.03c0-.49-.08-.94-.25-1.36-.17-.42-.39-.77-.69-1.07-.29-.3-.65-.53-1.06-.7-.42-.17-.88-.25-1.38-.25h-1.9v6.75h1.9ZM169.11 71.05h2.46v11.2h-2.46v-11.2ZM179.81 70.97h2.27l4.8 11.28h-2.58l-1.02-2.51h-4.74l-1.02 2.51h-2.51l4.8-11.28Zm2.59 6.59-1.49-3.63-1.49 3.63h2.98ZM190.21 71.05h2.66l2.94 4.74 2.94-4.74h2.66v11.2h-2.43v-7.31l-3.15 4.78h-.06l-3.12-4.74v7.26h-2.43v-11.2ZM210.82 82.45c-.86 0-1.66-.15-2.38-.46-.73-.3-1.35-.71-1.88-1.23-.53-.52-.94-1.12-1.23-1.82-.29-.7-.44-1.45-.44-2.25v-.03c0-.8.15-1.55.45-2.25.3-.7.71-1.31 1.24-1.84.53-.53 1.16-.94 1.89-1.25.73-.3 1.53-.46 2.39-.46s1.66.15 2.38.46c.73.3 1.35.71 1.88 1.23s.94 1.13 1.23 1.82c.29.7.44 1.45.44 2.25v.03c0 .8-.15 1.55-.45 2.25-.3.7-.71 1.31-1.24 1.84-.53.53-1.16.94-1.89 1.25-.73.3-1.53.46-2.39.46Zm.03-2.27c.49 0 .94-.09 1.36-.27.42-.18.77-.43 1.06-.75.29-.32.52-.69.69-1.11.17-.42.25-.87.25-1.35v-.03c0-.48-.08-.93-.25-1.36-.17-.43-.4-.8-.7-1.12-.3-.32-.66-.57-1.08-.76s-.87-.28-1.36-.28-.96.09-1.37.27c-.41.18-.76.43-1.06.75-.29.32-.52.69-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .48.08.93.25 1.36.17.43.4.8.7 1.12.3.32.66.57 1.07.76.41.19.87.28 1.37.28ZM219.94 71.05h2.27l5.25 6.9v-6.9h2.43v11.2h-2.1l-5.42-7.12v7.12h-2.43v-11.2ZM234.18 71.05h4.37c.88 0 1.68.14 2.41.42.73.28 1.36.67 1.89 1.18.53.5.94 1.09 1.22 1.77.29.68.43 1.41.43 2.2v.03c0 .79-.14 1.53-.43 2.21s-.7 1.27-1.22 1.78c-.53.5-1.16.9-1.89 1.18s-1.53.43-2.41.43h-4.37v-11.2Zm4.37 8.98c.5 0 .96-.08 1.38-.24s.77-.39 1.06-.69c.29-.3.52-.65.69-1.06.17-.41.25-.86.25-1.36v-.03c0-.49-.08-.94-.25-1.36-.17-.42-.39-.77-.69-1.07-.29-.3-.65-.53-1.06-.7-.42-.17-.87-.25-1.38-.25h-1.9v6.75h1.9ZM252.29 82.41c-.85 0-1.69-.15-2.51-.44-.82-.29-1.57-.74-2.24-1.35l1.46-1.74c.51.42 1.04.75 1.58.99.54.25 1.13.37 1.77.37.51 0 .91-.09 1.19-.28.28-.19.42-.45.42-.78v-.03c0-.16-.03-.3-.09-.42-.06-.12-.17-.24-.34-.34-.17-.11-.4-.21-.69-.32-.29-.11-.68-.22-1.15-.34-.57-.14-1.08-.29-1.54-.46-.46-.17-.85-.38-1.17-.63-.32-.25-.57-.56-.75-.94-.18-.37-.26-.84-.26-1.39v-.03c0-.51.1-.97.29-1.38.19-.41.46-.76.8-1.06s.76-.53 1.23-.69c.48-.16 1-.24 1.58-.24.82 0 1.58.12 2.26.37.69.25 1.32.6 1.9 1.06l-1.28 1.86c-.5-.34-.99-.61-1.47-.81-.48-.2-.96-.3-1.44-.3s-.84.09-1.08.28c-.24.19-.36.42-.36.7v.03c0 .18.03.34.1.47.07.13.2.25.38.36.18.11.43.21.75.3s.71.21 1.2.34c.57.15 1.07.32 1.52.5.44.19.82.41 1.12.67.3.26.54.57.69.92.16.35.23.77.23 1.26v.03c0 .55-.1 1.05-.3 1.48s-.48.79-.84 1.09c-.36.29-.79.52-1.29.67-.5.15-1.05.23-1.66.23Z\\\" style=\\\"fill:#fff\\\" /></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const totalWidth = '100%'\nconst padding = 64\nconst gutter = 12\nconst columns = 12\nconst targetColumns = 5\n\nconst gridWidth = `calc(${totalWidth} - ${padding * 2}px)`\nconst colWidth = `calc((${gridWidth} - ${(columns - 1) * gutter}px) / ${columns})`\nexport const sheetWidth = `calc(${colWidth} * ${targetColumns} + ${\n    (targetColumns - 1) * gutter\n}px + ${padding}px)`\n\nexport const animationDuration = 500\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"visibility-off\",\n  \"use\": \"visibility-off-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"visibility-off\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M3.06066 3L2 4.06066L5.27758 7.33824C3.88036 8.45795 2.7586 9.93495 2.05997 11.6701C2.02156 11.7759 2.00129 11.8875 2.00001 12.0001C1.99948 12.1063 2.01986 12.2117 2.05997 12.3101C3.68479 16.3692 7.62406 19.0221 11.9939 19.0001C13.4422 19.0084 14.8434 18.723 16.129 18.1897L18.9706 21.0312L20.0312 19.9706L3.06066 3ZM14.5536 16.6143L12.8232 14.8839C12.5598 14.9595 12.2816 15.0001 11.9939 15.0001C10.3381 15.0001 8.99575 13.6569 8.99575 12.0001C8.99575 11.7129 9.03609 11.4351 9.11141 11.1721L6.70955 8.77022C5.60357 9.60334 4.68941 10.7013 4.06875 12.0001C5.5333 15.0499 8.6124 16.9925 11.9939 17.0001C12.8754 16.9981 13.7364 16.8646 14.5536 16.6143Z\\\" />\\n<path d=\\\"M11.1742 9.11356L14.8792 12.8185C14.9527 12.5583 14.9921 12.2838 14.9921 12.0001C14.9921 10.3432 13.6498 9.00007 11.9939 9.00007C11.7097 9.00007 11.4347 9.03964 11.1742 9.11356Z\\\" />\\n<path d=\\\"M19.9191 12.0001C19.2975 13.2944 18.3851 14.3894 17.2822 15.2216L18.7171 16.6564C20.1111 15.5374 21.2304 14.0624 21.9279 12.3301C21.9706 12.2255 21.9911 12.1131 21.9878 12.0001C22.0041 11.9007 22.0041 11.7994 21.9878 11.7001C20.3582 7.61653 16.3881 4.95491 11.9939 5.00007C10.5489 4.99171 9.15069 5.27589 7.86748 5.80682L9.44159 7.38093C10.2566 7.13322 11.1151 7.00206 11.9939 7.00206C15.3771 7.00206 18.4596 8.94605 19.9191 12.0001Z\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {generateConsistentImageUrl, getImageUrl} from 'pandora-shared-app/overrides/app/utils/media'\n\n/**\n * @typedef {import('../types/ring-sizer-entry').RingSizerModule} RingSizerModule\n * @typedef {import('../types/ring-sizer-entry').RingSizerImage} RingSizerImage\n */\n\n/**\n * Builds the image src for a given breakpoint using the shared media utility.\n * Returns null when that breakpoint has no CMS image so the UI can render its\n * own fallback (e.g. the ring sizer icon on mobile).\n *\n * @param {RingSizerImage|null} image - CMS image config (image.desktop/.mobile.diImage)\n * @param {'desktop'|'mobile'} breakpoint - Which breakpoint image to resolve\n * @returns {string|null}\n */\nexport const buildImageSrc = (image, breakpoint, width) => {\n    // Only resolve when this breakpoint provides its own image. The shared\n    // utility falls back to the desktop image when a key is missing, but here\n    // the UI expects null so it can render its own fallback.\n    if (!image?.[breakpoint]?.diImage?.image) return null\n\n    // generateConsistentImageUrl guarantees a valid URL or null, so no extra\n    // validation is needed here.\n    const {imageUrl} = generateConsistentImageUrl(image, breakpoint, undefined, width) || {}\n\n    return imageUrl ?? null\n}\n\n/**\n * LEGACY image src builder — the pre-refactor behavior, retained behind the\n * `enable-pdp-ring-sizer-refactoring` flag as a fallback. Builds the URL directly\n * from the flattened diImage.image fields via getImageUrl (no breakpoint-aware\n * width/POI resolution). Remove this, the getImageUrl import, and the flag branch\n * in useRingSizerEntry once the flag is fully rolled out.\n *\n * @param {RingSizerImage|null} image - CMS image config (image.desktop/.mobile.diImage)\n * @param {'desktop'|'mobile'} breakpoint - Which breakpoint image to resolve\n * @returns {string|null}\n */\nexport const buildLegacyImageSrc = (image, breakpoint) => {\n    const imageData = image?.[breakpoint]?.diImage?.image\n    if (!imageData) return null\n\n    const {defaultHost, endpoint, name} = imageData\n    if (!defaultHost || !endpoint || !name) return null\n\n    return getImageUrl({defaultHost, endpoint, name})\n}\n\n/**\n * Checks if desktop content is available.\n * @param {Object} params\n * @param {string|null} params.desktopTitle\n * @param {string|null} params.desktopDescription\n * @param {string|null} params.desktopImageSrc\n * @returns {boolean}\n */\nexport const checkHasDesktopContent = ({desktopTitle, desktopDescription, desktopImageSrc}) => {\n    return Boolean(desktopTitle || desktopDescription || desktopImageSrc)\n}\n\n/**\n * Extracts mobile content from ring sizer module.\n * @param {RingSizerModule|null} ringSizerModule\n * @returns {{mobileTitle: string|null, mobileDescription: string|null, mobileButtonText: string|null, mobileButtonAriaLabel: string|null}}\n */\nexport const extractMobileContent = (ringSizerModule) => {\n    if (!ringSizerModule) {\n        return {\n            mobileTitle: null,\n            mobileDescription: null,\n            mobileButtonText: null,\n            mobileButtonAriaLabel: null\n        }\n    }\n\n    return {\n        mobileTitle: ringSizerModule.mobileTitle ?? null,\n        mobileDescription: ringSizerModule.mobileDescription ?? null,\n        mobileButtonText: ringSizerModule.mobileButtonText ?? null,\n        mobileButtonAriaLabel: ringSizerModule.mobileButtonAriaLabel ?? null\n    }\n}\n\n/**\n * Extracts desktop content from ring sizer module.\n * @param {RingSizerModule|null} ringSizerModule\n * @returns {{desktopTitle: string|null, desktopDescription: string|null}}\n */\nexport const extractDesktopContent = (ringSizerModule) => {\n    if (!ringSizerModule) {\n        return {\n            desktopTitle: null,\n            desktopDescription: null\n        }\n    }\n\n    return {\n        desktopTitle: ringSizerModule.desktopTitle ?? null,\n        desktopDescription: ringSizerModule.desktopDescription ?? null\n    }\n}\n\n/**\n * Extracts image metadata from the ring sizer module.\n * URL resolution is delegated to the shared media utility via buildImageSrc,\n * so only the alt text needs to be extracted here.\n * @param {RingSizerModule|null} ringSizerModule\n * @returns {{imageAlt: string|null}}\n */\nexport const extractImageData = (ringSizerModule) => {\n    return {\n        imageAlt: ringSizerModule?.image?.imageAltText ?? null\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"green-check\",\n  \"use\": \"green-check-usage\",\n  \"viewBox\": \"0 0 26 25\",\n  \"content\": \"<symbol viewBox=\\\"0 0 26 25\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"green-check\\\">\\n<g id=\\\"green-check_check\\\" clip-path=\\\"url(#green-check_clip0_8436_6946)\\\">\\n<path id=\\\"green-check_Icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M25.3738 0.648777C25.4209 0.677576 25.4358 0.739125 25.407 0.786251L10.6894 24.8696C10.6566 24.9233 10.583 24.9337 10.5366 24.8913L0.577679 15.7786C0.536933 15.7413 0.534126 15.6781 0.57141 15.6373L1.28023 14.8627C1.31752 14.8219 1.38077 14.8191 1.42151 14.8564L10.2611 22.9449C10.3075 22.9873 10.3811 22.9769 10.4139 22.9233L24.3404 0.134439C24.3692 0.0873135 24.4307 0.0724569 24.4778 0.101256L25.3738 0.648777Z\\\" fill=\\\"#00823A\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"green-check_clip0_8436_6946\\\">\\n<rect width=\\\"25\\\" height=\\\"25\\\" fill=\\\"white\\\" transform=\\\"translate(0.5)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport {usePreferences} from './usePreferences'\nimport {PREFERENCE_KEYS} from '../api_keys/preference-keys'\n\nconst STORES_LIMIT_FALLBACK = 25\nconst MAX_DISTANCE_FALLBACK = 50\nconst DISTANCE_UNIT_FALLBACK = 'km'\n\nexport const useStorePreferences = (triggerPref = true) => {\n    const {data: rawPrefs = []} = usePreferences(\n        [\n            PREFERENCE_KEYS.maximumStoreCount,\n            PREFERENCE_KEYS.defaultSearchRadius,\n            PREFERENCE_KEYS.extendedSearchRadius,\n            PREFERENCE_KEYS.distanceUnit\n        ],\n        false,\n        !triggerPref\n    )\n\n    const storePrefs = useMemo(() => {\n        return rawPrefs.reduce((acc, item) => {\n            const id = item?.preferenceID\n            const value = item?.preferenceValue?.[0]\n\n            if (id && value !== undefined) {\n                acc[id] = value\n            }\n\n            return acc\n        }, {})\n    }, [rawPrefs])\n\n    return {\n        maxStoreCount: storePrefs?.maximumStoreCount ?? STORES_LIMIT_FALLBACK,\n        defaultRadius: storePrefs?.defaultSearchRadius ?? null,\n        radius: storePrefs?.extendedSearchRadius ?? MAX_DISTANCE_FALLBACK,\n        distanceUnit: storePrefs?.distanceUnit ?? DISTANCE_UNIT_FALLBACK\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-twitter\",\n  \"use\": \"social-twitter-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-twitter\\\">\\n<path d=\\\"M17.1747 3.99927H19.9361L13.9048 10.8911L21 20.2705H15.4459L11.0926 14.5834L6.11734 20.2705H3.35202L9.80183 12.8976L3 3.99927H8.69491L12.6258 9.19744L17.1747 3.99927ZM16.2047 18.6199H17.734L7.8618 5.5638H6.21904L16.2047 18.6199Z\\\" fill=\\\"black\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Image URL manipulation utilities\n * Handles width parameter modifications for image optimization\n */\nimport {isAprimoUrl} from 'pandora-shared-app/overrides/app/utils/media'\n\n/**\n * Sets or replaces the width parameter in an image URL.\n * Aprimo URLs use `width=`, Amplience URLs use `w=`.\n * @param {string} imageUrl - The original image URL\n * @param {number} width - The desired width value\n * @returns {string} The modified image URL with the new width parameter\n */\nexport const setImageWidth = (imageUrl, width) => {\n    if (!imageUrl) return imageUrl\n\n    if (isAprimoUrl(imageUrl)) {\n        const widthMatch = imageUrl.match(/\\bwidth=(\\d+)/)\n        const heightMatch = imageUrl.match(/\\bheight=(\\d+)/)\n\n        // Aprimo encodes the aspect ratio as an explicit width+height pair (no\n        // `aspect` param). When both are present, scale the height in step with\n        // the width so the cropped ratio is preserved across breakpoints —\n        // otherwise the responsive width override would skew the image and the\n        // object-fit:cover container would zoom it.\n        if (widthMatch && heightMatch) {\n            const currentWidth = Number(widthMatch[1])\n            const currentHeight = Number(heightMatch[1])\n            const newHeight = currentWidth\n                ? Math.round((currentHeight / currentWidth) * width)\n                : currentHeight\n            return imageUrl\n                .replace(/\\bwidth=\\d+/, `width=${width}`)\n                .replace(/\\bheight=\\d+/, `height=${newHeight}`)\n        }\n        if (widthMatch) {\n            return imageUrl.replace(/\\bwidth=\\d+/, `width=${width}`)\n        }\n        const separator = imageUrl.includes('?') ? '&' : '?'\n        return `${imageUrl}${separator}width=${width}`\n    }\n\n    // Amplience path\n    if (imageUrl.includes('w=auto')) {\n        return imageUrl.replace('w=auto', `w=${width}`)\n    }\n    if (imageUrl.includes('w=')) {\n        return imageUrl.replace(/w=\\d+/, `w=${width}`)\n    }\n    const separator = imageUrl.includes('?') ? '&' : '?'\n    return `${imageUrl}${separator}w=${width}`\n}\n\n/**\n * Ensures the image URL uses w=auto for responsive optimization.\n * Aprimo URLs are returned unchanged (no w=auto equivalent).\n * @param {string} imageUrl - The original image URL\n * @returns {string} The modified image URL with w=auto parameter\n */\nexport const setImageWidthAuto = (imageUrl) => {\n    if (!imageUrl) return imageUrl\n\n    // Aprimo URLs carry explicit dimensions; no w=auto equivalent.\n    if (isAprimoUrl(imageUrl)) return imageUrl\n\n    // Amplience path\n    if (imageUrl.includes('w=auto')) return imageUrl\n    if (imageUrl.includes('w=')) {\n        return imageUrl.replace(/w=\\d+/, 'w=auto')\n    }\n    const separator = imageUrl.includes('?') ? '&' : '?'\n    return `${imageUrl}${separator}w=auto`\n}\n\n/**\n * Generates preload URL for image optimization\n * Preload URLs help browsers fetch critical images early\n * @param {string} src - Original image source URL\n * @param {number} width - Calculated width for the image\n * @param {boolean} shouldPreload - Whether preload is enabled\n * @param {boolean} isPosterFrame - Whether this is a poster frame (video thumbnail)\n * @returns {string|null} Preload URL or null if preload is disabled\n */\nexport const generatePreloadUrl = (src, width, shouldPreload, isPosterFrame) => {\n    if (!shouldPreload || !src) {\n        return null\n    }\n\n    // Poster frames use w=auto for better responsive optimization\n    if (isPosterFrame) {\n        return setImageWidthAuto(src)\n    }\n\n    // Normal preload uses calculated width for precise sizing\n    return setImageWidth(src, width)\n}\n\n/**\n * Generates the final image source URL with appropriate width parameter\n * @param {string} src - Original image source URL\n * @param {number} width - Calculated width for the image\n * @param {boolean} isPosterFrame - Whether this is a poster frame (video thumbnail)\n * @returns {string} Final image source URL ready for use in <img> tag\n */\nexport const generateImageSrc = (src, width, isPosterFrame) => {\n    if (!src) return src\n\n    // Poster frames use w=auto for better responsive optimization\n    if (isPosterFrame) {\n        return setImageWidthAuto(src)\n    }\n\n    // Normal images use calculated width for precise sizing\n    return setImageWidth(src, width)\n}\n","// React\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// Third-party\nimport {Helmet} from 'react-helmet'\n\n/**\n * PreloadLinks component for critical image preloading\n * Injects <link rel=\"preload\"> tags into the document head\n * to improve LCP (Largest Contentful Paint) performance\n *\n * @param {string|null} preloadUrl - The URL of the image to preload\n */\nexport const PreloadLinks = ({preloadUrl}) => {\n    if (!preloadUrl) return null\n\n    return (\n        <Helmet>\n            <link\n                rel=\"preload\"\n                as=\"image\"\n                href={preloadUrl}\n                importance=\"high\"\n                fetchPriority=\"high\"\n            />\n        </Helmet>\n    )\n}\n\nPreloadLinks.propTypes = {\n    preloadUrl: PropTypes.string\n}\n\nPreloadLinks.displayName = 'PreloadLinks'\n","// React\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// UI components\nimport {AspectRatio, Skeleton} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Constants\nimport {NO_ASPECT_RATIO} from 'pandora-shared-app/overrides/app/utils/types'\n\n/**\n * Skeleton placeholder component for image loading states\n * Provides visual feedback while images are loading\n *\n * @param {string|number} aspectRatio - Aspect ratio for the placeholder (e.g., 16/9, \"16/9\")\n * @param {string|number} lazyLoadHeight - Height for placeholder when no aspect ratio is provided\n * @param {string} dataAuto - Data attribute for testing/automation\n */\nexport const SkeletonPlaceholder = ({aspectRatio, lazyLoadHeight, dataAuto}) => {\n    // Render with aspect ratio if provided and valid\n    if (aspectRatio && aspectRatio !== NO_ASPECT_RATIO) {\n        return (\n            <AspectRatio ratio={aspectRatio}>\n                <Skeleton\n                    width=\"100%\"\n                    height=\"100%\"\n                    startColor=\"#e2e8f0\"\n                    endColor=\"#f7fafc\"\n                    data-auto={`${dataAuto}Placeholder`}\n                />\n            </AspectRatio>\n        )\n    }\n\n    // Render with fixed height when no aspect ratio is provided\n    return (\n        <Skeleton\n            width=\"100%\"\n            height={lazyLoadHeight || 200}\n            startColor=\"#e2e8f0\"\n            endColor=\"#f7fafc\"\n            data-auto={`${dataAuto}Placeholder`}\n        />\n    )\n}\n\nSkeletonPlaceholder.propTypes = {\n    aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    lazyLoadHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    dataAuto: PropTypes.string\n}\n\nSkeletonPlaceholder.displayName = 'SkeletonPlaceholder'\n","// React\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// UI components\nimport {\n    AspectRatio,\n    Image,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Constants\nimport {NO_ASPECT_RATIO} from 'pandora-shared-app/overrides/app/utils/types'\n\n/**\n * ImageRenderer component - Renders the actual <img> element with optimization\n * Handles aspect ratio wrapping and performance attributes\n *\n * @param {string} imageSrc - The optimized image source URL\n * @param {string} alt - Alt text for accessibility\n * @param {string} dataAuto - Data attribute for testing/automation\n * @param {function} onLoad - Callback when image loads\n * @param {string} fetchpriority - Image fetch priority ('high', 'low', 'auto')\n * @param {number|string} aspectRatio - Aspect ratio for the image\n * @param {string} loading - Loading attribute ('lazy', 'eager')\n * @param {string} decoding - Decoding attribute ('async', 'sync', 'auto')\n */\nexport const ImageRenderer = ({\n    imageSrc,\n    alt,\n    dataAuto,\n    onLoad,\n    fetchpriority,\n    aspectRatio,\n    ...props\n}) => {\n    const style = useMultiStyleConfig('ImageCard')\n\n    // Build image props object\n    const imageProps = {\n        as: 'img',\n        src: imageSrc,\n        alt: alt ?? '',\n        'data-auto': `${dataAuto}Image`,\n        'data-testid': `${dataAuto}Image`,\n        onLoad: onLoad,\n        ...props\n    }\n\n    // Only add fetchpriority if explicitly provided\n    // This prevents adding undefined/null attributes to the DOM\n    if (fetchpriority) {\n        imageProps.fetchpriority = fetchpriority\n    }\n\n    // PWAKit 3.11.0 enhancement: Add decoding=\"async\" for lazy images\n    // This improves TBT (Total Blocking Time) by allowing async decoding\n    if (props.loading === 'lazy' && !props.decoding) {\n        imageProps.decoding = 'async'\n    }\n\n    // Render with aspect ratio wrapper if aspect ratio is provided and valid\n    if (aspectRatio && aspectRatio !== NO_ASPECT_RATIO) {\n        return (\n            <AspectRatio ratio={aspectRatio}>\n                <Image {...imageProps} />\n            </AspectRatio>\n        )\n    }\n\n    // Render without aspect ratio wrapper (full width/height)\n    return <Image {...imageProps} width=\"full\" height=\"full\" sx={style?.bgImage} />\n}\n\nImageRenderer.propTypes = {\n    imageSrc: PropTypes.string.isRequired,\n    alt: PropTypes.string,\n    dataAuto: PropTypes.string,\n    onLoad: PropTypes.func,\n    fetchpriority: PropTypes.string,\n    aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    loading: PropTypes.string,\n    decoding: PropTypes.string\n}\n\nImageRenderer.displayName = 'ImageRenderer'\n","// React\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// Third-party\nimport LazyLoad from 'react-lazyload'\n\n// UI components\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Utilities\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Components\nimport {CopyrightText} from 'pandora-shared-app/overrides/app/components/copyright-text'\n\n// Local components and utilities\nimport {generatePreloadUrl, generateImageSrc} from './utils'\nimport {useImageWidth} from './use-image-width'\nimport {PreloadLinks} from './preload-links'\nimport {SkeletonPlaceholder} from './skeleton-placeholder'\nimport {ImageRenderer} from './image-renderer'\n\n/**\n * ImageCard component - Optimized image display with lazy loading and preloading support\n *\n * Features:\n * - Responsive image width optimization\n * - Lazy loading for non-critical images\n * - Preload support for critical images (LCP optimization)\n * - Server-side rendering support\n * - Poster frame support for video thumbnails\n *\n * @param {string} src - Image source URL\n * @param {string} alt - Alt text for accessibility\n * @param {number|string} aspectRatio - Aspect ratio (default: 4/3)\n * @param {number|string} lazyLoadHeight - Height for lazy load placeholder\n * @param {number} lazyLoadOffset - Offset for lazy load trigger\n * @param {string} dataAuto - Data attribute for testing\n * @param {object} copyright - Copyright information object\n * @param {number} qWidth - Explicit width from query parameter\n * @param {function} onLoad - Callback when image loads\n * @param {boolean} isLazyLoad - Whether to enable lazy loading\n * @param {boolean} forceRenderPlaceholder - Force placeholder rendering\n * @param {string} fetchpriority - Image fetch priority ('high', 'low', 'auto')\n * @param {boolean} isLcpOptimized - Whether this is an LCP-optimized image\n * @param {boolean} isFirstPanel - Whether this is the first panel (affects lazy loading)\n * @param {boolean} isPosterFrame - Whether this is a video poster frame\n * @param {boolean} shouldPreload - Whether to preload this image\n */\nexport const ImageCard = ({\n    src,\n    alt,\n    aspectRatio = 4 / 3,\n    lazyLoadHeight = 200,\n    lazyLoadOffset = 100,\n    dataAuto,\n    copyright,\n    qWidth,\n    onLoad,\n    isLazyLoad = true,\n    forceRenderPlaceholder = false,\n    fetchpriority,\n    isLcpOptimized = false,\n    isFirstPanel = false,\n    isPosterFrame = false,\n    shouldPreload = false,\n    ...props\n}) => {\n    const style = useMultiStyleConfig('ImageCard')\n    const {width} = useImageWidth(qWidth, isLcpOptimized)\n\n    // Early return if no source provided\n    if (!src) {\n        return null\n    }\n\n    // Generate optimized URLs for preload and actual image\n    const preloadUrl = generatePreloadUrl(src, width, shouldPreload, isPosterFrame)\n    const imageSrc = generateImageSrc(src, width, isPosterFrame)\n\n    // Server-side rendering: Always render placeholder on server or when forced\n    // This ensures proper HTML structure for SSR and prevents hydration mismatches\n    if ((isServer && isLazyLoad) || forceRenderPlaceholder) {\n        return (\n            <Box sx={style?.container}>\n                <PreloadLinks preloadUrl={preloadUrl} />\n                <SkeletonPlaceholder\n                    aspectRatio={aspectRatio}\n                    lazyLoadHeight={lazyLoadHeight}\n                    dataAuto={dataAuto}\n                />\n                {copyright?.text && !isPosterFrame && (\n                    <CopyrightText dataAuto={dataAuto} {...copyright} />\n                )}\n            </Box>\n        )\n    }\n\n    // Client-side: Determine if lazy loading should be applied\n    // Disable lazy loading for first panel for LCP optimization\n    const shouldLazyLoad = !isServer && isLazyLoad && !isFirstPanel\n\n    return (\n        <Box sx={style?.container}>\n            <PreloadLinks preloadUrl={preloadUrl} />\n            {shouldLazyLoad ? (\n                <LazyLoad\n                    once\n                    height={lazyLoadHeight}\n                    offset={lazyLoadOffset}\n                    placeholder={\n                        <SkeletonPlaceholder\n                            aspectRatio={aspectRatio}\n                            lazyLoadHeight={lazyLoadHeight}\n                            dataAuto={dataAuto}\n                        />\n                    }\n                >\n                    <ImageRenderer\n                        imageSrc={imageSrc}\n                        alt={alt}\n                        dataAuto={dataAuto}\n                        onLoad={onLoad}\n                        fetchpriority={fetchpriority}\n                        aspectRatio={aspectRatio}\n                        {...props}\n                    />\n                </LazyLoad>\n            ) : (\n                <ImageRenderer\n                    imageSrc={imageSrc}\n                    alt={alt}\n                    dataAuto={dataAuto}\n                    onLoad={onLoad}\n                    fetchpriority={fetchpriority}\n                    aspectRatio={aspectRatio}\n                    {...props}\n                />\n            )}\n            {copyright?.text && !isPosterFrame && (\n                <CopyrightText dataAuto={dataAuto} {...copyright} />\n            )}\n        </Box>\n    )\n}\n\nImageCard.propTypes = {\n    src: PropTypes.string,\n    alt: PropTypes.string,\n    aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    lazyLoadHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    lazyLoadOffset: PropTypes.number,\n    dataAuto: PropTypes.string,\n    copyright: PropTypes.object,\n    qWidth: PropTypes.number,\n    onLoad: PropTypes.func,\n    isLazyLoad: PropTypes.bool,\n    forceRenderPlaceholder: PropTypes.bool,\n    fetchpriority: PropTypes.string,\n    isLcpOptimized: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    isPosterFrame: PropTypes.bool,\n    loading: PropTypes.string,\n    decoding: PropTypes.string,\n    shouldPreload: PropTypes.bool\n}\n\nImageCard.displayName = 'ImageCard'\n","// React hooks\nimport {useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Media utilities\nimport {\n    getDeviceWidth,\n    DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION\n} from 'pandora-shared-app/overrides/app/utils/media'\n\n/**\n * Custom hook to calculate optimal image width based on device breakpoint\n * Handles LCP optimization and fallback width calculation\n *\n * @param {number|null} qWidth - Optional explicit width from query parameter\n * @param {boolean} isLcpOptimized - Whether this image is LCP optimized (Largest Contentful Paint)\n * @returns {{width: number, deviceType: string}} Object containing calculated width and device type\n */\nexport const useImageWidth = (qWidth, isLcpOptimized) => {\n    // Get current device type based on breakpoint\n    const deviceType = useBreakpointValue({base: 'mobile', md: 'tablet', xl: 'desktop'})\n\n    // Get breakpoint-specific width for image optimization\n    const breakpointWidth = useBreakpointValue({\n        base: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE,\n        md: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET,\n        xl: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n    })\n\n    // Use explicit width if provided, otherwise use breakpoint width\n    let width = qWidth ?? breakpointWidth\n\n    // Fallback: For LCP optimized images without explicit width, or invalid widths,\n    // use device-specific width as fallback\n    if ((isLcpOptimized && !qWidth) || !width || width === 0) {\n        width = getDeviceWidth(deviceType)\n    }\n\n    return {width, deviceType}\n}\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {useForm} from 'react-hook-form'\nimport {useIntl} from 'react-intl'\nimport {isValidEmail} from 'pandora-shared-app/overrides/app/utils/regex'\nimport {Text, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport Input from 'pandora-shared-app/overrides/app/components/input'\nimport {useNotifyMe} from 'pandora-shared-app/overrides/app/hooks'\nimport {useProductDetailsLinkAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-product-details-analytics'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\n\nconst CHAR_MAX_LENGTH = 200\n\nconst NotifyMeForm = ({setIsNotifyMeFormSubmitted, product}) => {\n    const intl = useIntl()\n    const {\n        register,\n        handleSubmit,\n        formState: {errors}\n    } = useForm({\n        mode: 'onChange'\n    })\n    const {submitNotifyMe, notifyMeResponse} = useNotifyMe()\n    const {trackLinkEvent} = useProductDetailsLinkAnalytics()\n\n    useEffect(() => {\n        if (notifyMeResponse) {\n            setIsNotifyMeFormSubmitted(true)\n        }\n    }, [notifyMeResponse])\n\n    const onSubmit = (data) => {\n        trackLinkEvent(product, TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_DETAILS_NOTIFY_ME_SUBMITTED)\n        submitNotifyMe({\n            recipientEmail: data.recipientEmail,\n            productId: product.productId,\n            productSize: product?.variationValues?.size || product?.custom?.size || ''\n        })\n    }\n\n    return (\n        <Box>\n            <form onSubmit={handleSubmit(onSubmit)} id=\"notifyMeForm\" data-testid=\"notifyMeForm\">\n                <Input\n                    id=\"recipientEmail\"\n                    label={intl.formatMessage({\n                        defaultMessage: 'Email',\n                        id: 'product_details.notify.me.email_input'\n                    })}\n                    register={register}\n                    marginBottom={'6'}\n                    rules={{\n                        required: {\n                            value: true,\n                            message: intl.formatMessage({\n                                defaultMessage: 'An email is required',\n                                id: 'product_details.notify.me.email_required_error'\n                            })\n                        },\n                        maxLength: {\n                            value: CHAR_MAX_LENGTH,\n                            message: `${CHAR_MAX_LENGTH} ${intl.formatMessage({\n                                defaultMessage: 'character limit reached',\n                                id: 'product_details.notify.me.email_character_limit_error'\n                            })}`\n                        },\n                        pattern: {\n                            value: isValidEmail,\n                            message: intl.formatMessage({\n                                defaultMessage: 'Please check your formatting',\n                                id: 'product_details.notify.me.email_format_error'\n                            })\n                        }\n                    }}\n                    errors={errors}\n                />\n                <Text textStyle={'bodySm'}>\n                    {intl.formatMessage({\n                        defaultMessage:\n                            'We’ll only use your email to notify you when the product is back in stock',\n                        id: 'product_details.notify.me.info_message'\n                    })}\n                </Text>\n            </form>\n        </Box>\n    )\n}\n\nNotifyMeForm.propTypes = {\n    setIsNotifyMeFormSubmitted: PropTypes.func,\n    product: PropTypes.object\n}\n\nexport default NotifyMeForm\n","export const NotifyMeStyles = {\n    img: {\n        width: '18',\n        height: '18',\n        borderRadius: '50%',\n        backgroundColor: 'black5',\n        backgroundPosition: '50%',\n        backgroundSize: 'cover',\n        backgroundRepeat: 'no-repeat'\n    },\n    itemContainer: {\n        display: 'flex',\n        alignItems: 'center',\n        gap: '4'\n    },\n    successMsg: {\n        color: 'black1'\n    },\n    secondarySuccessMsg: {\n        color: 'black3a'\n    }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, Box, Img} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {NotifyMeStyles} from '../notify-me-styles'\n\nconst NotifyMeSuccess = ({productImg, productName, secondaryProductName}) => {\n    return (\n        <Box {...NotifyMeStyles.itemContainer} data-auto=\"notifyMeSuccessSection\">\n            {productImg && (\n                <Box>\n                    <Img\n                        {...NotifyMeStyles.img}\n                        src={productImg.disBaseLink}\n                        alt={productImg.title}\n                    />\n                </Box>\n            )}\n            <Box>\n                <Box>\n                    <Text\n                        as=\"h2\"\n                        textStyle=\"caption\"\n                        data-auto=\"notifyMeProduct\"\n                        {...NotifyMeStyles.successMsg}\n                    >\n                        {productName}\n                    </Text>\n                    {secondaryProductName && (\n                        <Text\n                            textStyle=\"caption\"\n                            data-auto=\"notifyMeProductDetails\"\n                            {...NotifyMeStyles.secondarySuccessMsg}\n                        >\n                            {secondaryProductName}\n                        </Text>\n                    )}\n                </Box>\n            </Box>\n        </Box>\n    )\n}\n\nNotifyMeSuccess.propTypes = {\n    productImg: PropTypes.string,\n    productName: PropTypes.string,\n    secondaryProductName: PropTypes.string\n}\n\nexport default NotifyMeSuccess\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport NotifyMeForm from './partials/notify-me-form'\nimport NotifyMeSuccess from './partials/notify-me-success'\n\nconst NotifyMe = ({\n    isNotifyMeDrawerOpen,\n    handleDrawerClose,\n    handleDrawerBack,\n    productImg,\n    productName,\n    secondaryProductName,\n    isNotifyMeFormSubmitted,\n    setIsNotifyMeFormSubmitted,\n    product,\n    finalFocusRef,\n    placement\n}) => {\n    const intl = useIntl()\n    return (\n        <FullDrawerSheet\n            isOpen={isNotifyMeDrawerOpen}\n            onClose={handleDrawerClose}\n            handleOnBack={handleDrawerBack}\n            headerText={\n                isNotifyMeFormSubmitted\n                    ? intl.formatMessage({\n                          defaultMessage: 'We’ll email when it’s back',\n                          id: 'product_details.notify.me.success_title'\n                      })\n                    : intl.formatMessage({\n                          defaultMessage: 'Notify Me',\n                          id: 'product_details.notify.me.title'\n                      })\n            }\n            footerContent={\n                !isNotifyMeFormSubmitted ? (\n                    <Button\n                        width=\"full\"\n                        colorScheme=\"dark\"\n                        variant=\"primary\"\n                        type=\"submit\"\n                        form=\"notifyMeForm\"\n                        data-auto=\"notifyMeSubmitBtn\"\n                    >\n                        {intl.formatMessage({\n                            defaultMessage: 'Submit',\n                            id: 'product_details.notify.me.submit_button'\n                        })}\n                    </Button>\n                ) : null\n            }\n            footerHeight={'auto'}\n            isNestedDrawer={handleDrawerBack && !isNotifyMeFormSubmitted}\n            bodyContent={\n                isNotifyMeFormSubmitted ? (\n                    <NotifyMeSuccess\n                        productImg={productImg}\n                        productName={productName}\n                        secondaryProductName={secondaryProductName}\n                    />\n                ) : (\n                    <NotifyMeForm\n                        setIsNotifyMeFormSubmitted={setIsNotifyMeFormSubmitted}\n                        product={product}\n                    />\n                )\n            }\n            finalFocusRef={finalFocusRef}\n            virtualPagePath={'notify-me-pdp'}\n            placement={placement}\n        />\n    )\n}\n\nNotifyMe.propTypes = {\n    isNotifyMeDrawerOpen: PropTypes.bool,\n    handleDrawerClose: PropTypes.func,\n    handleDrawerBack: PropTypes.func,\n    productImg: PropTypes.object,\n    productName: PropTypes.string,\n    setIsNotifyMeFormSubmitted: PropTypes.func,\n    isNotifyMeFormSubmitted: PropTypes.bool,\n    secondaryProductName: PropTypes.string,\n    product: PropTypes.object,\n    finalFocusRef: PropTypes.shape({\n        current: PropTypes.any\n    }),\n    placement: PropTypes.string\n}\n\nexport default NotifyMe\n","import('./bootstrap')\n","import {useMemo} from 'react'\nimport {useCategory as useCategoryFromSdk} from '@salesforce/commerce-sdk-react'\nimport {useVariant} from './use-variant'\nimport {isQueryEnabled} from './helpers/is-query-enabled'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useCustomQuery} from './useCustomQuery'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {selectOptimizedCategoryData} from './helpers/category-query-helpers'\nimport {getDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/**\n * [FIND-4846] Optimized category data selector for cache optimization\n * CHANGE: Added select function to trim non-critical fields from category response\n * REASON: Reduce cache size and hydration payload by excluding unused fields\n * IMPACT: Reduces memory footprint and improves performance\n * RELATED AC: Client-Side Cache Optimization\n */\n\nexport const useCategory = (apiOptions, queryOptions = {}) => {\n    let isDolIntegrationEnabled = useVariant('enable-global-dol-get-category-integration', false)\n    const enableRestrictedFields = useVariant(\n        LD_KEYS.enableCategoryRestrictedFieldsOptimization,\n        false\n    )\n    const enableCategorySkipHydrate = useVariant(LD_KEYS.enableCategorySkipHydrate, false)\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const {\n        parameters: {id: categoryId, levels}\n    } = apiOptions\n\n    const isCategoryIdDefined = !!categoryId && categoryId !== 'undefined'\n\n    /**\n     * [FIND-4846] Apply cache optimization to Salesforce SDK query\n     * CHANGE: Added select option to trim response data when optimization is enabled\n     * REASON: Reduce cached data size for better performance\n     * IMPACT: Smaller cache footprint, fewer re-renders\n     * RELATED AC: Client-Side Cache Optimization\n     */\n    const salesforceResult = useCategoryFromSdk(apiOptions, {\n        ...queryOptions,\n        meta: {\n            ...queryOptions?.meta,\n            displayName: 'useCategory',\n            ...(enableCategorySkipHydrate ? {skipDehydrate: true} : {})\n        },\n        enabled: !isDolIntegrationEnabled && isQueryEnabled(queryOptions) && isCategoryIdDefined,\n        select: (data) => selectOptimizedCategoryData(data, {enableRestrictedFields})\n    })\n\n    const isXEnvironmentHeaderEnabled = useVariant(\n        'enable-plp-x-environment-header-for-category',\n        false\n    )\n\n    // [FIND-6492] DOL Q3 channel migration. Flag ON → drop legacy `source: 'PWA'`\n    // query param and send mandatory channelname ('plp') / channeltype headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = getDolChannelHeaders('plp')\n\n    //DOL\n    const {\n        app: {\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n\n    const apiPath = useMemo(\n        () => `${getCustomApiPaths(proxyPath).CATEGORY}/${categoryId}`,\n        [proxyPath, categoryId]\n    )\n\n    const requestParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            levels\n        }),\n        [locale?.id, levels, isDolQ3MigrationEnabled]\n    )\n\n    /**\n     * [FIND-4846] Apply cache optimization to DOL query\n     * CHANGE: Added select option to trim response data when optimization is enabled\n     * REASON: Reduce cached data size for better performance\n     * IMPACT: Smaller cache footprint, fewer re-renders\n     * RELATED AC: Client-Side Cache Optimization\n     */\n    const dolResult = useCustomQuery(\n        `/categories/${categoryId}?levels=${levels}`,\n        {\n            path: apiPath,\n            queryParams: requestParams,\n            headers: {\n                ...(isXEnvironmentHeaderEnabled\n                    ? {'x-environment': appConfig?.targetEnvironment}\n                    : {}),\n                ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {})\n            }\n        },\n        {\n            ...queryOptions,\n            meta: {\n                ...queryOptions?.meta,\n                displayName: 'useCategory',\n                ...(enableCategorySkipHydrate ? {skipDehydrate: true} : {})\n            },\n            enabled: isDolIntegrationEnabled && isQueryEnabled(queryOptions) && isCategoryIdDefined,\n            select: (data) => selectOptimizedCategoryData(data, {enableRestrictedFields})\n        }\n    )\n\n    return isDolIntegrationEnabled ? dolResult : salesforceResult\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"figma-logo\",\n  \"use\": \"figma-logo-usage\",\n  \"viewBox\": \"0 0 28 40\",\n  \"content\": \"<symbol fill=\\\"none\\\" viewBox=\\\"0 0 28 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"figma-logo\\\">\\n<g clip-path=\\\"url(#figma-logo_a)\\\">\\n    <path d=\\\"m7.34 39.999c3.68 0 6.6667-2.9867 6.6667-6.6667v-6.6667h-6.6667c-3.68 0-6.6667 2.9867-6.6667 6.6667s2.9867 6.6667 6.6667 6.6667z\\\" fill=\\\"#0ACF83\\\" />\\n    <path d=\\\"m0.67334 20.001c0-3.68 2.9867-6.6666 6.6667-6.6666h6.6667v13.333h-6.6667c-3.68 0-6.6667-2.9867-6.6667-6.6667z\\\" fill=\\\"#A259FF\\\" />\\n    <path d=\\\"m0.67383 6.6667c0-3.68 2.9867-6.6667 6.6667-6.6667h6.6667v13.333h-6.6667c-3.68 0-6.6667-2.9866-6.6667-6.6666z\\\" fill=\\\"#F24E1E\\\" />\\n    <path d=\\\"m14.006 0h6.6667c3.68 0 6.6666 2.9867 6.6666 6.6667 0 3.68-2.9866 6.6666-6.6666 6.6666h-6.6667v-13.333z\\\" fill=\\\"#FF7262\\\" />\\n    <path d=\\\"m27.339 20.001c0 3.68-2.9866 6.6667-6.6666 6.6667-3.6801 0-6.6667-2.9867-6.6667-6.6667s2.9866-6.6666 6.6667-6.6666c3.68 0 6.6666 2.9866 6.6666 6.6666z\\\" fill=\\\"#1ABCFE\\\" />\\n</g>\\n<defs>\\n    <clipPath id=\\\"figma-logo_a\\\">\\n        <rect transform=\\\"translate(.66992)\\\" width=\\\"26.672\\\" height=\\\"40\\\" fill=\\\"#fff\\\" />\\n    </clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"mypandora_black\",\n  \"use\": \"mypandora_black-usage\",\n  \"viewBox\": \"0 0 371.9 70.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 371.9 70.1\\\" id=\\\"mypandora_black\\\"><polygon points=\\\"266.3,10.2 267.5,10.2 267.5,10.2 266.5,0.1 266.5,0 266.2,0 266.1,0.1 265.1,10.2 265.1,10.2\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"272,10.9 272.1,10.8 273.8,1.8 273.7,1.7 273.4,1.6 273.4,1.7 269.6,10.3 269.7,10.3\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M270.2 14.8c.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4C268.8 14.2 269.5 14.8 270.2 14.8zM266.3 14.3c.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4C264.9 13.8 265.5 14.3 266.3 14.3z\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"260.6,10.9 263,10.3 263,10.3 259.3,1.7 259.2,1.6 258.9,1.7 258.8,1.8 260.5,10.8\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M261 13.3c0 .8.6 1.4 1.4 1.4.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4C261.6 12 261 12.6 261 13.3zM100.5 17.3h-12l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.4l.1-.1c1.1.1 3.5.2 4.3.2 8.1 0 15.1-4.9 15.1-13.3C115.6 21.9 108.6 17.3 100.5 17.3zM100.1 36.5c-.9 0-3.1-.1-4-.3V24h4.6c4.1 0 7.3 1.6 7.3 5.9C108 34.2 105.2 36.5 100.1 36.5zM138.1 20.6c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L115.4 54c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1c0 0-1.1-1.5-2.4-4.4L138.1 20.6zM127.7 41.6l5.8-14.5h.1l6.3 14.5H127.7zM195.7 17.3 195.7 17.3l-7.2-.1-.1.1c0 0 .3 2.9.3 7.9v20.7h-.1l-22.2-28.6h-7.9l-.1.1c.9 1.9 1.4 3.2 1.4 4.1v29.1c0 5-.3 7.9-.3 7.9l.1.1h7.2l.1-.1c0 0-.3-2.9-.3-7.9V29.4h.1l22.3 29h6.7l.1-.1c0 0-.3-2.9-.3-7.9V25.2C195.4 20.2 195.7 17.3 195.7 17.3zM218 17.3h-13.8l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h4.2c2.8 0 5.9.4 9.4.4 12.6 0 21.6-8.9 21.6-20.9C239.5 25.9 230.7 17.3 218 17.3zM217.5 52c-2 0-3.8-.1-4.9-.4-.6-.2-.8-.4-.8-1.5V24h5.5c8.9 0 14.6 6 14.6 14C231.9 45.9 226.2 52 217.5 52zM266.3 16.7c-11.9 0-21.1 9.2-21.1 21.1 0 12 9.2 21.1 21.1 21.1 12 0 21.1-9.1 21.1-21.1C287.4 25.9 278.3 16.7 266.3 16.7zM266.3 52.2c-7.6 0-13.6-6.2-13.6-14.3 0-8.1 5.9-14.3 13.6-14.3 7.7 0 13.6 6.2 13.6 14.3C280 45.9 274 52.2 266.3 52.2zM316.8 44.5c-1-1.6-2.5-2.9-4.1-3.4V41c4.3-.9 8.3-5.9 8.3-10.9 0-6.8-5.2-12.8-13.3-12.8h-13.2l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.9c3.9 0 5.5.8 6.9 3l3.4 5.4c2.8 4.5 3.9 7.3 3.9 7.3l.1.1h9.4v-.1c0 0-2.4-2.9-5.1-7.3L316.8 44.5zM305.9 36.1c-.9 0-2.6 0-3.7-.2V24h4.5c4.4 0 6.8 2.9 6.8 6.2C313.5 33.3 311.1 36.1 305.9 36.1zM369.6 54l-14.6-33.4c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L332.2 54c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1C371.9 58.4 370.9 56.9 369.6 54zM344.5 41.6l5.8-14.5h.1l6.3 14.5H344.5z\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M.7 53V22.5c0-2.6-.1-4.2-.2-5.3h3.8L21 54.6H21l16.6-37.5h3.8c-.2 1.1-.2 2.7-.2 5.3V53c0 2.6.1 4.2.2 5.4h-3.1c.2-1.1.2-2.8.2-5.4V21.2h-.1L22 58.3h-2.1L3.3 21.1H3.2V53c0 2.6.1 4.2.2 5.4H.5C.7 57.2.7 55.6.7 53M54.6 70c.1-.2.9-1.1 1.5-2.5l4.5-10.7L50 32.1c-.8-1.8-1.1-2.5-1.6-3.1v-.1h3.4c-.1.2-.1.4-.1.5 0 .4.2 1.2.6 2.2l9.5 22.8h.1l9.3-22.8c.5-1.2.7-2.2.6-2.7H75V29c-.5.6-.9 1.4-1.6 3.1L58.3 68c-.2.4-.3.9-.3 1.3 0 .3.1.6.2.8v.1L54.6 70 54.6 70z\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd;fill:#27251F\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"important-info\",\n  \"use\": \"important-info-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"important-info\\\">\\n<g id=\\\"important-info_Info\\\">\\n<g id=\\\"important-info_icon\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0002 3.27429C12.0002 4.37886 11.1048 5.27429 10.0002 5.27429C8.89567 5.27429 8.00024 4.37886 8.00024 3.27429C8.00024 2.16972 8.89567 1.27429 10.0002 1.27429C11.1048 1.27429 12.0002 2.16972 12.0002 3.27429ZM11.0002 3.27429C11.0002 3.82658 10.5525 4.27429 10.0002 4.27429C9.44796 4.27429 9.00024 3.82658 9.00024 3.27429C9.00024 2.72201 9.44796 2.27429 10.0002 2.27429C10.5525 2.27429 11.0002 2.72201 11.0002 3.27429Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M10.1724 7.66638C10.7246 7.66638 11.1724 8.1141 11.1724 8.66638L11.1724 18.0002H16.6724V19.0002H4.67236V18.0002H10.1724L10.1724 8.66638H6.80085V7.66638H10.1724Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Utility to transform an image URL to a new format with specific parameters.\n * @param {Object} params - The transformation parameters.\n * @param {string} params.url - The original image URL.\n * @param {string} [params.currentFormat='png'] - The current format of the image.\n * @param {string} [params.targetFormat='jpg'] - The target format for the image.\n * @param {string} [params.q='80'] - The quality parameter.\n * @param {string} [params.sw] - The width of the image.\n * @param {string} [params.sfrm='png'] - The source format parameter.\n * @param {string} [params.bgcolor='F7F7F7'] - The background color parameter.\n * @param {boolean} [params.useBracketSyntax=false] - Wrap sw={width} in brackets for Salesforce DynamicImage compatibility.\n * @returns {string} - The transformed image URL.\n */\nexport const transformImageUrl = ({\n    url,\n    currentFormat = 'png',\n    targetFormat = 'jpg',\n    q = '80',\n    sw,\n    sfrm = 'png',\n    bgcolor = 'F7F7F7',\n    useBracketSyntax = true\n}) => {\n    try {\n        let imageUrl = new URL(url)\n        const params = {q, sfrm, bgcolor}\n\n        if (imageUrl.pathname.includes('.jpg')) {\n            params.sfrm = 'jpg'\n        }\n\n        imageUrl.pathname = imageUrl.pathname\n            .replace(/\\?q=\\d+/, '')\n            .replace(`.${currentFormat}`, `.${targetFormat}`)\n\n        Object.entries(params).forEach(([key, value]) => {\n            imageUrl.searchParams.append(key, value)\n        })\n\n        if (sw) {\n            imageUrl.searchParams.append('sw', sw)\n            return imageUrl.toString()\n        }\n\n        // When no sw provided, add {width} placeholder\n        if (useBracketSyntax) {\n            // Bracket syntax for Salesforce DynamicImage - brackets are stripped for fallback src\n            return `${imageUrl.toString()}[&sw={width}]`\n        }\n        // Plain syntax for custom DynamicImage components\n        return `${imageUrl.toString()}&sw={width}`\n    } catch (e) {\n        return url\n    }\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-ca\",\n  \"use\": \"flag-ca-usage\",\n  \"viewBox\": \"0 0 21 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"flag-ca\\\">\\n<path d=\\\"M5.43372 4.1665H15.5542V18.3332H5.43372V4.1665Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M0.375 4.1665H5.43383V18.3332H0.375V4.1665ZM15.5543 4.1665H20.6131V18.3332H15.5571L15.5543 4.1665ZM6.95064 11.0119L6.55397 11.1447L8.38364 12.7357C8.52331 13.1424 8.33616 13.2614 8.21604 13.4772L10.1993 13.2282L10.1519 15.2065L10.5653 15.1955L10.4731 13.231L12.462 13.4661C12.3391 13.2088 12.2301 13.0732 12.3419 12.6637L14.1688 11.1558L13.8503 11.0396C13.5877 10.8403 13.962 10.0794 14.0179 9.59798C14.0179 9.59798 12.9536 9.96045 12.8838 9.76953L12.61 9.25212L11.6407 10.3091C11.5346 10.334 11.4899 10.2925 11.4648 10.2039L11.9117 7.99593L11.2022 8.3916C11.1435 8.41927 11.0849 8.39714 11.0457 8.32796L10.3614 6.97217L9.65743 8.38053C9.60435 8.43034 9.55128 8.43587 9.50659 8.40267L8.83059 8.02637L9.23842 10.215C9.2049 10.3035 9.12669 10.3257 9.0373 10.2786L8.1071 9.23551C7.98698 9.4292 7.90597 9.74186 7.74396 9.8138C7.58473 9.88021 7.04561 9.68099 6.68526 9.60352C6.80817 10.0435 7.19366 10.7739 6.95064 11.0146V11.0119Z\\\" fill=\\\"#FF0000\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20.8333 0H0V20H20.8333V0ZM10.4167 17.9167C14.3287 17.9167 17.5 14.7453 17.5 10.8333C17.5 6.92132 14.3287 3.75 10.4167 3.75C6.50465 3.75 3.33333 6.92132 3.33333 10.8333C3.33333 14.7453 6.50465 17.9167 10.4167 17.9167Z\\\" fill=\\\"white\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"starwars_x_pandora_collectors_edition\",\n  \"use\": \"starwars_x_pandora_collectors_edition-usage\",\n  \"viewBox\": \"0 0 200.23 50.97\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 200.23 50.97\\\" id=\\\"starwars_x_pandora_collectors_edition\\\"><g id=\\\"starwars_x_pandora_collectors_edition_Layer_2\\\" data-name=\\\"Layer 2\\\"><g id=\\\"starwars_x_pandora_collectors_edition_Layer_1-2\\\" data-name=\\\"Layer 1\\\"><polygon points=\\\"102.03 10.62 97 15.77 91.96 10.62 90.92 11.65 95.96 16.81 90.92 21.96 91.96 23 97 17.84 102.03 23 103.07 21.96 98.01 16.81 103.07 11.65 102.03 10.62\\\" fill=\\\"#fff\\\" /><polygon points=\\\"168.56 8.5 168.91 8.5 168.93 8.48 168.63 5.45 168.61 5.43 168.52 5.43 168.51 5.45 168.19 8.48 168.21 8.5 168.56 8.5\\\" fill=\\\"#fff\\\" /><polygon points=\\\"170.27 8.69 170.29 8.67 170.8 5.96 170.78 5.94 170.69 5.92 170.68 5.94 169.55 8.51 169.56 8.53 170.27 8.69\\\" fill=\\\"#fff\\\" /><path d=\\\"M169.74 9.85a.41.41 0 0 0 .41-.42.42.42 0 0 0-.41-.41.42.42 0 1 0 0 .83ZM168.56 9.73a.42.42 0 1 0-.42-.42A.41.41 0 0 0 168.56 9.73Z\\\" fill=\\\"#fff\\\" /><polygon points=\\\"166.85 8.69 167.55 8.53 167.57 8.51 166.44 5.94 166.43 5.92 166.34 5.94 166.32 5.96 166.83 8.67 166.85 8.69\\\" fill=\\\"#fff\\\" /><path d=\\\"M167 9.43a.42.42 0 0 0 .43.42.42.42 0 0 0 0-.83A.42.42 0 0 0 167 9.43ZM118.84 10.61h-3.6v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.33c.32 0 1 .07 1.29.07 2.43 0 4.51-1.48 4.51-4S121.26 10.61 118.84 10.61Zm-.11 5.77a9.53 9.53 0 0 1-1.19-.09V12.64h1.37c1.22 0 2.19.49 2.19 1.78S120.25 16.38 118.73 16.38ZM130.1 11.62a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.16 10a6.6 6.6 0 0 1-.71 1.31H125a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.43 1.12.43 1.12h2.45a9.3 9.3 0 0 1-.71-1.31ZM127 17.91l1.75-4.35h0l1.89 4.35ZM147.38 10.63l0 0h-2.15l0 0s.09.86.09 2.36V19.2h0l-6.66-8.59h-2.37v0a3.39 3.39 0 0 1 .4 1.22v8.72c0 1.5-.09 2.37-.09 2.37h2.19s-.09-.87-.09-2.37V14.24h0l6.7 8.71h2s-.09-.87-.09-2.37V13C147.29 11.49 147.38 10.63 147.38 10.63ZM154.08 10.61H150l0 0s.09.86.09 2.36v7.58c0 1.5-.09 2.37-.09 2.37h1.29c.83 0 1.76.11 2.82.11a6.16 6.16 0 0 0 6.47-6.26A6.05 6.05 0 0 0 154.08 10.61ZM153.94 21a7.2 7.2 0 0 1-1.47-.1c-.19-.06-.23-.13-.23-.46V12.62h1.64a4.09 4.09 0 0 1 4.37 4.2A4.1 4.1 0 0 1 153.94 21ZM168.56 10.44a6.24 6.24 0 0 0-6.33 6.32 6.33 6.33 0 1 0 12.66 0A6.21 6.21 0 0 0 168.56 10.44Zm0 10.63a4.13 4.13 0 0 1-4.07-4.31 4.09 4.09 0 1 1 8.16 0A4.14 4.14 0 0 1 168.56 21.07ZM183.69 18.76a2.23 2.23 0 0 0-1.22-1v0A3.53 3.53 0 0 0 185 14.45a3.83 3.83 0 0 0-4-3.84H177v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.21c1.18 0 1.63.23 2.06.9l1 1.62a16.15 16.15 0 0 1 1.18 2.21h2.84a22.16 22.16 0 0 1-1.51-2.21Zm-3.26-2.51a6.13 6.13 0 0 1-1.11-.07V12.62h1.35a1.85 1.85 0 0 1 2 1.85C182.7 15.41 182 16.25 180.43 16.25ZM199.52 21.63l-4.39-10a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.17 10a6.32 6.32 0 0 1-.7 1.31h2.45a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.42 1.12.42 1.12h2.46A9.3 9.3 0 0 1 199.52 21.63ZM192 17.91l1.74-4.35h0l1.89 4.35ZM36.87 17.78a.2.2 0 0 0-.18-.15H27.87a.2.2 0 0 0-.18.15S22.81 33.87 22.81 33.9a.15.15 0 0 0 .15.15h5.82a.16.16 0 0 0 .1-.11l.68-2.17a.15.15 0 0 1 .13-.1h5.38a.15.15 0 0 1 .13.1l.69 2.17a.17.17 0 0 0 .09.11h5.74a.15.15 0 0 0 .15-.14S36.87 17.78 36.87 17.78Zm-3.24 9.43h-2.4c-.08 0-.14-.1-.14-.19s1.28-4.15 1.28-4.15c0-.16.05-.16.06-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S33.71 27.21 33.63 27.21ZM70.67 23h8.11V17.63H68.35a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.85 5.85 0 0 0 1.11 3.26c.57.71 2 2.18 2 2.18a.22.22 0 0 1 0 .14.19.19 0 0 1-.2.19h-8c-1 0-1-.4-1-.45s.12-.17.12-.17a8.67 8.67 0 0 0 1.12-.76A4.69 4.69 0 0 0 60.19 23a4.91 4.91 0 0 0-1.77-3.93 6.38 6.38 0 0 0-3.69-1.46H43.26V34a.1.1 0 0 0 .1.1h6.38V29.47c0-.08.13 0 .13 0l3.32 3.34a5.08 5.08 0 0 0 3.14 1.24H68.9a5 5 0 0 0 3.67-1.5A5.09 5.09 0 0 0 74 29a5 5 0 0 0-1.32-3.53c-.35-.43-1.75-1.91-2-2.22a.14.14 0 0 1-.06-.12A.16.16 0 0 1 70.67 23Zm-17.18 1.4H49.91a.13.13 0 0 1-.1-.13V22.41a.15.15 0 0 1 .1-.14h3.28a1.08 1.08 0 0 1 1.16 1.08A1 1 0 0 1 53.49 24.35ZM19.9 34.05S20 34 20 34l4.94-16.24a.09.09 0 0 0-.06-.1H18.77s-.05 0-.06.06l-1.26 4.22s0 .06-.06.06-.05 0-.06-.06L16 17.69a.06.06 0 0 0-.05-.06H9.23a.08.08 0 0 0 0 0L8 21.91S8 22 8 22a.06.06 0 0 1-.06 0L6.64 17.68s0-.05 0-.05H.1a.09.09 0 0 0-.1.1v0S5 34 5 34s0 .08.08.08h5.39s.07 0 .08-.08l1.87-6h0s0-.06.06-.06a.06.06 0 0 1 .06.05L14.39 34a.07.07 0 0 0 .07.06ZM15.21 0a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.82 5.82 0 0 0 1.12 3.26c.57.71 2 2.19 2 2.19a.18.18 0 0 1 .06.14.19.19 0 0 1-.2.19H0v5.8H15.76a5 5 0 0 0 5.08-5.07 5.09 5.09 0 0 0-1.31-3.54c-.36-.43-1.76-1.9-2.05-2.21a.14.14 0 0 1-.06-.12.16.16 0 0 1 .11-.16h7.59v11.1H31V5.35h7.09V0ZM70.85 10.61c-1 0-1-.4-1-.45s.12-.17.12-.17A9.11 9.11 0 0 0 71 9.23a4.69 4.69 0 0 0 1.78-3.84 4.91 4.91 0 0 0-1.77-3.93A6.38 6.38 0 0 0 67.36 0H55.89V16.32a.1.1 0 0 0 .1.1h6.39V11.84c0-.08.12 0 .12 0l3.33 3.34A5.06 5.06 0 0 0 69 16.42h9.82V10.61ZM66.13 6.72H62.54a.13.13 0 0 1-.09-.13V4.78a.14.14 0 0 1 .09-.14h3.29A1.07 1.07 0 0 1 67 5.72 1 1 0 0 1 66.13 6.72ZM49.81.14A.18.18 0 0 0 49.63 0H40.81a.18.18 0 0 0-.18.14s-4.87 16.1-4.87 16.13a.15.15 0 0 0 .14.15h5.83a.16.16 0 0 0 .09-.11l.68-2.18a.16.16 0 0 1 .13-.09H48a.15.15 0 0 1 .13.1l.7 2.17a.14.14 0 0 0 .09.11h5.74a.15.15 0 0 0 .14-.15S49.81.14 49.81.14ZM46.58 9.58h-2.4c-.09 0-.15-.1-.15-.19s1.28-4.15 1.28-4.15c0-.16.06-.16.07-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S46.67 9.58 46.58 9.58Z\\\" fill=\\\"#fff\\\" /><polygon points=\\\"74.01 33.21 74.01 33.32 74.29 33.32 74.29 34.05 74.4 34.05 74.4 33.32 74.68 33.32 74.68 33.21 74.01 33.21\\\" fill=\\\"#fff\\\" /><polygon points=\\\"74.77 33.21 74.77 34.05 74.88 34.05 74.88 33.38 75.1 34.05 75.22 34.05 75.44 33.38 75.44 34.05 75.55 34.05 75.55 33.21 75.4 33.21 75.16 33.9 74.92 33.21 74.77 33.21\\\" fill=\\\"#fff\\\" /><path d=\\\"M37.88 48.73a2.24 2.24 0 0 1 2.39-2.23 2.79 2.79 0 0 1 1.39.33V48h0a1.7 1.7 0 0 0-1.37-.67 1.4 1.4 0 1 0 0 2.8 1.71 1.71 0 0 0 1.37-.66h0v1.16a2.7 2.7 0 0 1-1.39.34A2.25 2.25 0 0 1 37.88 48.73ZM45.33 48.73A2.25 2.25 0 1 1 47.58 51 2.21 2.21 0 0 1 45.33 48.73Zm3.58 0a1.33 1.33 0 1 0-1.33 1.4A1.35 1.35 0 0 0 48.91 48.73ZM53.63 50V47.47c0-.38 0-.73 0-.91h1c0 .18 0 .53 0 .91v2.61h1.34c.38 0 .62 0 .72 0l0 .87h-3C53.61 50.72 53.63 50.35 53.63 50ZM60.25 50V47.47c0-.38 0-.73 0-.91h1c0 .18 0 .53 0 .91v2.46a.76.76 0 0 0 0 .15h1.34c.37 0 .62 0 .72 0l0 .87h-3C60.23 50.72 60.25 50.35 60.25 50ZM66.87 50V47.47c0-.38 0-.73 0-.91h2.94l0 .86-.83 0H67.79a.45.45 0 0 0 0 .11v.81h.91a7.77 7.77 0 0 0 .84 0v.89a5.76 5.76 0 0 0-.83 0h-.92V50a.66.66 0 0 0 0 .13H69a8 8 0 0 0 .84 0l0 .87h-3C66.85 50.72 66.87 50.35 66.87 50ZM73.47 48.73a2.24 2.24 0 0 1 2.39-2.23 2.79 2.79 0 0 1 1.39.33V48h0a1.7 1.7 0 0 0-1.37-.67 1.4 1.4 0 1 0 0 2.8 1.71 1.71 0 0 0 1.37-.66h0v1.16a2.7 2.7 0 0 1-1.39.34A2.25 2.25 0 0 1 73.47 48.73ZM82.11 50V47.39h-.47l-.86 0v-.86h3.58v.86l-.87 0H83V50c0 .35 0 .69 0 .88h-1C82.1 50.73 82.11 50.39 82.11 50ZM87.8 48.73A2.26 2.26 0 1 1 90.06 51 2.21 2.21 0 0 1 87.8 48.73Zm3.58 0a1.33 1.33 0 1 0-1.32 1.4A1.34 1.34 0 0 0 91.38 48.73ZM96.11 50.13V47.35c0-.25 0-.51 0-.79h1.51A1.35 1.35 0 0 1 99 47.92a1.29 1.29 0 0 1-.84 1.2h0a.79.79 0 0 1 .4.33l.38.64a8.76 8.76 0 0 0 .58.82H98.35a7.71 7.71 0 0 0-.41-.81l-.32-.52A.6.6 0 0 0 97 49.3h0v.83c0 .24 0 .51 0 .79h-1C96.08 50.64 96.11 50.37 96.11 50.13Zm2-2.21c0-.3-.22-.53-.63-.53H97v1.09a1.88 1.88 0 0 0 .41 0C97.88 48.5 98.08 48.27 98.08 47.92ZM103.56 46.52A.44.44 0 0 1 104 47a2.6 2.6 0 0 1-.23.68l-.31.71H103L103 47A.49.49 0 0 1 103.56 46.52ZM107.67 50.69V49.45h0a1.77 1.77 0 0 0 1.37.68c.43 0 .64-.2.64-.45s-.17-.36-.6-.54l-.57-.22a1.18 1.18 0 0 1-.9-1.18c0-.79.7-1.24 1.51-1.24a3.36 3.36 0 0 1 1.23.23V48h0a1.55 1.55 0 0 0-1.21-.61c-.35 0-.59.15-.59.36s.13.3.57.48l.57.23a1.19 1.19 0 0 1 .92 1.23c0 .82-.66 1.33-1.63 1.33A3 3 0 0 1 107.67 50.69ZM119 50V47.47c0-.38 0-.73 0-.91h2.94l0 .86-.83 0H120a.45.45 0 0 0 0 .11v.81h.91a7.77 7.77 0 0 0 .84 0v.89a5.76 5.76 0 0 0-.83 0h-.92V50a.66.66 0 0 0 0 .13h1.21a8 8 0 0 0 .84 0l0 .87h-3C119 50.72 119 50.35 119 50ZM126.29 50.92h-.48c0-.2 0-.57 0-.91V47.47c0-.38 0-.73 0-.91h1.54a2.12 2.12 0 0 1 2.27 2.18A2.17 2.17 0 0 1 127.34 51C126.94 51 126.6 50.92 126.29 50.92Zm2.4-2.16a1.32 1.32 0 0 0-1.42-1.37h-.51a1.67 1.67 0 0 0 0 .19v2.33c0 .13 0 .15.08.17a1.44 1.44 0 0 0 .47 0A1.32 1.32 0 0 0 128.69 48.76ZM133.42 50V47.47c0-.38 0-.73 0-.91h1c0 .18 0 .53 0 .91V50c0 .34 0 .71 0 .91h-1C133.4 50.72 133.42 50.35 133.42 50ZM139.33 50V47.39h-.47l-.87 0v-.86h3.58v.86l-.86 0h-.47V50c0 .35 0 .69 0 .88h-1C139.31 50.73 139.33 50.39 139.33 50ZM145.23 50V47.47c0-.38 0-.73 0-.91h1c0 .18 0 .53 0 .91V50c0 .34 0 .71 0 .91h-1C145.21 50.72 145.23 50.35 145.23 50ZM149.94 48.73A2.26 2.26 0 1 1 152.19 51 2.21 2.21 0 0 1 149.94 48.73Zm3.58 0a1.33 1.33 0 1 0-1.33 1.4A1.35 1.35 0 0 0 153.52 48.73ZM158.26 50V47a1.57 1.57 0 0 0-.16-.47h1l2.25 2.81h0v-1.9c0-.29 0-.6 0-.91h.89c0 .31 0 .62 0 .91V50c0 .28 0 .6 0 .91h-.82l-2.26-2.87h0v2a8 8 0 0 0 0 .91h-.89C158.24 50.61 158.26 50.29 158.26 50Z\\\" fill=\\\"#fff\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"clearpay_mint\",\n  \"use\": \"clearpay_mint-usage\",\n  \"viewBox\": \"0 0 1581.987 294.733\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1581.987 294.733\\\" id=\\\"clearpay_mint\\\"><g transform=\\\"matrix(1.3333333,0,0,-1.3333333,0,294.73333)\\\" id=\\\"clearpay_mint_g10\\\"><g transform=\\\"scale(0.1)\\\" id=\\\"clearpay_mint_g12\\\"><path id=\\\"clearpay_mint_path14\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 9421.43,1697.36 8610.74,24.2383 H 8274.38 L 8577.25,649.449 8101.04,1697.36 h 345.05 l 305.94,-701.739 334.27,701.739 h 335.13\\\" /><path id=\\\"clearpay_mint_path16\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 5394.89,24.2383 V 1697.36 h 292.28 v -154.44 c 87.92,109.29 218.62,175.83 375.44,175.83 320.79,0 572.67,-263.77 572.67,-613.08 0,-349.291 -256.62,-615.44 -579.79,-615.44 -149.7,0 -273.27,59.411 -358.82,159.2 V 24.2383 Z M 6335.87,1103.31 c 0,192.46 -144.95,339.81 -323.15,339.81 -178.22,0 -323.18,-142.6 -323.18,-339.81 0,-194.861 144.96,-339.822 323.18,-339.822 178.2,0 323.15,147.344 323.15,339.822\\\" /><path id=\\\"clearpay_mint_path18\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 7690.83,509.25 V 663.699 C 7602.91,556.762 7472.21,490.23 7315.39,490.23 c -325.54,0 -572.67,261.391 -572.67,613.08 0,349.29 256.62,615.44 579.79,615.44 152.07,0 280.4,-66.55 368.32,-171.1 v 149.71 h 292.28 V 509.25 Z m -2.39,594.06 c 0,199.58 -144.92,339.79 -323.16,339.79 -178.2,0 -323.17,-142.58 -323.17,-339.79 0,-194.849 144.97,-339.81 323.17,-339.81 178.24,0 323.16,140.191 323.16,339.81\\\" /><path id=\\\"clearpay_mint_path20\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 4868.19,1580.92 c 0,0 74.36,137.83 256.62,137.83 77.93,0 128.34,-26.82 128.34,-26.82 v -303.05 c 0,0 -109.97,67.91 -210.93,54.21 -100.95,-13.68 -164.85,-106.38 -164.53,-230.47 V 509.25 h -301.77 v 1188.11 h 292.27 v -116.44\\\" /><path id=\\\"clearpay_mint_path22\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 11689.9,1764.37 -345.7,198.31 -350.5,201.11 c -232.3,133.3 -521.9,-34.42 -521.9,-302.28 v -45.14 c 0,-24.7 13.2,-47.51 34.6,-59.8 l 162.6,-93.3 c 45.1,-25.89 101.4,6.68 101.4,58.69 v 106.92 c 0,52.93 57.2,86.07 103.1,59.73 l 320.4,-183.81 319.4,-183.25 c 46.1,-26.48 46.1,-93.02 0,-119.48 L 11193.9,1218.81 10873.5,1035 c -45.9,-26.34 -103.1,6.8 -103.1,59.74 v 53.11 c 0,267.86 -289.6,435.58 -521.9,302.28 l -350.57,-201.12 -345.62,-198.3 c -233.43,-133.929 -233.43,-470.628 0,-604.562 L 9897.93,247.852 10248.5,46.7383 c 232.3,-133.3086 521.9,34.4219 521.9,302.2737 v 45.25 c 0,24.699 -13.2,47.508 -34.6,59.808 l -162.7,93.301 c -45.1,25.891 -101.3,-6.68 -101.3,-58.699 V 381.66 c 0,-52.941 -57.3,-86.09 -103.2,-59.738 l -320.3,183.808 -319.43,183.25 c -46.13,26.469 -46.13,93.008 0,119.481 l 319.43,183.258 320.3,183.811 c 45.9,26.34 103.2,-6.8 103.2,-59.74 v -53.11 c 0,-267.86 289.6,-435.578 521.9,-302.282 l 350.5,201.114 345.7,198.308 c 233.4,133.92 233.4,470.63 0,604.55\\\" /><path id=\\\"clearpay_mint_path24\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 1217.98,951.969 C 1153.88,678.922 918.828,491.352 614.922,491.352 263.535,491.352 0,754.91 0,1103.91 c 0,349.02 268.289,614.93 619.68,614.93 296.777,0 529.46,-187.56 595.93,-455.85 H 906.965 c -54.617,106.84 -163.824,178.06 -284.914,178.06 -175.699,0 -322.895,-144.82 -322.895,-337.14 0,-192.301 147.196,-337.148 322.895,-337.148 125.832,0 235.043,71.238 287.285,185.207 h 308.644\\\" /><path id=\\\"clearpay_mint_path26\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"M 1357.25,510.352 V 2185.91 H 1656.4 V 510.352 h -299.15\\\" /><path id=\\\"clearpay_mint_path28\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 2701.56,1210.75 c -21.37,154.32 -147.2,246.92 -294.41,246.92 -147.19,0 -268.28,-90.22 -299.15,-246.92 z m -595.94,-185.2 c 21.37,-175.671 147.21,-275.409 306.28,-275.409 125.84,0 223.18,59.371 280.16,154.339 h 306.28 c -71.23,-251.671 -296.78,-413.128 -593.56,-413.128 -358.51,0 -610.18,251.679 -610.18,610.188 0,358.51 265.91,617.3 617.3,617.3 353.76,0 610.19,-261.17 610.19,-617.3 0,-26.12 -2.38,-52.24 -7.13,-75.99 h -909.34\\\" /><path id=\\\"clearpay_mint_path30\\\" style=\\\"fill:#bce7d1;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" d=\\\"m 4086.02,1103.91 c 0,199.44 -144.83,339.52 -322.9,339.52 -178.07,0 -322.89,-142.46 -322.89,-339.52 0,-194.68 144.82,-339.512 322.89,-339.512 178.07,0 322.9,140.082 322.9,339.512 z m 2.37,-593.558 V 664.68 c -87.85,-106.828 -218.43,-173.328 -375.12,-173.328 -325.28,0 -572.2,261.179 -572.2,612.558 0,349.02 256.42,614.93 579.32,614.93 151.94,0 280.15,-66.48 368,-170.95 v 149.58 h 292.03 V 510.352 h -292.03\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"mypandora_white\",\n  \"use\": \"mypandora_white-usage\",\n  \"viewBox\": \"0 0 371.4 70.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 371.4 70.1\\\" id=\\\"mypandora_white\\\"><polygon points=\\\"265.8,10.2 267,10.2 267.1,10.2 266.1,0.1 266,0 265.7,0 265.6,0.1 264.6,10.2 264.6,10.2\\\" style=\\\"fill:#FEFEFE\\\" /><polygon points=\\\"271.5,10.9 271.6,10.8 273.3,1.8 273.2,1.7 272.9,1.6 272.9,1.7 269.1,10.3 269.2,10.3\\\" style=\\\"fill:#FEFEFE\\\" /><path d=\\\"M269.8 14.8c.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4C268.3 14.2 269 14.8 269.8 14.8zM265.8 14.3c.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4C264.4 13.8 265.1 14.3 265.8 14.3z\\\" style=\\\"fill:#FEFEFE\\\" /><polygon points=\\\"260.1,10.9 262.5,10.3 262.5,10.3 258.8,1.7 258.7,1.6 258.4,1.7 258.3,1.8 260.1,10.8\\\" style=\\\"fill:#FEFEFE\\\" /><path d=\\\"M260.5 13.3c0 .8.6 1.4 1.4 1.4.7 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4C261.1 12 260.5 12.6 260.5 13.3zM100 17.3H88L88 17.3c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.4l.1-.1c1.1.1 3.5.2 4.3.2 8.1 0 15.1-4.9 15.1-13.3C115.1 21.9 108.1 17.3 100 17.3zM99.7 36.5c-.9 0-3.1-.1-4-.3V24h4.6c4.1 0 7.3 1.6 7.3 5.9C107.5 34.2 104.7 36.5 99.7 36.5zM137.6 20.6c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L114.9 54c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1c0 0-1.1-1.5-2.4-4.4L137.6 20.6zM127.2 41.6l5.8-14.5h.1l6.3 14.5H127.2zM195.2 17.3 195.2 17.3l-7.2-.1-.1.1c0 0 .3 2.9.3 7.9v20.7h-.1l-22.2-28.6H158l-.1.1c.9 1.9 1.4 3.2 1.4 4.1v29.1c0 5-.3 7.9-.3 7.9l.1.1h7.2l.1-.1c0 0-.3-2.9-.3-7.9V29.4h.1l22.3 29h6.7l.1-.1c0 0-.3-2.9-.3-7.9V25.2C194.9 20.2 195.2 17.3 195.2 17.3zM217.5 17.3h-13.8l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h4.2c2.8 0 5.9.4 9.4.4 12.6 0 21.6-8.9 21.6-20.9C239 25.9 230.2 17.3 217.5 17.3zM217 52c-2 0-3.8-.1-4.9-.4-.6-.2-.8-.4-.8-1.5V24h5.5c8.9 0 14.6 6 14.6 14C231.5 45.9 225.7 52 217 52zM265.8 16.7c-11.9 0-21.1 9.2-21.1 21.1 0 12 9.2 21.1 21.1 21.1 12 0 21.1-9.1 21.1-21.1C286.9 25.9 277.8 16.7 265.8 16.7zM265.8 52.2c-7.6 0-13.6-6.2-13.6-14.3 0-8.1 5.9-14.3 13.6-14.3 7.7 0 13.6 6.2 13.6 14.3C279.5 45.9 273.5 52.2 265.8 52.2zM316.3 44.5c-1-1.6-2.5-2.9-4.1-3.4V41c4.3-.9 8.3-5.9 8.3-10.9 0-6.8-5.2-12.8-13.3-12.8H294l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.9c3.9 0 5.5.8 6.9 3l3.4 5.4c2.8 4.5 3.9 7.3 3.9 7.3l.1.1h9.4v-.1c0 0-2.4-2.9-5.1-7.3L316.3 44.5zM305.4 36.1c-.9 0-2.6 0-3.7-.2V24h4.5c4.4 0 6.8 2.9 6.8 6.2C313 33.3 310.6 36.1 305.4 36.1zM369.1 54l-14.6-33.4c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L331.7 54c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1C371.4 58.4 370.4 56.9 369.1 54zM344 41.6l5.8-14.5h.1l6.3 14.5H344z\\\" style=\\\"fill:#FEFEFE\\\" /><path d=\\\"M.2 53V22.5c0-2.6-.1-4.2-.2-5.3h3.8l16.6 37.5h.1l16.6-37.5H41c-.2 1.1-.2 2.7-.2 5.3V53c0 2.6.1 4.2.2 5.4h-3.1c.2-1.1.2-2.8.2-5.4V21.2H38L21.5 58.3h-2.1L2.8 21.1H2.7V53c0 2.6.1 4.2.2 5.4H0C.2 57.2.2 55.6.2 53M54.1 70c.1-.2.9-1.1 1.5-2.5l4.5-10.7L49.5 32.1c-.8-1.8-1.1-2.5-1.6-3.1v-.1h3.4c-.1.2-.1.4-.1.5 0 .4.2 1.2.6 2.2l9.5 22.8h.1l9.3-22.8c.5-1.2.7-2.2.6-2.7h3.3V29c-.5.6-.9 1.4-1.6 3.1L57.9 68c-.2.4-.3.9-.3 1.3 0 .3.1.6.2.8v.1L54.1 70 54.1 70z\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd;fill:#FEFEFE\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"account\",\n  \"use\": \"account-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"account\\\">\\n<g clip-path=\\\"url(#account_clip0_2707_14256)\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.5 5.5C14.5 7.98528 12.4853 10 10 10C7.51472 10 5.5 7.98528 5.5 5.5C5.5 3.01472 7.51472 1 10 1C12.4853 1 14.5 3.01472 14.5 5.5ZM15.5 5.5C15.5 8.53757 13.0376 11 10 11C6.96243 11 4.5 8.53757 4.5 5.5C4.5 2.46243 6.96243 0 10 0C13.0376 0 15.5 2.46243 15.5 5.5ZM19 17C19 15.3431 17.6569 14 16 14H4C2.34315 14 1 15.3431 1 17V18V19V19.9C1 19.9552 0.955228 20 0.9 20H0.1C0.0447715 20 0 19.9552 0 19.9V17C0 14.7909 1.79086 13 4 13H16C18.2091 13 20 14.7909 20 17V19.9C20 19.9552 19.9552 20 19.9 20H19.1C19.0448 20 19 19.9552 19 19.9V19V18V17Z\\\" fill=\\\"#27251F\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"account_clip0_2707_14256\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {defineMessage} from 'react-intl'\nimport {createIconComponent} from './utils/icon-factory'\n\n// Our own SVG imports. These will be extracted to a single sprite sheet by the\n// svg-sprite-loader webpack plugin at build time and injected in the <body> tag\n// during SSR.\n// NOTE: Another solution would be to use `require-context.macro` package to accomplish\n// importing icon svg's.\nimport '@salesforce/retail-react-app/app/assets/svg/alert.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/account.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/basket.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/check.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/check-circle.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-down.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-left.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-right.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-up.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/dashboard.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/figma-logo.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/filter.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/file.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-ca.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-us.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-gb.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-fr.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-it.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-cn.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/flag-jp.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/github-logo.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/hamburger.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/info.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/social-facebook.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/social-instagram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/grid.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/social-twitter.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/social-TikTok.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/social-youtube.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/store.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/like.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/lock.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/plug.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/plus.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/receipt.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/search.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/signout.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/user.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/visibility.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/visibility-off.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/heart.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/heart-solid.svg'\n// Import your SVGs for static icons\n// Preferred method due to performance (spritemap) and maintainability\nimport 'pandora-shared-app/overrides/app/assets/svg/shipping.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/warranty.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/returns.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/gift.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/engraving.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/cross.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/paper-plane-icon.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/circles-overlapping.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/diamond.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/hand-with-heart.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/important-info.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/ruler.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/heart-unfilled.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/sparkles.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/red-cross.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/green-check.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pink-check.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/chevron-down-big.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/chevron-left-big.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/chevron-right-big.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/chevron-up-big.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/play.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pause.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/mute.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/unmute.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/next.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/prev.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/close.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/credit-card.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/bag.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/check-site-locator.svg'\n\n// Import collaboration logos\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_netflix_landscape_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_netflix_landscape_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_white_fr.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_black_fr.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_diamonds_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/got-x-pandora-white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/got-x-pandora-black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_horizontal_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_horizontal_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_festival_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_me_festival_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pixar_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pixar_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mypandora_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mypandora_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_bridgerton_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_bridgerton_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/marvel_x_pandora_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/marvel_x_pandora_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mandalorian_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/mandalorian_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_mint.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/clearpay_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/afterpay_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/afterpay_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/klarna_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/klarna_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_white_blue.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_for_unicef_logo_black_blue.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_patMcGrath_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/pandora_x_patMcGrath_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora_collectors_edition.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/starwars_x_pandora_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/hp_x_pandora.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/hp_x_pandora_black.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/disney_x_pandora.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/collaboration-logos/disney_x_pandora_white.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/brand-logo-footer.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/livechat.svg'\n\n/**\n * PICTOGRAMS\n * Those are used in Assurance Component and can be visible on:\n * - Footer Assurances\n * - KCP Entry Points\n */\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/calendar-with-check-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/gift-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/hand-with-heart-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/store-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/truck-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/loyalty-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/warranty-pictogram.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pictograms/return-pictogram.svg'\n\n/**\n * PRIMARY ICONS\n * Those should be the original (small) icons from Figma\n */\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/truck-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/store-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/hand-with-heart-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/calendar-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/loyalty-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/warranty-primary.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/primary/return-primary.svg'\n\n/**\n * PANDORA LOGO\n */\nimport 'pandora-shared-app/overrides/app/assets/svg/pandora-logo.svg'\n\n// For non-square SVGs, we can use the symbol data from the import to set the\n// proper viewBox attribute on the Icon wrapper.\nimport AmexSymbol from '@salesforce/retail-react-app/app/assets/svg/cc-amex.svg'\nimport BrandLogoSymbol from '@salesforce/retail-react-app/app/assets/svg/brand-logo.svg'\nimport CVVSymbol from '@salesforce/retail-react-app/app/assets/svg/cc-cvv.svg'\nimport DiscoverSymbol from '@salesforce/retail-react-app/app/assets/svg/cc-discover.svg'\nimport LocationSymbol from '@salesforce/retail-react-app/app/assets/svg/location.svg'\nimport MastercardSymbol from '@salesforce/retail-react-app/app/assets/svg/cc-mastercard.svg'\nimport PaypalSymbol from '@salesforce/retail-react-app/app/assets/svg/paypal-icon.svg'\nimport SocialPinterestSymbol from '@salesforce/retail-react-app/app/assets/svg/social-pinterest.svg'\nimport VisaSymbol from '@salesforce/retail-react-app/app/assets/svg/cc-visa.svg'\n\n// TODO: We're hardcoding the `viewBox` for these imported SVGs temporarily as the\n// SVG loader plugin is not properly providing us the symbol data on the client side.\nAmexSymbol.viewBox = AmexSymbol.viewBox || '0 0 38 22'\nBrandLogoSymbol.viewBox = BrandLogoSymbol.viewBox || '0 0 46 32'\nCVVSymbol.viewBox = CVVSymbol.viewBox || '0 0 41 24'\nDiscoverSymbol.viewBox = DiscoverSymbol.viewBox || '0 0 38 22'\nLocationSymbol.viewBox = LocationSymbol.viewBox || '0 0 16 21'\nMastercardSymbol.viewBox = MastercardSymbol.viewBox || '0 0 38 22'\nPaypalSymbol.viewBox = PaypalSymbol.viewBox || '0 0 80 20'\nSocialPinterestSymbol.viewBox = SocialPinterestSymbol.viewBox || '0 0 21 20'\nVisaSymbol.viewBox = VisaSymbol.viewBox || '0 0 38 22'\n\n/**\n * A helper for creating a Chakra-wrapped icon from our own SVG imports via sprite sheet.\n * @param {string} name - the filename of the imported svg (does not include extension)\n * @param {Object} passProps - props that will be passed onto the underlying Icon component\n * @param {Object} localizationAttributes - attributes with localized values that will be passed\n *      onto the underlying Icon component, use `defineMessage` to create localized string.\n *      Additionally, if the icon is rendered outside the provider tree, you'll also need to\n *      pass an intl object from react-intl as a prop to translate the messages.\n */\n/* istanbul ignore next */\nexport const icon = (name, passProps = {}, localizationAttributes = {}) => {\n    return createIconComponent(name, passProps, localizationAttributes)\n}\n\n// Export Chakra icon components that use our SVG sprite symbol internally\n// For non-square SVGs, we can use the symbol data from the import to set the\n// proper viewBox attribute on the Icon wrapper.\nexport const AmexIcon = icon('cc-amex', {viewBox: AmexSymbol.viewBox})\nexport const AlertIcon = icon('alert')\nexport const AccountIcon = icon('account')\nexport const BrandLogo = icon('brand-logo', {viewBox: BrandLogoSymbol.viewBox})\nexport const BasketIcon = icon('basket')\nexport const CheckIcon = icon('check')\nexport const CheckCircleIcon = icon('check-circle')\nexport const ChevronDownIcon = icon('chevron-down')\nexport const ChevronLeftIcon = icon('chevron-left')\nexport const ChevronRightIcon = icon('chevron-right')\nexport const ChevronUpIcon = icon('chevron-up')\nexport const CVVIcon = icon('cc-cvv', {viewBox: CVVSymbol.viewBox})\nexport const DashboardIcon = icon('dashboard')\nexport const DiscoverIcon = icon('cc-discover', {viewBox: DiscoverSymbol.viewBox})\nexport const GridIcon = icon('grid')\nexport const FigmaLogo = icon('figma-logo')\nexport const FilterIcon = icon('filter')\nexport const FileIcon = icon('file')\nexport const FlagCAIcon = icon('flag-ca')\nexport const FlagUSIcon = icon('flag-us')\nexport const FlagGBIcon = icon('flag-gb')\nexport const FlagFRIcon = icon('flag-fr')\nexport const FlagITIcon = icon('flag-it')\nexport const FlagCNIcon = icon('flag-cn')\nexport const FlagJPIcon = icon('flag-jp')\nexport const GithubLogo = icon('github-logo')\nexport const HamburgerIcon = icon('hamburger')\nexport const HeartIcon = icon('heart')\nexport const HeartSolidIcon = icon('heart-solid')\nexport const InfoIcon = icon('info')\nexport const LikeIcon = icon('like')\nexport const LockIcon = icon(\n    'lock',\n    {\n        'aria-hidden': false,\n        focusable: true\n    },\n    {\n        'aria-label': defineMessage({\n            id: 'icons.assistive_msg.lock',\n            defaultMessage: 'Secure'\n        })\n    }\n)\nexport const LocationIcon = icon('location')\nexport const PaypalIcon = icon('paypal', {viewBox: PaypalSymbol.viewBox})\nexport const PlugIcon = icon('plug')\nexport const PlusIcon = icon('plus')\nexport const MastercardIcon = icon('cc-mastercard', {viewBox: MastercardSymbol.viewBox})\nexport const ReceiptIcon = icon('receipt')\nexport const SearchIcon = icon('search', {'aria-hidden': true})\nexport const SocialFacebookIcon = icon('social-facebook')\nexport const SocialInstagramIcon = icon('social-instagram')\nexport const SocialPinterestIcon = icon('social-pinterest', {\n    viewBox: SocialPinterestSymbol.viewBox\n})\nexport const SocialTwitterIcon = icon('social-twitter')\nexport const SocialTikTokIcon = icon('social-TikTok')\nexport const SocialYoutubeIcon = icon('social-youtube')\nexport const StoreIcon = icon('store')\nexport const SignoutIcon = icon('signout')\nexport const UserIcon = icon('user')\nexport const VisaIcon = icon('cc-visa', {viewBox: VisaSymbol.viewBox})\nexport const VisibilityIcon = icon('visibility')\nexport const VisibilityOffIcon = icon('visibility-off')\nexport const CheckSiteLocatorIcon = icon('check-site-locator')\n\n// Define viewBox for static icons\nconst DiamondViewBox = '0 0 20 20'\nconst ImportantInfoViewBox = '0 0 20 20'\nconst RulerViewBox = '0 0 20 20'\nconst HandWithHeartViewBox = '0 0 20 20'\nconst CirclesViewBox = '0 0 20 20'\nconst HeartUnfilledViewBox = '0 0 20 20'\nconst SparklesViewBox = '0 0 20 21'\nconst ChevronViewBox = '0 0 20 20'\nconst PlayViewBox = '0 0 8 10'\n\n// Export static Pandora icons\nexport const StaticShippingIcon = icon('shipping')\nexport const StaticWarrantyIcon = icon('warranty')\nexport const StaticReturnIcon = icon('returns')\nexport const StaticGiftPackagingIcon = icon('gift')\nexport const StaticEngravingIcon = icon('engraving')\nexport const StaticCrossIcon = icon('cross')\nexport const StaticPaperPlaneIcon = icon('paper-plane-icon')\nexport const StaticRedCrossIcon = icon('red-cross')\nexport const StaticGreenCheckIcon = icon('green-check')\nexport const StaticPinkCheckIcon = icon('pink-check')\nexport const StaticPlayIcon = icon('play', {viewBox: PlayViewBox})\nexport const StaticChevronDownIcon = icon('chevron-down-big', {viewBox: ChevronViewBox})\nexport const StaticChevronUpIcon = icon('chevron-up-big', {viewBox: ChevronViewBox})\nexport const StaticChevronLeftIcon = icon('chevron-left-big', {viewBox: ChevronViewBox})\nexport const StaticChevronRightIcon = icon('chevron-right-big', {viewBox: ChevronViewBox})\nexport const StaticDiamondIcon = icon('diamond', {viewBox: DiamondViewBox})\nexport const StaticImportantInfoIcon = icon('important-info', {viewBox: ImportantInfoViewBox})\nexport const StaticRulerIcon = icon('ruler', {viewBox: RulerViewBox})\nexport const StaticHandWithHeartIcon = icon('hand-with-heart', {viewBox: HandWithHeartViewBox})\nexport const StaticCirclesIcon = icon('circles-overlapping', {viewBox: CirclesViewBox})\nexport const StaticHeartUnfilledIcon = icon('heart-unfilled', {viewBox: HeartUnfilledViewBox})\nexport const StaticSparklesIcon = icon('sparkles', {viewBox: SparklesViewBox})\nexport const StaticCreditCardIcon = icon('credit-card')\nexport const LiveChatIcon = icon('livechat')\n\n/**\n * PICTOGRAMS ICONS\n */\nexport const CalendarWithCheckPictogram = icon('calendar-with-check-pictogram')\nexport const GiftPictogram = icon('gift-pictogram')\nexport const HandWithHeartPictogram = icon('hand-with-heart-pictogram')\nexport const StorePictogram = icon('store-pictogram')\nexport const TruckPictogram = icon('truck-pictogram')\nexport const LoyaltyPictogram = icon('loyalty-pictogram')\nexport const WarrantyPictogram = icon('warranty-pictogram')\nexport const ReturnPictogram = icon('return-pictogram')\n\nconst defaultBtnViewBox = {viewBox: '0 0 20 20'}\n\n/**\n * PRIMARY ICONS\n */\nexport const TruckPrimary = icon('truck-primary')\nexport const StorePrimary = icon('store-primary')\nexport const HandWithHeartPrimary = icon('hand-with-heart-primary')\nexport const CalendarPrimary = icon('calendar-primary')\nexport const LoyaltyPrimary = icon('loyalty-primary')\nexport const WarrantyPrimary = icon('warranty-primary')\nexport const ReturnPrimary = icon('return-primary')\n\nexport const PlayIcon = icon('play', defaultBtnViewBox)\nexport const PauseIcon = icon('pause', defaultBtnViewBox)\nexport const MuteIcon = icon('mute', defaultBtnViewBox)\nexport const UnmuteIcon = icon('unmute', defaultBtnViewBox)\nexport const NextIcon = icon('next', defaultBtnViewBox)\nexport const PrevIcon = icon('prev', defaultBtnViewBox)\nexport const CloseIcon = icon('close', defaultBtnViewBox)\nexport const BagIcon = icon('bag', defaultBtnViewBox)\n\n/**\n * PANDORA LOGO\n */\nexport const PandoraLogo = icon('pandora-logo', {viewBox: '0 0 671 137'})\n\n// Define viewBox dimensions for collaboration logo SVGs\nconst DisneyPandoraViewBox = '0 0 284.8 49.6'\nconst StarWarsViewBox = '0 0 200.23 34.05'\nconst PandoraMeHorizontalViewBox = '0 0 1350.05 212'\nconst MarvelViewBox = '0 0 206.52 34.22'\nconst PandoraDiamondsViewBox = '0 0 283.46 82.45'\nconst GotViewBox = '0 0 770.7 147.35'\nconst MandalorianViewBox = '0 0 512 113'\nconst ClearpayViewBox = '0 0 1581.9867 294.73334'\nconst KlarnaViewBox = '0 0 791.4 176.6'\nconst AfterpayViewBox = '0 0 1148.9 220.8'\nconst PixarViewBox = '0 0 62.4 13.1'\nconst MyPandoraViewBox = '0 0 371.4 70.1'\nconst PandoraBridgertonViewBox = '0 0 120 26'\nconst PandoraMeFestivalViewBox = '0 0 1750.8 414.9'\nconst PandoraUnicefWithBlueViewBox = '0 0 206 35'\nconst PandoraUnicefViewBox = '0 0 198.69 19.77'\nconst HpPandoraViewBox = '0 0 284.77 44.15'\nconst PandoraNetflixViewBox = '0 0 371.9 70.1'\nconst StarWarsCollectorsViewBox = '0 0 200.23 50.97'\nconst PandoraPatMcGrathViewBox = '0 0 584.97 54.43'\nconst FooterBrandLogoViewBox = '0 0 326 71'\n// Export collaboration logo icons\nexport const PandoraNetflixWhiteIcon = icon('pandora_x_netflix_landscape_white', {\n    viewBox: PandoraNetflixViewBox\n})\nexport const PandoraNetflixBlackIcon = icon('pandora_x_netflix_landscape_black', {\n    viewBox: PandoraNetflixViewBox\n})\nexport const PandoraDiamondsWhiteFrIcon = icon('pandora_diamonds_white_fr', {\n    viewBox: PandoraDiamondsViewBox\n})\nexport const PandoraDiamondsBlackFrIcon = icon('pandora_diamonds_black_fr', {\n    viewBox: PandoraDiamondsViewBox\n})\nexport const PandoraDiamondsWhiteIcon = icon('pandora_diamonds_white', {\n    viewBox: PandoraDiamondsViewBox\n})\nexport const PandoraDiamondsBlackIcon = icon('pandora_diamonds_black', {\n    viewBox: PandoraDiamondsViewBox\n})\nexport const GotPandoraWhiteIcon = icon('got-x-pandora-white', {viewBox: GotViewBox})\nexport const GotPandoraBlackIcon = icon('got-x-pandora-black', {viewBox: GotViewBox})\nexport const PandoraMeHorizontalWhiteIcon = icon('pandora_me_horizontal_white', {\n    viewBox: PandoraMeHorizontalViewBox\n})\nexport const PandoraMeHorizontalBlackIcon = icon('pandora_me_horizontal_black', {\n    viewBox: PandoraMeHorizontalViewBox\n})\nexport const PandoraMeFestivalWhiteIcon = icon('pandora_me_festival_white', {\n    viewBox: PandoraMeFestivalViewBox\n})\nexport const PandoraMeFestivalBlackIcon = icon('pandora_me_festival_black', {\n    viewBox: PandoraMeFestivalViewBox\n})\nexport const PixarWhiteIcon = icon('pixar_white', {viewBox: PixarViewBox})\nexport const PixarBlackIcon = icon('pixar_black', {viewBox: PixarViewBox})\nexport const MyPandoraWhiteIcon = icon('mypandora_white', {viewBox: MyPandoraViewBox})\nexport const MyPandoraBlackIcon = icon('mypandora_black', {viewBox: MyPandoraViewBox})\nexport const PandoraBridgertonWhiteIcon = icon('pandora_bridgerton_white', {\n    viewBox: PandoraBridgertonViewBox\n})\nexport const PandoraBridgertonBlackIcon = icon('pandora_bridgerton_black', {\n    viewBox: PandoraBridgertonViewBox\n})\nexport const MarvelPandoraWhiteIcon = icon('marvel_x_pandora_white', {viewBox: MarvelViewBox})\nexport const MarvelPandoraBlackIcon = icon('marvel_x_pandora_black', {viewBox: MarvelViewBox})\nexport const MandalorianWhiteIcon = icon('mandalorian_white', {viewBox: MandalorianViewBox})\nexport const MandalorianBlackIcon = icon('mandalorian_black', {viewBox: MandalorianViewBox})\nexport const ClearpayWhiteIcon = icon('clearpay_white', {viewBox: ClearpayViewBox})\nexport const ClearpayMintIcon = icon('clearpay_mint', {viewBox: ClearpayViewBox})\nexport const ClearpayBlackIcon = icon('clearpay_black', {viewBox: ClearpayViewBox})\nexport const AfterpayWhiteIcon = icon('afterpay_white', {viewBox: AfterpayViewBox})\nexport const AfterpayBlackIcon = icon('afterpay_black', {viewBox: AfterpayViewBox})\nexport const KlarnaWhiteIcon = icon('klarna_white', {viewBox: KlarnaViewBox})\nexport const KlarnaBlackIcon = icon('klarna_black', {viewBox: KlarnaViewBox})\nexport const PandoraUnicefWhiteIcon = icon('pandora_for_unicef_logo_white', {\n    viewBox: PandoraUnicefViewBox\n})\nexport const PandoraUnicefWhiteBlueIcon = icon('pandora_for_unicef_logo_white_blue', {\n    viewBox: PandoraUnicefWithBlueViewBox\n})\nexport const PandoraUnicefBlackIcon = icon('pandora_for_unicef_logo_black', {\n    viewBox: PandoraUnicefViewBox\n})\nexport const PandoraUnicefBlackBlueIcon = icon('pandora_for_unicef_logo_black_blue', {\n    viewBox: PandoraUnicefWithBlueViewBox\n})\nexport const PandoraPatMcGrathWhiteIcon = icon('pandora_x_patMcGrath_white', {\n    viewBox: PandoraPatMcGrathViewBox\n})\nexport const PandoraPatMcGrathBlackIcon = icon('pandora_x_patMcGrath_black', {\n    viewBox: PandoraPatMcGrathViewBox\n})\nexport const StarWarsIcon = icon('starwars_x_pandora', {viewBox: StarWarsViewBox})\nexport const StarWarsCollectorsIcon = icon('starwars_x_pandora_collectors_edition', {\n    viewBox: StarWarsCollectorsViewBox\n})\nexport const StarWarsBlackIcon = icon('starwars_x_pandora_black', {viewBox: StarWarsViewBox})\nexport const HpPandoraIcon = icon('hp_x_pandora', {viewBox: HpPandoraViewBox})\nexport const HpPandoraBlackIcon = icon('hp_x_pandora_black', {viewBox: HpPandoraViewBox})\nexport const DisneyPandoraIcon = icon('disney_x_pandora', {viewBox: DisneyPandoraViewBox})\nexport const DisneyPandoraWhiteIcon = icon('disney_x_pandora_white', {\n    viewBox: DisneyPandoraViewBox\n})\nexport const FooterBrandLogoIcon = icon('brand-logo-footer', {viewBox: FooterBrandLogoViewBox})\n","import {useState, useEffect} from 'react'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport breakpoints from 'pandora-shared-app/overrides/app/theme/foundations/breakpoints'\n\nconst rootFontSize = 16\n\nexport const DEVICE = {\n    MOBILE: 'mobile',\n    TABLET: 'tablet',\n    DESKTOP: 'desktop'\n}\n\nconst MOBILE_MAX_WIDTH = parseFloat(breakpoints.md) * rootFontSize // e.g. 768px\nconst TABLET_MAX_WIDTH = parseFloat(breakpoints.xl) * rootFontSize // e.g. 1200px\n\nexport const useDeviceType = () => {\n    const [deviceType, setDeviceType] = useState(isServer ? DEVICE.MOBILE : DEVICE.DESKTOP)\n\n    useEffect(() => {\n        const updateDeviceType = () => {\n            const width = window.innerWidth\n\n            if (width <= MOBILE_MAX_WIDTH) {\n                setDeviceType(DEVICE.MOBILE)\n            } else if (width <= TABLET_MAX_WIDTH) {\n                setDeviceType(DEVICE.TABLET)\n            } else {\n                setDeviceType(DEVICE.DESKTOP)\n            }\n        }\n\n        updateDeviceType()\n        window.addEventListener('resize', updateDeviceType)\n        return () => window.removeEventListener('resize', updateDeviceType)\n    }, [])\n\n    return deviceType\n}\n","import React from 'react'\nimport propTypes from 'prop-types'\nimport {Link as ChakraLink} from '@chakra-ui/react'\nimport {Link as ReactRouterLink} from 'react-router-dom'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nexport const Link = ({to, isExternal, ...rest}) => {\n    const {buildUrl} = useMultiSite()\n\n    return isExternal ? (\n        <ChakraLink href={buildUrl(to)} {...rest} />\n    ) : (\n        <ChakraLink as={ReactRouterLink} to={buildUrl(to)} {...rest} />\n    )\n}\n\nLink.propTypes = {\n    to: propTypes.string,\n    isExternal: propTypes.bool\n}\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useContext} from 'react'\nimport {useStores} from '@salesforce/commerce-sdk-react'\nimport {StoreLocatorContext} from '@salesforce/retail-react-app/app/contexts/store-locator-provider'\n\n/**\n * Custom hook to get the selected store from StoreLocatorContext and retrieve store details\n * @returns {Object} Object containing store data, loading state, and error state\n */\nexport const useSelectedStore = () => {\n    const context = useContext(StoreLocatorContext)\n\n    if (!context) {\n        throw new Error('useSelectedStore must be used within a StoreLocatorProvider')\n    }\n\n    const {state} = context\n    const selectedStoreId = state.selectedStoreId\n\n    // Use the useStores hook to fetch store details by ID\n    const {data: storeData, ...restOfQuery} = useStores(\n        {\n            parameters: {\n                ids: selectedStoreId\n            }\n        },\n        {\n            enabled: !!selectedStoreId\n        }\n    )\n\n    // Extract the first store from the response data\n    const selectedStore = storeData?.data?.[0]\n\n    return {\n        ...restOfQuery,\n        selectedStore,\n        hasSelectedStore: !!selectedStoreId\n    }\n}\n","/*\n * Copyright (c) 2026, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {defineMessage} from 'react-intl'\nimport {getAppOrigin} from '@salesforce/pwa-kit-react-sdk/utils/url'\nimport {getEnvBasePath} from '@salesforce/pwa-kit-runtime/utils/ssr-namespace-paths'\nimport {\n    API_ERROR_MESSAGE,\n    FEATURE_UNAVAILABLE_ERROR_MESSAGE,\n    INVALID_TOKEN_ERROR,\n    INVALID_TOKEN_ERROR_MESSAGE\n} from '@salesforce/retail-react-app/app/constants'\nimport {isAbsoluteURL} from '@salesforce/retail-react-app/app/page-designer/utils'\n\nexport const TOO_MANY_LOGIN_ATTEMPTS_ERROR_MESSAGE = defineMessage({\n    defaultMessage:\n        'You reached the limit for login attempts. For your security, wait 10 minutes and try again.',\n    id: 'global.error.too_many_login_attempts'\n})\n\nexport const TOO_MANY_PASSWORD_RESET_ATTEMPTS_ERROR_MESSAGE = defineMessage({\n    defaultMessage:\n        'You reached the limit for password resets. For your security, wait 10 minutes and try again.',\n    id: 'global.error.too_many_password_reset_requests'\n})\n\n// Shared error patterns for token-based auth features (passwordless login, password reset)\nconst TOKEN_BASED_AUTH_FEATURE_UNAVAILABLE_ERRORS = [\n    /no callback_uri is registered/i,\n    /callback_uri doesn't match/i,\n    /monthly quota/i\n]\n\nconst PASSWORDLESS_FEATURE_UNAVAILABLE_ERRORS = [\n    ...TOKEN_BASED_AUTH_FEATURE_UNAVAILABLE_ERRORS,\n    /passwordless permissions error/i,\n    /client secret is not provided/i\n]\n\nconst PASSWORD_RESET_FEATURE_UNAVAILABLE_ERRORS = TOKEN_BASED_AUTH_FEATURE_UNAVAILABLE_ERRORS\n\nconst TOO_MANY_REQUESTS_ERROR = /too many .* requests/i\n\n/**\n * Returns the absolute URL for the passwordless login callback.\n * If the callback URI is already absolute, it is returned as-is; otherwise it is\n * resolved against the app origin and env base path.\n *\n * @param {string} [callbackURI] - The callback URI from config (relative or absolute)\n * @returns {string|undefined} - The full callback URL, or undefined if callbackURI is falsy\n */\nexport const getPasswordlessCallbackUrl = (callbackURI) => {\n    if (!callbackURI) {\n        return undefined\n    }\n    if (isAbsoluteURL(callbackURI)) {\n        return callbackURI\n    }\n    return `${getAppOrigin()}${getEnvBasePath()}${callbackURI}`\n}\n\n/**\n * Maps error message from authorizePasswordless mutation to the appropriate user-friendly error message descriptor\n * for passwordless login feature errors.\n *\n * @param {string} errorMessage - The error message from the API\n * @returns {Object} - The message descriptor object (from defineMessage) that can be passed to formatMessage\n */\nexport const getAuthorizePasswordlessErrorMessage = (errorMessage) => {\n    if (PASSWORDLESS_FEATURE_UNAVAILABLE_ERRORS.some((msg) => msg.test(errorMessage))) {\n        return FEATURE_UNAVAILABLE_ERROR_MESSAGE\n    }\n    if (TOO_MANY_REQUESTS_ERROR.test(errorMessage)) {\n        return TOO_MANY_LOGIN_ATTEMPTS_ERROR_MESSAGE\n    }\n    return API_ERROR_MESSAGE\n}\n\n/**\n * Maps error message from getPasswordResetToken mutation to the appropriate user-friendly error message descriptor\n * for password reset feature errors.\n *\n * @param {string} errorMessage - The error message from the API\n * @returns {Object} - The message descriptor object (from defineMessage) that can be passed to formatMessage\n */\nexport const getPasswordResetErrorMessage = (errorMessage) => {\n    if (PASSWORD_RESET_FEATURE_UNAVAILABLE_ERRORS.some((msg) => msg.test(errorMessage))) {\n        return FEATURE_UNAVAILABLE_ERROR_MESSAGE\n    }\n    if (TOO_MANY_REQUESTS_ERROR.test(errorMessage)) {\n        return TOO_MANY_PASSWORD_RESET_ATTEMPTS_ERROR_MESSAGE\n    }\n    return API_ERROR_MESSAGE\n}\n\n/**\n * Maps error message from loginPasswordless mutation to the appropriate user-friendly error message descriptor\n * for OTP verification errors (passwordless login token verification).\n *\n * @param {string} errorMessage - The error message from the API\n * @returns {Object} - The message descriptor object (from defineMessage) that can be passed to formatMessage\n */\nexport const getLoginPasswordlessErrorMessage = (errorMessage) => {\n    if (INVALID_TOKEN_ERROR.test(errorMessage)) {\n        return INVALID_TOKEN_ERROR_MESSAGE\n    }\n    return API_ERROR_MESSAGE\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"github-logo\",\n  \"use\": \"github-logo-usage\",\n  \"viewBox\": \"0 0 128 128\",\n  \"content\": \"<symbol viewBox=\\\"0 0 128 128\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" id=\\\"github-logo\\\">\\n<defs>\\n    <circle id=\\\"github-logo_e\\\" cx=\\\"64\\\" cy=\\\"64\\\" r=\\\"56\\\" />\\n    <filter id=\\\"github-logo_m\\\" x=\\\"-7.1%\\\" y=\\\"-5.4%\\\" width=\\\"114.3%\\\" height=\\\"114.3%\\\">\\n        <feMorphology in=\\\"SourceAlpha\\\" operator=\\\"dilate\\\" radius=\\\"1\\\" result=\\\"shadowSpreadOuter1\\\"></feMorphology>\\n        <feOffset dy=\\\"2\\\" in=\\\"shadowSpreadOuter1\\\" result=\\\"shadowOffsetOuter1\\\"></feOffset>\\n        <feGaussianBlur in=\\\"shadowOffsetOuter1\\\" result=\\\"shadowBlurOuter1\\\" stdDeviation=\\\"2\\\"></feGaussianBlur>\\n        <feComposite in=\\\"shadowBlurOuter1\\\" in2=\\\"SourceAlpha\\\" operator=\\\"out\\\" result=\\\"shadowBlurOuter1\\\"></feComposite>\\n        <feColorMatrix in=\\\"shadowBlurOuter1\\\" values=\\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.240942029 0\\\"></feColorMatrix>\\n    </filter>\\n    <linearGradient id=\\\"github-logo_l\\\" x1=\\\"50%\\\" x2=\\\"50%\\\" y2=\\\"100%\\\">\\n        <stop stop-color=\\\"#FEFEFE\\\" offset=\\\"0\\\" />\\n        <stop stop-color=\\\"#E0E0E0\\\" offset=\\\"1\\\" />\\n    </linearGradient>\\n    <linearGradient id=\\\"github-logo_j\\\" x1=\\\"50%\\\" x2=\\\"50%\\\" y1=\\\"100%\\\">\\n        <stop stop-color=\\\"#492779\\\" offset=\\\"0\\\" />\\n        <stop stop-color=\\\"#892793\\\" offset=\\\"1\\\" />\\n    </linearGradient>\\n    <path id=\\\"github-logo_d\\\" d=\\\"M12 64.034c0 23.025 14.885 42.472 35.555 49.367 2.6.456 3.575-1.105 3.575-2.47 0-1.237-.065-5.334-.065-9.692C38 103.644 34.62 98.05 33.58 95.124c-.585-1.496-3.12-6.114-5.33-7.35-1.82-.976-4.42-3.382-.065-3.447 4.095-.065 7.02 3.772 7.995 5.333 4.68 7.87 12.155 5.66 15.145 4.293.455-3.382 1.82-5.66 3.315-6.96-11.57-1.3-23.66-5.788-23.66-25.69 0-5.66 2.015-10.343 5.33-13.985-.52-1.3-2.34-6.634.52-13.79 0 0 4.355-1.365 14.3 5.334 4.16-1.17 8.58-1.756 13-1.756s8.84.586 13 1.756c9.945-6.764 14.3-5.333 14.3-5.333 2.86 7.154 1.04 12.487.52 13.788 3.315 3.642 5.33 8.26 5.33 13.984 0 19.968-12.155 24.39-23.725 25.692 1.885 1.626 3.51 4.748 3.51 9.626 0 6.96-.065 12.553-.065 14.31 0 1.365.975 2.99 3.575 2.47C101.115 106.507 116 86.995 116 64.035 116 35.284 92.73 12 64 12S12 35.285 12 64.034z\\\" />\\n    <filter id=\\\"github-logo_k\\\" x=\\\"-.5%\\\" y=\\\"-.5%\\\" width=\\\"101%\\\" height=\\\"102%\\\">\\n        <feOffset dy=\\\"1\\\" in=\\\"SourceAlpha\\\" result=\\\"shadowOffsetOuter1\\\"></feOffset>\\n        <feColorMatrix in=\\\"shadowOffsetOuter1\\\" values=\\\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.529296875 0\\\"></feColorMatrix>\\n    </filter>\\n    <filter id=\\\"github-logo_i\\\" x=\\\"-1%\\\" y=\\\"-1%\\\" width=\\\"101.9%\\\" height=\\\"103%\\\">\\n        <feGaussianBlur in=\\\"SourceAlpha\\\" result=\\\"shadowBlurInner1\\\" stdDeviation=\\\"1\\\"></feGaussianBlur>\\n        <feOffset in=\\\"shadowBlurInner1\\\" result=\\\"shadowOffsetInner1\\\"></feOffset>\\n        <feComposite in=\\\"shadowOffsetInner1\\\" in2=\\\"SourceAlpha\\\" k2=\\\"-1\\\" k3=\\\"1\\\" operator=\\\"arithmetic\\\" result=\\\"shadowInnerInner1\\\"></feComposite>\\n        <feColorMatrix in=\\\"shadowInnerInner1\\\" values=\\\"0 0 0 0 0.258823529 0 0 0 0 0.137254902 0 0 0 0 0.431372549 0 0 0 0.703549592 0\\\"></feColorMatrix>\\n    </filter>\\n</defs>\\n<g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n    <path d=\\\"M0 0h128v128H0z\\\" />\\n    <use fill=\\\"#000\\\" filter=\\\"url(#github-logo_m)\\\" xlink:href=\\\"#github-logo_e\\\" />\\n    <use fill=\\\"#FFF\\\" fill-opacity=\\\"0\\\" stroke=\\\"#BABABA\\\" stroke-opacity=\\\".5\\\" stroke-width=\\\"2\\\" xlink:href=\\\"#github-logo_e\\\" />\\n    <circle cx=\\\"64\\\" cy=\\\"64\\\" r=\\\"56\\\" fill=\\\"url(#github-logo_l)\\\" />\\n    <use fill=\\\"#000\\\" filter=\\\"url(#github-logo_k)\\\" xlink:href=\\\"#github-logo_d\\\" />\\n    <use fill=\\\"url(#github-logo_j)\\\" xlink:href=\\\"#github-logo_d\\\" />\\n    <use fill=\\\"#000\\\" filter=\\\"url(#github-logo_i)\\\" xlink:href=\\\"#github-logo_d\\\" />\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Calculate the remaining time until the promotion end date.\n *\n * @param {string} promotionEndDate - ISO date string for the promotion end date\n * @param {boolean} includeSeconds - Whether to include seconds in the result\n * @returns {Array} - Array of time units with their values\n */\nexport const countdownTimer = (promotionEndDate, includeSeconds = true) => {\n    if (!promotionEndDate) return []\n\n    // Parse the promotion end date and get current date\n    const endDate = new Date(promotionEndDate)\n    const now = new Date()\n\n    // Calculate the time difference in milliseconds\n    const timeDiff = endDate.getTime() - now.getTime()\n\n    // Return empty array if the promotion has ended\n    if (timeDiff <= 0) return []\n\n    // Calculate days, hours, minutes, and seconds\n    const days = Math.floor(timeDiff / (1000 * 60 * 60 * 24))\n    const hours = Math.floor((timeDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\n    const minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60))\n    const seconds = Math.floor((timeDiff % (1000 * 60)) / 1000)\n\n    // Create the time units array\n    const timeUnits = []\n\n    // Add days if greater than 0\n    if (days > 0) {\n        timeUnits.push({unit: 'days', value: days})\n    }\n\n    // Add hours if greater than 0 or days exist\n    if (hours > 0) {\n        timeUnits.push({unit: 'hours', value: hours})\n    }\n\n    // Add minutes if greater than 0 or hours exist\n    if (minutes > 0) {\n        timeUnits.push({unit: 'minutes', value: minutes})\n    }\n\n    // Add seconds if includeSeconds is true\n    if (includeSeconds && seconds > 0) {\n        timeUnits.push({unit: 'seconds', value: seconds})\n    }\n\n    return timeUnits\n}\n","import {useEffect, useState} from 'react'\nimport {useIntl} from 'react-intl'\nimport {countdownTimer} from '../../../trade-banner/utils'\n\nconst countdownMessages = {\n    days: {id: 'countdown.days', defaultMessage: '{value}d'},\n    hours: {id: 'countdown.hours', defaultMessage: '{value}h'},\n    minutes: {id: 'countdown.minutes', defaultMessage: '{value}m'},\n    seconds: {id: 'countdown.seconds', defaultMessage: '{value}s'}\n}\n\n/**\n * useCountdown - Custom hook to calculate and localize the remaining time until a specified promotion end date.\n *\n * @param {string} promotionEndDate - The promotion end date in ISO 8601 format.\n * @param {boolean} includeSeconds - Whether to include seconds in the formatted output.\n * @returns {string} - The formatted, localized remaining time (e.g., \"1d 5h 10m 30s\").\n */\nexport const useCountdown = (promotionEndDate, includeSeconds = true) => {\n    const {formatMessage} = useIntl()\n    const [remainingTime, setRemainingTime] = useState('')\n\n    useEffect(() => {\n        if (!promotionEndDate) return\n\n        const updateTimer = () => {\n            const timeUnits = countdownTimer(promotionEndDate, includeSeconds)\n\n            // Format each time unit using react-intl and join them as a single string\n            const formattedTime = timeUnits\n                .map(({unit, value}) => formatMessage(countdownMessages[unit], {value}))\n                .join(' ')\n\n            setRemainingTime(formattedTime)\n        }\n\n        // Initial update and start interval for updates every second\n        updateTimer()\n\n        const interval = setInterval(updateTimer, 1000)\n\n        // Clear the interval when the component is unmounted or promotionEndDate changes\n        return () => clearInterval(interval)\n    }, [promotionEndDate, includeSeconds, formatMessage])\n\n    return remainingTime\n}\n","import {theme} from '@chakra-ui/theme'\n\nexport default theme\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {Fragment} from 'react'\nimport {\n    Button,\n    Text,\n    Flex,\n    Stack,\n    Link\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {Link as RouteLink} from 'react-router-dom'\nimport {defineMessage, FormattedMessage, useIntl} from 'react-intl'\nimport {SearchIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport RecommendedProducts from '@salesforce/retail-react-app/app/components/recommended-products'\nimport {EINSTEIN_RECOMMENDERS} from '@salesforce/retail-react-app/app/constants'\n\nconst contactUsMessage = defineMessage({\n    id: 'empty_search_results.link.contact_us',\n    defaultMessage: 'Contact Us'\n})\n\nconst EmptySearchResults = ({searchQuery, category}) => {\n    const intl = useIntl()\n    return (\n        <Flex\n            data-testid=\"sf-product-empty-list-page\"\n            direction=\"column\"\n            alignItems=\"center\"\n            textAlign=\"center\"\n            paddingTop={28}\n            paddingBottom={28}\n        >\n            <SearchIcon boxSize={[6, 12, 12, 12]} marginBottom={5} />\n            {!searchQuery ? (\n                <Fragment>\n                    {' '}\n                    <Text fontSize={['l', 'l', 'xl', '2xl']} fontWeight=\"700\" marginBottom={2}>\n                        {intl.formatMessage(\n                            {\n                                id: 'empty_search_results.info.cant_find_anything_for_category',\n                                defaultMessage:\n                                    'We couldn’t find anything for {category}. Try searching for a product or {link}.'\n                            },\n                            {\n                                category: category?.name,\n                                link: (\n                                    <Link as={RouteLink} to={'/'}>\n                                        {intl.formatMessage(contactUsMessage)}\n                                    </Link>\n                                )\n                            }\n                        )}\n                    </Text>{' '}\n                </Fragment>\n            ) : (\n                <Fragment>\n                    <Text fontSize={['lg', 'lg', 'xl', '3xl']} fontWeight=\"700\" marginBottom={2}>\n                        {intl.formatMessage(\n                            {\n                                id: 'empty_search_results.info.cant_find_anything_for_query',\n                                defaultMessage: 'We couldn’t find anything for \"{searchQuery}\".'\n                            },\n                            {\n                                searchQuery: searchQuery\n                            }\n                        )}\n                    </Text>\n                    <Text fontSize={['md', 'md', 'md', 'md']} fontWeight=\"400\">\n                        {intl.formatMessage(\n                            {\n                                id: 'empty_search_results.info.double_check_spelling',\n                                defaultMessage:\n                                    'Double-check your spelling and try again or {link}.'\n                            },\n                            {\n                                link: (\n                                    <Button variant=\"link\" to={'/'}>\n                                        {intl.formatMessage(contactUsMessage)}\n                                    </Button>\n                                )\n                            }\n                        )}\n                    </Text>\n                    <Stack spacing={16} marginTop={32}>\n                        <RecommendedProducts\n                            title={\n                                <FormattedMessage\n                                    defaultMessage=\"Top Sellers\"\n                                    id=\"empty_search_results.recommended_products.title.top_sellers\"\n                                />\n                            }\n                            recommender={EINSTEIN_RECOMMENDERS.EMPTY_SEARCH_RESULTS_TOP_SELLERS}\n                            mx={{base: -4, md: -8, lg: 0}}\n                        />\n\n                        <RecommendedProducts\n                            title={\n                                <FormattedMessage\n                                    defaultMessage=\"Most Viewed\"\n                                    id=\"empty_search_results.recommended_products.title.most_viewed\"\n                                />\n                            }\n                            recommender={EINSTEIN_RECOMMENDERS.EMPTY_SEARCH_RESULTS_MOST_VIEWED}\n                            mx={{base: -4, md: -8, lg: 0}}\n                        />\n                    </Stack>\n                </Fragment>\n            )}\n        </Flex>\n    )\n}\n\nEmptySearchResults.propTypes = {\n    searchQuery: PropTypes.string,\n    category: PropTypes.object\n}\n\nexport default EmptySearchResults\n","import {keyframes} from '@emotion/react'\nimport colors from 'pandora-shared-app/overrides/app/theme/foundations/colors'\n\nexport const borderIn = keyframes`\n  0% {\n    width: calc(100% + 2px);\n    height: 0;\n    border-top-color: transparent;\n    border-right-color: transparent;\n    border-bottom-color: black;\n    border-left-color: transparent;\n  }\n  50% {\n     width: calc(100% + 2px);\n    height: 50%;\n    border-top-color: transparent;\n    border-right-color: black;\n    border-bottom-color: black;\n    border-left-color: black;\n  }\n  75% {\n    width: calc(100% + 2px);\n    height: 75%;\n    border-top-color: transparent;\n    border-right-color: black;\n    border-bottom-color: black;\n    border-left-color: black;\n}\n  100% {\n    width: calc(100% + 2px);\n    height: 64px;\n    border-top-color: black;\n    border-right-color: black;\n    border-bottom-color: black;\n    border-left-color: black;\n  }\n`\n\nexport const borderOut = keyframes`\n  0% {\n    width: calc(100% + 2px);\n    height: 65px;\n    border-top-color: black;\n    border-right-color: black;\n    border-bottom-color: black;\n    border-left-color: black;\n  }\n    25% {\n    width: calc(100% + 2px);\n    height: 100%;\n    border-top-color: black;\n    border-right-color: black;\n    border-bottom-color: transparent;\n    border-left-color: black;\n    }\n  50% {\n    width: calc(100% + 2px);\n    height: 75%;\n    border-top-color: black;\n    border-right-color: black;\n    border-bottom-color: transparent;\n    border-left-color: black;\n  }\n  75% {\n    width: calc(100% + 2px);\n    height: 50%;\n    border-top-color: black;\n    border-right-color: black;\n    border-bottom-color: transparent;\n    border-left-color: black;\n  }\n  100% {\n    width: calc(100% + 2px);\n    height: 0%;\n    border-top-color: transparent;\n    border-right-color: transparent;\n    border-bottom-color: transparent;\n    border-left-color: transparent;\n  }\n`\nexport const opacityPulse = keyframes`\n  0% { opacity: 1; }\n  50% { opacity: 0; }\n  100% { opacity: 1; }\n`\n\nexport const borderPulse = keyframes`\n  0% { border-color: currentColor; }\n  50% { border-color: ${colors.black4}; }\n  70% { border-color: ${colors.black4}; }\n  100% { border-color: currentColor; }\n`\n\nexport const dotAnimation = keyframes`\n  0% { content: ''; }\n  25% { content: '.'; }\n  50% { content: '..'; }\n  75% { content: '...'; }\n  100% { content: '...'; }\n`\n\nexport const fadeOut = keyframes`\n  0% { opacity: 1; }\n  100% { opacity: 0; }\n`\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"clearpay_black\",\n  \"use\": \"clearpay_black-usage\",\n  \"viewBox\": \"0 0 1581.987 294.733\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1581.987 294.733\\\" id=\\\"clearpay_black\\\"><g id=\\\"clearpay_black_g10\\\" transform=\\\"matrix(1.3333333,0,0,-1.3333333,0,294.73333)\\\"><g id=\\\"clearpay_black_g12\\\" transform=\\\"scale(0.1)\\\"><path d=\\\"M 9421.43,1697.36 8610.74,24.2383 H 8274.38 L 8577.25,649.449 8101.04,1697.36 h 345.05 l 305.94,-701.739 334.27,701.739 h 335.13\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path14\\\" /><path d=\\\"M 5394.89,24.2383 V 1697.36 h 292.28 v -154.44 c 87.92,109.29 218.62,175.83 375.44,175.83 320.79,0 572.67,-263.77 572.67,-613.08 0,-349.291 -256.62,-615.44 -579.79,-615.44 -149.7,0 -273.27,59.411 -358.82,159.2 V 24.2383 Z M 6335.87,1103.31 c 0,192.46 -144.95,339.81 -323.15,339.81 -178.22,0 -323.18,-142.6 -323.18,-339.81 0,-194.861 144.96,-339.822 323.18,-339.822 178.2,0 323.15,147.344 323.15,339.822\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path16\\\" /><path d=\\\"M 7690.83,509.25 V 663.699 C 7602.91,556.762 7472.21,490.23 7315.39,490.23 c -325.54,0 -572.67,261.391 -572.67,613.08 0,349.29 256.62,615.44 579.79,615.44 152.07,0 280.4,-66.55 368.32,-171.1 v 149.71 h 292.28 V 509.25 Z m -2.39,594.06 c 0,199.58 -144.92,339.79 -323.16,339.79 -178.2,0 -323.17,-142.58 -323.17,-339.79 0,-194.849 144.97,-339.81 323.17,-339.81 178.24,0 323.16,140.191 323.16,339.81\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path18\\\" /><path d=\\\"m 4868.19,1580.92 c 0,0 74.36,137.83 256.62,137.83 77.93,0 128.34,-26.82 128.34,-26.82 v -303.05 c 0,0 -109.97,67.91 -210.93,54.21 -100.95,-13.68 -164.85,-106.38 -164.53,-230.47 V 509.25 h -301.77 v 1188.11 h 292.27 v -116.44\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path20\\\" /><path d=\\\"m 11689.9,1764.37 -345.7,198.31 -350.5,201.11 c -232.3,133.3 -521.9,-34.42 -521.9,-302.28 v -45.14 c 0,-24.7 13.2,-47.51 34.6,-59.8 l 162.6,-93.3 c 45.1,-25.89 101.4,6.68 101.4,58.69 v 106.92 c 0,52.93 57.2,86.07 103.1,59.73 l 320.4,-183.81 319.4,-183.25 c 46.1,-26.48 46.1,-93.02 0,-119.48 L 11193.9,1218.81 10873.5,1035 c -45.9,-26.34 -103.1,6.8 -103.1,59.74 v 53.11 c 0,267.86 -289.6,435.58 -521.9,302.28 l -350.57,-201.12 -345.62,-198.3 c -233.43,-133.929 -233.43,-470.628 0,-604.562 L 9897.93,247.852 10248.5,46.7383 c 232.3,-133.3086 521.9,34.4219 521.9,302.2737 v 45.25 c 0,24.699 -13.2,47.508 -34.6,59.808 l -162.7,93.301 c -45.1,25.891 -101.3,-6.68 -101.3,-58.699 V 381.66 c 0,-52.941 -57.3,-86.09 -103.2,-59.738 l -320.3,183.808 -319.43,183.25 c -46.13,26.469 -46.13,93.008 0,119.481 l 319.43,183.258 320.3,183.811 c 45.9,26.34 103.2,-6.8 103.2,-59.74 v -53.11 c 0,-267.86 289.6,-435.578 521.9,-302.282 l 350.5,201.114 345.7,198.308 c 233.4,133.92 233.4,470.63 0,604.55\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path22\\\" /><path d=\\\"M 1217.98,951.969 C 1153.88,678.922 918.828,491.352 614.922,491.352 263.535,491.352 0,754.91 0,1103.91 c 0,349.02 268.289,614.93 619.68,614.93 296.777,0 529.46,-187.56 595.93,-455.85 H 906.965 c -54.617,106.84 -163.824,178.06 -284.914,178.06 -175.699,0 -322.895,-144.82 -322.895,-337.14 0,-192.301 147.196,-337.148 322.895,-337.148 125.832,0 235.043,71.238 287.285,185.207 h 308.644\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path24\\\" /><path d=\\\"M 1357.25,510.352 V 2185.91 H 1656.4 V 510.352 h -299.15\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path26\\\" /><path d=\\\"m 2701.56,1210.75 c -21.37,154.32 -147.2,246.92 -294.41,246.92 -147.19,0 -268.28,-90.22 -299.15,-246.92 z m -595.94,-185.2 c 21.37,-175.671 147.21,-275.409 306.28,-275.409 125.84,0 223.18,59.371 280.16,154.339 h 306.28 c -71.23,-251.671 -296.78,-413.128 -593.56,-413.128 -358.51,0 -610.18,251.679 -610.18,610.188 0,358.51 265.91,617.3 617.3,617.3 353.76,0 610.19,-261.17 610.19,-617.3 0,-26.12 -2.38,-52.24 -7.13,-75.99 h -909.34\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path28\\\" /><path d=\\\"m 4086.02,1103.91 c 0,199.44 -144.83,339.52 -322.9,339.52 -178.07,0 -322.89,-142.46 -322.89,-339.52 0,-194.68 144.82,-339.512 322.89,-339.512 178.07,0 322.9,140.082 322.9,339.512 z m 2.37,-593.558 V 664.68 c -87.85,-106.828 -218.43,-173.328 -375.12,-173.328 -325.28,0 -572.2,261.179 -572.2,612.558 0,349.02 256.42,614.93 579.32,614.93 151.94,0 280.15,-66.48 368,-170.95 v 149.58 h 292.03 V 510.352 h -292.03\\\" style=\\\"fill:#100f0d;fill-opacity:1;fill-rule:nonzero;stroke:none\\\" id=\\\"clearpay_black_path30\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {forwardRef} from 'react'\nimport {\n    easeStandardDecelerate,\n    durationStandard1\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {MotionBox} from 'pandora-shared-app/overrides/app/components/motion'\nimport {useDrawerContext, useModalContext} from '@chakra-ui/react'\nimport PropTypes from 'prop-types'\n\nconst defaultTransition = {\n    duration: durationStandard1,\n    ease: easeStandardDecelerate\n}\n\nconst motionProps = {\n    right: {\n        variants: {\n            enter: {\n                x: '0%',\n                transition: defaultTransition\n            },\n            exit: {\n                x: '100%',\n                transition: defaultTransition\n            }\n        }\n    },\n    left: {\n        variants: {\n            enter: {\n                x: '0%',\n                transition: defaultTransition\n            },\n            exit: {\n                x: '-100%',\n                transition: defaultTransition\n            }\n        }\n    },\n    bottom: {\n        variants: {\n            enter: {\n                y: '0%',\n                transition: defaultTransition\n            },\n            exit: {\n                y: '100%',\n                transition: defaultTransition\n            }\n        }\n    },\n    top: {\n        variants: {\n            enter: {\n                y: '0%',\n                transition: defaultTransition\n            },\n            exit: {\n                y: '-100%',\n                transition: defaultTransition\n            }\n        }\n    }\n}\n\nexport const PinkOverlay = forwardRef(({variant}, ref) => {\n    const {placement} = useDrawerContext()\n    const {isOpen} = useModalContext()\n    const styles = useMultiStyleConfig('PinkOverlay', {variant, placement})\n\n    return (\n        <MotionBox\n            ref={ref}\n            sx={styles}\n            {...motionProps[placement]}\n            initial=\"exit\"\n            animate={isOpen ? 'enter' : 'exit'}\n            exit=\"exit\"\n        />\n    )\n})\n\nPinkOverlay.displayName = 'PinkDrawerOverlay'\n\nPinkOverlay.propTypes = {\n    variant: PropTypes.oneOf(['full', 'partial', 'learnMore'])\n}\n","export const buildBreadcrumbSchema = (breadcrumbs = [], appOrigin = '') => {\n    if (!breadcrumbs || breadcrumbs.length === 0) return null\n\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'BreadcrumbList',\n        itemListElement: breadcrumbs.map(({name, c_relSlugURL}, index) => ({\n            '@type': 'ListItem',\n            position: index + 1,\n            name,\n            item: `${appOrigin}${c_relSlugURL}`\n        }))\n    }\n}\n","import {getAssetInfo} from '../hooks/get-asset-info-helpers'\n\n/**\n * Content type value used for Content Block entries in the content_loaded[] array.\n * Must be distinct from \"shop-the-look\" so Content Block is segmented separately.\n */\nexport const CONTENT_TYPE = {\n    SHOP_THE_LOOK: 'shop-the-look',\n    CONTENT_BLOCK: 'content-block'\n}\n\n/**\n * Determines whether a Shop the Look content item is a Content Block variant.\n * A Content Block is a Shop the Look with no products (no productIDs and no categoryID),\n * meaning there is nothing to shop — it's a pure content/messaging module.\n *\n * @param {Object} item - The content item to check\n * @returns {boolean} True if the item is a Content Block variant\n */\n/**\n * Checks whether a value is effectively empty (no trim()-able content and not a non-empty array).\n * Handles both string (e.g. '') and array (e.g. ['prod1']) formats.\n */\nconst isEffectivelyEmpty = (value) => {\n    if (Array.isArray(value)) {\n        return value.length === 0\n    }\n    if (typeof value === 'string') {\n        return !value.trim()\n    }\n    return !value\n}\n\nconst isContentBlock = (item) => {\n    const schema = item?._meta?.schema || ''\n    const isShopTheLook = schema.includes('shop-the-look')\n    const hasNoProducts =\n        isEffectivelyEmpty(item?.productIDs) && isEffectivelyEmpty(item?.categoryID)\n    return isShopTheLook && hasNoProducts\n}\n\n/**\n * Resolves the content_type value for a content item.\n * Content Block variants use \"content-block\" to be distinct from \"shop-the-look\".\n * All other items use their schema URL as before.\n *\n * @param {Object} item - The content item\n * @returns {string} The resolved content_type value\n */\nconst resolveContentType = (item) => {\n    if (isContentBlock(item)) {\n        return CONTENT_TYPE.CONTENT_BLOCK\n    }\n    return item?._meta?.schema\n}\n\n/**\n * Formats a single content item for analytics tracking\n * @param {Object} item - The content item to format\n * @param {Object} options - Optional configuration\n * @param {boolean} options.includeCopyHeader - Whether to include 'header' in copy_text fallback\n * @param {boolean} options.enableContentBlockTracking - Whether Content Block tracking is enabled (LD flag)\n * @param {boolean} options.aprimoPrimary - Whether Aprimo takes priority over Amplience for\n *  asset_id/asset_name when a node has both (controlled by \"Global: Aprimo DAM Primary\" LD flag)\n * @returns {Object} Formatted content item\n */\nexport const formatContentItem = (item, options = {}) => {\n    const {\n        includeCopyHeader = false,\n        enableContentBlockTracking = false,\n        aprimoPrimary = false\n    } = options\n\n    const copyTextSources = [item?.title, item?.heading]\n    if (includeCopyHeader) {\n        copyTextSources.push(item?.header)\n    }\n    // description is the lowest priority fallback — used by Content Block for optional copy\n    copyTextSources.push(item?.description)\n    const copy_text = copyTextSources.find(Boolean) || ''\n\n    const isContentBlockVariant = enableContentBlockTracking && isContentBlock(item)\n\n    const assetInfo = getAssetInfo(item, {aprimoPrimary})\n    // Only emit asset_id/asset_name when populated. Empty arrays trip Tealium schema\n    // validation (the reason INS-3567 originally added a hard filter), but the module\n    // itself must still be tracked even when it has no image/video asset.\n    const hasAssetData = assetInfo?.asset_id?.length > 0 && assetInfo?.asset_name?.length > 0\n\n    return {\n        content_type: enableContentBlockTracking ? resolveContentType(item) : item?._meta?.schema,\n        content_name: item?._meta?.name,\n        content_id: item?._meta?.deliveryId,\n        copy_text,\n        // Content Block variant must not include product-level data\n        ...(isContentBlockVariant ? {} : {content_product_id: item?.productIDs}),\n        cta_type: item?.cta?.type || item?.link?.type,\n        cta_type_id: item?.cta?.value || item?.link?.value,\n        cta_text: item?.cta?.text || item?.link?.text,\n        ...(hasAssetData ? assetInfo : {})\n    }\n}\n\n/**\n * Formats an array of content items for analytics tracking.\n *\n * Every content item is tracked, including modules that carry no image/video asset —\n * those are emitted without asset_id/asset_name (see formatContentItem). We deliberately\n * do NOT drop asset-less items: previously (INS-3567) they were filtered out entirely to\n * avoid empty-array schema errors, which had the side effect of hiding whole modules from\n * content_loaded. Omitting the empty asset fields solves the schema issue without losing\n * the module.\n *\n * @param {Array} items - Array of content items to format\n * @param {Object} options - Optional configuration passed to formatContentItem\n * @returns {Array} Array of formatted content items\n */\nexport const formatContentItems = (items, options = {}) => {\n    if (!items || !Array.isArray(items)) return []\n\n    return items.filter(Boolean).map((item) => formatContentItem(item, options))\n}\n\n/**\n * Processes article hub category data for analytics tracking\n * @param {Object} category - The category containing articles\n * @param {string} siteId - Optional site identifier to prefix asset IDs\n * @returns {Array} Array of formatted article tracking objects\n */\nexport const processArticleHubData = (category, siteId) => {\n    if (!category?.categories?.length) return []\n\n    return category.categories.map((article) => {\n        const assetId = siteId ? `${siteId}-${article.id}` : article.id\n\n        return {\n            content_type: 'https://schema-pandora.net/blog-category',\n            content_name: article.name || article.id,\n            content_id: article.id || '',\n            asset_id: [assetId],\n            asset_name: [(article.name || article.id).replaceAll(' ', '_')]\n        }\n    })\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"unmute\",\n  \"use\": \"unmute-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"unmute\\\">\\n    <g clip-path=\\\"url(#unmute_clip0_8080_587200)\\\">\\n        <path d=\\\"M0.5 13.1941V6.94659H3.5L10.5 1.5V18.5L3.5 13.1941H0.5Z\\\" stroke=\\\"currentColor\\\" />\\n        <path d=\\\"M13 13C14.6569 13 16 11.6569 16 10C16 8.34315 14.6569 7 13 7\\\" stroke=\\\"currentColor\\\" />\\n        <path d=\\\"M13 16C16.3137 16 19 13.3137 19 10C19 6.68629 16.3137 4 13 4\\\" stroke=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"unmute_clip0_8080_587200\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"currentColor\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_bridgerton_white\",\n  \"use\": \"pandora_bridgerton_white-usage\",\n  \"viewBox\": \"0 0 120 26\",\n  \"content\": \"<symbol viewBox=\\\"0 0 120 26\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"pandora_bridgerton_white\\\">\\n<g clip-path=\\\"url(#pandora_bridgerton_white_clip0_46276_345641)\\\">\\n<path d=\\\"M1.16464 13.7071H2.51646C2.89081 13.7071 3.14038 13.6428 3.34835 13.5142C3.68111 13.3214 3.86828 12.9357 3.86828 12.4857C3.86828 12.0357 3.68111 11.6714 3.34835 11.4571C3.14038 11.3285 2.89081 11.2642 2.51646 11.2642H1.16464V13.6857V13.7071ZM0 17.1571V10.1714H2.55806C3.0156 10.1714 3.43154 10.2571 3.7643 10.3857C4.57539 10.7714 5.09532 11.5642 5.09532 12.5071C5.09532 13.45 4.57539 14.2428 3.7643 14.6285C3.43154 14.7785 3.0156 14.8428 2.55806 14.8428H1.16464V17.1785H0V17.1571Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M7.36229 13.3643L6.90475 14.6286H9.15085L8.69331 13.3643C8.44374 12.6786 8.04859 11.6286 8.04859 11.6286H8.0278C8.0278 11.6286 7.63265 12.6786 7.38308 13.3643M10.0659 17.1572L9.54599 15.7429H6.468L5.94807 17.1572H4.67944L7.40388 10.15H8.65171L11.3761 17.1572H10.0659Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M17.0746 17.1571L14.475 13.5357L13.4559 12.1428V14.0071V17.1571H12.2913V10.1714H13.4767L16.0764 13.8142L17.0746 15.2071V13.3214V10.1714H18.2601V17.1571H17.0746Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M20.8805 16.0214H21.8995C22.6482 16.0214 23.2098 15.8928 23.6257 15.5928C24.208 15.1857 24.5408 14.4785 24.52 13.6642C24.52 12.85 24.208 12.1428 23.6257 11.7357C23.2306 11.4571 22.6482 11.3071 21.8995 11.3071H20.8805V16V16.0214ZM19.7158 17.1571V10.1714H21.9619C22.981 10.1714 23.8545 10.4285 24.4784 10.9C25.3103 11.5214 25.7678 12.5071 25.7678 13.6642C25.7678 14.8214 25.3103 15.8071 24.4784 16.4285C23.8545 16.9 22.981 17.1571 21.9619 17.1571H19.7158Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M30.156 11.1571C28.7834 11.1571 27.7851 12.2071 27.7851 13.6643C27.7851 15.1214 28.7834 16.1714 30.156 16.1714C31.5286 16.1714 32.5269 15.1214 32.5269 13.6643C32.5269 12.2071 31.5286 11.1571 30.156 11.1571ZM30.156 17.3286C28.0971 17.3286 26.5581 15.7643 26.5581 13.6643C26.5581 11.5643 28.0971 10 30.156 10C32.215 10 33.7539 11.5643 33.7539 13.6643C33.7539 15.7643 32.215 17.3286 30.156 17.3286Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M35.9583 13.7071H37.4765C37.8509 13.7071 38.1005 13.6428 38.3084 13.5142C38.6412 13.3214 38.8284 12.9357 38.8284 12.4857C38.8284 12.0357 38.6412 11.6714 38.3084 11.4571C38.1005 11.3285 37.8509 11.2642 37.4765 11.2642H35.9583V13.6857V13.7071ZM38.8284 17.1571L37.5389 14.8214H35.9583V17.1571H34.7937V10.1714H37.5181C37.9757 10.1714 38.3916 10.2571 38.7244 10.3857C39.5355 10.7714 40.0554 11.5642 40.0554 12.5071C40.0554 13.45 39.5771 14.1571 38.7868 14.5428H38.7452L40.2218 17.1785H38.8492L38.8284 17.1571Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M43.3207 13.3643L42.8632 14.6286H45.1093L44.6518 13.3643C44.4022 12.6786 44.007 11.6286 44.007 11.6286H43.9862C43.9862 11.6286 43.5911 12.6786 43.3415 13.3643M46.0452 17.1572L45.5252 15.7429H42.4473L41.9273 17.1572H40.6587L43.3831 10.15H44.631L47.3554 17.1572H46.0452Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M30.3846 9.4643C30.3846 9.3143 30.2598 9.20715 30.1351 9.20715C30.0103 9.20715 29.8855 9.3143 29.8855 9.4643C29.8855 9.6143 30.0103 9.72144 30.1351 9.72144C30.2598 9.72144 30.3846 9.6143 30.3846 9.4643Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M30.1145 7.38574L29.9065 8.9286H30.364L30.1977 7.38574H30.1145Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M31.0919 9.4643C31.0919 9.3143 30.9671 9.20715 30.8423 9.20715C30.7176 9.20715 30.5928 9.3143 30.5928 9.4643C30.5928 9.6143 30.7176 9.72144 30.8423 9.72144C30.9671 9.72144 31.0919 9.6143 31.0919 9.4643Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M31.3207 7.38574L30.6968 8.9286H31.1543L31.4039 7.38574H31.3207Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M29.1992 9.4643C29.1992 9.6143 29.324 9.72144 29.4488 9.72144C29.5736 9.72144 29.6984 9.6143 29.6984 9.4643C29.6984 9.3143 29.5736 9.20715 29.4488 9.20715C29.324 9.20715 29.1992 9.3143 29.1992 9.4643Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M28.8665 7.38574L29.1368 8.9286H29.5944L28.9496 7.38574H28.8665Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M118.066 10.2143V14.35L114.239 10.0857V17.1143H115.362V12.9786L119.168 17.2643V10.2143H118.066Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M111.286 10.5571C110.766 10.2357 110.184 10.0857 109.56 10.0857C108.936 10.0857 108.645 10.1714 108.229 10.3643C107.813 10.5571 107.438 10.8143 107.126 11.1357C106.814 11.4571 106.565 11.8428 106.399 12.2928C106.211 12.7428 106.128 13.1928 106.128 13.6857C106.128 14.1786 106.274 14.9285 106.586 15.4857C106.898 16.0428 107.314 16.4714 107.834 16.7928C108.353 17.1143 108.936 17.2857 109.56 17.2857C110.184 17.2857 110.745 17.1143 111.286 16.8143C111.806 16.4928 112.243 16.0643 112.534 15.5071C112.846 14.95 112.991 14.35 112.991 13.7071C112.991 13.0643 112.825 12.4428 112.534 11.9071C112.243 11.3714 111.806 10.9214 111.286 10.6V10.5571ZM111.203 15.4428C110.745 15.9357 110.184 16.1928 109.539 16.1928C108.894 16.1928 108.333 15.9357 107.875 15.4428C107.418 14.95 107.189 14.35 107.189 13.6643C107.189 12.9786 107.23 13.1286 107.314 12.8714C107.397 12.6143 107.501 12.3786 107.646 12.1857C107.792 11.9714 107.958 11.8 108.146 11.65C108.333 11.5 108.561 11.3714 108.79 11.2857C109.04 11.2 109.269 11.1571 109.518 11.1571C110.163 11.1571 110.724 11.3928 111.182 11.9071C111.639 12.4 111.868 13 111.868 13.6857C111.868 14.3714 111.639 14.9714 111.182 15.4643L111.203 15.4428Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M100.825 11.2642H102.738V17.1571H103.841V11.2642H105.733V10.1714H100.825V11.2642Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M99.2859 14.1785C99.7019 13.7285 99.9307 13.1714 99.9307 12.5714C99.9307 11.9714 99.7435 11.4571 99.3483 11.0071C99.2444 10.9 99.1612 10.8142 99.0572 10.7285C98.9532 10.6428 98.8492 10.5571 98.7244 10.4928C98.5996 10.4285 98.4749 10.3642 98.3501 10.3214C98.2253 10.2785 98.0797 10.2357 97.9549 10.2142C97.8301 10.1928 97.6846 10.1714 97.539 10.1714H95.3345V17.1571H96.4367V15.0357H97.3102C97.4558 15.0357 97.6014 15.0357 97.7262 14.9928L98.87 17.1571H100.118L98.766 14.6071C98.974 14.4785 99.1612 14.3285 99.3275 14.1571L99.2859 14.1785ZM97.2686 13.9642H96.3951V11.2642H97.4974C97.8925 11.2642 98.2253 11.4142 98.4749 11.7142C98.6828 11.95 98.7868 12.25 98.7868 12.5714C98.7868 12.8928 98.6828 13.2142 98.4541 13.45C98.1213 13.7928 97.7262 13.9642 97.2686 13.9642Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M89.948 17.1571H93.8371V16.0642H91.0502V13.6H93.8371V12.5285H91.0502V11.2642H93.8371V10.1714H89.948V17.1571Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M86.8075 14.2H87.3691V15.9357C87.0363 16.0857 86.7243 16.1714 86.3708 16.1714C85.7261 16.1714 85.1646 15.9143 84.707 15.4214C84.2495 14.9286 84.0207 14.3286 84.0207 13.6428C84.0207 12.9571 84.1247 12.7643 84.3327 12.3786C84.5406 11.9928 84.8318 11.6928 85.1854 11.4571C85.5389 11.2428 85.9341 11.1143 86.35 11.1143C86.7659 11.1143 87.2027 11.2428 87.577 11.5L88.201 10.6C87.6394 10.2357 87.0155 10.0428 86.35 10.0428C85.6845 10.0428 85.1646 10.2143 84.6238 10.5357C84.1039 10.8571 83.688 11.2857 83.376 11.8428C83.064 12.4 82.9185 13 82.9185 13.6428C82.9185 14.2857 83.064 14.8857 83.376 15.4428C83.688 16 84.1039 16.4286 84.6238 16.75C85.1438 17.0714 85.7261 17.2428 86.35 17.2428C86.9739 17.2428 87.5978 17.0714 88.1802 16.7071L88.4297 16.5571V13.1286C88.4505 13.1286 86.7867 13.1286 86.7867 13.1286V14.2H86.8075Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M80.0901 10.6428C79.5494 10.3214 78.9463 10.1714 78.3016 10.1714H76.825V17.1571H78.3016C78.9463 17.1571 79.5494 17.0071 80.0901 16.7071C80.6308 16.4071 81.0676 15.9785 81.3795 15.4642C81.6915 14.9285 81.8579 14.35 81.8579 13.7071C81.8579 13.0642 81.6915 12.4857 81.3795 11.95C81.0676 11.4142 80.6308 10.9857 80.0693 10.6642L80.0901 10.6428ZM80.0693 15.3785C79.591 15.8285 79.0087 16.0642 78.3224 16.0642H77.948V11.2428H78.3224C79.0087 11.2428 79.591 11.4785 80.0693 11.95C80.5477 12.4214 80.7972 13 80.7972 13.6642C80.7972 14.3285 80.5685 14.8857 80.0901 15.3571L80.0693 15.3785Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M75.3691 10.1714H74.2668V17.1571H75.3691V10.1714Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M72.0001 14.1785C72.416 13.7285 72.6448 13.1714 72.6448 12.5714C72.6448 11.9714 72.4576 11.4571 72.0624 11.0071C71.9585 10.9 71.8753 10.8142 71.7713 10.7285C71.6673 10.6428 71.5633 10.5571 71.4385 10.4928C71.3137 10.4285 71.189 10.3642 71.0642 10.3214C70.9394 10.2785 70.7938 10.2357 70.669 10.2142C70.5442 10.1928 70.3987 10.1714 70.2531 10.1714H68.0486V17.1571H69.1508V15.0357H70.0243C70.1699 15.0357 70.2947 15.0357 70.4403 14.9928L71.5841 17.1571H72.8319L71.4801 14.6071C71.6881 14.4785 71.8753 14.3285 72.0416 14.1571L72.0001 14.1785ZM70.0035 13.9642H69.13V11.2642H70.2323C70.6274 11.2642 70.9602 11.4142 71.2098 11.7142C71.4177 11.95 71.5217 12.25 71.5217 12.5714C71.5217 12.8928 71.4177 13.2142 71.189 13.45C70.8562 13.7928 70.4611 13.9642 70.0035 13.9642Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M65.7609 12.8714C65.7609 12.8714 65.7816 12.85 65.8024 12.8071C65.9896 12.5285 66.0936 12.2071 66.0936 11.8642C66.0936 11.5214 66.0312 11.3714 65.9272 11.1357C65.8648 10.9857 65.7817 10.8357 65.6569 10.7285C65.3033 10.3642 64.8874 10.1714 64.3674 10.1714H62.6829V17.1571H64.6794C65.0122 17.1571 65.3241 17.0928 65.6361 16.9428C65.948 16.7928 66.1976 16.6 66.4056 16.3428C66.7799 15.9142 66.9671 15.4428 66.9671 14.8642C66.9671 14.2857 66.7591 13.7714 66.3432 13.3214C66.156 13.1285 65.9688 12.9785 65.7401 12.85L65.7609 12.8714ZM63.8059 11.2642H64.3882C64.5754 11.2642 64.7418 11.3285 64.8666 11.4785L64.8874 11.5214C64.8874 11.5214 64.8874 11.5428 64.9082 11.5642C64.9082 11.5642 64.9082 11.5857 64.929 11.6071C64.9706 11.7142 64.9914 11.8214 64.9914 11.9071C64.9914 11.9928 64.9498 12.1428 64.8874 12.25C64.7418 12.4428 64.5338 12.55 64.2427 12.55H63.7851V11.2642H63.8059ZM65.5945 15.6785C65.3657 15.9357 65.0537 16.0857 64.7002 16.0857H63.8059V13.6428H64.4714C64.9082 13.6428 65.2825 13.7928 65.5529 14.1142C65.7609 14.35 65.8648 14.6071 65.8648 14.9071C65.8648 15.2071 65.7608 15.4642 65.5737 15.6785H65.5945Z\\\" fill=\\\"white\\\" />\\n<path d=\\\"M55.4871 8.92859H54.884H54.8632H54.572V18.4214H54.8632H55.2167H55.5079V8.92859H55.4871Z\\\" fill=\\\"white\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"pandora_bridgerton_white_clip0_46276_345641\\\">\\n<rect width=\\\"120\\\" height=\\\"12\\\" fill=\\\"white\\\" transform=\\\"translate(0 7)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hp_x_pandora_black\",\n  \"use\": \"hp_x_pandora_black-usage\",\n  \"viewBox\": \"0 0 843 149\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 843 149\\\" id=\\\"hp_x_pandora_black\\\">\\n  <!-- Generator: Adobe Illustrator 29.8.4, SVG Export Plug-In . SVG Version: 2.1.1 Build 6)  -->\\n  <defs>\\n    <style>\\n      #hp_x_pandora_black .st0 {\\n        fill-rule: evenodd;\\n      }\\n\\n      #hp_x_pandora_black .st1 {\\n        fill: none;\\n        stroke: #000;\\n        stroke-linecap: round;\\n        stroke-width: 2px;\\n      }\\n    </style>\\n  </defs>\\n  <path d=\\\"M477,74.5h10.7c3,0,4.9-.4,6.6-1.4,2.6-1.5,4.1-4.5,4.1-7.8s-1.5-6.3-4.1-7.8c-1.7-1-3.6-1.4-6.6-1.4h-10.7v18.5h0ZM467.8,100.9v-53.6h20.3c3.6,0,6.9.6,9.5,1.7,6.5,2.9,10.5,9.1,10.5,16.2s-4,13.3-10.5,16.2c-2.6,1.1-5.9,1.7-9.5,1.7h-11v17.8h-9.3Z\\\" />\\n  <path d=\\\"M525.9,71.8l-3.7,9.7h17.8l-3.7-9.7c-2-5.3-5.1-13.3-5.1-13.3h-.2s-3.1,8-5.1,13.4M547.4,100.9l-4.1-10.9h-24.4l-4.1,10.9h-10l21.6-53.6h9.8l21.5,53.6h-10.3Z\\\" />\\n  <path d=\\\"M602.7,100.9l-20.5-27.9-8-10.7v38.5h-9.3v-53.6h9.3l20.6,27.9,8,10.7v-38.5h9.3v53.6h-9.4Z\\\" />\\n  <path d=\\\"M632.9,92.2h8.1c6,0,10.4-1.1,13.6-3.3,4.7-3.1,7.2-8.5,7.1-14.8.1-6.3-2.4-11.6-7.1-14.8-3.2-2.2-7.7-3.3-13.6-3.3h-8.1v36h0ZM623.6,100.9v-53.6h17.8c8.2,0,15,1.9,19.9,5.6,6.5,4.8,10.1,12.3,10.1,21.2s-3.6,16.4-10.1,21.2c-4.9,3.7-11.8,5.6-19.9,5.6h-17.8Z\\\" />\\n  <path d=\\\"M706.2,54.9c-10.8,0-18.8,8.1-18.8,19.3s7.9,19.3,18.8,19.3,18.8-8.1,18.8-19.3-7.9-19.3-18.8-19.3ZM706.2,102.2c-16.3,0-28.5-12-28.5-28s12.2-28,28.5-28,28.5,12,28.5,28-12.2,28-28.5,28Z\\\" />\\n  <path d=\\\"M752.1,74.5h12c3,0,4.9-.4,6.6-1.4,2.6-1.5,4.1-4.5,4.1-7.8s-1.5-6.3-4.1-7.8c-1.7-1-3.6-1.4-6.6-1.4h-12v18.5h0ZM774.8,100.9l-10.3-17.8h-12.5v17.8h-9.3v-53.6h21.5c3.6,0,6.9.6,9.5,1.7,6.5,2.9,10.5,9.1,10.5,16.2s-3.7,12.6-10,15.6h-.3c0,.1,11.6,20.1,11.6,20.1h-10.9Z\\\" />\\n  <path d=\\\"M810.5,71.8l-3.7,9.7h17.8l-3.7-9.7c-2-5.3-5.1-13.3-5.1-13.3h-.2s-3.1,8-5.1,13.4M832,100.9l-4.1-10.9h-24.4l-4.1,10.9h-10l21.6-53.6h9.8l21.5,53.6h-10.3Z\\\" />\\n  <path d=\\\"M708.1,41.9c0-1.1-.9-1.9-1.9-1.9s-2,.8-2,1.9.9,2,2,2,1.9-.8,1.9-2Z\\\" />\\n  <path d=\\\"M705.9,26l-1.5,11.8h3.5l-1.4-11.8h-.6Z\\\" />\\n  <path d=\\\"M713.7,41.9c0-1.1-.9-1.9-1.9-1.9s-2,.8-2,1.9.9,2,2,2,1.9-.8,1.9-2Z\\\" />\\n  <path d=\\\"M715.6,26l-5.1,11.8h3.7l2-11.8h-.6Z\\\" />\\n  <path d=\\\"M698.7,41.9c0,1.2.9,2,1.9,2s2-.8,2-2-.9-1.9-2-1.9-1.9.8-1.9,1.9Z\\\" />\\n  <path d=\\\"M696.1,26l2.1,11.8h3.7l-5.1-11.8h-.6Z\\\" />\\n  <path class=\\\"st0\\\" d=\\\"M402.2,102.4h3.5s0,.8,0,1c0-.4-.3-.8-.6-.8h-1v3.9c0,.2.2.4.6.4-.6,0-1.4,0-1.8,0,.4,0,.6-.2.6-.4v-3.9h-1c-.2,0-.5.3-.6.8,0-.4,0-.7,0-1h0Z\\\" />\\n  <path class=\\\"st0\\\" d=\\\"M406.3,102.5h1.1l1.7,3.6,1.7-3.6h1.1s-.6,0-.6.3v3.8c0,.3.6.3.6.3h-1.7s.6,0,.6-.4,0-3.1,0-3.4c-.2.5-1.9,3.8-1.9,3.8l-1.9-3.8v3.6c0,.2.6.3.6.3h-1.4s.6,0,.6-.3,0-3.3,0-3.7-.4-.4-.6-.4h0Z\\\" />\\n  <path d=\\\"M59.2,97.2c.1,9.6-.3,19.1.2,28.7.2,1.9.8,3.7,1.7,5.3,1,1.9,2.7,3.1,4.3,4.6.2.2.4.4.5.6.4.5.1,1.1-.5,1.3-.7.2-1.5,0-2.2-.1-1-.3-2.1-.6-3.1-.8-3.5-.8-7.1-.6-10.6-.6-2.6.2-5.1.4-7.7.5-1.4,0-2-.7-.9-1.8.3-.3.7-.6,1.1-.9,4.9-3.3,5.6-10.1,5.7-15.6,0-13.2,0-26.4,0-39.7,0-.3,0-.9-.5-.8-.1,0-.3,0-.4.1-1.5.9-2.8,2-4.2,2.9-1.3,1-2.7,1.8-4.2,2.5-2.4,1.2-4.9,2.4-7.5,3.1-.3.1-.3.5-.3.7,0,.3,0,.7,0,1,0,11.3,0,22.6,0,34,0,1,.3,1.9,1,2.6,1,1.2,2.1,2.4,3.1,3.6,0,0,0,.2.1.3,0,0,0,.2-.2.3-.1,0-.2,0-.3,0-2.6-.5-5.2-1.2-7.8-1.5-4.1-.5-8.3-.3-12.4-.7-.2,0-.6,0-.6-.3,0-.2.1-.4.3-.5.2-.2.5-.4.7-.7,1.2-1,2.3-2.1,3.5-3.1.8-.7,1.2-1.5,1.2-2.5,0-10.3,0-20.5,0-30.8,0-.5,0-1,0-1.4,0-.2,0-.3-.2-.4-3.3-1.6-6.7-3-9.7-5.1-3.3-1.9-13.2-11.3-6.9-14.1,2.3-1,4.7-1.6,7.2-1.8.3,0,.5,0,.8,0,0,0,.2.2,0,.2-1.3,1-6.1,3.9-6.1,5.4,0,.3,0,.6.3.8,2.3,2.2,4.8,4.2,7.4,6.1,1.8,1.3,3.8,2.1,6,2.7.9.2,1.1.1,1.1-.9,0-17.4.1-34.9,0-52.3,0-1.6-1.1-2.8-2.3-3.7-.7-.8-1.7-1.4-2.2-2.3,0-.1,0-.3.1-.4.1,0,.2,0,.3,0,2.1,0,4.3,0,6.4,0,4,0,8.1,0,12.1,0,.2,0,.4.3.3.5-.8,1.2-1.9,2.2-2.8,3.4-.3.4-.5.9-.5,1.4,0,17.3,0,34.7,0,52,0,.4,0,.7,0,1.1.1.3.5.2.8.1,3.2-1.2,6.1-3.3,8.7-5.5,2.2-1.8,4.4-3.7,6.6-5.5.5-.4.8-.9.7-1.5,0-15.6,0-31.3,0-46.9,0-.7-.5-1.2-.9-1.7-.8-.9-1.6-1.7-2.4-2.6-.3-.3-.6-.7-.7-1.1,0-.2,0-.6.3-.6,5.4-.2,10.9,0,16.3-.6,1.3-.1,2.5-.3,3.8-.3.2,0,.4.3.2.5-1.1,1.6-2.4,2.9-3.7,4.4-.4.6-1.3,1.2-1.3,2,0,13.2,0,26.4-.1,39.6,0,1.2.1,1.3,1.2,1,6.8-1.3,13.8-1.3,20.7-1.6,1.7,0,3.5,0,5.2.1.2,0,.4.1.5.2.8.5.1,1.3-.4,1.7-.5.4-1,.8-1.5,1.3-1.2,1-2.4,1.9-3.6,2.9-.7.6-1.5,1.3-1.5,2.3.3,6.6,2.3,13,3.3,19.6.2,1.3.5,2.5,1,3.7.2.5.6.7,1.1.7,1.2,0,2.4-.5,3.3-1.3.7-.6,1-1.5,1.2-2.4.5-10.9-.3-22-.6-32.9-.2-3.6-.2-7.2-.5-10.8,0-.7-.2-1.4-.4-2.1-.8-2.3-2.3-1.8-3.8-.5-1.8,1.3-3.5,2.7-5.2,4.1-1.1.8-1.9,1.9-1.9,3.3,0,1,.1,1.9.1,2.9,0,.2,0,.4-.1.6-.2.7-1,.5-1.4,0-1.9-2.9-4-5.9-4.9-9.3-.9-4.1,3.5-6.2,6.4-7.9,2.9-1.6,5.8-3.5,9-4.7.6-.1,1.1,0,1.5.4,2.8,3.1,5.5,6.3,8.4,9.3,2.2,2.3,3.6,5.2,3.6,8.4.1,12.1.1,24.3.5,36.4.2,1.4.4,2.9,2.3,2.9.9,0,2.1-.2,2,.4,0,0,0,.2-.2.3-2.2,2.3-4.8,4.3-6.7,6.8-1.6,2-3.8,4.5-6.6,3.8-1.4-.3-1.6-1.8-1.9-2.9-.3-1.5-.9-1.7-2.2-1-1.5.9-2.9,1.8-4.4,2.7-1.8,1.2-4.5,1.6-6-.2-.4-.5-.7-1-1-1.6-1.7-5.9-2.9-11.9-4.1-17.9-1.8-8.9-1.3-9.4,5.4-15.2,0,0,.1-.2.2-.3,0-.1,0-.4-.2-.4-.3,0-.7,0-1,0-4.9,1-9.9,2-14.8,3.3-.9.3-1.2,1.2-1.4,2.1-.5,9.5,0,19.1-.2,28.7h0Z\\\" />\\n  <path d=\\\"M217.8,148.1c-2.7-27.8-5-55.7-7.5-83.6,0-.3,0-.7,0-1,0,0,0,0,0,0,0,0,.2,0,.2,0,.2.1.3.3.4.5.3.3,3.2,4.7,3.4,3.2-.8-8.6-2.9-17-4.4-25.4,0,0,0-.2,0-.3,0,0,.2,0,.3,0,.5.4.9.9,1.4,1.3.4.4,1.5,1.6,2.1.9,0-.2.2-.4.2-.6.2-1.6,0-3.2,0-4.8-.3-3.4-.7-6.8-1.1-10.2-.8-6.6-1.3-13.2-2.2-19.8-.1-.8-.8-1.3-1.4-1.8-1.3-1.1-2.5-2.1-3.8-3.2-.3-.3-.7-.5-.9-.9,0,0,0-.1,0-.2,0,0,.1,0,.2,0,1.3-.2,2.7-.2,4.1-.3,10-.5,19.9-1.4,29.9-1.8.3,0,.6.1.8.4,3.6,5.4,7.2,10.8,10.9,16.2.5.7.7,1.5.8,2.4.2,5,.3,10,.2,15.1,0,5.6-1.1,11.2-1.6,16.7,0,.3.1.6.5.7,2.2.6,4.6.4,6.8,1.1.2,0,.6.1.7-.1.2-.9.3-1.8.5-2.7,0-.9.5-1.7,1.3-2.2,4.4-3.3,9.5-5.4,14-8.4,1.2-.9,2.7-1.6,4-.3,3.1,3.4,6.7,6.3,9.3,10.1.7.9.8,2.1.9,3.2.8,12.4.9,24.9.9,37.3-.1,1.6.5,3.7-1,4.8-4.6,3.6-9.9,6.1-15.4,7.7-.6.1-1.1,0-1.5-.4-2.1-2.2-4.1-4.4-6.4-6.4-2.1-2.1-5.8-5.5-6.2-8.4-.7-9.4-.9-18.7-.7-28.1,0-.3,0-.6,0-.9-.2-1.3-2.1-1.2-3.1-1.4-1.7-.2-3.5-.2-5.2-.8-.3-.1-.6.1-.7.4-2.5,4.3-7.3,5.8-11.9,6.9-1,.2-2.2.5-2.8-.6-1.4-2.3-2.8-4.6-4.2-6.9-.4-.7-.8-1.3-1.3-1.9-.1-.2-.5-.3-.5,0,0,11.6.3,23.3.9,34.9,0,1.1.2,2.2.1,3.3,0,0,0,0,0,0,0,0,0,0-.1,0,0-.2-.2-.3-.2-.5-.5-1.5-1-3-1.6-4.6-.4-1.1-1.1-3.4-2.1-4-.3-.1-.4.2-.5.4-.7,8.8.1,17.7,0,26.5,0,.1-.2.3-.3.1-.1-.2-.3-.4-.4-.5-.4-.7-.9-1.4-1.3-2.1-.5-.7-1-1.4-1.8-1.8-.4-.2-.7.3-.8.6-.9,6.1-.6,12.4-.7,18.5,0,5.6-.6,11.2-.6,16.8,0,2-.1,4-.2,5.9,0,.3,0,.5-.2.9h0ZM266.4,73h0c0,5.2.1,10.5.3,15.7.2,2.5,2.6,4,4.1,5.8.5.5,1.1,1,1.8.7,1.7-.8,3.4-1.7,5.1-2.6,1.8-.7,1.9-2.2,1.9-3.9,0-11.2,0-22.5-1.6-33.7-.2-.9-1.2-.6-1.9-.5-2.8.5-5.6.9-8.5,1.5-.7.1-1.5.5-1.5,1.3,0,5.2.2,10.4.2,15.6h0ZM225.8,27.9h0c0,6.3.2,12.5.3,18.8,0,.7.2.8.9.7,3.3-.7,6.6-.8,9.9-1,.4,0,.6-.2.8-.5.3-.5.2-1.1.2-1.6-.3-7.6-.5-15.2-.8-22.7-.2-4.1,0-8.2-.5-12.3,0-.2-.2-.4-.4-.5-2.1-.3-4.2-.2-6.3-.3-1.4,0-2.7-.2-4.1-.1-.4,0-.3.7-.4,1,.2,6.2.2,12.4.3,18.6h0ZM274.5,43.8c0,0-.2,0-.3,0-1.9,1.2-3.8,2.7-5.7,4-.7.6-1.7,1.1-1.8,2.1,0,.8-.3,3.5,1.1,3.1,1.5-.6,2.7-1.9,3.9-3,1.5-1.6,2.4-3.6,3.1-5.6,0-.3,0-.5-.3-.6h0ZM231.9,51.2c-.6,0-.8.3-.5.8.8,1.2,1.7,2.4,2.5,3.6.3.4.8.9,1.4.6.1-.1.3-.2.4-.4.6-.9,1.4-1.6,1.9-2.6.2-.6-.4-1-.9-1.1-1.5-.3-3.1-.7-4.7-.9h0Z\\\" />\\n  <path d=\\\"M166.1,50.1c1.8,0,3.6-.2,5.4-.3.1,0,.2,0,.3,0,.1,0,.2.3.1.4-.1.1-.2.3-.4.4-1.7,1.4-2.2,1.3-1.7,3.7,1.2,7.1,2.5,14.2,3.7,21.3.1.7.3,1.4.4,2.2.1.7.6,1.1,1.1.4,4.1-9.3,8-18.8,11-28.6.8-2.4,0-2.6-1.8-4.1-.3-.3-1.1-.7-1-1.1,0,0,0-.1.2-.1,1.6,0,3.3.2,4.9.2,3.2.3,6.5.2,9.7.7.7.3.4,1,.2,1.5-2.3,5.7-4.8,11.3-7.3,16.9-3.6,8.3-7.4,16.5-11.5,24.5-3.7,7.1-7.7,14-11.7,21-2.4,4.1-4.6,8.3-7.1,12.3-.4.6-.9,1.3-1.7,1.3-6.3-.4-12.6-1.1-18.9-1.6-8.2-1-16.6-1.9-24.1-5.5-1-.5-2-1-3-1.6-.8-.4-1.8-1.1-1.3-2.1,1-2.2,2.2-4.4,3.2-6.6.4-.7.9-1.4,1.5-1.9,1.1-1,2.3-2,3.4-3,1.7-1.6,4.6-.6,6.8-.8,1.5,0,3.1.1,4.6.2.3,0,.5,0,.7.2.5.5-.9.9-1.2,1.1-2.1,1-4.3,2-6.4,2.9-.8.4-1.2,1.1-1.5,1.8-.6,1.4-1.2,2.8-1.8,4.2-.5,1.4-.2,2.3,1.5,2.4,7.5.7,15,1.4,22.6,2.2,2.3.2,4.5.4,6.8.6.8,0,1.7.1,2.3-.5,4.9-8.4,9.4-17.1,14.1-25.6.4-.8.5-1.7.4-2.7-2.2-10.6-4.6-21.1-6.8-31.7-.2-1.6-.8-2.2-2-3.2-.1-.1-.3-.3-.4-.4-.2-.2,0-.6.2-.6.1,0,.2,0,.3,0,2-.2,4.1-.2,6.2-.4h0s0,0,0,0Z\\\" />\\n  <path d=\\\"M345.8,106c2.8.2,5.7,0,8.5.5.6.5-.9,1-1.1,1.2-.8.4-1.5,1.1-2,1.9-1.5,2.3-3,4.6-4.6,6.9-.2.3-.5.6-.7.8-.5.5-1.2.4-1.7.1-5.8-2.9-11.5-6.1-17.2-9.1-.6-.3-1.2-.7-1.8-1-.7-.3-1.4-.9-1.5-1.7-.5-20.7-.4-41.5-1.1-62.3-.2-1-1.3-.9-2-.9-1,0-2.1,0-3.1,0-.5,0-1.7,0-1.5-.6,3.8-4.9,8.4-9.3,11.8-14.6,1.4-2.2,2.8-4.3,4.1-6.5.2-.3.3-.6.6-.8,0,0,.3,0,.3,0,.2.6.1,1.2.2,1.7.2,4.7.3,9.4.5,14.2,0,.7,0,1.9.9,2,2.2.4,4.4,0,6.6.3.7,0,1.2.3,1.2,1.1,0,2.8.5,3-2.5,3.2-1.6.2-3.2.1-4.8.4-.4,0-.7.3-.8.8-.2,17.5.5,35,.6,52.5,0,3.8,0,7.7.3,11.5,0,1.2,1.2,1.6,2,2.1,2.4,1.2,4.7,2.7,7.1,3.7.5.2,1,0,1.4-.3,1-1,1.8-2.2,2.7-3.3.3-.4.7-1.1,0-1.4-1.3-.5-2.7-.5-4-.8-1.3-.2-2.6-.4-3.9-.6-.3,0-.6-.1-.9-.3-.7-.4-.5-1,.2-1,2.1,0,4.2.2,6.3.2h0s0,0,0,0Z\\\" />\\n  <path d=\\\"M315.2,31.4c0,1.6.3,2.6-1.7,2.5-1.1,0-2.2,0-3.3.1-.7,0-1.6,0-1.8.9-.7,15.8-.9,31.7-1.4,47.5-.1,6-.2,12-.4,18,0,1.5-.5,3.3.7,4.5,1.8,1.8,3.7,3.6,5.4,5.5.1.2.2.4.3.6.1.3-.1.6-.4.7-.4,0-.7,0-1.1-.1-4.6-3-9-6.2-13.5-9.3-.4-.3-.6-.7-.7-1.1-.4-21.7,0-43.4-.2-65,0-.6-.3-1.4-1-1.5-1.2-.1-2.5-.2-3.7-.2-1.6,0-3.2,0-4.7-.2-.1,0-.2,0-.3,0-.1,0-.2-.3-.2-.4,3.4-3.3,7.1-6.4,10.5-9.8,3.3-3.1,6.7-6.1,9.3-9.8.1-.2.3-.4.5-.3.2.1.2.4.2.6,0,4.1,0,8.3.2,12.4,0,.7.2,1.5,1,1.6,1.5.2,2.9.2,4.4.2,2.1,0,1.6,1.3,1.8,2.8h0Z\\\" />\\n  <path d=\\\"M392.6,70.4c.1,7.3.3,14.5.4,21.8,0,2.9.3,5.8.9,8.6.7,3.6,3.6,5.9,6.7,7.4,0,0,0,0,0,0,0,0,0,.1-.1.1-8.2-.2-16.4-1.6-24.2-4,0-.1,0-.3.2-.3,4.7-1.8,6.9-7.1,6.7-11.8-.2-11.9-.4-23.7-.7-35.6,0-3.1,0-6.2-.2-9.2,0-.6-.3-1.3-1-1.4-.6-.2-2.7,0-2.1-1.1,3.3-4,6.6-7.9,9.9-11.9.4-.5.8-1,1.4-1.4.4-.2.7.2.7.6.2,1.6.2,3.3.6,4.9.4.9,1.4.3,2-.1,1.1-.7,2.1-1.3,3.2-2,.6-.4,1.7-1.1,2.2-.3,2.5,4.4,4.6,9.1,6.9,13.6.5,1.2,1.7,2.8.6,4.1-2.8,3.2-5.7,6.4-9.1,8.9-.6.4-.9-.4-.8-.9,0-.4.2-.8.5-1.1.4-.6.7-1.1,1.1-1.7.5-.8,1.1-1.7.7-2.6-1-3.3-2.2-6.6-3.3-9.9-.2-1.3-2.1-2-3.1-.8-.6.6-.6,1.5-.6,2.3.1,8,.3,16,.4,23.9h0Z\\\" />\\n  <path d=\\\"M345.3,68.2c.3-6.8.2-13.6.8-20.3.1-.5.3-.9.6-1.3,2.6-2.6,5.2-5.2,7.9-7.8.5-.5,1.1-1.1,1.7-1.6.7-.7,1.7-1.3,2.6-.8,1.5.9,3,1.9,4.5,2.8,1.4.9,2.9,1.8,4.3,2.7,1,.5,1.7,1.3,2,2.4,1.4,4.6,3.3,9,4.5,13.7.2,1.1-.5,2-1.1,2.9-.9,1.3-1.8,2.7-2.7,4-.6.8-1.3,2-2.4,1.7-3.7-.8-7.4-1.8-11.1-2.7-.7-.1-2.2-.6-2.5.4-.2,2.9.1,5.9.1,8.8.3,5.9,0,11.9.7,17.8,0,.3.2.5.4.8,1.3,1.6,2.8,3.1,4.2,4.6.5.7,1.2,1,1.7,0,1.6-5.3,2.8-10.6,4.4-15.9.1-.4.5-.4.8-.1,1.3,1.8,2.5,3.6,3.7,5.4.6.9,1.2,2,.4,3-2.5,3.6-5,7.3-7.5,10.8-.2.2-.3.4-.5.6-.4.4-.9.4-1.4.4-1.2,0-2.5-.1-3.7-.2-1.8-.2-4,0-5.1-1.7-2.3-3.1-4.5-6.4-6.8-9.4-1.2-1.7-.5-4.2-.6-6.2.1-4.9.3-9.9.4-14.8h0,0ZM354.8,51.3h0c0,2.4-.2,4.8-.2,7.1,0,.8,1,1,1.6,1.2,2.8.4,5.6.9,8.5,1.3.5,0,1.2,0,1.2-.6,0-.6-.3-1.1-.5-1.6-2-4.9-4.1-9.8-6.1-14.7-.7-1.7-1-2.6-3.1-1.8-.7.3-1,.8-1.2,1.5-.2,2.5-.2,5-.3,7.5h0Z\\\" />\\n  <path d=\\\"M120.5,30.2c.3,0,.5,0,.6-.2,1.5-1,3-2,4.5-3,.6-.4,1.5-1.1,2.1-.4,3.4,5.2,5,11.4,6.5,17.4.2.9.2,1.9-.5,2.6-2,1.8-4.1,3.5-6.2,5.3-.3.2-.6.5-.9.7-.4.4-1.5.3-1.3-.5.3-.9,1.2-1.6,1-2.6-.7-5-2.1-9.9-3.3-14.8-.3-.7-1-.3-1.5,0-.9.5-.8.5-.8,1.3,0,.9,0,1.8.1,2.7.5,13.6,1,27.2,1.5,40.8,0,2.4.2,4.8.3,7.1,0,1.3-.1,2.8.9,3.7.6.6,1.3,1.2,1.9,1.8.5.5,1.1.8,1.4,1.4,0,0,0,.3-.2.4-.1,0-.3,0-.4,0-5.2.3-10.3.7-15.5.9-.5,0-1,0-1.4,0-.1,0-.3,0-.4-.2-.2-.4.4-.8.6-1.1,1.2-1.4,3.3-2.6,3.2-4.7-.3-17.9-.7-35.8-1.2-53.7,0-.7,0-1.7-.9-1.9-1.7-.4-3.5-.2-5.1-.5-.2,0-.3-.4-.1-.5,4.1-3.4,8.4-6.5,12.6-9.8.5-.3,1.4-1.3,1.7-.4.3,2.3.4,4.7.6,7,0,.4,0,.7.3,1h0Z\\\" />\\n  <path d=\\\"M151.3,57.9c0,8.5,0,17.1,0,25.6.1,1.7,1.5,3,2.4,4.4.1.2.2.3.3.5,0,.1,0,.4-.3.4-.1,0-.3,0-.4,0-.5,0-1,0-1.5-.1-4.3-.5-8.6.2-12.8.9-.1,0-.2,0-.2-.2,0,0,0-.2,0-.2,1.4-2,3.5-3.6,3.5-6.3.3-17.7.3-35.3.6-53,.1-1.9-3.3-2-2.3-3.6.3-.4.8-.8,1.2-1.1,2.9-2.3,5.8-4.6,8.6-7,.1-.1.3-.2.5-.3.1,0,.3,0,.4.2.2,2.3,0,4.7,0,7,0,.1,0,.2,0,.3,0,.2.3.3.4.2,1.9-1.3,3.5-2.9,5.4-4.2.2-.1.4-.2.6-.3.2,0,.5,0,.7.3.7,1.4,1.2,2.8,1.8,4.3,1.4,3.7,2.8,7.3,4.2,11,0,.3.1.6.2.9.1.9-.5,1.5-1.1,2-2.3,1.9-4.5,4-6.8,5.9-1.1.7-1.8-.4-1-1.4,2-3.6.2-8.3-.7-12-.3-.8-.5-1.7-1-2.4-.2-.3-.6-.4-1-.3-.8.3-1.2,1.1-1.4,1.9-.5,8.8,0,17.7-.2,26.6h0,0Z\\\" />\\n  <line class=\\\"st1\\\" x1=\\\"437\\\" y1=\\\"10\\\" x2=\\\"437\\\" y2=\\\"138\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Class to handle URL mapping caching to avoid redundant API calls.\n */\nexport class UrlMapper {\n    lastUrlSegment = null\n    urlMapping = null\n\n    /**\n     * Creates an instance of UrlMapper.\n     * @param {function(string): Promise<UrlMapping>} method - A function that fetches URL mapping based on the given URL segment.\n     */\n    constructor(method) {\n        this.fetchUrlMapping = method\n\n        this.getUrlMapping = this.getUrlMapping.bind(this)\n    }\n\n    /**\n     * Compares the given URL segment with the last URL segment and fetches new URL mapping if different.\n     * @param {string} urlSegment - The URL segment to fetch the mapping for.\n     * @returns {Promise<UrlMapping>} - The URL mapping for the given URL segment.\n     * @throws {Error} If the fetch operation fails.\n     */\n    async getUrlMapping(urlSegment) {\n        if (urlSegment === this.lastUrlSegment) {\n            return this.urlMapping\n        } else {\n            this.urlMapping = await this.fetchUrlMapping(urlSegment)\n\n            if (this.urlMapping) {\n                this.lastUrlSegment = urlSegment\n            }\n\n            return this.urlMapping\n        }\n    }\n}\n\n/**\n * @typedef {Object} UrlMapping\n * @property {string} resourceType - The type of resource that corresponds to the requested URL. Enum: CATEGORY, PRODUCT, CONTENT_ASSET.\n * @property {string} [resourceSubType] - If the resourceType is CONTENT_ASSET, this field tells you whether the resource is a standard content asset or a Page Designer content asset. Enum: STANDARD_CONTENT_ASSET, PAGE_DESIGNER_CONTENT_ASSET.\n * @property {string} resourceId - The identifier for the resource that corresponds to the requested URL.\n * @property {Object.<string, string>} [refinements] - The refinement filters that correspond to the URL and resourceType.\n * @property {number} [statusCode] - This field is populated only if you set up a URL redirect in Business Manager. Specifies whether the redirect is temporary (302 or 307) or permanent (301).\n * @property {string} [destinationUrl] - This field is populated if the urlSegment resolves to a redirect. Specifies the URL you want to redirect to as an absolute or relative URL.\n * @property {boolean} [copySourceParams] - This field is populated only if you set up a URL redirect in Business Manager. It’s a flag that shows whether the parameters of the source URL have been copied to the destination URL.\n * @property {string} [additionalUrlParams] - This field is populated only if you set up a URL redirect in Business Manager. It returns the parameters you want to add to the end of the URL.\n * @property {string} [productCategoryId] - This field is populated only if you set up a URL redirect in Business Manager. It identifies the destination product's category ID.\n */\n","import React, {useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport fetch from 'cross-fetch'\nimport {createContext} from '@chakra-ui/react-utils'\nimport queryString from 'query-string'\nimport {useAccessToken, useCommerceApi} from '@salesforce/commerce-sdk-react'\nimport {UrlMapper} from './url-mapper'\nimport {getCustomApiPaths} from '../../utils/get-custom-apis'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../../utils/dol-channel-headers'\n\nconst [Provider, useUrlMapper] = createContext({\n    name: 'UrlMapperContext',\n    errorMessage:\n        'useUrlMapper: `context` is undefined. Seems you forgot to wrap components within `<UrlMapperProvider />`'\n})\n\nconst UrlMapperProvider = ({children}) => {\n    const {shopperSeo: client} = useCommerceApi()\n    const {getTokenWhenReady} = useAccessToken()\n    const {locale} = useMultiSite()\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers + removes deprecated `source`.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    //DOL\n    const {\n        app: {\n            dolAPI: {proxyPath},\n            targetEnvironment\n        }\n    } = getConfig()\n    const apiPath = getCustomApiPaths(proxyPath).URL_MAPPING\n\n    const requestParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'})\n        }),\n        [locale?.id, isDolQ3MigrationEnabled]\n    )\n\n    const method = useCallback(\n        async (urlSegment) => {\n            const access_token = await getTokenWhenReady()\n\n            const response = await fetch(\n                `${apiPath}?${queryString.stringify(\n                    {...requestParams, urlSegment},\n                    {skipEmptyString: true}\n                )}`,\n                {\n                    headers: {\n                        Authorization: `Bearer ${access_token}`,\n                        'Content-Type': 'application/json',\n                        ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                        'x-environment': targetEnvironment\n                    }\n                }\n            )\n\n            return response.json()\n        },\n        [client]\n    )\n\n    const urlMapper = useMemo(() => {\n        return new UrlMapper(method)\n    }, [method])\n\n    return <Provider value={urlMapper}>{children}</Provider>\n}\n\nUrlMapperProvider.displayName = 'UrlMapperProvider'\nUrlMapperProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {UrlMapperProvider, useUrlMapper}\n","import React, {useMemo, useState, useCallback, useRef} from 'react'\nimport {createContext} from '@chakra-ui/react-utils'\nimport PropTypes from 'prop-types'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useConsent} from 'pandora-shared-app/overrides/app/components/onetrust'\nimport {PixelScript} from '../../components/scripts/pixel'\nimport {useVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\n\nconst [Provider, usePixel] = createContext({\n    name: 'PixelContext',\n    errorMessage:\n        'usePixel: `context` is undefined. Seems you forgot to wrap components within `<PixelProvider />`'\n})\n\nconst PixelProvider = ({children}) => {\n    const {site: siteConfig} = useMultiSite()\n    const [isPixelInitialized, setPixelInitialized] = useState(false)\n    const [initialPayload, setInitialPayload] = useState(null)\n    const {\n        pixel: {auth_key = null, domain_key = null}\n    } = siteConfig\n\n    const {allowFunctional, allowPersonalisation} = useConsent()\n\n    // LD flag to control deferred pixel loading behavior\n    const isDeferredPixelLoadingEnabled = useVariant(LD_KEYS.enableDeferredPixelLoading, false)\n\n    // LD flag to control the setInitialPageView \"keep updating\" behavior.\n    // This is a separate flag from enableBrExplicitReferrer because the two behaviors are\n    // unrelated (deferred-pixel-loading payload freshness vs. referrer data) and must be\n    // independently rollback-able.\n    const isPendingPayloadUpdateEnabled = useVariant(LD_KEYS.enablePixelPendingPayloadUpdate, false)\n    const hasInitializedRef = useRef(false)\n\n    // Method for page components to set initial payload before pixel loads.\n    // When the LD flag is on: keeps updating the pending payload (instead of freezing on the\n    // first call) until the pixel script has actually finished initializing, so a page view that\n    // fires while the script is still loading (e.g. a fast category-to-category switch) isn't\n    // silently dropped.\n    // When the LD flag is off (old behavior): only the first call sets the payload.\n    const setInitialPageView = useCallback(\n        (payload) => {\n            if (isPendingPayloadUpdateEnabled) {\n                if (!isPixelInitialized) {\n                    setInitialPayload(payload)\n                }\n            } else if (!hasInitializedRef.current) {\n                hasInitializedRef.current = true\n                setInitialPayload(payload)\n            }\n        },\n        [isPixelInitialized, isPendingPayloadUpdateEnabled]\n    )\n\n    const value = useMemo(\n        () => ({\n            auth_key,\n            domain_key,\n            allowFunctional,\n            allowPersonalisation,\n            isPixelInitialized,\n            setPixelInitialized,\n            setInitialPageView,\n            hasInitialPayload: initialPayload !== null,\n            isDeferredPixelLoadingEnabled\n        }),\n        [\n            auth_key,\n            domain_key,\n            allowFunctional,\n            allowPersonalisation,\n            isPixelInitialized,\n            initialPayload,\n            setInitialPageView,\n            isDeferredPixelLoadingEnabled\n        ]\n    )\n\n    const hasConsent = allowFunctional && allowPersonalisation\n\n    // When deferred loading is enabled: wait for initial payload before loading pixel\n    // When disabled (old behavior): load pixel immediately when consent is given\n    const shouldLoadPixel = isDeferredPixelLoadingEnabled\n        ? hasConsent && initialPayload !== null\n        : hasConsent\n\n    return (\n        <Provider value={value}>\n            {shouldLoadPixel && (\n                <PixelScript\n                    initialPayload={isDeferredPixelLoadingEnabled ? initialPayload : undefined}\n                />\n            )}\n            {children}\n        </Provider>\n    )\n}\n\nPixelProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {PixelProvider, usePixel}\n","/**\n * Class to handle URL mapping caching to avoid redundant API calls.\n */\nexport class UserPriceContext {\n    userPriceContext = false\n\n    /**\n     * Creates an instance of UserContext.\n     * @param {function(string): Promise<UserPriceContext>} method - A function that fetches URL mapping based on the given URL segment.\n     */\n    constructor(method) {\n        this.fetchUserPriceContext = method\n\n        this.getUserPriceContext = this.getUserPriceContext.bind(this)\n    }\n\n    /**\n     * Compares the given URL segment with the last URL segment and fetches new URL mapping if different.\n     * @param {string|Object} reqCookie - The cookie value used to fetch user price context.\n     * @param {{failSafe?: boolean}} [options] - Whether to resolve fetch failures as false.\n     * @returns {Promise<boolean>} - Whether the user price context fetch succeeded.\n     */\n    async getUserPriceContext(reqCookie, {failSafe = false} = {}) {\n        if (!failSafe) {\n            this.userPriceContext = await this.fetchUserPriceContext(reqCookie)\n\n            return this.userPriceContext\n        }\n\n        try {\n            this.userPriceContext = await this.fetchUserPriceContext(reqCookie)\n        } catch (error) {\n            const errorMessage = error?.message || String(error)\n            const safeErrorMessage =\n                typeof reqCookie === 'string' && reqCookie.length > 0\n                    ? errorMessage.replaceAll(reqCookie, '[redacted]')\n                    : errorMessage\n            console.warn(`Failed to fetch user price context: ${safeErrorMessage}`)\n            this.userPriceContext = false\n        }\n\n        return this.userPriceContext\n    }\n}\n","import React, {useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport fetch from 'cross-fetch'\nimport queryString from 'query-string'\nimport {createContext} from '@chakra-ui/react-utils'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useAccessToken} from '@salesforce/commerce-sdk-react'\nimport {getCustomApiPaths} from '../../utils/get-custom-apis'\nimport {getUsid} from '../../utils/server-cookies'\nimport {UserPriceContext} from './user-price-context'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../../utils/dol-channel-headers'\n\nconst [Provider, useUserPriceSegment] = createContext({\n    name: 'UserPriceSegmentContext',\n    errorMessage:\n        'useUserPriceSegment: `context` is undefined. Seems you forgot to wrap components within `<UserPriceSegmentContext />`'\n})\n\nexport const normaliseSegmentCookie = (cookie) => {\n    if (cookie == null) return null\n    if (typeof cookie === 'object') return cookie\n\n    let value = cookie\n    try {\n        value = decodeURIComponent(value)\n    } catch {\n        value = cookie\n    }\n\n    if (value === 'control') return value\n\n    try {\n        return JSON.parse(value)\n    } catch (error) {\n        const errorMessage = error?.message || String(error)\n        const safeErrorMessage =\n            typeof value === 'string' && value.length > 0\n                ? errorMessage.replaceAll(value, '[redacted]')\n                : errorMessage\n        console.warn(`Failed to parse expSegGrp cookie: ${safeErrorMessage}`)\n        return null\n    }\n}\n\nconst UserPriceSegmentProvider = ({children}) => {\n    const {getTokenWhenReady} = useAccessToken()\n    const baseUrl = useAppOrigin(true)\n    const {site, locale} = useMultiSite()\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disablePlpUserPriceContextOrganisationIdShortCodeSiteIdParameters,\n        false\n    )\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers + removes deprecated `source`.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const isSsrPriceContextFixEnabled = useVariant(\n        LD_KEYS.enableGlobalSsrPriceContextCookieHandling,\n        false\n    )\n    const dolChannelHeaders = useDolChannelHeaders()\n    const {\n        app,\n        app: {\n            commerceAPI: {\n                parameters: {organizationId, shortCode}\n            },\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n    const requestParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'}),\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId: site?.id,\n                      organisationId: organizationId,\n                      shortCode\n                  })\n        }),\n        [site?.id, locale?.id, isDolQ3MigrationEnabled, isOrgIdShortCodeSideIdParametersDisabled]\n    )\n    const isXEnvironmentHeaderEnabled = useVariant(\n        LD_KEYS.enablePlpXEnvironmentHeaderForUserPriceContext,\n        false\n    )\n    const method = useCallback(\n        async (cookie) => {\n            let segment\n            if (isSsrPriceContextFixEnabled) {\n                segment = normaliseSegmentCookie(cookie)\n                if (!segment) return false\n            } else {\n                const decoded = decodeURIComponent(cookie)\n                segment = decoded === 'control' ? decoded : JSON.parse(decoded)\n            }\n            const isControl = segment === 'control'\n\n            const access_token = await getTokenWhenReady()\n            const usid = access_token && getUsid(access_token)\n            const url = baseUrl.concat(\n                `${\n                    getCustomApiPaths(proxyPath, organizationId).USER_PRICE_CONTEXT\n                }${usid}?${queryString.stringify(requestParams)}`\n            )\n            // TODO: Replace with client.getUrlMapping when it becomes in working state.\n            const response = await fetch(url, {\n                method: 'PUT',\n                credentials: 'omit',\n                headers: {\n                    Authorization: `Bearer ${access_token}`,\n                    'Content-Type': 'application/json',\n                    ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                    ...(isXEnvironmentHeaderEnabled\n                        ? {'x-environment': app?.targetEnvironment}\n                        : {})\n                },\n                body: JSON.stringify({\n                    customQualifiers: {\n                        segGroup: isControl ? 'control' : segment.segment_id\n                    }\n                })\n            })\n            const contentType = response?.headers?.get('Content-Type')\n\n            if (!response.ok) {\n                if (\n                    contentType &&\n                    (contentType.includes('application/json') ||\n                        contentType.includes('application/problem+json'))\n                ) {\n                    const errorDetails = await response.json()\n                    throw errorDetails\n                } else {\n                    throw new Error(`${response.status} ${response.statusText}`)\n                }\n            }\n            if (response.ok) {\n                return true\n            }\n        },\n        [isSsrPriceContextFixEnabled]\n    )\n\n    const userSegment = useMemo(() => {\n        return new UserPriceContext(method)\n    }, [method])\n\n    return <Provider value={userSegment}>{children}</Provider>\n}\n\nUserPriceSegmentProvider.displayName = 'UserPriceSegmentProvider'\nUserPriceSegmentProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {UserPriceSegmentProvider, useUserPriceSegment}\n","import React, {useState, useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n/**\n * This is the global state for the multiples sites and locales supported in the App.\n *\n * To use the context simply import them into the component requiring context\n * like the below example:\n *\n * import React, {useContext} from 'react'\n * import {MultiSiteContext} from './contexts'\n *\n * export const RootCurrencyLabel = () => {\n *    const {site,locale,urlTemplate} = useContext(MultiSiteContext)\n *    return <div>{site} {locale}</div>\n * }\n *\n * Alternatively you can use the hook provided by us:\n *\n * import {useMultiSite} from './hooks'\n *\n * const {site, locale, buildUrl} = useMultiSite()\n * @type {React.Context<unknown>}\n */\nexport const MultiSiteContext = React.createContext()\nexport const MultiSiteProvider = ({\n    site: initialSite = {},\n    locale: initialLocale = {},\n    buildUrl,\n    children\n}) => {\n    const [site, setSite] = useState(initialSite)\n    const [locale, setLocale] = useState(initialLocale)\n\n    return (\n        <MultiSiteContext.Provider value={{site, setSite, locale, setLocale, buildUrl}}>\n            {children}\n        </MultiSiteContext.Provider>\n    )\n}\n\nMultiSiteProvider.propTypes = {\n    children: PropTypes.node.isRequired,\n    buildUrl: PropTypes.func,\n    site: PropTypes.object,\n    locale: PropTypes.object\n}\n\n/**\n * This is the global state for currency, we use this throughout the site. For example, on\n * the product-list, product-detail and cart and basket pages..\n *\n * To use these context's simply import them into the component requiring context\n * like the below example:\n *\n * import React, {useContext} from 'react'\n * import {CurrencyContext} from './contexts'\n *\n * export const RootCurrencyLabel = () => {\n *    const {currency} = useContext(CurrencyContext)\n *    return <div>{currency}</div>\n * }\n *\n * Alternatively you can use the hook provided by us:\n *\n * import {useCurrency} from './hooks'\n *\n * const {currency, setCurrency} = useCurrency()\n *\n */\nexport const CurrencyContext = React.createContext()\nexport const CurrencyProvider = ({currency: initialCurrency, children}) => {\n    const [currency, setCurrency] = useState(initialCurrency)\n\n    const value = useMemo(() => ({currency, setCurrency}), [currency])\n\n    return <CurrencyContext.Provider value={value}>{children}</CurrencyContext.Provider>\n}\n\nCurrencyProvider.propTypes = {\n    children: PropTypes.node.isRequired,\n    currency: PropTypes.string\n}\n\nexport const FeatureFlagsContext = React.createContext({})\n\nexport const FeatureFlagsProvider = ({flags, children}) => {\n    return <FeatureFlagsContext.Provider value={flags}>{children}</FeatureFlagsContext.Provider>\n}\n\nexport const useFeatureFlags = () => React.useContext(FeatureFlagsContext)\n\nFeatureFlagsProvider.propTypes = {\n    flags: PropTypes.object,\n    children: PropTypes.node.isRequired\n}\n\nexport {UrlMapperProvider, useUrlMapper} from './url-mapper'\nexport {TealiumProvider, useTealium} from './tealium'\nexport {PixelProvider, usePixel} from './pixel'\nexport {AmplienceContextProvider} from './amplience'\nexport {ScrollAreaProvider, useScrollArea} from './scroll-area'\nexport {UserPriceSegmentProvider, useUserPriceSegment} from './user-price-context'\nexport {ProductListDataProvider, useProductListContextData} from './product-list-data'\n","import {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n/*  This module contains sensitive API usage isolated for dynamic import */\nexport const getUserLocation = async (setLocation, setError, setLoading, errorMessages) => {\n    if (isServer) {\n        return\n    }\n\n    setLoading(true)\n\n    if (!navigator.geolocation) {\n        setError(errorMessages.unsupportedBrowser)\n        setLoading(false)\n        return\n    }\n\n    // Try to get the user's current geolocation\n    const fetchGeolocation = () => {\n        return new Promise((resolve, reject) => {\n            navigator.geolocation.getCurrentPosition(resolve, reject)\n        })\n    }\n\n    try {\n        const permission = await navigator.permissions.query({name: 'geolocation'})\n\n        if (permission.state === 'granted' || permission.state === 'prompt') {\n            try {\n                const position = await fetchGeolocation()\n                if (position?.coords) {\n                    const {latitude, longitude} = position.coords\n                    setLocation({latitude, longitude})\n                } else {\n                    setError(errorMessages.locationRetrievalFailed)\n                }\n            } catch (err) {\n                if (err.code === 1) {\n                    setError(errorMessages.geolocationPermissionDenied)\n                } else {\n                    setError(errorMessages.locationRetrievalFailed)\n                }\n            }\n        } else {\n            setError(errorMessages.geolocationPermissionDenied)\n        }\n    } catch {\n        setError(errorMessages.permissionQueryFailed)\n    } finally {\n        setLoading(false)\n    }\n}\n","import {useState, useCallback} from 'react'\nimport {getUserLocation} from '../utils/getUserLocation'\nimport {useDeliveryMessages} from 'pandora-shared-app/overrides/app/hooks/use-delivery-messages'\nimport {GEO_LOCATION_ERROR_KEYS} from 'pandora-shared-app/overrides/app/utils/cnc-constants'\n\n/**\n * Custom hook to get the user's current geolocation using the browser's Geolocation API.\n *\n * @returns {{\n *   location: { latitude: number, longitude: number } | null,\n *   error: string | null,\n *   loading: boolean,\n *   getLocation: () => void\n *   resetLocation: () => void\n * }}\n *\n * Usage:\n * const { location, error, loading, getLocation } = useGeolocation();\n */\nconst useGeolocation = () => {\n    const [location, setLocation] = useState(null)\n    const [error, setError] = useState(null)\n    const [loading, setLoading] = useState(false)\n\n    const errorMessages = useDeliveryMessages(GEO_LOCATION_ERROR_KEYS)\n\n    const getLocation = useCallback(\n        () => getUserLocation(setLocation, setError, setLoading, errorMessages),\n        []\n    )\n\n    const resetLocation = useCallback(() => {\n        setLocation(null)\n        setError(null)\n    }, [])\n\n    return {\n        location,\n        error,\n        loading,\n        getLocation,\n        resetLocation,\n        isLocationReady: !!location\n    }\n}\n\nexport default useGeolocation\n","/**\n * @file search-keys.js\n *\n * This file exports default API options to be used for the product-search queries\n *\n * These naming conventions help in understanding the role and usage of each export at a glance:\n * - `defaultSearchRequestOptions, defaultProductQueryOptions` are mutable configuration objects, hence the camelCase.\n *\n * @exports defaultSearchRequestOptions - Default request options\n * @exports defaultProductQueryOptions - Default query options\n */\nexport const sourceEnums = {\n    bloomreach: 'PWASearchByBR',\n    salesforce: 'PWA'\n}\n\n/**\n * [FIND-6492] DOL Q3 replacement for the deprecated `source` param.\n * Per the DOL Search API spec, `searchProvider` is sent as a HEADER (not a query\n * param) with these enum values.\n */\nexport const searchProviderEnums = {\n    bloomreach: 'bloomreach',\n    salesforce: 'salesforce'\n}\n\n/**\n * Resolves the value for the DOL Q3 `searchProvider` header from the active\n * search backend flag. Defaults to Bloomreach for any unknown key.\n *\n * @param {'bloomreach'|'salesforce'} sourceKey\n * @returns {string}\n */\nexport const getSearchProviderHeaderValue = (sourceKey) =>\n    searchProviderEnums[sourceKey] ?? searchProviderEnums.bloomreach\n\n/**\n * Returns the search backend selector query params.\n *\n * @param {'bloomreach'|'salesforce'} sourceKey - Active search backend.\n * @param {boolean} [useDolQ3=false] - When true (migration flag ON), the\n *   deprecated `source` query param is dropped entirely (`searchProvider` is sent\n *   as a header instead, wired in each hook). When false, the legacy `source`\n *   query param is returned.\n * @returns {{source: string}|{}}\n */\nexport const defaultSearchRequestOptions = (sourceKey, useDolQ3 = false) =>\n    useDolQ3 ? {} : {source: sourceKey ? sourceEnums[sourceKey] : 'PWA'}\n\nexport const defaultProductQueryOptions = {\n    retry: false,\n    refetchOnWindowFocus: false,\n    retryOnMount: false,\n    staleTime: 30 * 60 * 1000\n}\n\nexport const productSearchParamKeys = [\n    'categoryId',\n    'text',\n    'refine',\n    'sort',\n    'currency',\n    'locale',\n    'expand',\n    'offset',\n    'limit',\n    'select',\n    'allImages',\n    'allVariationProperties',\n    'perPricebook',\n    'url',\n    'referrerUrl'\n]\n","/**\n * Canada displays CAD prices with an explicit \"C$\" currency label so customers\n * don't mistake it for USD (FIND-5112) — native Intl currency formatting for\n * en-CA/fr-CA renders a bare \"$\", which doesn't disambiguate.\n */\nconst CAD_CURRENCY_LABEL = 'C$'\nconst CAD_CURRENCY_CODE = 'CAD'\nconst CAD_SUFFIX_LOCALE = 'fr-CA'\n\n/**\n * Formats a price for display, showing \"C$\" as the currency label instead of the\n * native currency symbol when the currency is CAD (prefixed unless `labelLocale`\n * is `fr-CA`, in which case it's suffixed). Falls back to standard Intl currency\n * formatting for all other currencies.\n * @param {Function} formatNumber - react-intl's formatNumber (from useIntl())\n * @param {number} price\n * @param {string} currency\n * @param {Object} [options]\n * @param {string} [options.labelLocale] - locale id used to decide C$ prefix vs suffix\n * @param {string} [options.decimalLocale] - locale passed through to formatNumber for decimal/grouping formatting\n * @returns {string}\n */\nexport const formatCurrencyDisplay = (\n    formatNumber,\n    price,\n    currency,\n    {labelLocale, decimalLocale} = {}\n) => {\n    if (currency !== CAD_CURRENCY_CODE) {\n        return formatNumber(price, {\n            style: 'currency',\n            currency,\n            ...(decimalLocale && {locale: decimalLocale})\n        })\n    }\n\n    const resolvedDecimalLocale = decimalLocale || labelLocale\n\n    const numberPart = formatNumber(price, {\n        style: 'decimal',\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2,\n        ...(resolvedDecimalLocale && {locale: resolvedDecimalLocale})\n    })\n\n    return labelLocale === CAD_SUFFIX_LOCALE\n        ? `${numberPart} ${CAD_CURRENCY_LABEL}`\n        : `${CAD_CURRENCY_LABEL} ${numberPart}`\n}\n\n/**\n * Utility to determine if product is on sale.\n * @returns {boolean}\n */\nexport const onSale = (price, salePrice) => price > salePrice\n\n/**\n * Utility to determine the discount percentage on product.\n * @returns {number}\n */\nexport const discountPercent = (price, salePrice) => {\n    if (!onSale(price, salePrice)) {\n        return 0\n    }\n    const percentage = ((price - salePrice) * 100).toFixed(2) / price\n\n    // Rounding to the nearest whole number\n    return Math.floor(percentage)\n}\n","import {chakra, shouldForwardProp} from '@chakra-ui/react'\nimport {motion, isValidMotionProp} from 'framer-motion'\n\nexport const MotionBox = chakra(motion.div, {\n    /**\n     * Allow motion props and non-Chakra props to be forwarded\n     */\n    shouldForwardProp: (prop) => isValidMotionProp(prop) || shouldForwardProp(prop)\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    durationQuick2,\n    durationStandard1,\n    easeEmphasizedDecelerate,\n    easeStandard\n} from '../../utils/motion'\nimport {MotionBox} from './motion-box'\n\nexport const CascadeItem = ({\n    children,\n    shouldAnimate = true,\n    delay = 0,\n    onAnimationComplete,\n    styles = {}\n}) => (\n    <MotionBox\n        initial={{y: -10, opacity: 0}}\n        animate={{y: 0, opacity: 1}}\n        transition={\n            /* Only animate on menu open, not on level change */\n            shouldAnimate\n                ? {\n                      opacity: {\n                          ease: easeStandard,\n                          duration: durationQuick2,\n                          delay: delay\n                      },\n                      y: {\n                          ease: easeEmphasizedDecelerate,\n                          duration: durationStandard1,\n                          delay: delay\n                      }\n                  }\n                : {duration: 0}\n        }\n        onAnimationComplete={onAnimationComplete}\n        sx={styles}\n    >\n        {children}\n    </MotionBox>\n)\n\nCascadeItem.propTypes = {\n    children: PropTypes.node,\n    delay: PropTypes.number,\n    onAnimationComplete: PropTypes.func,\n    shouldAnimate: PropTypes.bool,\n    styles: PropTypes.object\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-up-big\",\n  \"use\": \"chevron-up-big-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-up-big\\\">\\n<g id=\\\"chevron-up-big_Chevron up\\\">\\n<path id=\\\"chevron-up-big_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10.0001 5.93448L0.807693 15.1269L0.100586 14.4198L10.0001 4.52026L19.8996 14.4198L19.1925 15.1269L10.0001 5.93448Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2023, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {useCallback} from 'react'\nimport {useHistory} from 'react-router'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {removeSiteLocaleFromPath} from '@salesforce/retail-react-app/app/utils/url'\n\n/**\n * A convenience hook for programmatic navigation uses history's `push` or `replace`. The proper locale\n * is automatically prepended to the provided path. Additional args are passed through to `history`.\n * @returns {function} - Returns a navigate function that passes args to history methods.\n */\nconst useNavigation = () => {\n    const history = useHistory()\n\n    const {site, locale: localeShortCode, buildUrl} = useMultiSite()\n\n    return useCallback(\n        /**\n         *\n         * @param {string} path - path to navigate to\n         * @param {('push'|'replace')} action - which history method to use\n         * @param  {...any} args - additional args passed to `.push` or `.replace`\n         */\n        (path, action = 'push', ...args) => {\n            const updatedHref = buildUrl(removeSiteLocaleFromPath(path))\n            history[action](path === '/' ? '/' : updatedHref, ...args)\n        },\n        [localeShortCode, site]\n    )\n}\n\nexport default useNavigation\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"sparkles\",\n  \"use\": \"sparkles-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"sparkles\\\">\\n<g id=\\\"sparkles_Sparkles\\\">\\n<g id=\\\"sparkles_icon\\\">\\n<path d=\\\"M3.83314 1.16663C4.09457 1.16663 4.31186 1.36802 4.3317 1.62869L4.45147 3.20272L6.0255 3.32249C6.28617 3.34233 6.48757 3.55963 6.48757 3.82105C6.48757 4.08248 6.28617 4.29978 6.0255 4.31961L4.45147 4.43938L4.3317 6.01342C4.31186 6.27409 4.09457 6.47548 3.83314 6.47548C3.57171 6.47548 3.35441 6.27409 3.33458 6.01342L3.21481 4.43938L1.64078 4.31961C1.3801 4.29978 1.17871 4.08248 1.17871 3.82105C1.17871 3.55963 1.3801 3.34233 1.64078 3.32249L3.21481 3.20272L3.33458 1.62869C3.35441 1.36802 3.57171 1.16663 3.83314 1.16663Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.4508 1.16675C12.6668 1.16675 12.8583 1.30539 12.9258 1.51054L14.4465 6.13437L19.0703 7.65506C19.2755 7.72253 19.4141 7.91408 19.4141 8.13003C19.4141 8.34598 19.2755 8.53753 19.0703 8.605L14.4465 10.1257L12.9258 14.7495C12.8583 14.9547 12.6668 15.0933 12.4508 15.0933C12.2349 15.0933 12.0433 14.9547 11.9759 14.7495L10.4552 10.1257L5.83134 8.605C5.6262 8.53753 5.48755 8.34598 5.48755 8.13003C5.48755 7.91408 5.6262 7.72253 5.83134 7.65506L10.4552 6.13437L11.9759 1.51054C12.0433 1.30539 12.2349 1.16675 12.4508 1.16675ZM12.4508 3.26716L11.3262 6.68666C11.2766 6.8375 11.1583 6.95581 11.0075 7.00542L7.58796 8.13003L11.0075 9.25464C11.1583 9.30425 11.2766 9.42256 11.3262 9.5734L12.4508 12.9929L13.5754 9.5734C13.625 9.42256 13.7434 9.30425 13.8942 9.25464L17.3137 8.13003L13.8942 7.00542C13.7434 6.95581 13.625 6.8375 13.5754 6.68666L12.4508 3.26716Z\\\" fill=\\\"#211710\\\" />\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.37548 11.1782C5.30015 10.9872 5.11569 10.8617 4.91035 10.8617C4.70502 10.8617 4.52056 10.9872 4.44522 11.1782L3.61085 13.2938L1.49527 14.1282C1.30425 14.2035 1.17871 14.388 1.17871 14.5933C1.17871 14.7987 1.30425 14.9831 1.49527 15.0585L3.61085 15.8928L4.44522 18.0084C4.52056 18.1994 4.70502 18.325 4.91035 18.325C5.11569 18.325 5.30015 18.1994 5.37548 18.0084L6.20986 15.8928L8.32544 15.0585C8.51645 14.9831 8.64199 14.7987 8.64199 14.5933C8.64199 14.388 8.51645 14.2035 8.32544 14.1282L6.20986 13.2938L5.37548 11.1782ZM4.46144 13.8627L4.91035 12.7245L5.35927 13.8627C5.41009 13.9916 5.51209 14.0936 5.64095 14.1444L6.77919 14.5933L5.64095 15.0422C5.51209 15.0931 5.41009 15.1951 5.35927 15.3239L4.91035 16.4622L4.46144 15.3239C4.41062 15.1951 4.30861 15.0931 4.17975 15.0422L3.04151 14.5933L4.17975 14.1444C4.30861 14.0936 4.41062 13.9916 4.46144 13.8627Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"marvel_x_pandora_black\",\n  \"use\": \"marvel_x_pandora_black-usage\",\n  \"viewBox\": \"0 0 206.96 34.22\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 206.96 34.22\\\" id=\\\"marvel_x_pandora_black\\\"><defs></defs><polygon points=\\\"108.72 12.34 103.69 17.49 98.65 12.34 97.62 13.37 102.65 18.53 97.62 23.68 98.65 24.72 103.69 19.56 108.72 24.72 109.76 23.68 104.7 18.53 109.76 13.37 108.72 12.34\\\" /><polygon points=\\\"175.28 10.21 175.63 10.21 175.65 10.19 175.35 7.16 175.33 7.14 175.24 7.14 175.22 7.16 174.91 10.19 174.93 10.21 175.28 10.21\\\" /><polygon points=\\\"176.99 10.4 177.01 10.38 177.52 7.67 177.5 7.65 177.41 7.63 177.39 7.65 176.26 10.22 176.28 10.24 176.99 10.4\\\" /><path d=\\\"M496.42 292.09a.42.42 0 0 0 0-.83.42.42 0 1 0 0 .83ZM495.24 292a.42.42 0 0 0 0-.83.42.42 0 1 0 0 .83Z\\\" transform=\\\"translate(-319.96 -280.53)\\\" /><polygon points=\\\"173.57 10.4 174.27 10.24 174.29 10.22 173.16 7.65 173.14 7.63 173.06 7.65 173.04 7.67 173.55 10.38 173.57 10.4\\\" /><path d=\\\"M493.64 291.67a.42.42 0 1 0 .83 0 .42.42 0 0 0-.41-.41A.41.41 0 0 0 493.64 291.67ZM445.5 292.85h-3.6l0 0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36l0 0h2.36l0 0s-.09-.86-.09-2.36V300.6l0 0c.32 0 1 .07 1.29.07 2.43 0 4.52-1.48 4.52-4S447.92 292.85 445.5 292.85Zm-.11 5.77a9.84 9.84 0 0 1-1.2-.09v-3.65h1.38c1.22 0 2.19.49 2.19 1.78S446.91 298.62 445.39 298.62ZM456.77 293.86a6.81 6.81 0 0 1-.36-1v0h-1.93v0a5.2 5.2 0 0 1-.34 1l-4.16 10a6.08 6.08 0 0 1-.71 1.3v0h2.44v0a4.52 4.52 0 0 1 .36-1.11l.76-1.89h5.36l.81 1.89c.26.72.42 1.11.42 1.11l0 0h2.43v0a10.34 10.34 0 0 1-.7-1.3Zm-3.13 6.29 1.75-4.35h0l1.89 4.35ZM474.05 292.87l0 0h-2.15l0 0s.09.86.09 2.36v6.21h0l-6.67-8.59H462.9l0 0a3.26 3.26 0 0 1 .41 1.22v8.73c0 1.5-.09 2.36-.09 2.36l0 0h2.15l0 0s-.09-.86-.09-2.36v-6.33h0l6.7 8.71h2l0 0s-.09-.86-.09-2.36v-7.59C474 293.73 474.05 292.87 474.05 292.87ZM480.75 292.85h-4.13v0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36v0h1.27c.84 0 1.77.11 2.83.11a6.17 6.17 0 0 0 6.47-6.27C487.19 295.43 484.56 292.85 480.75 292.85Zm-.14 10.43a6.29 6.29 0 0 1-1.46-.11c-.2-.05-.23-.12-.23-.46v-7.85h1.64a4.21 4.21 0 1 1 .05 8.42ZM495.24 292.68a6.33 6.33 0 1 0 6.33 6.33A6.24 6.24 0 0 0 495.24 292.68Zm0 10.63a4.31 4.31 0 1 1 4.09-4.3A4.13 4.13 0 0 1 495.24 303.31ZM510.38 301a2.21 2.21 0 0 0-1.22-1v0a3.53 3.53 0 0 0 2.49-3.28 3.83 3.83 0 0 0-4-3.85h-4l0 0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36l0 0h2.36l0 0s-.09-.86-.09-2.36v-2.37c1.18 0 1.64.23 2.07.9l1 1.63a16.48 16.48 0 0 1 1.18 2.2l0 0h2.82v0a21.2 21.2 0 0 1-1.51-2.2Zm-3.27-2.5a6.24 6.24 0 0 1-1.11-.07v-3.57h1.36a1.85 1.85 0 0 1 2 1.85C509.39 297.65 508.67 298.5 507.11 298.5ZM526.22 303.88l-4.39-10a6.81 6.81 0 0 1-.36-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.16 10a6.67 6.67 0 0 1-.71 1.3v0h2.43l0 0a4.52 4.52 0 0 1 .36-1.11l.75-1.89h5.37l.81 1.89c.26.72.42 1.11.42 1.11l0 0h2.43v0A10.34 10.34 0 0 1 526.22 303.88Zm-7.52-3.73 1.75-4.35h0l1.88 4.35Z\\\" transform=\\\"translate(-319.96 -280.53)\\\" /><rect id=\\\"marvel_x_pandora_black_Red_Fill\\\" data-name=\\\"Red Fill\\\" width=\\\"85.04\\\" height=\\\"34.22\\\" style=\\\"fill:#ed1c24\\\" /><path id=\\\"marvel_x_pandora_black_Marvel\\\" d=\\\"M391.93,288.51v-5.25H377.35L375,300.77l-2.37-17.51h-5.26l.59,4.68a8.31,8.31,0,0,0-7.49-4.68h-5.27l0,25.52-3.83-25.52h-6.88l-4,26.43V283.26h-6.59l-2.37,14.85-2.31-14.85h-6.6V312h5.19V298.15L330.14,312h2.76l2.32-13.85V312h10l.61-4.42h4l.61,4.42h9.84v-9.33l1.21-.17L364,312h5.1l-3.28-11.14a8.34,8.34,0,0,0,3-7.32h0S372,312,372,312l6.05,0,4.13-26v26h9.8v-5.17h-4.65v-6.59h4.65V295h-4.65v-6.49ZM346.45,303l1.42-12.28L349.35,303Zm15.09-5.67a2.88,2.88,0,0,1-1.23.29V288.4h0c.41,0,3.44.12,3.44,4.57C363.78,295.29,362.75,296.76,361.54,297.35Zm40.84,9.48V312h-9.56V283.26H398v23.57Z\\\" transform=\\\"translate(-319.96 -280.53)\\\" style=\\\"fill:#fff\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-instagram\",\n  \"use\": \"social-instagram-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-instagram\\\">\\n<g clip-path=\\\"url(#social-instagram_clip0_630_7671)\\\">\\n<path d=\\\"M9.99998 1.80184C12.6701 1.80184 12.9864 1.812 14.0408 1.86011C15.0158 1.90461 15.5453 2.06752 15.8977 2.20443C16.3644 2.38583 16.6976 2.60257 17.0475 2.95248C17.3974 3.30239 17.6142 3.63555 17.7955 4.10229C17.9325 4.4547 18.0954 4.98419 18.1399 5.95914C18.188 7.01364 18.1982 7.32989 18.1982 10C18.1982 12.6701 18.188 12.9864 18.1399 14.0409C18.0954 15.0158 17.9325 15.5453 17.7955 15.8978C17.6142 16.3645 17.3974 16.6976 17.0475 17.0476C16.6976 17.3975 16.3644 17.6142 15.8977 17.7956C15.5453 17.9325 15.0158 18.0954 14.0408 18.1399C12.9865 18.188 12.6703 18.1982 9.99998 18.1982C7.32969 18.1982 7.01344 18.188 5.95914 18.1399C4.98415 18.0954 4.45466 17.9325 4.10229 17.7956C3.63551 17.6142 3.30235 17.3975 2.95244 17.0476C2.60253 16.6976 2.38579 16.3645 2.20443 15.8978C2.06748 15.5453 1.90457 15.0158 1.86007 14.0409C1.81196 12.9864 1.8018 12.6701 1.8018 10C1.8018 7.32989 1.81196 7.01364 1.86007 5.95918C1.90457 4.98419 2.06748 4.4547 2.20443 4.10229C2.38579 3.63555 2.60253 3.30239 2.95244 2.95248C3.30235 2.60257 3.63551 2.38583 4.10229 2.20443C4.45466 2.06752 4.98415 1.90461 5.9591 1.86011C7.0136 1.812 7.32985 1.80184 9.99998 1.80184ZM9.99998 0C7.28412 0 6.94362 0.0115116 5.87701 0.0601777C4.81259 0.108764 4.08569 0.277786 3.44958 0.525007C2.79199 0.780564 2.23432 1.1225 1.67839 1.67843C1.12246 2.23436 0.780524 2.79203 0.524967 3.44962C0.277746 4.08573 0.108725 4.81263 0.060138 5.87705C0.0114719 6.94362 0 7.28416 0 10C0 12.7159 0.0114719 13.0564 0.060138 14.123C0.108725 15.1874 0.277746 15.9143 0.524967 16.5504C0.780524 17.208 1.12246 17.7657 1.67839 18.3216C2.23432 18.8775 2.79199 19.2195 3.44958 19.475C4.08569 19.7223 4.81259 19.8913 5.87701 19.9399C6.94362 19.9885 7.28412 20 9.99998 20C12.7158 20 13.0564 19.9885 14.1229 19.9399C15.1874 19.8913 15.9143 19.7223 16.5504 19.475C17.208 19.2195 17.7656 18.8775 18.3216 18.3216C18.8775 17.7657 19.2194 17.208 19.475 16.5504C19.7222 15.9143 19.8912 15.1874 19.9398 14.123C19.9885 13.0564 20 12.7159 20 10C20 7.28416 19.9885 6.94362 19.9398 5.87705C19.8912 4.81263 19.7222 4.08573 19.475 3.44962C19.2194 2.79203 18.8775 2.23436 18.3216 1.67843C17.7656 1.1225 17.208 0.780564 16.5504 0.525007C15.9143 0.277786 15.1874 0.108764 14.1229 0.0601777C13.0564 0.0115116 12.7158 0 9.99998 0ZM9.99998 4.86487C7.16393 4.86487 4.86483 7.16397 4.86483 10C4.86483 12.8361 7.16393 15.1352 9.99998 15.1352C12.836 15.1352 15.1351 12.8361 15.1351 10C15.1351 7.16397 12.836 4.86487 9.99998 4.86487ZM9.99998 13.3334C8.15904 13.3334 6.66663 11.841 6.66663 10C6.66663 8.15908 8.15904 6.66667 9.99998 6.66667C11.8409 6.66667 13.3333 8.15908 13.3333 10C13.3333 11.841 11.8409 13.3334 9.99998 13.3334ZM16.538 4.66199C16.538 5.32474 16.0008 5.86201 15.338 5.86201C14.6753 5.86201 14.138 5.32474 14.138 4.66199C14.138 3.99924 14.6753 3.462 15.338 3.462C16.0008 3.462 16.538 3.99924 16.538 4.66199Z\\\" fill=\\\"#27251F\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"social-instagram_clip0_630_7671\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport {v4 as uuidv4} from 'uuid'\n\n// Chakra UI Component(s)\nimport {\n    List,\n    ListItem,\n    Heading,\n    Text,\n    Box\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Component(s)\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nexport const parseInlineFormatting = (text, meta) => {\n    if (!text) return null\n\n    const elements = []\n    let currentIndex = 0\n\n    while (currentIndex < text.length) {\n        let nextOpenBracket = text.indexOf('[', currentIndex)\n        let nextCloseBracket = text.indexOf(']', nextOpenBracket)\n        let nextOpenParen = text.indexOf('(', nextCloseBracket)\n        let nextCloseParen = text.indexOf(')', nextOpenParen)\n\n        if (\n            nextOpenBracket === -1 ||\n            nextCloseBracket === -1 ||\n            nextOpenParen === -1 ||\n            nextCloseParen === -1\n        ) {\n            elements.push(text.substring(currentIndex))\n            break\n        }\n\n        if (currentIndex < nextOpenBracket) {\n            elements.push(text.substring(currentIndex, nextOpenBracket))\n        }\n\n        const linkText = text.substring(nextOpenBracket + 1, nextCloseBracket)\n        let typeValue = text.substring(nextOpenParen + 1, nextCloseParen)\n        let hrefValue = ''\n\n        const titleStart = typeValue.indexOf('\"')\n        if (titleStart !== -1) {\n            hrefValue = typeValue.substring(titleStart + 1, typeValue.lastIndexOf('\"'))\n            typeValue = typeValue.substring(0, titleStart).trim()\n        }\n\n        const linkData = {\n            type: typeValue,\n            value: hrefValue,\n            target: hrefValue.startsWith('http') && typeValue !== 'internal',\n            text: linkText\n        }\n\n        elements.push(<ContentLink linkData={linkData} contentMeta={meta} key={uuidv4()} />)\n        currentIndex = nextCloseParen + 1\n    }\n\n    return elements\n}\n\nconst flushLists = (elements, unorderedList, orderedList, meta) => {\n    if (unorderedList.length > 0) {\n        elements.push(\n            <List key={uuidv4()} as=\"ul\">\n                {unorderedList.map((item) => (\n                    <ListItem key={uuidv4()}>{parseInlineFormatting(item, meta)}</ListItem>\n                ))}\n            </List>\n        )\n        unorderedList.length = 0\n    }\n\n    if (orderedList.length > 0) {\n        elements.push(\n            <List key={uuidv4()} as=\"ol\">\n                {orderedList.map((item) => (\n                    <ListItem key={uuidv4()}>{parseInlineFormatting(item, meta)}</ListItem>\n                ))}\n            </List>\n        )\n        orderedList.length = 0\n    }\n}\n\nexport const parseRichText = (content, meta) => {\n    if (!content) return null\n\n    const elements = []\n    const lines = content.split('\\n').filter((line) => line.trim() !== '')\n\n    let currentUnorderedList = []\n    let currentOrderedList = []\n    let isFirstElement = true\n\n    const pushElement = (element) => {\n        if (isFirstElement) {\n            elements.push(React.cloneElement(element, {className: 'pt-0'}))\n            isFirstElement = false\n        } else {\n            elements.push(element)\n        }\n    }\n\n    lines.forEach((line) => {\n        const trimmedLine = line.trim()\n\n        if (trimmedLine.startsWith('#')) {\n            flushLists(elements, currentUnorderedList, currentOrderedList, meta)\n            const level = Math.min(trimmedLine.split(' ')[0].length, 3)\n            pushElement(\n                <Heading key={uuidv4()} as={`h${level}`}>\n                    {parseInlineFormatting(trimmedLine.replace(/^#+/, '').trim(), meta)}\n                </Heading>\n            )\n            return\n        }\n\n        if (trimmedLine.startsWith('* ')) {\n            currentUnorderedList.push(trimmedLine.slice(2))\n            return\n        }\n\n        if (/^\\d+\\.\\s/.test(trimmedLine)) {\n            currentOrderedList.push(trimmedLine.replace(/^\\d+\\.\\s/, ''))\n            return\n        }\n\n        flushLists(elements, currentUnorderedList, currentOrderedList, meta)\n\n        if (trimmedLine !== '') {\n            pushElement(<Text key={uuidv4()}>{parseInlineFormatting(trimmedLine, meta)}</Text>)\n        }\n    })\n\n    flushLists(elements, currentUnorderedList, currentOrderedList, meta)\n\n    return <Box className=\"row\">{elements}</Box>\n}\n","import React, {memo, useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Utils\nimport {parseRichText} from './utils/parse-rich-text'\n\nexport const RichTextEditor = memo(({content = '', meta = {}, styleProps = {}, ...rest}) => {\n    const styles = useMultiStyleConfig('RichTextEditor')\n\n    const parsedContent = useMemo(() => parseRichText(content, meta), [content, meta])\n\n    return (\n        <Box sx={{...styles.container, ...styleProps}} {...rest}>\n            {parsedContent}\n        </Box>\n    )\n})\n\nRichTextEditor.propTypes = {\n    content: PropTypes.string,\n    meta: PropTypes.object,\n    styleProps: PropTypes.object\n}\n\nRichTextEditor.displayName = 'RichTextEditor'\n","/**\n * Product Type Utilities\n * Centralized utilities for product type identification and classification.\n *\n * @module utils/product-type-utils\n */\n\n/**\n * @typedef {import('pandora-shared-app/overrides/app/types/product').DOLProduct} DOLProduct\n * @typedef {import('pandora-shared-app/overrides/app/types/product').SCAPIProduct} SCAPIProduct\n */\n\nexport const STUDIO_BRACELET_TYPE = 'BRACELET'\n\nexport const PRODUCT_TYPE_SET = 'set'\n\n// Order matters: a compound product must resolve to its compound type before\n// falling back to master/variant.\nconst PRODUCT_TYPE_KEYS = [PRODUCT_TYPE_SET, 'bundle', 'master', 'variant']\n\n/**\n * Resolves the many shapes a product type arrives in into a single string so\n * every tile data path can produce a comparable `hitType`.\n *\n * - string (documented DOL contract) -> used as-is\n * - array (what DOL returns today, e.g. `['set']`) -> first entry\n * - object (SFCC/Einstein `product.type`, e.g. `{master: true}`) -> truthy key\n * - anything else -> `''`\n *\n * @param {string|string[]|Object|undefined} productType\n * @returns {string}\n */\nexport const resolveProductType = (productType) => {\n    if (typeof productType === 'string') return productType\n\n    if (Array.isArray(productType)) {\n        const [first] = productType\n        return typeof first === 'string' ? first : ''\n    }\n\n    if (productType && typeof productType === 'object') {\n        return PRODUCT_TYPE_KEYS.find((key) => productType[key]) || ''\n    }\n\n    return ''\n}\n\n/**\n * Type-shape tolerant Set check, for callers that hold a raw product type\n * (or an already normalised `hitType`) rather than a product object.\n *\n * @param {string|string[]|Object|undefined} productType\n * @returns {boolean}\n */\nexport const isSetProductType = (productType) =>\n    resolveProductType(productType) === PRODUCT_TYPE_SET\n\n/**\n * Tile payload fragment carrying the raw product type, spread into the tile data of\n * paths whose `hitType` cannot express a Set (FIND-5111). It is emitted only while the\n * exclude-Sets kill switch is on, so with the switch off the payload — and therefore\n * every consumer of it, `use-product-list-analytics` included — is unchanged.\n *\n * @param {Object|string|string[]|undefined} productType - Raw product type\n * @param {boolean} [excludeSetsFromWishlist=false] - Kill switch\n * @returns {Object} `{productType}` when the switch is on, otherwise an empty object\n */\nexport const setExclusionTileFields = (productType, excludeSetsFromWishlist = false) =>\n    excludeSetsFromWishlist ? {productType} : {}\n\n/**\n * Check if product is a bundle\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isBundle = (product) => {\n    return product?.productType?.bundle || false\n}\n\n/**\n * Check if product is a set\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isSet = (product) => {\n    return product?.productType?.set || false\n}\n\n/**\n * Check if product is a gift card\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isGiftCard = (product) => {\n    return !!product?.giftCardType\n}\n\n/**\n * Check if product is engravable\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isEngravable = (product) => {\n    return product?.isEngravable || product?.c_engravable || false\n}\n\n/**\n * Build the analytics `customization` array from the same capability booleans\n * used to render the PDP customization buttons — so the tracked value matches\n * whether the user actually sees an Engraving / Styling Studio button, plus\n * 'flexible' for flexible-set parents.\n *\n * Returns an array of service identifiers (e.g. ['engraving', 'studio']).\n * When no customization service applies, returns [] so callers can omit the\n * field entirely rather than emit a placeholder empty string.\n *\n * @param {{isEngravingAvailable: boolean, isStylingStudioAvailable: boolean, isFlexibleSet: boolean}} capabilities\n * @returns {string[]}\n */\nexport const getProductCustomization = ({\n    isEngravingAvailable,\n    isStylingStudioAvailable,\n    isFlexibleSet: isFlexible\n} = {}) => {\n    const services = []\n    if (isEngravingAvailable) services.push('engraving')\n    if (isStylingStudioAvailable) services.push('studio')\n    if (isFlexible) services.push('flexible')\n    return services\n}\n\n// SCAPI/DOL variant-selector recommendation type for the flexible-set bubble.\n// Mirrors `RECOMMENDATION_TYPES.COLLECTION` in apps/product-details constants; kept as a\n// local numeric literal because shared-app can't reverse-depend on an app package.\nconst COLLECTION_RECOMMENDATION_TYPE = 12\n\n/**\n * A flexible set/bundle is a set or bundle product whose recommendations include a\n * COLLECTION (type 12) entry — that is what powers the flexible-set bubble selector\n * on PDP and gates the associated analytics/finding-method. `variantCollectionName`\n * is optional and only controls the header label rendered above the bubbles.\n *\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isFlexibleSet = (product) => {\n    if (!isBundleOrSet(product)) return false\n    return !!product?.recommendations?.some(\n        (rec) => rec?.type?.value === COLLECTION_RECOMMENDATION_TYPE\n    )\n}\n\n/**\n * Check if product is a bundle or set (compound product)\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isBundleOrSet = (product) => {\n    return isBundle(product) || isSet(product)\n}\n\n/**\n * Check if product is a simple product (not bundle/set)\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isSimpleProduct = (product) => {\n    return !isBundleOrSet(product)\n}\n\n/**\n * Check if product is non-purchasable\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isNonPurchasable = (product) => {\n    return product?.custom?.nonPurchasable || false\n}\n\n/**\n * Check if product is early access\n * @param {DOLProduct} product\n * @returns {boolean}\n */\nexport const isEarlyAccess = (product) => {\n    return product?.custom?.isEarlyAccessProduct || false\n}\n\n/**\n * Extract all product type flags from a product object\n * @param {DOLProduct} product\n * @returns {{isBundle: boolean, isSet: boolean, isEngravable: boolean, isGiftCard: boolean, isNonPurchasable: boolean, isEarlyAccess: boolean}}\n */\nexport const getProductTypeFlags = (product) => {\n    if (!product) {\n        return {\n            isBundle: false,\n            isSet: false,\n            isEngravable: false,\n            isGiftCard: false,\n            isNonPurchasable: false,\n            isEarlyAccess: false\n        }\n    }\n\n    return {\n        isBundle: isBundle(product),\n        isSet: isSet(product),\n        isEngravable: isEngravable(product),\n        isGiftCard: isGiftCard(product),\n        isNonPurchasable: isNonPurchasable(product),\n        isEarlyAccess: isEarlyAccess(product)\n    }\n}\n\n/**\n * Check if a cart addition comes from the Styling Studio, which marks every item of\n * the composition it adds and has no master product to identify it by.\n * @param {Array<{product?: Object}>} itemsAdded\n * @returns {boolean}\n */\nexport const isStudioComposition = (itemsAdded) => {\n    return !!itemsAdded?.some((item) => item?.product?.styling_studio === true)\n}\n\n/**\n * Count the bracelets and charms of a Styling Studio composition. Anything that is\n * not a bracelet is a charm to the shopper, safety chains included.\n * @param {Array<{product?: Object}>} itemsAdded\n * @returns {{braceletCount: number, charmCount: number}}\n */\nexport const getStudioCompositionCounts = (itemsAdded) => {\n    const counts = {braceletCount: 0, charmCount: 0}\n\n    itemsAdded?.forEach((item) => {\n        const quantity = item?.quantity || 1\n        if (item?.product?.type === STUDIO_BRACELET_TYPE) {\n            counts.braceletCount += quantity\n        } else {\n            counts.charmCount += quantity\n        }\n    })\n\n    return counts\n}\n\n/**\n * Get human-readable product type name\n * @param {DOLProduct} product\n * @returns {string}\n */\nexport const getProductTypeName = (product) => {\n    if (!product) return 'unknown'\n\n    if (isBundle(product)) return 'bundle'\n    if (isSet(product)) return 'set'\n    if (isGiftCard(product)) return 'gift-card'\n    if (isEngravable(product)) return 'engravable'\n\n    return 'simple'\n}\n","import React, {useCallback} from 'react'\nimport PropTypes from 'prop-types'\nimport useEinstein from 'pandora-shared-app/overrides/app/hooks/use-einstein'\nimport {ProductTile} from '../product-tile'\nimport {\n    useAddItemToWishlist,\n    useRemoveItemFromWishlist\n} from 'pandora-shared-app/overrides/app/hooks/use-wishlist-items'\nimport {useWishList} from 'pandora-shared-app/overrides/app/contexts/wish-list'\nimport ErrorBoundary from 'pandora-shared-app/overrides/app/components/error-boundary'\n\nconst ProductTileWrapper = ({\n    product,\n    index,\n    searchQuery,\n    category,\n    isShopTheLook,\n    isInGrid,\n    promotionalPricing,\n    onProductClick,\n    section = 'PLP',\n    instanceId,\n    flags = {},\n    showBuyFromTile = false,\n    isBuyFromTileAvailable = false\n}) => {\n    const einstein = useEinstein()\n    const {isBreadcrumbFixEnabled} = flags\n\n    const {data: wishlist} = useWishList()\n\n    const addItemToWishlist = useAddItemToWishlist()\n    const removeItemFromWishlist = useRemoveItemFromWishlist()\n\n    // Derive cgid for PDP breadcrumb context (Phase 3).\n    // Passed as a simple string prop through to PdpLink,\n    // which appends it as #cgid to the navigation URL.\n    const cgid = isBreadcrumbFixEnabled && !searchQuery && category?.id ? category.id : null\n\n    const {sendClickSearch, sendClickCategory} = einstein\n    const handleClick = useCallback(() => {\n        if (searchQuery) {\n            sendClickSearch(searchQuery, product)\n        } else if (category) {\n            sendClickCategory(category, product)\n        }\n\n        if (onProductClick) {\n            onProductClick(product, searchQuery)\n        }\n    }, [sendClickSearch, sendClickCategory, searchQuery, category, product, onProductClick])\n\n    const handleFavouriteToggle = useCallback(\n        (productId, isFavourite) => {\n            const action = isFavourite ? addItemToWishlist : removeItemFromWishlist\n            return action(productId, product)\n        },\n        [addItemToWishlist, removeItemFromWishlist, product]\n    )\n\n    return (\n        <ErrorBoundary>\n            <ProductTile\n                flags={flags}\n                showBuyFromTile={showBuyFromTile}\n                isBuyFromTileAvailable={isBuyFromTileAvailable}\n                data-testid={`sf-product-tile-${product.productId}`}\n                product={product}\n                cgid={cgid}\n                enableFavourite={true}\n                onClick={handleClick}\n                wishlist={wishlist}\n                onFavouriteToggle={handleFavouriteToggle}\n                index={index}\n                isShopTheLook={isShopTheLook}\n                isInGrid={isInGrid}\n                promotionalPricing={promotionalPricing}\n                section={section}\n                instanceId={instanceId}\n            />\n        </ErrorBoundary>\n    )\n}\n\nProductTileWrapper.propTypes = {\n    product: PropTypes.object.isRequired,\n    index: PropTypes.number.isRequired,\n    searchQuery: PropTypes.string,\n    category: PropTypes.object,\n    wishlist: PropTypes.object,\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    promotionalPricing: PropTypes.object,\n    onProductClick: PropTypes.func,\n    section: PropTypes.string,\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    // Hoisted feature flags from useProductTileFlags, read once per grid\n    flags: PropTypes.object.isRequired,\n    showBuyFromTile: PropTypes.bool,\n    // Capability from useProductCapabilities, computed once per grid\n    isBuyFromTileAvailable: PropTypes.bool\n}\n\nexport default ProductTileWrapper\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_for_unicef_logo_white\",\n  \"use\": \"pandora_for_unicef_logo_white-usage\",\n  \"viewBox\": \"0 0 206 35\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 206 35\\\" id=\\\"pandora_for_unicef_logo_white\\\"><polygon points=\\\"54.6,11.3 55,11.3 55,11.3 54.7,8.4 54.7,8.4 54.6,8.4 54.6,8.4 54.3,11.3 54.3,11.3\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"56.2,11.5 56.3,11.5 56.8,8.9 56.7,8.9 56.7,8.9 56.6,8.9 55.6,11.3 55.6,11.4\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M55.7 12.6c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C55.3 12.4 55.5 12.6 55.7 12.6zM54.6 12.5c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C54.2 12.3 54.4 12.5 54.6 12.5z\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"53,11.5 53.7,11.4 53.7,11.3 52.6,8.9 52.6,8.9 52.5,8.9 52.5,8.9 53,11.5\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M53.1 12.2c0 .2.2.4.4.4.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4C53.3 11.8 53.1 12 53.1 12.2zM7.1 13.3H3.7l0 0c0 0 .1.8.1 2.3v7.2c0 1.4-.1 2.3-.1 2.3l0 0h2.3l0 0c0 0-.1-.8-.1-2.3v-2.1l0 0c.3 0 1 .1 1.2.1 2.3 0 4.3-1.4 4.3-3.8C11.4 14.7 9.4 13.3 7.1 13.3zM7 18.8c-.3 0-.9 0-1.1-.1v-3.5h1.3c1.2 0 2.1.5 2.1 1.7C9.3 18.2 8.5 18.8 7 18.8zM17.9 14.3c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.2-.7 1.2v0H13l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0c0 0-.3-.4-.7-1.2L17.9 14.3zM14.9 20.3l1.7-4.2h0l1.8 4.2H14.9zM34.4 13.4 34.4 13.4l-2.1 0 0 0c0 0 .1.8.1 2.3v5.9h0L26 13.3h-2.3l0 0c.3.5.4.9.4 1.2v8.3c0 1.4-.1 2.3-.1 2.3l0 0h2.1l0 0c0 0-.1-.8-.1-2.3v-6h0l6.4 8.3h1.9l0 0c0 0-.1-.8-.1-2.3v-7.2C34.3 14.2 34.4 13.4 34.4 13.4zM40.8 13.3h-3.9l0 0c0 0 .1.8.1 2.3v7.2c0 1.4-.1 2.3-.1 2.3l0 0H38c.8 0 1.7.1 2.7.1 3.6 0 6.2-2.6 6.2-6C46.9 15.8 44.4 13.3 40.8 13.3zM40.6 23.3c-.6 0-1.1 0-1.4-.1-.2-.1-.2-.1-.2-.4v-7.5h1.6c2.5 0 4.2 1.7 4.2 4C44.8 21.5 43.1 23.3 40.6 23.3zM54.6 13.2c-3.4 0-6 2.6-6 6 0 3.4 2.6 6 6 6 3.4 0 6-2.6 6-6C60.7 15.8 58.1 13.2 54.6 13.2zM54.6 23.3c-2.2 0-3.9-1.8-3.9-4.1 0-2.3 1.7-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1C58.5 21.5 56.8 23.3 54.6 23.3zM69.1 21.1c-.3-.5-.7-.8-1.2-1v0c1.2-.3 2.4-1.7 2.4-3.1 0-2-1.5-3.7-3.8-3.7h-3.8l0 0c0 0 .1.8.1 2.3v7.2c0 1.4-.1 2.3-.1 2.3l0 0H65l0 0c0 0-.1-.8-.1-2.3v-2.3c1.1 0 1.6.2 2 .9l1 1.5c.8 1.3 1.1 2.1 1.1 2.1l0 0h2.7v0c0 0-.7-.8-1.4-2.1L69.1 21.1zM66 18.7c-.3 0-.7 0-1.1-.1v-3.4h1.3c1.3 0 1.9.8 1.9 1.8C68.1 17.9 67.4 18.7 66 18.7zM84.2 23.9 80 14.3c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.2-.7 1.2v0h2.3l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0C84.9 25.1 84.6 24.7 84.2 23.9zM77 20.3l1.7-4.2h0l1.8 4.2H77zM97.7 24.2v-2.4h0c-.3 0-.5 0-.7 0v-.7c.2 0 .4 0 .7 0h.1v-.4c0-1.1.5-1.6 1.4-1.6.4 0 .7.1.9.2v.7h0c-.3-.2-.5-.3-.8-.3-.4 0-.7.3-.7 1v.4h.5c.4 0 .7 0 .9 0v.7c-.2 0-.6 0-.9 0h-.5v2.4c0 .3 0 .7 0 .9h-.8C97.7 24.9 97.7 24.5 97.7 24.2zM100 23.2c0-1.1.9-2 2-2 1.1 0 2 .9 2 2s-.9 2-2 2C100.8 25.2 100 24.3 100 23.2zM103.3 23.2c0-.8-.6-1.4-1.3-1.4-.7 0-1.3.6-1.3 1.4 0 .8.6 1.4 1.3 1.4C102.7 24.6 103.3 23.9 103.3 23.2zM104.8 24.2v-2c0-.4 0-.7 0-.9h.6l0 .4h0c.2-.3.6-.5 1-.5.2 0 .5.1.6.1v.8h0c-.1-.1-.3-.3-.6-.3-.5 0-.8.4-.8 1v1.4c0 .3 0 .7 0 .9h-.8C104.8 24.9 104.8 24.5 104.8 24.2zM190.9 7.6c-4.3 0-7.8 3.5-7.8 7.8 0 4.3 3.5 7.8 7.8 7.8 4.3 0 7.8-3.5 7.8-7.8C198.7 11.1 195.2 7.6 190.9 7.6zM197 11.1c-.4.3-.8.5-1.3.7-.3-.5-.6-1-.9-1.5.3-.2.6-.4.9-.6C196.2 10.1 196.6 10.6 197 11.1zM193.7 8.5c.6.3 1.2.6 1.7 1-.3.2-.6.4-.9.6-.4-.4-.8-.8-1.3-1.2C193.5 8.8 193.6 8.6 193.7 8.5zM194.3 10.2c-.4.2-.9.4-1.3.5-.2-.4-.4-.9-.6-1.3.3-.1.5-.2.7-.4C193.5 9.4 193.9 9.8 194.3 10.2zM193.4 8.4c-.1.1-.2.2-.3.4-.4-.3-.8-.5-1.3-.7C192.3 8.1 192.9 8.2 193.4 8.4zM192.8 8.9c-.2.1-.4.2-.6.3-.2-.4-.5-.7-.8-1C191.9 8.4 192.4 8.6 192.8 8.9zM191.1 8.3c.3.3.6.7.8 1.1-.3.1-.5.1-.8.1C191.1 9.4 191.1 8.5 191.1 8.3zM191.1 9.8c.3 0 .7-.1 1-.2.2.4.5.8.6 1.2-.5.1-1.1.2-1.6.2C191.1 11 191.1 9.9 191.1 9.8zM190.8 8.3c0 .2 0 1.1 0 1.2-.3 0-.5-.1-.8-.1C190.2 9 190.5 8.6 190.8 8.3zM189.7 9.3c-.2-.1-.4-.2-.6-.3.4-.3.9-.5 1.3-.7C190.1 8.5 189.9 8.9 189.7 9.3zM190.1 8c-.5.2-.9.4-1.3.7-.1-.1-.2-.2-.3-.4C189 8.2 189.5 8.1 190.1 8zM195.4 21.3c-1-.6-1.1-1.4-1-1.6.1-.3.3-.2.4-.2.7 0 1.4-.2 2.3-1.1 1-1 1.3-3.3-.2-4.7-1.6-1.6-3.4-1.3-4.5.1-.2.3-.8.5-1.3.5-.7 0-.3.5-.3.7 0 .1-.1.2-.2.2-.2-.1-.1.3-.1.4 0 .1-.1.2-.2.2-.3 0-.2.3-.2.3 0 .1 0 .2-.1.3-.1.1-.2.3-.2.5 0 .3.3.6.8.9.5.4.6.7.6 1 0 .3 0 .7.1.9.1.3.1.9-.6 1-.9 0-2.4.7-2.5.8-.5.2-1.1.2-1.6.1-.3-.2-.5-.4-.8-.6-.1-.3.1-.7.2-1 .3.3.7.3.9.3.2 0 1.4-.2 1.6-.2.2-.1.2 0 .3 0 .4.2 1.1.2 1.3-.6.2-.9-.3-.6-.4-.6-.1 0-.2 0-.1 0 .1-.2-.1-.2-.1-.2-.2 0-.5.2-.7.3-.1.1-.2.1-.2.1-.3-.2-1.3.1-1.6-.4 0-.1-.2-2.2-.4-2.6 0-.1-.1-.2 0-.3.2-.4.9 0 1.3 0 .4 0 .5-.2.6-.3.1-.1.2-.1.3-.1.1-.1 0-.2 0-.2 0-.1.1 0 .1-.1.1-.1 0-.2 0-.3.1-.2.4 0 .2-.4-.1-.2 0-.5.2-.6.2-.3 1-1.4-.4-2.6-1.3-1.1-2.7-1-3.6-.1-.9 1-.4 2.3-.3 2.7.1.4-.2.7-.5.8-.2.1-.8.5-1.2.8.1-3 1.9-5.6 4.7-6.7.1.1.3.3.4.4-.3.2-1 .8-1 .8s.1 0 .2 0c.1 0 .2.1.2.1s.6-.5.9-.7c.2.2.5.3.7.4-.1.2-.5.9-.5.9s.1 0 .1.1c.1 0 .1.1.1.1s.4-.7.5-.9c.3.1.6.2 1 .2 0 .1 0 1.2 0 1.3-.2 0-.7 0-.8 0l-.1 0 .1.1c.1.1.1.1.1.2l0 0 0 0c.1 0 .6 0 .7 0 0 .1 0 2.3 0 2.3h.3c0 0 0-.4 0-.5.5 0 .9-.1 1.3-.1l0 0 .4-.4-.2 0c-.5.1-.9.1-1.3.1 0 0-.1 0-.2 0 0-.1 0-1.4 0-1.5.6 0 1.2-.1 1.7-.2.2.4.5 1.3.5 1.3l.3-.1c0 0-.3-.9-.4-1.3.5-.1 1-.4 1.4-.6.4.4.7.9.9 1.4-.2.1-.6.3-.6.3.3 0 .6.1.6.1s.1-.1.2-.1c0 .1.1.2.1.2l.4.2 0-.1c0 0-.1-.3-.2-.4.4-.2.9-.5 1.3-.7.8 1.2 1.2 2.6 1.2 4.1C198.4 17.8 197.2 20 195.4 21.3zM182.4 9.7l-.1.1c-.5.4-1.5 1.5-1.3 2.6 0 0 0 .1 0 .1 0 0 .1.2.1.2l.1-.1c.6-.6 1.1-1.6 1.3-2.7l.1-.3L182.4 9.7zM180.3 11.7l-.1.1c-.1.2-.2.6-.3 1.1-.1.8-.1 1.9.6 2.7 0 0 .1.1.1.1l.1.1.1-.5c.1-.9 0-2.7-.4-3.5l-.1-.3L180.3 11.7zM179.6 14.9l0 .1c-.1.8 0 2.7 1.6 3.8 0 0 .2.1.2.1l0-.2c0-.7-.9-2.9-1.5-3.7l-.2-.2L179.6 14.9zM179.8 18.3l0 .1c.2 1.1 1.3 2.9 2.9 3.4L183 22l-.1-.2c-.3-.8-1.9-2.8-2.9-3.4l-.2-.1L179.8 18.3zM183.1 11.4l-.1.1c-1.2.7-1.8 1.6-1.7 2.7l0 .3.2-.1c.7-.5 1.5-1.9 1.7-2.7l.1-.3L183.1 11.4zM182.4 13.8 182.4 13.8c-.4.4-1.4 1.5-1.3 2.8 0 .2.1.4.1.7l.1.2.1-.2c.5-.7 1.1-2.5 1.1-3.3L182.4 13.8 182.4 13.8zM182.4 16.1l-.1.1c-.5.8-.8 1.5-.8 2.2 0 .5.2 1 .5 1.5l.1.2.1-.2c.2-.4.4-1.7.4-2.8 0-.4 0-.7-.1-.9l-.1-.2L182.4 16.1zM183 18.5l0 .1c-.2.5-.2 1-.2 1.4 0 1 .5 1.8 1.4 2.4l.1.1 0-.2c0 0 0-.2 0-.2 0-.8-.6-2.9-1.1-3.6l-.1-.2L183 18.5zM181.3 21.8l.1.1c.7 1.1 1.8 2.5 3.8 2.1l.2 0-.1-.1c-.4-.6-2.9-2-3.8-2.1l-.2 0L181.3 21.8zM181.5 21.8 181.5 21.8 181.5 21.8zM184.4 24.6 184.4 24.6l-.3.1.3.1c1.3.5 3 .7 3.9.4.4-.1.6-.3.8-.6 1.7.2 3.3 1.6 4.2 2.7l0 .1.1 0c.1 0 .3-.2.3-.2l.1-.1-.1-.1c-1-1.3-2.5-2-2.5-2.1C189.9 24.3 187.5 23.7 184.4 24.6z\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"m184.5 21.1 0 .1c.2 1.2.7 2.9 2.8 2.7l.1 0 0-.1c-.1-.6-2.1-2.2-2.7-2.7l-.2-.1L184.5 21.1zM199.3 9.6l.1.3c.2 1.1.7 2.1 1.3 2.7l.1.1c0 0 .1-.2.1-.2 0 0 0-.1 0-.1.2-1.2-.9-2.2-1.3-2.6l-.1-.1L199.3 9.6zM201.5 11.6l-.1.3c-.3.8-.5 2.7-.4 3.5l.1.5.1-.1c0 0 .1-.1.1-.1.7-.8.7-1.9.6-2.7-.1-.5-.2-1-.3-1.1l-.1-.1L201.5 11.6zM202.3 14.7l-.2.2c-.6.8-1.5 3-1.5 3.7l0 .2c0 0 .2-.1.2-.1 1.6-1 1.6-3 1.6-3.8l0-.1L202.3 14.7zM202.1 18.2l-.2.1c-1 .6-2.6 2.6-2.9 3.4l-.1.2.2-.1c1.6-.5 2.7-2.3 2.9-3.4l0-.1L202.1 18.2zM198.7 11.3l.1.3c.2.8 1 2.2 1.7 2.8l.2.2 0-.3c.1-1.1-.5-2-1.7-2.8l-.1-.1L198.7 11.3zM199.4 13.7l0 .3c0 .8.6 2.6 1.1 3.3l.1.2.1-.2c.1-.2.1-.4.1-.7.1-1.3-.9-2.4-1.2-2.7L199.4 13.7 199.4 13.7zM199.4 16l-.1.2c-.1.2-.1.5-.1.9 0 1.1.1 2.4.4 2.8l.1.2.1-.2c.3-.5.5-1 .5-1.5 0-.7-.2-1.5-.7-2.2l-.1-.1L199.4 16zM198.8 18.4l-.1.2c-.5.6-1.1 2.7-1.1 3.6 0 0 0 .2 0 .2l0 .2.1-.1c.9-.6 1.3-1.4 1.4-2.4 0-.5-.1-.9-.2-1.4l0-.1L198.8 18.4zM200.6 21.7l-.2 0c-.9.1-3.4 1.6-3.8 2.1l-.1.1.2 0c2.1.4 3.2-1.1 3.8-2.1l.1-.1L200.6 21.7zM200.4 21.8 200.4 21.8 200.4 21.8zM190.6 24.9c-.1 0-1.6.8-2.5 2.1l-.1.1.1.1c.1.1.2.2.3.2l.1 0 0-.1c.9-1.1 2.5-2.6 4.2-2.7.3.3.5.5.8.6 1 .3 2.6.2 3.9-.4l.3-.1-.3-.1 0 0C194.4 23.7 192 24.3 190.6 24.9zM197.4 21l-.2.1c-.7.5-2.6 2.1-2.7 2.7l0 .1.1 0c2.1.2 2.6-1.5 2.8-2.7l0-.1L197.4 21zM143.7 8.2h2.7v2.4h-2.7V8.2zM143.9 25.1V13.3h2.2v11.8H143.9zM127.1 13.4h2.2v11.8h-2.2v-1.7h0c-.9 1.5-2.4 2.1-4 2.1-2.5 0-3.9-1.9-3.9-4.3v-7.9h2.2v7c0 2 .5 3.5 2.6 3.5.9 0 2.2-.5 2.6-1.7.4-1.1.4-2.5.4-2.8V13.4zM133.8 15.1 133.8 15.1c.8-1.5 2.4-2.1 3.6-2.1.8 0 4.5.2 4.5 4v8.2h-2.2v-7.4c0-1.9-.8-3-2.7-3 0 0-1.2-.1-2.2.9-.3.3-.9.8-.9 3.1v6.4h-2.2V13.4h2.2V15.1zM155.5 17.1c-.1-1.5-.8-2.5-2.4-2.5-2.1 0-2.9 1.8-2.9 4.6 0 2.8.8 4.6 2.9 4.6 1.5 0 2.4-1 2.5-2.6h2.2c-.2 2.6-2.1 4.2-4.7 4.2-3.8 0-5.2-2.7-5.2-6.1 0-3.4 1.7-6.3 5.4-6.3 2.5 0 4.3 1.6 4.5 4.1H155.5zM161.1 19.7c-.2 2.1.7 4.2 2.9 4.2 1.7 0 2.6-.7 2.8-2.4h2.3c-.4 2.7-2.4 4-5.2 4-3.8 0-5.3-2.7-5.3-6.1 0-3.4 1.7-6.3 5.4-6.3 3.5.1 5.2 2.3 5.2 5.5v1.1H161.1zM167.1 18.1c0-2-.8-3.5-3-3.5-1.8 0-2.9 1.6-2.9 3.5H167.1zM171.9 25.1V14.9h-2v-1.5h2v-2.5c.1-2.6 2-3.2 3.7-3.2.5 0 1.1.1 1.6.2v1.8c-.4 0-.7-.1-1.1-.1-1.3 0-2 .3-1.9 1.6v2.1h2.7v1.5h-2.7v10.2H171.9z\\\" style=\\\"fill:#FFFFFF\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo, useCallback} from 'react'\nimport {useCustomerBaskets as useCustomerBasketsFromSdk} from '@salesforce/commerce-sdk-react'\nimport {useVariant} from './use-variant'\nimport {isQueryEnabled} from './helpers/is-query-enabled'\nimport {getCustomerApiPaths} from '../utils/get-custom-apis'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useCustomQuery} from './useCustomQuery'\nimport {useDolCommonParams} from './use-dol-common-params'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\nexport const useCustomerBaskets = (apiOptions, queryOptions = {}) => {\n    const {app: appConfig} = getConfig()\n    const isXEnvironmentHeaderEnabled = useVariant(\n        LD_KEYS.enableXEnvironmentHeaderForGetCustomerBaskets,\n        false\n    )\n    const isBasketTraceEnabled = useVariant(LD_KEYS.enableBasketTrace, false)\n\n    const isDolIntegrationEnabled = useVariant(\n        LD_KEYS.enableGlobalDolGetCustomerBasketIntegration,\n        false\n    )\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    const {\n        parameters: {customerId}\n    } = apiOptions || {parameters: {}}\n\n    const salesforceResult = useCustomerBasketsFromSdk(apiOptions || {}, {\n        ...queryOptions,\n        enabled: !isDolIntegrationEnabled && isQueryEnabled(queryOptions)\n    })\n\n    //DOL\n    const config = getConfig()\n    const proxyPath = config?.app?.dolAPI?.proxyPath\n\n    const apiPath = useMemo(() => {\n        if (!customerId) {\n            return ''\n        }\n        return `${getCustomerApiPaths(proxyPath, customerId, {}).CUSTOMER_BASKETS}`\n    }, [proxyPath, customerId])\n\n    const dolCommonParams = useDolCommonParams(true)\n\n    const dolApiOptions = useMemo(\n        () => ({\n            path: apiPath,\n            queryParams: dolCommonParams,\n            skipCredentials: !isBasketTraceEnabled,\n            headers: {\n                ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                ...(isXEnvironmentHeaderEnabled\n                    ? {'x-environment': appConfig?.targetEnvironment}\n                    : {})\n            }\n        }),\n        [\n            apiPath,\n            dolCommonParams,\n            isXEnvironmentHeaderEnabled,\n            appConfig,\n            isBasketTraceEnabled,\n            isDolQ3MigrationEnabled,\n            dolChannelHeaders\n        ]\n    )\n\n    const selectCallback = useCallback((data) => {\n        if (!data) {\n            return undefined\n        }\n        return {\n            ...data,\n            baskets:\n                data.baskets?.map((basket) => ({\n                    ...basket,\n                    basketId: basket.id, // Map DOL 'id' to SCAPI 'basketId'\n                    productItems:\n                        basket.items?.map((item) => ({\n                            ...item,\n                            itemId: item.id, // Map DOL 'id' to SCAPI 'itemId'\n                            quantity: item.quantity || 1\n                        })) || []\n                })) || []\n        }\n    }, [])\n\n    const dolResult = useCustomQuery(`/customers/${customerId}/baskets`, dolApiOptions, {\n        ...queryOptions,\n        meta: {\n            ...queryOptions?.meta,\n            displayName: 'useCustomerBaskets'\n        },\n        enabled: isDolIntegrationEnabled && isQueryEnabled(queryOptions) && !!customerId,\n        select: selectCallback\n    })\n\n    // If DOL is enabled but there's an error, fall back to SCAPI\n    if (isDolIntegrationEnabled && dolResult.error) {\n        return salesforceResult\n    }\n\n    return isDolIntegrationEnabled ? dolResult : salesforceResult\n}\n","import {defineMessages} from 'react-intl'\n\n// localStorage keys used across C&C flows\nexport const CUSTOM_SELECTED_STORE = 'custom-selected-store'\nexport const STORE_ORDERABLE = 'isSizeOrderableForFavStore'\nexport const INVENTORY_ITEMS = 'inventory-status-items'\nexport const CACHED_STORE_POSTAL_CODE = 'cached-store-postal-code'\nexport const CACHED_STORE_LOQATE_COORDS = 'cached-store-loqate-coords'\nexport const SEARCHED_POSTAL_CODE = 'searchedPostalCode'\n\nexport const STOCK_RULES = [\n    {key: 'lowStock', status: 'low'},\n    {key: 'hasStock', status: 'available'}\n]\n\n// ContentSquare data-cs-override-id zones for the C&C Loqate store search (DEL-7429).\n// Applied only when the Loqate variant is ON; the legacy post-code-only flow stays untagged.\nexport const CS_LOQATE_OVERRIDE_IDS = {\n    searchInput: 'PDP_CC_loqate_search_input',\n    suggestions: 'PDP_CC_loqate_suggestions',\n    findStores: 'PDP_CC_loqate_find_stores',\n    // Suffixed with the 0-based row index so each select-store zone is unique in the DOM.\n    selectStorePrefix: 'PDP_CC_loqate_select_store_'\n}\n\nexport const STORE_AVAILABILITY_MESSAGES = defineMessages({\n    title: {\n        id: 'product_details.store_availability.title',\n        defaultMessage: 'Pick up in store'\n    },\n    CnCNotAvailable: {\n        id: 'product_details.store_pickup.cnc_not_eligible.label',\n        defaultMessage: 'Not available for Click and Collect'\n    },\n    available: {\n        id: 'product_details.store_availability.link.store_status.available',\n        defaultMessage: 'Available'\n    },\n    oos: {\n        id: 'product_details.store_availability.link.store_status.oos',\n        defaultMessage: 'Currently out of stock'\n    },\n    low: {\n        id: 'product_details.store_availability.store_status.low',\n        defaultMessage: 'Only a few pieces left'\n    },\n    noSizeSelected: {\n        id: 'product_details.store_pickup.no_size_selected.label',\n        defaultMessage: 'Select a size to check availability'\n    },\n    noStoreSelected: {\n        id: 'product_details.store_pickup.no_store_selected.label',\n        defaultMessage: 'Select store to see availability'\n    },\n    selectStore: {\n        id: 'product_details.store_availability.link.label',\n        defaultMessage: 'Select a store'\n    },\n    changeStore: {\n        id: 'product_details.store_availability.link.success.label',\n        defaultMessage: 'Change store'\n    },\n    selectStoreCta: {\n        id: 'product_details.store_pickup_dialog.stores_list.button',\n        defaultMessage: 'Select store'\n    },\n    selectedStoreCta: {\n        id: 'product_details.store_pickup_dialog.store_selector_button.success',\n        defaultMessage: 'Selected'\n    },\n    notAvailableCta: {\n        id: 'product_details.store_pickup_dialog.stores_list.button.oos',\n        defaultMessage: 'Not available'\n    }\n})\n\nexport const CNC_LOD_MESSAGING_KEYS = defineMessages({\n    clickAndCollect: {\n        defaultMessage: 'LoD Messaging',\n        id: 'product_details.cnc.lod_messaging.label'\n    },\n    clickAndCollectEngraving: {\n        defaultMessage: 'LoD Messaging Engraving',\n        id: 'product_details.cnc.lod_messaging_engraving.label'\n    }\n})\n\nexport const GEO_LOCATION_ERROR_KEYS = defineMessages({\n    unsupportedBrowser: {\n        id: 'product_details.store_pickup_dialog.geolocation.unsupported_browser',\n        defaultMessage: 'Geolocation is not supported by your browser.'\n    },\n    locationRetrievalFailed: {\n        id: 'product_details.store_pickup_dialog.geolocation.location_retrieval_failed',\n        defaultMessage: 'Failed to retrieve location.'\n    },\n    geolocationPermissionDenied: {\n        id: 'product_details.store_pickup_dialog.geolocation.permission_denied',\n        defaultMessage: 'Geolocation permission denied.'\n    },\n    permissionQueryFailed: {\n        id: 'product_details.store_pickup_dialog.geolocation.permission_query_failed',\n        defaultMessage: 'Permission query failed.'\n    }\n})\n","import {queryKeyHelpers} from '../helpers/query-key-helpers'\nimport {transformImageUrl} from '../../utils/transformImageUrl'\nimport {PRODUCT_TILE_IMAGE_WIDTHS, IMAGE_CONF} from '../../constants'\nimport breakpoints from '../../theme/foundations/breakpoints'\nimport {remToPx} from '../../utils/common'\n\n/**\n * Get the CSS pixel width for the current breakpoint from PRODUCT_TILE_IMAGE_WIDTHS.\n * @param {number} viewportWidth - The viewport width in pixels\n * @returns {number} The CSS pixel width for current viewport\n */\nexport const getBreakpointWidth = (viewportWidth) => {\n    if (viewportWidth >= remToPx(breakpoints['2xl'])) {\n        return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS['2xl'], 10)\n    }\n    if (viewportWidth >= remToPx(breakpoints.xl)) {\n        return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS.xl, 10)\n    }\n    if (viewportWidth >= remToPx(breakpoints.lg)) {\n        return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS.lg, 10)\n    }\n    if (viewportWidth >= remToPx(breakpoints.md)) {\n        return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS.md, 10)\n    }\n    return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS.base, 10)\n}\n\n/**\n * Get the current PLP image width that browser would actually load.\n * Accounts for device pixel ratio (DPR) - browser loads larger images on high-DPR screens.\n * Salesforce's DynamicImage generates srcset with 1x and 2x factors only, so we cap DPR at 2.\n * @returns {number} The actual image width browser would request\n */\nexport const getCurrentPlpImageWidth = () => {\n    if (typeof window === 'undefined') {\n        return Number.parseInt(PRODUCT_TILE_IMAGE_WIDTHS.base, 10)\n    }\n\n    const viewportWidth = window.innerWidth\n    const dpr = window.devicePixelRatio || 1\n    const cssWidth = getBreakpointWidth(viewportWidth)\n\n    // Salesforce DynamicImage provides srcset with 1x and 2x widths only (see responsive-image.js)\n    // Cap DPR at 2 to match what's actually available in the srcset\n    const effectiveDpr = Math.min(dpr, 2)\n    return Math.round(cssWidth * effectiveDpr)\n}\n\n/**\n * Transforms items into product-inventory map\n * If isDefaultInventory = false:\n *   { [productId]: { [inventoryId]: inventoryObject } }\n * If isDefaultInventory = true:\n *   { [productId]: inventoryObject }\n *\n * @param {Array<Object>} items\n * @param {boolean} isDefaultInventory\n * @returns {Object}\n */\nexport const getInventoryMap = (items = [], isDefaultInventory = true) =>\n    items.reduce((acc, item) => {\n        const {productId, inventoryId} = item || {}\n        if (!productId) return acc\n\n        const updatedItem = {...item, ats: item.availableToSell ?? 0}\n        if (isDefaultInventory) {\n            // One inventory for one product\n            return {...acc, [productId]: updatedItem}\n        }\n\n        // Many inventories for 1 product\n        if (!inventoryId) return acc\n        return {\n            ...acc,\n            [productId]: {\n                ...(acc[productId] || {}),\n                [inventoryId]: updatedItem\n            }\n        }\n    }, {})\n\n/**\n * Gets product IDs from a product and its children.\n * @param {Object} product\n * @param {Object} options - { includeVariants: boolean }\n * @returns {string[]}\n */\nexport const getProductIds = (product, options = {}) => {\n    const {includeVariants = false} = options\n\n    if (!product) return []\n\n    const baseProductId = product.productType?.variant\n        ? product.master?.masterId\n        : product.id ?? product.productId\n\n    let productIds = [baseProductId]\n\n    // Include variant IDs if requested (needed for inventory)\n    if (includeVariants && Array.isArray(product?.variants)) {\n        productIds = getVariantsIds(product, productIds)\n    }\n\n    // Include child products from bundles\n    if (Array.isArray(product?.bundledProducts)) {\n        productIds = getBundleProductIds(product, productIds, includeVariants)\n    }\n\n    // Include child products from sets\n    if (Array.isArray(product?.setProducts)) {\n        productIds = getSetProductIds(product, productIds, includeVariants)\n    }\n\n    return productIds.filter((id) => !!id)\n}\n\nexport const INVENTORY_EXPAND_ALL = ['variations', 'set_products']\n\nconst pickMasterOrOwnId = (p) => p?.master?.masterId ?? p?.id ?? p?.productId\n// SCAPI uses `product.type`; DOL uses `product.productType`.\nconst getProductType = (product) => product?.productType ?? product?.type\nconst hasVariants = (product) => {\n    const t = getProductType(product)\n    return Boolean(t?.master || t?.variant)\n}\n\n/**\n * Extra IDs to fetch once the product resolves; primary call already covers the rest.\n * Sets → component masters (expand=set_products doesn't recurse into variants).\n * Bundles → child masters (primary doesn't include them).\n * Others → [].\n */\nexport const getSecondaryInventoryIds = (product) => {\n    if (!product) return []\n\n    const type = getProductType(product)\n\n    if (type?.set) {\n        // Skip simple-item components; their inventory arrived on the primary call.\n        return Array.isArray(product.setProducts)\n            ? product.setProducts.filter(hasVariants).map(pickMasterOrOwnId).filter(Boolean)\n            : []\n    }\n\n    if (type?.bundle) {\n        return Array.isArray(product.bundledProducts)\n            ? product.bundledProducts.map((bp) => pickMasterOrOwnId(bp.product)).filter(Boolean)\n            : []\n    }\n\n    return []\n}\n\n/**\n * Gets product IDs for pricing API calls (excludes variants by default).\n * @param {Object} product\n * @param {Object} options - { includeVariants: boolean }\n * @returns {string[]}\n */\nexport const getProductPriceIds = (product, options = {}) => {\n    return getProductIds(product, options)\n}\n\n/**\n * @param {object} product\n * @param {string[]} productIds\n * @returns {string[]}\n */\nfunction getVariantsIds(product, productIds = []) {\n    return product.variants.reduce((acc, variant) => {\n        if (!productIds.includes(variant.productId)) {\n            acc.push(variant.productId)\n        }\n\n        return acc\n    }, productIds)\n}\n\n/**\n * @param {object} product\n * @param {string[]} productIds\n * @param {boolean} includeVariants\n * @returns {string[]}\n */\nfunction getBundleProductIds(product, productIds = [], includeVariants = false) {\n    return product.bundledProducts.reduce((acc, bundleProduct) => {\n        let ids = getProductIds(bundleProduct.product, {includeVariants})\n        acc.push(...ids)\n        return acc\n    }, productIds)\n}\n\n/**\n * @param {object} product\n * @param {string[]} productIds\n * @param {boolean} includeVariants\n * @returns {string[]}\n */\nfunction getSetProductIds(product, productIds = [], includeVariants = false) {\n    return product.setProducts.reduce((acc, setProduct) => {\n        let ids = getProductIds(setProduct, {includeVariants})\n        acc.push(...ids)\n        return acc\n    }, productIds)\n}\n\n/** @typedef {import('../types/product-price').ApiPriceItem} ApiPriceItem */\n/** @typedef {import('../types/product-price').ProductPricesMap} ProductPricesMap */\n\n/**\n * @param {Object} finalProduct\n * @param {Object} [inventory] - Inventory data from API (undefined = preserve original)\n * @param {ProductPricesMap} [prices] - Price data from API (undefined = preserve original)\n * @param {boolean} [isChild]\n * @returns {Object}\n */\nexport const buildProduct = (finalProduct, inventory, prices, isChild = false) => {\n    if (Array.isArray(finalProduct.variants)) {\n        buildWithVariants(finalProduct, inventory)\n    }\n\n    if (Array.isArray(finalProduct.bundledProducts)) {\n        buildWithBundledProducts(finalProduct, inventory, prices)\n    }\n\n    if (Array.isArray(finalProduct.setProducts)) {\n        buildWithSetProducts(finalProduct, inventory, prices)\n    }\n\n    const productId = finalProduct.id || finalProduct.productId\n    const priceProperty = isChild ? 'c_price' : 'price'\n\n    // Only merge prices if price data was provided (not undefined)\n    if (prices !== undefined) {\n        const priceValue = prices[productId]\n\n        if (priceValue !== undefined) {\n            finalProduct[priceProperty] = priceValue\n        } else if (!isChild) {\n            // Master products always get a price property (fallback to {})\n            finalProduct[priceProperty] = {}\n        }\n        // Child products only get c_price if price data exists\n    }\n    // If prices is undefined, preserve the original price data\n\n    // Only merge inventory if inventory data was provided (not undefined)\n    if (inventory !== undefined) {\n        finalProduct.inventory = inventory[productId] ?? {\n            orderable: true\n        }\n    }\n    // If inventory is undefined, preserve the original inventory data\n\n    return finalProduct\n}\n\nfunction buildWithVariants(finalProduct, inventory) {\n    if (inventory === undefined) {\n        return\n    }\n\n    finalProduct.variants.forEach((variant) => {\n        let variantInventory = inventory[variant.productId]\n        // Optimistic default for SSR / un-inventoried variants.\n        variant.orderable = !variantInventory || variantInventory.orderable\n    })\n\n    // Only overwrite value.orderable when the inventory map has data for a matching\n    // variant — otherwise trust BE's value. Guards the fresh-variant-URL case where\n    // the primary call returned only one row, so `variant.orderable` would fall back\n    // to `true` with BE's OOS state.\n    if (Array.isArray(finalProduct.variationAttributes)) {\n        finalProduct.variationAttributes.forEach((attr) => {\n            if (!Array.isArray(attr?.values)) return\n            attr.values.forEach((value) => {\n                const matchingVariants = finalProduct.variants.filter(\n                    (v) => v?.variationValues?.[attr.id] === value.value\n                )\n                const inventoriedVariants = matchingVariants.filter(\n                    (v) => inventory[v.productId] !== undefined\n                )\n                if (inventoriedVariants.length > 0) {\n                    value.orderable = inventoriedVariants.some((v) => v.orderable)\n                }\n            })\n        })\n    }\n}\n\n/**\n * @param {Object} finalProduct\n * @param {Object} [inventory]\n * @param {ProductPricesMap} [prices]\n */\nfunction buildWithBundledProducts(finalProduct, inventory, prices) {\n    finalProduct.bundledProducts.forEach((bundleWrapper) => {\n        const bundledProduct = bundleWrapper.product\n        if (prices !== undefined) {\n            delete bundledProduct.c_price // simulate DOL does not send price\n        }\n        return buildProduct(bundledProduct, inventory, prices, true)\n    })\n}\n\n/**\n * @param {Object} finalProduct\n * @param {Object} [inventory]\n * @param {ProductPricesMap} [prices]\n */\nfunction buildWithSetProducts(finalProduct, inventory, prices) {\n    finalProduct.setProducts.forEach((setProduct) =>\n        buildProduct(setProduct, inventory, prices, true)\n    )\n}\n\n/**\n * Transforms the `/prices/promotions` response array into a `productId`-keyed map.\n *\n * For each price item the function:\n * 1. Flattens `default` (`sales`, `list`) into the root (only applies to type `'default'`).\n * 2. Renames `promotions` → `appliedPromotions`.\n * 3. Promotes `lastLowestPrice.percentage` to the top-level `percentage` field\n *    (overrides base `percentage` when present).\n * 4. Removes the now-redundant `default` and `promotions` keys.\n *\n * Items without a `productId` are silently skipped.\n *\n * @param {ApiPriceItem[]} prices - Raw price items from the API response.\n * @returns {ProductPricesMap} Map of productId to transformed price data.\n */\nexport const getProductsPricesMap = (prices = []) => {\n    return prices.reduce((result, price) => {\n        if (!price?.productId) return result\n\n        const transformedPrice = {\n            ...price,\n            ...price.default,\n            ...(price.promotions && {appliedPromotions: price.promotions}),\n            ...(price?.lastLowestPrice?.percentage && {\n                percentage: price?.lastLowestPrice?.percentage\n            })\n        }\n\n        delete transformedPrice.default\n        delete transformedPrice.promotions\n\n        result[price.productId] = transformedPrice\n\n        return result\n    }, {})\n}\n\n/**\n * @param {string} productId\n * @param {QueryClient} queryClient\n * @param {object} options\n * @param {boolean} options.enableImageSyncForDetailedShotOnly\n * @param {boolean} options.enableSkeletonOverlayTransition\n * @returns {object}\n */\nexport const getPlaceholderProductData = (productId, queryClient, options = {}) => {\n    let {enableImageSyncForDetailedShotOnly = false, enableSkeletonOverlayTransition = false} =\n        options\n    const getImageViewType = (imageUrl = '') => {\n        const imageParts = imageUrl.split('/')\n        return imageParts[imageParts.length - 2]\n    }\n    // Get the current viewport-based image width to match exactly what PLP displayed\n    const plpImageWidth = getCurrentPlpImageWidth()\n\n    const getImageSequence = (images = []) => {\n        return images\n            .filter((image) => !!image)\n            .map((image, index) => {\n                const isHero = index === 0\n                // When skeleton overlay transition is enabled, only the hero image\n                // keeps its source — the rest render as skeletons in the gallery\n                const showImage = isHero || !enableSkeletonOverlayTransition\n                const imageUrl = showImage ? image.disBaseLink : undefined\n\n                return {\n                    ...image,\n                    type: 'image',\n                    viewTypeIndex: 0,\n                    viewType: getImageViewType(image.disBaseLink),\n                    preloaded: isHero,\n                    disBaseLink: imageUrl,\n                    plpImageSrc: imageUrl\n                        ? transformImageUrl({\n                              url: imageUrl,\n                              q: IMAGE_CONF.quality,\n                              sw: plpImageWidth\n                          })\n                        : undefined\n                }\n            })\n    }\n\n    const initialProductData = getProductFromQueryCache(productId, queryClient)\n\n    if (!initialProductData) {\n        return undefined\n    }\n\n    const imageSequence = getImageSequence([\n        initialProductData.heroImage || initialProductData.secondaryImage,\n        initialProductData.primaryImage,\n        initialProductData.primaryImage // keep 3 images for correct gallery structure\n    ])\n\n    // When enableImageSyncForDetailedShotOnly is enabled, only show placeholder images\n    // if at least one has viewType === 'modeldetailshot_rect'. Otherwise, return undefined\n    // to show skeleton (same as if optimisticNavigation was disabled)\n    const hasDetailedShot = imageSequence.some((image) => image.viewType === 'modeldetailshot_rect')\n\n    if (enableImageSyncForDetailedShotOnly && !hasDetailedShot) {\n        return undefined\n    }\n\n    return {\n        currency: initialProductData.currency,\n        id: initialProductData.productId,\n        inventory: {orderable: true}, // it's orderable since we got this data from PLP\n        name: initialProductData.productName,\n        type: initialProductData.productType ?? {},\n        c_imageSequence: imageSequence,\n        c_price: {\n            type: 'default',\n            sales: {\n                value: initialProductData.price ?? 0\n            }\n        },\n        isPreloaded: true // this will help us to verify whether it's real data or placeholderData\n    }\n}\n\n/**\n * @param {string} productId\n * @param {QueryClient} queryClient\n * @returns {object|undefined}\n */\nfunction getProductFromQueryCache(productId, queryClient) {\n    const plpQueryKey = [queryKeyHelpers.productSearch.path()]\n    const plpQueries = queryClient.getQueriesData(plpQueryKey)\n\n    if (Array.isArray(plpQueries) && plpQueries.length > 0) {\n        for (let i = plpQueries.length - 1; i >= 0; i--) {\n            let queryResult = plpQueries[i][1]\n            const pages = queryResult?.pages ?? []\n\n            // Search through all pages (including those loaded via \"Load more\")\n            for (const page of pages) {\n                const initialProductData = page?.hits?.find((hit) => hit.productId === productId)\n\n                if (initialProductData) {\n                    return initialProductData\n                }\n            }\n        }\n    }\n}\n","import {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\n\n/**\n * This functions takes an url and returns a site object,\n * an error will be thrown if no url is passed in or no site is found\n * @param {string} url\n * @returns {object} site - a site object\n */\nexport const resolveSiteFromUrl = (url, hostname) => {\n    if (!url) {\n        throw new Error('URL is required to find a site object.')\n    }\n    const {pathname, search} = getPathnameAndSearch(url)\n    const path = `${pathname}${search}`\n    let site\n\n    // get the site identifier from the url\n    const {siteRef} = getParamsFromPath(path)\n    const sites = getSites()\n\n    // check subdomain to look for the site from the sites in the app config\n    const siteUrl = getSubdomain(hostname)\n    site = sites.find((site) => site.id === siteUrl || (site.alias && site.alias === siteUrl))\n\n    if (site) {\n        return site\n    }\n\n    // step 1: use the siteRef to look for the site from the sites in the app config\n    // since alias is optional, make sure it is defined before the equality check\n    site = sites.find((site) => site.id === siteRef || (site.alias && site.alias === siteRef))\n    if (site) {\n        return site\n    }\n\n    //Step 2: if step 1 does not work, use the defaultSite value to get the default site\n    site = getDefaultSite()\n    // Step 3: throw an error if site can't be found by any of the above steps\n    if (!site) {\n        throw new Error(\n            \"Can't find a matching default site. Please check your sites configuration.\"\n        )\n    }\n    return site\n}\n\n/**\n * Returns the default site based on the defaultSite value from the app config\n * @returns {object} site - a site object from app config\n */\nexport const getDefaultSite = () => {\n    const {app} = getConfig()\n    const sites = getSites()\n\n    if (sites.length === 1) {\n        return sites[0]\n    }\n\n    return sites.find((site) => site.id === app.defaultSite)\n}\n\n/**\n * Return the list of sites that has included their respective aliases\n * @return {array} sites - list of sites including their aliases\n */\nexport const getSites = () => {\n    const {sites = [], siteAliases = {}} = getConfig().app || {}\n\n    if (!sites.length) {\n        throw new Error(\"Can't find any sites from the config. Please check your configuration\")\n    }\n\n    return sites.map((site) => {\n        const alias = siteAliases[site.id]\n        return {\n            ...site,\n            ...(alias ? {alias} : {})\n        }\n    })\n}\n\n/**\n * Given a site reference, return the site object\n * @param siteRef - site reference to look for the site object\n * @returns {object | undefined} found site object or default site object\n */\nexport const getSiteByReference = (siteRef) => {\n    const defaultSite = getDefaultSite()\n    const sites = getSites()\n\n    return (\n        sites.find((site) => {\n            return site.alias === siteRef || site.id === siteRef\n        }) || defaultSite\n    )\n}\n\n/**\n * This function return the identifiers (site and locale) from the given url\n * The site will always go before locale if both of them are presented in the pathname\n * @param path {string}\n * @returns {{siteRef: string, localeRef: string}} - site and locale reference (it could either be id or alias)\n */\nexport const getParamsFromPath = (path) => {\n    const {pathname, search} = getPathnameAndSearch(path)\n\n    const config = getConfig()\n    const {pathMatcher, searchMatcherForSite, searchMatcherForLocale} = getConfigMatcher(config)\n    const pathMatch = pathname.match(pathMatcher)\n    const searchMatchForSite = search.match(searchMatcherForSite)\n    const searchMatchForLocale = search.match(searchMatcherForLocale)\n\n    // the value can only either in the path or search query param, there will be no overridden\n    const siteRef = pathMatch?.groups.site || searchMatchForSite?.groups.site\n\n    const localeRef = pathMatch?.groups.locale || searchMatchForLocale?.groups.locale\n    return {siteRef, localeRef}\n}\n\n/**\n * This function returns the url config from the current configuration\n * @return {object} - url config\n */\nexport const getUrlConfig = () => {\n    const {app} = getConfig()\n    if (!app.url) {\n        throw new Error('Cannot find `url` key. Please check your configuration file.')\n    }\n    return app.url\n}\n\n/**\n * Given your application's configuration this function returns a set of regular expressions used to match the site\n * and locale references from an url.\n * @param config\n * @return {{searchMatcherForSite: RegExp, searchMatcherForLocale: RegExp, pathMatcher: RegExp}}\n */\nexport const getConfigMatcher = (config) => {\n    if (!config) {\n        throw new Error('Config is not defined.')\n    }\n\n    const allSites = getSites()\n    const siteIds = []\n    const siteAliases = []\n    const localesIds = []\n    const localeAliases = []\n    allSites.forEach((site) => {\n        siteAliases.push(site.alias)\n        siteIds.push(site.id)\n        const {l10n} = site\n        l10n.supportedLocales.forEach((locale) => {\n            localesIds.push(locale.id)\n            localeAliases.push(locale.alias)\n        })\n    })\n    const sites = [...siteIds, ...siteAliases].filter(Boolean)\n    const locales = [...localesIds, ...localeAliases].filter(Boolean)\n\n    // prettier-ignore\n    const searchPatternForSite = `site=(?<site>${sites.join('|')})`\n    // prettier-ignore\n    // eslint-disable-next-line\n    const pathPattern = `(?:\\/(?<site>${sites.join('|')}))?(?:\\/(?<locale>${locales.join(\"|\")}))?(?!\\\\w)`\n    // prettier-ignore\n    const searchPatternForLocale = `locale=(?<locale>${locales.join('|')})`\n    const pathMatcher = new RegExp(pathPattern)\n    const searchMatcherForSite = new RegExp(searchPatternForSite)\n    const searchMatcherForLocale = new RegExp(searchPatternForLocale)\n    return {\n        pathMatcher,\n        searchMatcherForSite,\n        searchMatcherForLocale\n    }\n}\n\n/**\n * Given a site and a locale reference, return the locale object\n * @param site - site to look for the locale\n * @param localeRef - the locale ref to look for in site supported locales\n * @return {object|undefined}\n */\nexport const getLocaleByReference = (site, localeRef) => {\n    if (!site) {\n        throw new Error('Site is not defined. It is required to look for locale object')\n    }\n    return site.l10n.supportedLocales.find(\n        (locale) => locale.id === localeRef || locale.alias === localeRef\n    )\n}\n\n/**\n * Determine the locale object from an url\n * If the localeRef is not found from the url, set it to default locale of the current site\n * and use it to find the locale object\n *\n * @param url\n * @return {Object} locale object\n */\nexport const resolveLocaleFromUrl = (url, hostname) => {\n    if (!url) {\n        throw new Error('URL is required to look for the locale object')\n    }\n    let {localeRef} = getParamsFromPath(url)\n    const site = resolveSiteFromUrl(url, hostname)\n    const {supportedLocales} = site.l10n\n    // if no localeRef is found, use the default value of the current site\n    if (!localeRef) {\n        localeRef = site.l10n.defaultLocale\n    }\n    const locale = supportedLocales.find(\n        (locale) => locale.alias === localeRef || locale.id === localeRef\n    )\n    if (locale) {\n        return locale\n    }\n    // if locale is not defined, use default locale as fallback value\n    const defaultLocale = site.l10n.defaultLocale\n    return supportedLocales.find(\n        (locale) => locale.alias === defaultLocale || locale.id === defaultLocale\n    )\n}\n\n/**\n * Determine the subdomain from an url\n *\n * @param url\n * @return {String} subdomain\n */\nconst getSubdomain = (url) => {\n    let domain = url\n    let subdomain = domain.split('.')\n    return subdomain.length > 2 ? subdomain[0].replace(/dev-|stg-/g, '') : ''\n}\n\n/**\n * Extract pathname and search params from a given url\n * @private\n * @param url\n * @returns {{search: (string|string), pathname: string}}\n */\nfunction getPathnameAndSearch(url) {\n    // since url is a partial url, we pass in a dummy domain to create a validate url to pass into URL constructor\n    const {pathname, search} = new URL(url, 'https://www.some-domain.com')\n    return {pathname, search}\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"return-primary\",\n  \"use\": \"return-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"return-primary\\\">\\n    <path d=\\\"M15.4933 12.4171C14.5635 14.5269 12.4538 15.9998 10.0001 15.9998C7.02956 15.9998 4.56318 13.841 4.08427 11.0066L6.50767 12.7035L7.08124 11.8844L3.39506 9.30328L0.813965 12.9895L1.63312 13.563L3.14191 11.4083C3.79377 14.5992 6.61661 16.9998 10.0001 16.9998C12.7923 16.9998 15.2026 15.365 16.3262 13.0004L15.4933 12.4171Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M16.8584 8.59125L18.3672 6.43647L19.1863 7.01005L16.6052 10.6962L12.9191 8.11514L13.4926 7.29599L15.916 8.99287C15.4371 6.15855 12.9707 3.99976 10.0001 3.99976C7.5465 3.99976 5.43684 5.47258 4.50703 7.58238L3.67407 6.99914C4.79766 4.63452 7.208 2.99976 10.0001 2.99976C13.3837 2.99976 16.2065 5.40035 16.8584 8.59125Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {\n    INDICATOR_POSITION,\n    THEME\n} from 'pandora-shared-app/overrides/app/components/carousel/constants'\n\nexport const defaultCarouselConfig = {\n    indicatorPosition: INDICATOR_POSITION.TOP_RIGHT,\n    showCounter: false,\n    theme: THEME.LIGHT,\n    loop: true,\n    loopAddBlankSlides: false,\n    freeMode: false,\n    resistanceRatio: 0,\n    breakpoints: {\n        0: {\n            slidesPerView: 2,\n            slidesPerGroup: 1,\n            spaceBetween: 8,\n            loopAdditionalSlides: 2\n        },\n        768: {\n            slidesPerView: 2,\n            slidesPerGroup: 1,\n            spaceBetween: 12,\n            loopAdditionalSlides: 2\n        },\n        1440: {\n            slidesPerView: 4,\n            slidesPerGroup: 4,\n            spaceBetween: 12,\n            loopAdditionalSlides: 0\n        }\n    },\n    showControls: true,\n    showPlayPause: false\n}\n\nexport const MAXIMUM_PRODUCTS = 12\n","import {durationStandard2} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {THEME} from 'pandora-shared-app/overrides/app/components/carousel/constants'\nimport {COLOR_SCHEMES} from 'pandora-shared-app/overrides/app/components/link/constants'\n\nexport const ENLARGED_CARD_THRESHOLD = 3\n\nexport const DESKTOP_SLIDES = {\n    ENLARGED: 3,\n    NORMAL: 4\n}\n\nexport const SLIDES_PER_VIEW = {\n    SMALL: 1.5,\n    MEDIUM: 3\n}\n\nexport const SPACE_BETWEEN = {\n    SMALL: 8,\n    MEDIUM: 12,\n    LARGE: 12\n}\n\nexport const CAROUSEL_BREAKPOINT = {\n    SMALL: 0,\n    MEDIUM: 768,\n    LARGE: 1200,\n    X_LARGE: 1440\n}\n\nexport const CARD_ASPECT_RATIO = '3:4'\n\nexport const CARD_ASPECT_RATIO_VALUE = 3 / 4\n\nexport const CARD_IMAGE_WIDTH = 600\n\nexport const MODULE_PAGE = {\n    HOMEPAGE: 'homepage'\n}\n\nexport const CARD_LAYOUT = {\n    CAROUSEL: 'carousel',\n    GRID: 'grid'\n}\n\nexport const ENTRY_CARDS_KCP_THEMES = {\n    BLACK_FRIDAY: 'black friday',\n    CYBER_MONDAY: 'cyber monday',\n    SALE: 'sale',\n    BLUE_SALE: 'blue sale'\n}\n\nconst DEFAULT_KCP_THEME_STYLE = {\n    backgroundColor: 'white',\n    textColor: 'black1',\n    descriptionColor: 'black3a',\n    carouselTheme: THEME.LIGHT,\n    linkColorScheme: COLOR_SCHEMES.LIGHT\n}\n\nconst darkThemeStyle = (backgroundColor) => ({\n    backgroundColor,\n    textColor: 'white',\n    descriptionColor: 'white',\n    carouselTheme: THEME.DARK,\n    linkColorScheme: COLOR_SCHEMES.DARK\n})\n\nconst KCP_THEME_STYLES = {\n    [ENTRY_CARDS_KCP_THEMES.BLACK_FRIDAY]: darkThemeStyle('black'),\n    [ENTRY_CARDS_KCP_THEMES.CYBER_MONDAY]: darkThemeStyle('pandoraPurple'),\n    [ENTRY_CARDS_KCP_THEMES.SALE]: darkThemeStyle('pandoraRed'),\n    [ENTRY_CARDS_KCP_THEMES.BLUE_SALE]: {\n        backgroundColor: 'black5',\n        textColor: 'black1',\n        descriptionColor: 'black1',\n        carouselTheme: THEME.LIGHT,\n        linkColorScheme: COLOR_SCHEMES.LIGHT\n    }\n}\n\nexport const normalizeEntryCardsKcpTheme = (KCPTheme = '') =>\n    typeof KCPTheme === 'string' ? KCPTheme.toLowerCase().trim() : ''\n\nexport const getEntryCardsKcpThemeStyle = (KCPTheme) =>\n    KCP_THEME_STYLES[normalizeEntryCardsKcpTheme(KCPTheme)] || DEFAULT_KCP_THEME_STYLE\n\nexport const getDesktopSlidesPerView = (cardCount) =>\n    cardCount <= ENLARGED_CARD_THRESHOLD ? DESKTOP_SLIDES.ENLARGED : DESKTOP_SLIDES.NORMAL\n\nconst shouldLoop = (cardCount, slidesPerView) => cardCount > slidesPerView\n\nexport const getCarouselConfig = (cardCount = 0) => {\n    const desktop = {\n        slidesPerView: getDesktopSlidesPerView(cardCount),\n        slidesPerGroup: 1,\n        spaceBetween: SPACE_BETWEEN.LARGE,\n        loop: false\n    }\n\n    return {\n        loop: false,\n        grabCursor: true,\n        speed: durationStandard2 * 1000,\n        breakpoints: {\n            [CAROUSEL_BREAKPOINT.SMALL]: {\n                slidesPerView: SLIDES_PER_VIEW.SMALL,\n                slidesPerGroup: 1,\n                spaceBetween: SPACE_BETWEEN.SMALL,\n                loop: shouldLoop(cardCount, SLIDES_PER_VIEW.SMALL)\n            },\n            [CAROUSEL_BREAKPOINT.MEDIUM]: {\n                slidesPerView: SLIDES_PER_VIEW.MEDIUM,\n                slidesPerGroup: 1,\n                spaceBetween: SPACE_BETWEEN.MEDIUM,\n                loop: shouldLoop(cardCount, SLIDES_PER_VIEW.MEDIUM)\n            },\n            [CAROUSEL_BREAKPOINT.LARGE]: {...desktop},\n            [CAROUSEL_BREAKPOINT.X_LARGE]: {...desktop}\n        }\n    }\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"return-pictogram\",\n  \"use\": \"return-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol viewBox=\\\"0 0 64 64\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"return-pictogram\\\">\\n<path d=\\\"M23.3213 37.2261L13 29.999L5.77295 40.3203\\\" stroke=\\\"currentColor\\\" />\\n<path d=\\\"M13.0583 30.499C13.0197 30.9939 13 31.4942 13 31.999C13 42.4924 21.5066 50.999 32 50.999C39.5442 50.999 46.0615 46.6021 49.1289 40.2311\\\" stroke=\\\"currentColor\\\" />\\n<path d=\\\"M40.6787 26.772L51 33.999L58.2271 23.6777\\\" stroke=\\\"currentColor\\\" />\\n<path d=\\\"M50.9417 33.499C50.9803 33.0041 51 32.5039 51 31.999C51 21.5056 42.4934 12.999 32 12.999C24.4558 12.999 17.9385 17.396 14.8711 23.767\\\" stroke=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-pinterest\",\n  \"use\": \"social-pinterest-usage\",\n  \"viewBox\": \"0 0 21 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 21 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-pinterest\\\">\\n<path d=\\\"M10.9968 0C5.4737 0 0.996826 4.47688 0.996826 10C0.996826 15.5225 5.4737 20 10.9968 20C16.52 20 20.9968 15.5225 20.9968 10C20.9968 4.47688 16.5193 0 10.9968 0Z\\\" fill=\\\"currentColor\\\" />\\n<path d=\\\"M16.0012 7.79124C16.0012 10.7025 14.3824 12.8781 11.9968 12.8781C11.1949 12.8781 10.4418 12.445 10.1837 11.9525C10.1837 11.9525 9.75242 13.6625 9.6618 13.9925C9.34055 15.1587 8.39492 16.3256 8.3218 16.4212C8.27055 16.4875 8.15742 16.4669 8.14555 16.3787C8.12492 16.23 7.8843 14.7587 8.16805 13.5581L9.12242 9.51374C9.12242 9.51374 8.88555 9.03999 8.88555 8.33937C8.88555 7.23937 9.52305 6.41812 10.3168 6.41812C10.9918 6.41812 11.3174 6.92437 11.3174 7.53187C11.3174 8.21062 10.8855 9.22562 10.6624 10.1656C10.4762 10.9531 11.0574 11.5956 11.8337 11.5956C13.2399 11.5956 14.1868 9.78937 14.1868 7.64937C14.1868 6.02312 13.0918 4.80499 11.0987 4.80499C8.84805 4.80499 7.44492 6.48374 7.44492 8.35937C7.44492 9.00624 7.63617 9.46249 7.93492 9.81499C8.0718 9.97749 8.09117 10.0425 8.04117 10.2287C8.00492 10.3656 7.9243 10.6937 7.8893 10.8244C7.83992 11.0125 7.68742 11.0794 7.51805 11.01C6.48117 10.5869 5.99805 9.45062 5.99805 8.17437C5.99805 6.06624 7.77617 3.53812 11.3024 3.53812C14.1368 3.53937 16.0012 5.58937 16.0012 7.79124Z\\\" fill=\\\"var(--pinterest-icon-inner)\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport {createIcon} from '@chakra-ui/icons'\n\n// Icons created with createIcon from Chakra UI\n\nexport const BagIcon = createIcon({\n    displayName: 'Bag',\n    viewBox: '0 0 20 20',\n    path: (\n        <>\n            <g clipPath=\"url(#clip0_3200_102272)\">\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M9.99838 1C7.95857 1 6.27538 2.52684 6.02933 4.5H5.02307C5.27393 1.97334 7.40571 0 9.99838 0C12.7598 0 14.9984 2.23858 14.9984 5V6.5H18.548L19.7968 20H0.199997L1.44875 6.5H2.44946L2.36203 7.5H2.36052L1.29677 19H18.7L17.6362 7.5H14.9868C14.8203 9.83358 12.8744 11.675 10.4984 11.675H4.99838V6.5H13.9984V5C13.9984 2.79086 12.2075 1 9.99838 1ZM13.9835 7.5H5.99838V10.675H10.4984C12.3218 10.675 13.8195 9.28063 13.9835 7.5Z\"\n                    fill=\"currentColor\"\n                />\n            </g>\n            <defs>\n                <clipPath id=\"clip0_3200_102272\">\n                    <rect width=\"20\" height=\"20\" fill=\"currentColor\" />\n                </clipPath>\n            </defs>\n        </>\n    )\n})\n\nexport const EmptyHeartIcon = createIcon({\n    displayName: 'EmptyHeart',\n    viewBox: '0 0 20 18',\n    path: (\n        <path\n            d=\"M20 5.75358C20 3.41128 18.702 1.36306 16.6924 0.547224C14.7688 -0.23367 12.3477 0.1695 10 2.23089C7.65232 0.1695 5.2312 -0.2336 3.30761 0.54737C1.29797 1.36327 0 3.41156 0 5.75386C0 7.12866 0.667416 8.55743 1.57299 9.88042C2.48765 11.2167 3.69628 12.5181 4.88799 13.6523C6.48052 15.168 8.19555 16.5655 10 17.8235C10.3256 17.5966 10.6487 17.3678 10.9671 17.1308C9.16182 15.7422 7.35301 14.3766 5.70024 12.8036C4.53902 11.6984 3.3947 10.4608 2.54466 9.21897C1.68553 7.96382 1.17647 6.77525 1.17647 5.75386C1.17647 3.83627 2.23145 2.25102 3.75121 1.63401C5.24506 1.02751 7.35824 1.29569 9.59089 3.45082L10 3.84574L10.4091 3.45082C12.6418 1.29568 14.755 1.02744 16.2488 1.63388C17.7686 2.25083 18.8235 3.83599 18.8235 5.75358C18.8235 6.77497 18.3145 7.96356 17.4553 9.21875C16.6053 10.4606 15.461 11.6982 14.2998 12.8035C13.4715 13.5917 12.6422 14.3057 11.9178 14.8981L12.8726 15.6336C13.564 15.0617 14.3375 14.3893 15.112 13.6522C16.3037 12.5179 17.5124 11.2165 18.427 9.88018C19.3326 8.55717 20 7.12839 20 5.75358Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const PinIcon = createIcon({\n    displayName: 'Pin',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            // fill-rule=\"evenodd\"\n            // clip-rule=\"evenodd\"\n            d=\"M13.2238 4.9337C13.1504 1.68636 9.32745 -0.0329918 6.56564 1.94201C3.42904 4.18502 3.42047 8.70116 5.85008 11.9883L10.4891 18.2647C12.0567 16.4701 14.5046 12.9513 15.7745 10.3471C16.5453 8.76617 16.9721 7.00668 16.5525 5.43291C16.4586 5.08077 16.3151 4.73487 16.1039 4.4181L17.0303 3.80052C17.3202 4.23531 17.5086 4.69733 17.6283 5.14605C18.1468 7.09056 17.6002 9.14313 16.7752 10.8351C15.3297 13.7995 12.4381 17.8735 10.8443 19.5261L10.3873 20L4.95474 12.6501C2.3006 9.05915 2.09757 3.76842 5.91802 1.03638C9.28618 -1.37222 14.24 0.621738 14.3369 4.90856C14.3392 5.01323 14.3404 5.11795 14.3404 5.22267C14.3404 7.6345 12.809 9.67611 10.722 9.67611C10.6154 9.67611 10.5052 9.66845 10.394 9.65515C8.64738 9.44629 7.59034 8.12336 7.39053 6.72797C7.18968 5.32541 7.85018 3.79067 9.53285 3.20839C9.91859 3.07491 10.3204 2.99595 10.722 2.99595V4.10931C10.4653 4.10931 10.1872 4.1601 9.89694 4.26053C8.78915 4.64388 8.35627 5.61781 8.49264 6.57015C8.63005 7.52968 9.34083 8.40792 10.5262 8.54966C10.6024 8.55878 10.6677 8.56275 10.722 8.56275C11.9751 8.56275 13.227 7.26428 13.227 5.22267C13.227 5.12633 13.226 5.02998 13.2238 4.9337Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const MenuIcon = createIcon({\n    displayName: 'Menu',\n    viewBox: '0 0 20 20',\n    path: (\n        <>\n            <path d=\"M0 2.5H20V3.5H0V2.5Z\" fill=\"currentColor\" />\n            <path d=\"M0 9.5H20V10.5H0V9.5Z\" fill=\"currentColor\" />\n            <path d=\"M20 16.5H0V17.5H20V16.5Z\" fill=\"currentColor\" />\n        </>\n    )\n})\n\nexport const CheckIcon = createIcon({\n    displayName: 'Check',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            d=\"M7.31579 16L6.96223 16.3536L7.42242 16.8137L7.7485 16.2505L7.31579 16ZM16.4327 1.25052L16.6832 0.817806L15.8178 0.316769L15.5673 0.749482L16.4327 1.25052ZM7.66934 15.6464L1.35355 9.33066L0.646447 10.0378L6.96223 16.3536L7.66934 15.6464ZM15.5673 0.749482L6.88308 15.7495L7.7485 16.2505L16.4327 1.25052L15.5673 0.749482Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const MoreIcon = createIcon({\n    displayName: 'More',\n    viewBox: '0 0 10 16',\n    path: (\n        <>\n            <rect y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n            <rect x=\"4\" y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n            <rect x=\"8\" y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" />\n        </>\n    )\n})\n\nexport const SearchIcon = createIcon({\n    displayName: 'Search',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            d=\"M3.05025 3.05025C5.78392 0.316582 10.2161 0.316582 12.9497 3.05025C15.3431 5.44365 15.6414 9.14007 13.8429 11.8575C13.3445 12.6107 13.2442 13.6722 13.8049 14.455L15.975 16.625H15.9715L18.2375 18.8508L19.0927 19.7425L19.8144 19.0504L18.9489 18.1478L14.7334 14.0072C14.3506 13.6312 14.3142 12.9574 14.6769 12.4094C16.7325 9.30338 16.393 5.07934 13.6569 2.34315C10.5327 -0.781049 5.46734 -0.781049 2.34315 2.34315C-0.781049 5.46734 -0.781049 10.5327 2.34315 13.6569C3.89478 15.2085 5.92626 15.9896 7.9593 15.9999C8.72048 16.0037 9.48238 15.8996 10.22 15.6873V14.6404C9.4897 14.8839 8.72695 15.0038 7.96436 14.9999C6.18405 14.9909 4.40814 14.3076 3.05025 12.9497C0.316582 10.2161 0.316582 5.78392 3.05025 3.05025Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const FilterIcon = createIcon({\n    displayName: 'Filter',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M12.9 4.00098C12.9552 4.00098 13 4.04575 13 4.10098V5.90098C13 5.95621 13.0448 6.00098 13.1 6.00098H16.9C16.9552 6.00098 17 6.04575 17 6.10098V6.90098C17 6.95621 16.9552 7.00098 16.9 7.00098H13.1C13.0448 7.00098 13 7.04575 13 7.10098V8.90098C13 8.9562 12.9552 9.00098 12.9 9.00098H12.1C12.0448 9.00098 12 8.95621 12 8.90098V4.10098C12 4.04575 12.0448 4.00098 12.1 4.00098H12.9ZM10 6.10098C10 6.04575 9.95523 6.00098 9.9 6.00098H2.1C2.04477 6.00098 2 6.04575 2 6.10098V6.90098C2 6.95621 2.04477 7.00098 2.1 7.00098H9.9C9.95523 7.00098 10 6.95621 10 6.90098V6.10098ZM16.9 12.501C16.9552 12.501 17 12.5457 17 12.601V13.401C17 13.4562 16.9552 13.501 16.9 13.501H9.1C9.04477 13.501 9 13.4562 9 13.401V12.601C9 12.5457 9.04477 12.501 9.1 12.501H16.9ZM6.9 16.001C6.95523 16.001 7 15.9562 7 15.901L7 10.101C7 10.0457 6.95523 10.001 6.9 10.001H6.1C6.04477 10.001 6 10.0457 6 10.101V12.401C6 12.4562 5.95523 12.501 5.9 12.501H2.1C2.04477 12.501 2 12.5457 2 12.601V13.401C2 13.4562 2.04477 13.501 2.1 13.501H5.9C5.95523 13.501 6 13.5457 6 13.601V15.901C6 15.9562 6.04477 16.001 6.1 16.001H6.9Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const VideoIcon = createIcon({\n    displayName: 'Video',\n    viewBox: '0 0 8 10',\n    path: <path d=\"M0.5 0.866025L7 4.6188L0.5 8.37158L0.5 0.866025Z\" fill=\"none\" />\n})\n\nexport const DeliveryIcon = createIcon({\n    displayName: 'Delivery',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M13 3.3373C13 3.28208 12.9552 3.2373 12.9 3.2373H1.1C1.04477 3.2373 1 3.28208 1 3.33731V14.1373C1 14.1925 1.04477 14.2373 1.1 14.2373H2.44986C2.48131 14.2373 2.51083 14.2224 2.53022 14.1977C2.98782 13.613 3.70003 13.2373 4.5 13.2373C5.29997 13.2373 6.01218 13.613 6.46978 14.1977C6.48917 14.2224 6.51869 14.2373 6.55014 14.2373H12.9C12.9552 14.2373 13 14.1925 13 14.1373V5.2373V3.3373ZM14.1 5.2373C14.0448 5.2373 14 5.19253 14 5.1373V2.3373C14 2.28208 13.9552 2.2373 13.9 2.2373H0.100001C0.0447721 2.2373 0 2.28208 0 2.3373V15.1373C0 15.1925 0.0447715 15.2373 0.1 15.2373H1.92767C1.99089 15.2373 2.03815 15.2952 2.02863 15.3577C2.00978 15.4815 2 15.6083 2 15.7373C2 17.118 3.11929 18.2373 4.5 18.2373C5.88071 18.2373 7 17.118 7 15.7373C7 15.6083 6.99022 15.4815 6.97137 15.3577C6.96185 15.2952 7.00911 15.2373 7.07233 15.2373H13H14C14.0258 15.2373 14.0452 15.261 14.0406 15.2864C14.0139 15.4327 14 15.5834 14 15.7373C14 17.118 15.1193 18.2373 16.5 18.2373C17.8807 18.2373 19 17.118 19 15.7373C19 15.6083 18.9902 15.4815 18.9714 15.3577C18.9619 15.2952 19.0091 15.2373 19.0723 15.2373H19.9C19.9552 15.2373 20 15.1925 20 15.1373V9.27064C20 9.249 19.993 9.22795 19.98 9.21064L17.03 5.2773C17.0111 5.25212 16.9815 5.2373 16.95 5.2373H14.1ZM14.1 6.2373C14.0448 6.2373 14 6.28208 14 6.3373V14.1373C14 14.1925 14.0448 14.2373 14.1 14.2373H14.4499C14.4813 14.2373 14.5108 14.2224 14.5302 14.1977C14.9878 13.613 15.7 13.2373 16.5 13.2373C17.3 13.2373 18.0122 13.613 18.4698 14.1977C18.4892 14.2224 18.5187 14.2373 18.5501 14.2373H18.9C18.9552 14.2373 19 14.1925 19 14.1373V9.60397C19 9.58233 18.993 9.56128 18.98 9.54397L16.53 6.2773C16.5111 6.25212 16.4815 6.2373 16.45 6.2373H14.1ZM4.5 17.2373C5.32843 17.2373 6 16.5657 6 15.7373C6 14.9089 5.32843 14.2373 4.5 14.2373C3.67157 14.2373 3 14.9089 3 15.7373C3 16.5657 3.67157 17.2373 4.5 17.2373ZM18 15.7373C18 16.5657 17.3284 17.2373 16.5 17.2373C15.6716 17.2373 15 16.5657 15 15.7373C15 14.9089 15.6716 14.2373 16.5 14.2373C17.3284 14.2373 18 14.9089 18 15.7373Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const ReturnsIcon = createIcon({\n    displayName: 'Returns',\n    viewBox: '0 0 20 20',\n    path: (\n        <>\n            <path\n                fill=\"none\"\n                d=\"M9.98574 2.62617C14.1636 2.62617 17.5504 6.01298 17.5504 10.1908C17.5504 14.3687 14.1636 17.7555 9.98574 17.7555C5.8079 17.7555 2.42109 14.3687 2.42109 10.1908C2.42109 6.01298 5.8079 2.62617 9.98574 2.62617Z\"\n                stroke=\"currentColor\"\n                strokeWidth=\"1.1\"\n            />\n            <rect\n                x=\"0.695312\"\n                y=\"7.09473\"\n                width=\"3.70838\"\n                height=\"7.5\"\n                transform=\"rotate(-45 0.695312 7.09473)\"\n                fill=\"white\"\n            />\n            <rect\n                x=\"11.5342\"\n                y=\"10.7998\"\n                width=\"3.72106\"\n                height=\"7.5\"\n                transform=\"rotate(-45 11.5342 10.7998)\"\n                fill=\"white\"\n            />\n            <path\n                d=\"M2.77363 7.48633L5.47852 10.1912L0.0687501 10.1912L2.77363 7.48633Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M17.1434 12.8955L14.4385 10.1906H19.8482L17.1434 12.8955Z\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const CreditCardIcon = createIcon({\n    displayName: 'Credit Card',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M1 4.3373C1 4.28208 1.04477 4.2373 1.1 4.2373H18.9C18.9552 4.2373 19 4.28208 19 4.3373V12.1373C19 12.1925 18.9552 12.2373 18.9 12.2373H1.1C1.04477 12.2373 1 12.1925 1 12.1373V4.3373ZM0 13.2373V12.2373V3.3373C0 3.28208 0.0447714 3.2373 0.0999999 3.2373H19.9C19.9552 3.2373 20 3.28208 20 3.3373V12.2373V13.2373V17.1373C20 17.1925 19.9552 17.2373 19.9 17.2373H0.1C0.0447715 17.2373 0 17.1925 0 17.1373V13.2373ZM18.9 13.2373C18.9552 13.2373 19 13.2821 19 13.3373V16.1373C19 16.1925 18.9552 16.2373 18.9 16.2373H1.1C1.04477 16.2373 1 16.1925 1 16.1373V13.3373C1 13.2821 1.04477 13.2373 1.1 13.2373H18.9Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const StarIcon = createIcon({\n    displayName: 'Star',\n    viewBox: '0 0 12 12',\n    path: (\n        <path\n            d=\"M6 1.14453L7.545 4.27453L11 4.77953L8.5 7.21453L9.09 10.6545L6 9.02953L2.91 10.6545L3.5 7.21453L1 4.77953L4.455 4.27453L6 1.14453Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const AudioOnIcon = createIcon({\n    displayName: 'Audio On',\n    viewBox: '0 0 25 24',\n    path: (\n        <>\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M14.5001 2.07666V22.1188L6.62645 16.0068H2.50012V8.10547H6.62645L14.5001 2.07666ZM13.5001 4.11885L6.96903 9.10547H3.50012V15.0068H6.96903L13.5001 20.0767V4.11885Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M16.4998 6.30381V7.37148C18.2613 8.10415 19.4999 9.84169 19.4999 11.8685C19.4999 13.8953 18.2613 15.6329 16.4998 16.3656V17.4333C18.8249 16.6531 20.4999 14.4564 20.4999 11.8686C20.4999 9.2807 18.8249 7.08408 16.4998 6.30381Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M16.5 14.0452C17.1125 13.5191 17.5005 12.739 17.5005 11.8683C17.5005 10.9976 17.1125 10.2175 16.5 9.69147V14.0452Z\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const AudioOffIcon = createIcon({\n    displayName: 'Audio Off',\n    viewBox: '0 0 16 16',\n    path: (\n        <>\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M9.3335 1.38428V14.7457L4.08438 10.6711H1.3335V5.40348H4.08438L9.3335 1.38428ZM8.66683 2.74574L4.31277 6.07015H2.00016V10.0044H4.31277L8.66683 13.3843V2.74574Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M12.7842 7.65492L11.1292 6L10.6666 6.48003L12.3128 8.12625L10.6678 9.77124L11.1305 10.2513L12.7842 8.59757L14.4379 10.2513L14.9005 9.77124L13.2555 8.12625L14.9017 6.48003L14.4391 6L12.7842 7.65492Z\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const CloseIcon = createIcon({\n    displayName: 'Close',\n    viewBox: '0 0 16 16',\n    path: (\n        <>\n            <g clipPath=\"url(#clip0_1623_4816)\">\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M7.36397 7.92353C7.40302 7.96258 7.40302 8.0259 7.36397 8.06495L0.0784524 15.3505C0.039676 15.3892 0.0393618 15.452 0.0777483 15.4912L0.497739 15.9197C0.536673 15.9594 0.600536 15.9597 0.639865 15.9204L7.92963 8.63061C7.96868 8.59155 8.032 8.59155 8.07105 8.63061L15.3566 15.9161C15.3953 15.9549 15.4581 15.9552 15.4973 15.9168L15.9258 15.4968C15.9655 15.4579 15.9658 15.394 15.9265 15.3547L8.63671 8.06495C8.59766 8.0259 8.59766 7.96258 8.63671 7.92353L15.9222 0.63801C15.961 0.599233 15.9613 0.536462 15.9229 0.497299L15.5029 0.0688188C15.464 0.0290982 15.4001 0.0287787 15.3608 0.0681077L8.07105 7.35787C8.032 7.39692 7.96868 7.39692 7.92963 7.35787L0.644113 0.0723551C0.605337 0.0335787 0.542565 0.0332647 0.503403 0.0716512L0.0749222 0.491642C0.0352017 0.530575 0.0348822 0.594438 0.0742112 0.633767L7.36397 7.92353Z\"\n                    fill=\"currentColor\"\n                />\n            </g>\n            <defs>\n                <clipPath id=\"clip0_1623_4816\">\n                    <rect width=\"16\" height=\"16\" fill=\"white\" />\n                </clipPath>\n            </defs>\n        </>\n    )\n})\n\nexport const RemoveMinicartIcon = createIcon({\n    displayName: 'Remove Minicart Icon',\n    viewBox: '0 0 16 16',\n    path: (\n        <path\n            d=\"M4.70753 4.92922C4.74659 4.96827 4.74659 5.03159 4.70753 5.07064L0.959868 8.81831C0.920815 8.85736 0.920816 8.92067 0.959868 8.95973L1.52555 9.52541C1.56461 9.56446 1.62792 9.56447 1.66697 9.52541L5.41464 5.77775C5.45369 5.73869 5.51701 5.73869 5.55606 5.77775L9.30373 9.52541C9.34278 9.56447 9.4061 9.56447 9.44515 9.52541L10.0108 8.95973C10.0499 8.92068 10.0499 8.85736 10.0108 8.81831L6.26317 5.07064C6.22412 5.03159 6.22412 4.96827 6.26317 4.92922L10.0108 1.18155C10.0499 1.1425 10.0499 1.07918 10.0108 1.04013L9.44515 0.474446C9.4061 0.435394 9.34278 0.435394 9.30373 0.474446L5.55606 4.22211C5.51701 4.26116 5.45369 4.26116 5.41464 4.22211L1.66698 0.474446C1.62792 0.435393 1.56461 0.435393 1.52555 0.474446L0.959869 1.04013C0.920817 1.07918 0.920816 1.1425 0.959869 1.18155L4.70753 4.92922Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const PersonIcon = createIcon({\n    displayName: 'Person',\n    viewBox: '0 0 20 20',\n    path: (\n        <>\n            <g clipPath=\"url(#clip0_5081_461119)\">\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M14.6248 4.34271C15.0072 6.58079 13.8086 9.2328 10.2467 11.3286C9.33722 11.8638 8.47461 12.3389 7.68111 12.7759C7.29466 12.9888 6.92461 13.1926 6.57351 13.3899C5.48971 13.999 4.57778 14.551 3.83778 15.1492C3.10298 15.7432 2.55065 16.3729 2.17812 17.1313C1.80569 17.8895 1.59763 18.8077 1.59763 20L0.597626 20C0.597632 18.6879 0.827536 17.6127 1.28055 16.6904C1.73345 15.7684 2.39402 15.0304 3.20912 14.3715C4.01902 13.7168 4.99397 13.1305 6.08356 12.5181C6.44879 12.3129 6.8261 12.1051 7.2163 11.8902C8.00275 11.4571 8.84159 10.9951 9.73957 10.4668C13.0752 8.50409 13.9289 6.20725 13.6391 4.51111C13.3433 2.77976 11.8495 1.5 10.0976 1.5V0.5C12.3457 0.5 14.2485 2.13984 14.6248 4.34271Z\"\n                    fill=\"currentColor\"\n                />\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M5.57045 4.34271C5.18809 6.58079 6.38665 9.2328 9.94855 11.3286C10.858 11.8638 11.7206 12.3389 12.5141 12.7759C12.9006 12.9888 13.2706 13.1926 13.6217 13.3899C14.7055 13.999 15.6175 14.551 16.3575 15.1492C17.0923 15.7432 17.6446 16.3729 18.0171 17.1313C18.3896 17.8895 18.5976 18.8077 18.5976 20L19.5976 20C19.5976 18.6879 19.3677 17.6127 18.9147 16.6904C18.4618 15.7684 17.8012 15.0304 16.9861 14.3715C16.1762 13.7168 15.2013 13.1305 14.1117 12.5181C13.7465 12.3129 13.3692 12.1051 12.9789 11.8902C12.1925 11.4571 11.3537 10.9951 10.4557 10.4668C7.12009 8.50409 6.2664 6.20725 6.55617 4.51111C6.85196 2.77976 8.34573 1.5 10.0976 1.5V0.5C7.84952 0.5 5.94679 2.13984 5.57045 4.34271Z\"\n                    fill=\"currentColor\"\n                />\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M19.0976 20L5.15146 20V19L19.0976 19V20Z\"\n                    fill=\"currentColor\"\n                />\n            </g>\n            <defs>\n                <clipPath id=\"clip0_5081_461119\">\n                    <rect x=\"0.0976257\" width=\"20\" height=\"20\" fill=\"currentColor\" />\n                </clipPath>\n            </defs>\n        </>\n    )\n})\n\nexport const PlayIcon = createIcon({\n    displayName: 'Play',\n    viewBox: '0 0 14 16',\n    path: <path d=\"M13 8L0.999999 14.9282L1 1.0718L13 8Z\" stroke=\"currentColor\" fill=\"none\" />\n})\n\nexport const PauseIcon = createIcon({\n    displayName: 'Pause',\n    viewBox: '0 0 16 16',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M11.9 16C11.9552 16 12 15.9552 12 15.9L12 0.1C12 0.0447715 11.9552 -1.95683e-09 11.9 -4.37096e-09L11.1 -3.93402e-08C11.0448 -4.17544e-08 11 0.0447719 11 0.1L11 15.9C11 15.9552 11.0448 16 11.1 16L11.9 16ZM4.9 16C4.95523 16 5 15.9552 5 15.9L5 0.0999997C5 0.0447712 4.95523 -3.07937e-07 4.9 -3.10351e-07L4.1 -3.4532e-07C4.04477 -3.47734e-07 4 0.0447716 4 0.1L4 15.9C4 15.9552 4.04477 16 4.1 16L4.9 16Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const RightCaretIcon = createIcon({\n    displayName: 'RightCaret',\n    viewBox: '0 0 16 16',\n    path: (\n        <>\n            <g clipPath=\"url(#clip0_3110_10637)\">\n                <path\n                    fillRule=\"evenodd\"\n                    clipRule=\"evenodd\"\n                    d=\"M12.2059 8.56957C12.2456 8.53064 12.2459 8.46678 12.2066 8.42745L4.35163 0.572502C4.31286 0.533726 4.25008 0.533412 4.21092 0.571798L3.78244 0.991789C3.74272 1.03072 3.7424 1.09459 3.78173 1.13391L11.0732 8.42541C11.1123 8.46447 11.1123 8.52778 11.0732 8.56684L3.78597 15.8541C3.74719 15.8929 3.74688 15.9556 3.78527 15.9948L4.20526 16.4233C4.24419 16.463 4.30805 16.4633 4.34738 16.424L12.0008 8.77054L12.2059 8.56957Z\"\n                    fill=\"currentColor\"\n                />\n            </g>\n            <defs>\n                <clipPath id=\"clip0_3110_10637\">\n                    <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\" />\n                </clipPath>\n            </defs>\n        </>\n    )\n})\n\nexport const RightCaretSmallIcon = createIcon({\n    displayName: 'RightCaretSmall',\n    viewBox: '0 0 12 12',\n    path: <path d=\"M6.00053 1.05025L10.9503 6L6.00053 10.9497\" fill=\"none\" stroke=\"currentColor\" />\n})\n\nexport const LeftCaretSmallIcon = createIcon({\n    displayName: 'RightCaretSmall',\n    viewBox: '0 0 12 12',\n    path: (\n        <path d=\"M6.00045 1.0505L1.0507 6.00024L6.00045 10.95\" fill=\"none\" stroke=\"currentColor\" />\n    )\n})\n\nexport const DownCaretSmallIcon = createIcon({\n    displayName: 'DownCaretSmall',\n    viewBox: '0 0 12 12',\n    path: <path d=\"M11.5 2.78613L6 8.28613L0.5 2.78613\" fill=\"none\" stroke=\"currentColor\" />\n})\n\nexport const ArrowRightIcon = createIcon({\n    displayName: 'ArrowRight',\n    viewBox: '0 0 20 20',\n    path: (\n        <g clipPath=\"url(#clip0_6029_107512)\" fill=\"none\">\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M17.9606 11.0478C18.023 10.9847 17.9782 10.8776 17.8894 10.8776H0.100001C0.0447722 10.8776 0 10.8328 0 10.7776V9.97759C0 9.92236 0.0447715 9.87759 0.1 9.87759H17.8401C17.9289 9.87759 17.9736 9.77052 17.9112 9.70734L9.51438 1.2C9.47559 1.16069 9.476 1.09737 9.51531 1.05858L10.0847 0.496602C10.124 0.457806 10.1873 0.45822 10.2261 0.497526L19.9332 10.3323C19.9716 10.3713 19.9716 10.4339 19.9332 10.4728L10.2261 20.3077C10.1873 20.347 10.124 20.3474 10.0847 20.3086L9.51531 19.7466C9.476 19.7078 9.47559 19.6445 9.51438 19.6052L17.9606 11.0478Z\"\n                fill=\"currentColor\"\n            />\n        </g>\n    )\n})\n\nexport const RatingStarIcon = createIcon({\n    displayName: 'RatingStar',\n    viewBox: '0 0 12 12',\n    path: (\n        <path\n            d=\"M6 1.14453L7.545 4.27453L11 4.77953L8.5 7.21453L9.09 10.6545L6 9.02953L2.91 10.6545L3.5 7.21453L1 4.77953L4.455 4.27453L6 1.14453Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const FacebookIcon = createIcon({\n    displayName: 'Facebook',\n    viewBox: '0 0 24 24',\n    path: (\n        <path\n            d=\"M22 12.0607C22 6.504 17.5233 2 12 2C6.47667 2 2 6.504 2 12.0607C2 17.0833 5.656 21.2453 10.4373 22V14.9693H7.89867V12.06H10.4373V9.844C10.4373 7.32267 11.93 5.92933 14.2147 5.92933C15.308 5.92933 16.4533 6.126 16.4533 6.126V8.602H15.1913C13.9493 8.602 13.5627 9.378 13.5627 10.174V12.0607H16.336L15.8927 14.9687H13.5627V22C18.344 21.2453 22 17.0833 22 12.0607Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const PinterestIcon = createIcon({\n    displayName: 'Pinterest',\n    viewBox: '0 0 24 24',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M12 2C6.4775 2 2 6.47667 2 12C2 16.2367 4.63583 19.855 8.35583 21.3117C8.26833 20.5208 8.18917 19.3075 8.39083 18.4442C8.5725 17.6633 9.56333 13.4733 9.56333 13.4733C9.56333 13.4733 9.26417 12.8742 9.26417 11.9883C9.26417 10.5983 10.07 9.56 11.0733 9.56C11.9258 9.56 12.3383 10.2008 12.3383 10.9683C12.3383 11.8258 11.7925 13.1083 11.51 14.2975C11.2742 15.2925 12.0092 16.105 12.9908 16.105C14.7683 16.105 16.1342 14.2308 16.1342 11.5258C16.1342 9.13167 14.4142 7.4575 11.9575 7.4575C9.1125 7.4575 7.4425 9.59167 7.4425 11.7967C7.4425 12.6558 7.77333 13.5783 8.18667 14.0783C8.26833 14.1775 8.28 14.265 8.25583 14.3658L7.97833 15.4992C7.93417 15.6825 7.83333 15.7217 7.64333 15.6333C6.39417 15.0517 5.61333 13.2258 5.61333 11.7592C5.61333 8.605 7.905 5.7075 12.2208 5.7075C15.69 5.7075 18.3858 8.18 18.3858 11.4833C18.3858 14.93 16.2133 17.7033 13.1967 17.7033C12.1833 17.7033 11.2308 17.1775 10.905 16.555L10.2817 18.9325C10.0558 19.8017 9.44667 20.8908 9.03833 21.5542C9.975 21.8433 10.9692 22 12 22C17.5225 22 22 17.5225 22 12C22 6.47667 17.5225 2 12 2Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const YouTubeIcon = createIcon({\n    displayName: 'YouTube',\n    viewBox: '0 0 24 24',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M19.792 5.41471C20.6521 5.64577 21.3325 6.32614 21.5635 7.18621C21.9872 8.75232 22 12.0001 22 12.0001C22 12.0001 22 15.2607 21.5764 16.8139C21.3453 17.674 20.665 18.3544 19.8049 18.5854C18.2516 19.0091 12 19.0091 12 19.0091C12 19.0091 5.74839 19.0091 4.19512 18.5854C3.33504 18.3544 2.65469 17.674 2.42362 16.8139C2 15.2478 2 12.0001 2 12.0001C2 12.0001 2 8.75232 2.41078 7.19905C2.64185 6.33897 3.32221 5.65861 4.18228 5.42755C5.73556 5.00392 11.9872 4.99109 11.9872 4.99109C11.9872 4.99109 18.2388 4.99109 19.792 5.41471ZM15.1836 12.0001L9.99743 15.0039V8.99623L15.1836 12.0001Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const InstagramIcon = createIcon({\n    displayName: 'Instagram',\n    viewBox: '0 0 24 24',\n    path: (\n        <>\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M12 3C9.5556 3 9.2496 3.0102 8.2896 3.054C7.3314 3.0978 6.6768 3.2502 6.1044 3.4728C5.5044 3.6984 4.9602 4.0524 4.5102 4.5108C4.05253 4.96028 3.69831 5.5041 3.4722 6.1044C3.2508 6.6768 3.0978 7.332 3.054 8.2902C3.0108 9.2496 3 9.555 3 12C3 14.445 3.0102 14.7504 3.054 15.7104C3.0978 16.6686 3.2502 17.3232 3.4728 17.8956C3.6984 18.4956 4.0524 19.0398 4.5108 19.4898C4.96029 19.9475 5.50411 20.3017 6.1044 20.5278C6.6768 20.7498 7.3314 20.9022 8.2896 20.946C9.2496 20.9898 9.5556 21 12 21C14.4444 21 14.7504 20.9898 15.7104 20.946C16.6686 20.9022 17.3232 20.7498 17.8956 20.5272C18.4956 20.3016 19.0398 19.9476 19.4898 19.4892C19.9475 19.0397 20.3017 18.4959 20.5278 17.8956C20.7498 17.3232 20.9022 16.6686 20.946 15.7104C20.9898 14.7504 21 14.4444 21 12C21 9.5556 20.9898 9.2496 20.946 8.2896C20.9022 7.3314 20.7498 6.6768 20.5272 6.1044C20.3012 5.50384 19.947 4.95979 19.4892 4.5102C19.0397 4.05253 18.4959 3.69831 17.8956 3.4722C17.3232 3.2508 16.668 3.0978 15.7098 3.054C14.7504 3.0108 14.445 3 12 3ZM12 4.6218C14.403 4.6218 14.688 4.6308 15.6372 4.674C16.5144 4.7142 16.9908 4.86 17.3082 4.9842C17.7282 5.1468 18.0282 5.3424 18.3432 5.6568C18.6582 5.9718 18.8532 6.2718 19.0158 6.6918C19.1394 7.0092 19.2858 7.4856 19.326 8.3628C19.3692 9.312 19.3782 9.597 19.3782 12C19.3782 14.403 19.3692 14.688 19.326 15.6372C19.2858 16.5144 19.14 16.9908 19.0158 17.3082C18.8718 17.6991 18.6419 18.0528 18.3432 18.3432C18.0528 18.642 17.6992 18.8718 17.3082 19.0158C16.9908 19.1394 16.5144 19.2858 15.6372 19.326C14.688 19.3692 14.4036 19.3782 12 19.3782C9.5964 19.3782 9.312 19.3692 8.3628 19.326C7.4856 19.2858 7.0092 19.14 6.6918 19.0158C6.30087 18.8718 5.9472 18.6419 5.6568 18.3432C5.35811 18.0528 5.12828 17.6991 4.9842 17.3082C4.8606 16.9908 4.7142 16.5144 4.674 15.6372C4.6308 14.688 4.6218 14.403 4.6218 12C4.6218 9.597 4.6308 9.312 4.674 8.3628C4.7142 7.4856 4.86 7.0092 4.9842 6.6918C5.1468 6.2718 5.3424 5.9718 5.6568 5.6568C5.94716 5.35803 6.30085 5.12819 6.6918 4.9842C7.0092 4.8606 7.4856 4.7142 8.3628 4.674C9.312 4.6308 9.597 4.6218 12 4.6218V4.6218Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M12 15.003C11.6057 15.003 11.2152 14.9253 10.8508 14.7744C10.4865 14.6235 10.1554 14.4023 9.87658 14.1234C9.59773 13.8446 9.37653 13.5135 9.22561 13.1492C9.0747 12.7848 8.99702 12.3943 8.99702 12C8.99702 11.6056 9.0747 11.2151 9.22561 10.8508C9.37653 10.4864 9.59773 10.1554 9.87658 9.87653C10.1554 9.59768 10.4865 9.37648 10.8508 9.22556C11.2152 9.07465 11.6057 8.99697 12 8.99697C12.7965 8.99697 13.5603 9.31336 14.1235 9.87653C14.6866 10.4397 15.003 11.2035 15.003 12C15.003 12.7964 14.6866 13.5602 14.1235 14.1234C13.5603 14.6866 12.7965 15.003 12 15.003V15.003ZM12 7.37397C10.7731 7.37397 9.59649 7.86135 8.72895 8.7289C7.8614 9.59644 7.37402 10.7731 7.37402 12C7.37402 13.2269 7.8614 14.4035 8.72895 15.271C9.59649 16.1386 10.7731 16.626 12 16.626C13.2269 16.626 14.4036 16.1386 15.2711 15.271C16.1386 14.4035 16.626 13.2269 16.626 12C16.626 10.7731 16.1386 9.59644 15.2711 8.7289C14.4036 7.86135 13.2269 7.37397 12 7.37397V7.37397ZM17.9718 7.28997C17.9718 7.57999 17.8566 7.85812 17.6515 8.06319C17.4465 8.26826 17.1683 8.38347 16.8783 8.38347C16.5883 8.38347 16.3102 8.26826 16.1051 8.06319C15.9 7.85812 15.7848 7.57999 15.7848 7.28997C15.7848 6.99996 15.9 6.72182 16.1051 6.51675C16.3102 6.31168 16.5883 6.19647 16.8783 6.19647C17.1683 6.19647 17.4465 6.31168 17.6515 6.51675C17.8566 6.72182 17.9718 6.99996 17.9718 7.28997\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const WhatsappIcon = createIcon({\n    displayName: 'Whatsapp',\n    viewBox: '0 0 25 24',\n    path: (\n        <path\n            d=\"M12.8707 3.29102C7.93062 3.29102 3.91023 7.16334 3.90849 11.9223C3.90733 13.4442 4.32075 14.9295 5.10462 16.2377L3.83301 20.7104L8.58443 19.5102C9.9061 20.2015 11.3757 20.5622 12.8673 20.5611H12.8707C17.8109 20.5611 21.8313 16.6882 21.833 11.9293C21.8342 9.62411 20.9028 7.45424 19.2102 5.82321C17.5182 4.1916 15.2682 3.2916 12.8707 3.29102ZM12.8707 19.1031H12.8678C11.5312 19.1031 10.2201 18.7571 9.07623 18.1033L8.80333 17.9477L5.98488 18.6595L6.73739 16.0118L6.5603 15.7406C5.81644 14.6061 5.42045 13.2789 5.42107 11.9223C5.42281 7.96637 8.76501 4.74902 12.8737 4.74902C14.8629 4.7496 16.7332 5.49689 18.1401 6.85269C19.547 8.2085 20.321 10.0114 20.3198 11.9287C20.3181 15.8846 16.9765 19.1031 12.8702 19.1031H12.8707ZM16.9567 13.7293C16.7326 13.6219 15.6317 13.0999 15.4262 13.0273C15.2212 12.9559 15.072 12.9187 14.9227 13.1347C14.7741 13.3507 14.3444 13.8367 14.2144 13.9801C14.0831 14.1241 13.9525 14.1415 13.7284 14.0341C13.5042 13.9261 12.7825 13.6985 11.9278 12.9634C11.2618 12.392 10.8124 11.686 10.6817 11.4694C10.5511 11.254 10.6678 11.1373 10.7798 11.0299C10.8803 10.934 11.004 10.7784 11.1155 10.6524C11.2269 10.5264 11.2641 10.4364 11.3396 10.2924C11.4139 10.149 11.3767 10.0224 11.3204 9.91502C11.2641 9.80644 10.817 8.74502 10.6295 8.3136C10.4483 7.89321 10.2637 7.94953 10.126 7.94256C9.99539 7.93676 9.84675 7.93502 9.69636 7.93502C9.5483 7.93502 9.30501 7.98902 9.09946 8.20502C8.89449 8.42102 8.31559 8.94244 8.31559 10.0039C8.31559 11.0659 9.11804 12.0913 9.2301 12.2353C9.34217 12.3787 10.8095 14.5579 13.056 15.4927C13.5902 15.7139 14.0071 15.8469 14.3328 15.9468C14.8693 16.1111 15.3577 16.0873 15.7432 16.0321C16.1729 15.97 17.0682 15.5107 17.254 15.0073C17.441 14.5039 17.441 14.0719 17.3853 13.9819C17.3307 13.8919 17.1809 13.8379 16.9567 13.7293Z\"\n            fill=\"#211710\"\n        />\n    )\n})\n\nexport const SmsIcon = createIcon({\n    displayName: 'Sms',\n    viewBox: '0 0 22 20',\n    path: (\n        <g clipPath=\"url(#clip0_18589_25298)\">\n            <path\n                fillRule=\"evenodd\"\n                clipRule=\"evenodd\"\n                d=\"M8.10033 0.000488281C3.99501 0.000488281 0.666992 3.3285 0.666992 7.43382V8.68231H1.66699V7.43382C1.66699 3.88079 4.54729 1.00049 8.10033 1.00049H12.5761C16.4923 1.00049 19.667 4.1752 19.667 8.0914C19.667 12.0076 16.4923 15.1823 12.5761 15.1823H6.72915C6.863 14.67 6.93366 14.135 6.93366 13.5873C6.93366 12.1084 5.73479 10.9096 4.25592 10.9096H3.83669C2.38067 10.9096 1.20033 12.0899 1.20033 13.5459C1.20033 15.002 2.38067 16.1823 3.83669 16.1823H5.2561C4.60701 17.3396 3.53095 18.2424 2.20109 18.6556L1.01864 19.023L1.31535 19.978L2.4978 19.6106C4.26103 19.0627 5.64884 17.7906 6.37542 16.1823H12.5761C17.0446 16.1823 20.667 12.5599 20.667 8.0914C20.667 3.62291 17.0446 0.000488281 12.5761 0.000488281H8.10033ZM5.93366 13.5873C5.93366 14.1391 5.84842 14.6756 5.68873 15.1823H3.83669C2.93295 15.1823 2.20033 14.4497 2.20033 13.5459C2.20033 12.6422 2.93295 11.9096 3.83669 11.9096H4.25592C5.18251 11.9096 5.93366 12.6607 5.93366 13.5873Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M6.66699 9.00049C7.21928 9.00049 7.66699 8.55277 7.66699 8.00049C7.66699 7.4482 7.21928 7.00049 6.66699 7.00049C6.11471 7.00049 5.66699 7.4482 5.66699 8.00049C5.66699 8.55277 6.11471 9.00049 6.66699 9.00049Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M11.667 8.00049C11.667 8.55277 11.2193 9.00049 10.667 9.00049C10.1147 9.00049 9.66699 8.55277 9.66699 8.00049C9.66699 7.4482 10.1147 7.00049 10.667 7.00049C11.2193 7.00049 11.667 7.4482 11.667 8.00049Z\"\n                fill=\"#211710\"\n            />\n            <path\n                d=\"M14.667 9.00049C15.2193 9.00049 15.667 8.55277 15.667 8.00049C15.667 7.4482 15.2193 7.00049 14.667 7.00049C14.1147 7.00049 13.667 7.4482 13.667 8.00049C13.667 8.55277 14.1147 9.00049 14.667 9.00049Z\"\n                fill=\"#211710\"\n            />\n        </g>\n    )\n})\n\nexport const EmailIcon = createIcon({\n    displayName: 'Email',\n    viewBox: '0 0 20 20',\n    path: (\n        <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M0 2.00049H15V3.00049H1V17.0005H19V3.89251L10.8988 8.84855C11.3992 9.26416 11.7985 9.79257 12.0617 10.3941L12.1179 10.5226C12.3929 11.1512 12.3745 11.8694 12.0677 12.4831C11.2158 14.187 8.78423 14.187 7.93229 12.4831C7.62546 11.8694 7.60705 11.1512 7.88205 10.5226L7.94423 10.3805C8.20034 9.79512 8.58387 9.2778 9.06352 8.86446L3.24587 5.43109L3.75413 4.56988L9.97515 8.24131L20 2.10846V18.0005H0V2.00049ZM9.98535 9.41366C9.492 9.75593 9.10203 10.229 8.86038 10.7813L8.79821 10.9235C8.64217 11.2801 8.65261 11.6877 8.82671 12.0359C9.31013 13.0027 10.6899 13.0027 11.1733 12.0359C11.3474 11.6877 11.3578 11.2801 11.2018 10.9235L11.1456 10.7949C10.8991 10.2316 10.4958 9.7524 9.98535 9.41366Z\"\n            fill=\"#211710\"\n        />\n    )\n})\n\nexport const socialIcons = [\n    {component: FacebookIcon, name: 'Facebook'},\n    {component: PinterestIcon, name: 'Pinterest'},\n    {component: InstagramIcon, name: 'Instagram'},\n    {component: YouTubeIcon, name: 'YouTube'}\n]\n\nexport const PlusIcon = createIcon({\n    displayName: 'PlusIcon',\n    viewBox: '0 0 12 12',\n    path: (\n        <path\n            d=\"M5.4 6.5C5.45523 6.5 5.5 6.54477 5.5 6.6V11.9C5.5 11.9552 5.54477 12 5.6 12H6.4C6.45523 12 6.5 11.9552 6.5 11.9V6.6C6.5 6.54477 6.54477 6.5 6.6 6.5L11.9 6.5C11.9552 6.5 12 6.45523 12 6.4V5.6C12 5.54477 11.9552 5.5 11.9 5.5L6.6 5.5C6.54477 5.5 6.5 5.45523 6.5 5.4V0.1C6.5 0.0447715 6.45523 0 6.4 0L5.6 0C5.54477 0 5.5 0.0447714 5.5 0.0999999V5.4C5.5 5.45523 5.45523 5.5 5.4 5.5L0.1 5.5C0.0447715 5.5 0 5.54477 0 5.6L0 6.4C0 6.45523 0.0447714 6.5 0.0999999 6.5L5.4 6.5Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const MinusIcon = createIcon({\n    displayName: 'MinusIcon',\n    viewBox: '0 0 12 12',\n    path: (\n        <path\n            d=\"M6.9938e-08 5.6C7.47662e-08 5.54477 0.0447722 5.5 0.100001 5.5L11.9 5.5C11.9552 5.5 12 5.54477 12 5.6V6.4C12 6.45523 11.9552 6.5 11.9 6.5L0.1 6.5C0.0447715 6.5 -4.82821e-09 6.45523 0 6.4L6.9938e-08 5.6Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const CalendarIcon = createIcon({\n    displayName: 'CalendarIcon',\n    viewBox: '0 0 60 60',\n    path: (\n        <>\n            <path\n                d=\"M49.6249 38.0545L48.7715 37.5334L42.1918 48.3098L38.0179 44.5061L37.3443 45.2452L42.4139 49.8651L49.6249 38.0545Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M2.50001 0.000976562C1.1193 0.000976562 1.36793e-05 1.12026 1.17719e-05 2.50097L0 11.001H40.5C41.3284 11.001 42 11.6725 42 12.501V30.962C36.8985 31.5441 32.7252 35.1825 31.3562 40.001H2.50001C1.67159 40.001 1.00001 39.3294 1.00001 38.501V16.001H1.45435e-05V38.501C1.45435e-05 39.8817 1.1193 41.001 2.50001 41.001H31.1162C30.9608 41.7902 30.8794 42.6059 30.8794 43.4407C30.8794 50.3775 36.5028 56.001 43.4397 56.001C50.3766 56.001 56 50.3775 56 43.4407C56 36.5038 50.3766 30.8804 43.4397 30.8804C43.2925 30.8804 43.1459 30.8829 43 30.8879V12.501C43 11.1203 41.8807 10.001 40.5 10.001H1L1.00001 2.50097C1.00001 1.67255 1.67159 1.00098 2.50001 1.00098H40.5C41.3284 1.00098 42 1.67255 42 2.50098V5.00098H43V2.50098C43 1.12026 41.8807 0.000976562 40.5 0.000976562H2.50001ZM54.9 43.4407C54.9 37.1113 49.7691 31.9804 43.4397 31.9804C37.1103 31.9804 31.9794 37.1113 31.9794 43.4407C31.9794 49.77 37.1103 54.901 43.4397 54.901C49.7691 54.901 54.9 49.77 54.9 43.4407Z\"\n                fill=\"currentColor\"\n            />\n            <path d=\"M5 19.001V23.001H9V22.001H6V19.001H5Z\" fill=\"currentColor\" />\n            <path d=\"M5 30.001H6V33.001H9V34.001H5V30.001Z\" fill=\"currentColor\" />\n            <path d=\"M15 19.001V23.001H19V22.001H16V19.001H15Z\" fill=\"currentColor\" />\n            <path d=\"M15 30.001H16V33.001H19V34.001H15V30.001Z\" fill=\"currentColor\" />\n            <path d=\"M24 19.001V23.001H28V22.001H25V19.001H24Z\" fill=\"currentColor\" />\n            <path d=\"M24 30.001H25V33.001H28V34.001H24V30.001Z\" fill=\"currentColor\" />\n            <path d=\"M33 19.001V23.001H37V22.001H34V19.001H33Z\" fill=\"currentColor\" />\n        </>\n    )\n})\n\nexport const GiftIcon = createIcon({\n    displayName: 'GiftIcon',\n    viewBox: '0 0 60 60',\n    path: (\n        <path\n            d=\"M45.3253 5.14185C49.9911 4.24834 53.9 7.73519 53.9 12.4462C53.9 17.0561 49.2563 20.9658 43.2815 21.001H39V22.001L43.2 22.0013L43.2835 22.001H59V32.001H54V59.001H36V33.001H48V32.001H35V60.001H55V33.001H60V21.001H48.4131C52.2272 19.4503 54.9 16.2452 54.9 12.4462C54.9 7.15536 50.4657 3.13929 45.1372 4.15969C41.707 4.81658 39.3096 6.6228 37.2775 8.92303C36.2654 10.0687 35.34 11.3412 34.4234 12.655C34.1628 13.0285 33.9033 13.4047 33.6427 13.7826C33.107 14.5593 32.5662 15.3434 32 16.1267C31.4338 15.3434 30.893 14.5594 30.3573 13.7826C30.0968 13.4048 29.8371 13.0284 29.5766 12.655C28.66 11.3412 27.7346 10.0687 26.7225 8.92303C24.6904 6.6228 22.293 4.81658 18.8628 4.15969C13.5343 3.13929 9.09998 7.15535 9.09998 12.4462C9.09998 16.2452 11.7728 19.4503 15.5869 21.001H4V33.001H10V60.001H29V32.001H16.916V33.001H28V59.001H11V32.001H5V22.001H20.7169C20.7446 22.0012 20.7723 22.0013 20.8 22.0013H25V21.0013L20.7188 21.001C14.7439 20.9659 10.1 17.0562 10.1 12.4462C10.1 7.73519 14.0089 4.24834 18.6747 5.14185C21.8218 5.74452 24.0359 7.39242 25.9731 9.58511C26.9456 10.6859 27.8442 11.9196 28.7565 13.2272C29.0105 13.5913 29.2661 13.9618 29.5245 14.3364C30.1181 15.1972 30.7273 16.0804 31.3676 16.9576C30.7964 17.6739 30.3935 18.3058 30.1382 18.8611C29.8496 19.489 29.7315 20.0593 29.8176 20.5571C29.9079 21.0789 30.212 21.4585 30.6277 21.6925C31.0257 21.9165 31.5112 22.0013 32 22.0013C32.6023 22.0013 33.132 21.8724 33.5239 21.5667C33.9326 21.2478 34.1249 20.7888 34.1375 20.281C34.1606 19.3454 33.5832 18.189 32.6048 16.9955C33.2552 16.1058 33.873 15.21 34.4753 14.3368C34.7337 13.9622 34.9895 13.5913 35.2435 13.2272C36.1558 11.9196 37.0544 10.6859 38.0269 9.58511C39.9641 7.39242 42.1782 5.74452 45.3253 5.14185ZM31.0468 19.2787C31.2347 18.8701 31.5336 18.3815 31.9735 17.8063C32.8098 18.8703 33.151 19.7224 33.1378 20.2562C33.1314 20.5151 33.0444 20.6725 32.9088 20.7782C32.7563 20.8972 32.4766 21.0013 32 21.0013C31.6116 21.0013 31.3146 20.9316 31.1182 20.821C30.9395 20.7205 30.8374 20.5853 30.803 20.3867C30.7645 20.1641 30.8034 19.8082 31.0468 19.2787Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const TruckIcon = createIcon({\n    displayName: 'TruckIcon',\n    viewBox: '0 0 60 60',\n    path: (\n        <>\n            <path\n                d=\"M4 10.001V26.001H5V11.001H32.717C34.2082 11.001 35.417 12.2098 35.417 13.701V30.0271C35.417 31.1173 36.3008 32.0011 37.391 32.0011H54V31.0011H37.391C36.8531 31.0011 36.417 30.565 36.417 30.0271V13.701C36.417 11.6575 34.7605 10.001 32.717 10.001H4Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M45.8661 47.6076C45.8661 46.3139 46.9149 45.2651 48.2086 45.2651C49.5023 45.2651 50.551 46.3139 50.551 47.6076C50.551 48.9012 49.5023 49.95 48.2086 49.95C46.9149 49.95 45.8661 48.9012 45.8661 47.6076ZM48.2086 46.2651C47.4672 46.2651 46.8661 46.8662 46.8661 47.6076C46.8661 48.349 47.4672 48.95 48.2086 48.95C48.95 48.95 49.551 48.349 49.551 47.6076C49.551 46.8662 48.95 46.2651 48.2086 46.2651Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M43.4853 10.001H40V11.001H43.4853C43.9636 11.001 44.4133 11.2291 44.6958 11.6151L57.8612 29.6044C58.6011 30.6155 59 31.8359 59 33.0888V46.001H54.4007C53.688 43.2464 51.1858 41.2119 48.2084 41.2119C44.6762 41.2119 41.8127 44.0754 41.8127 47.6077C41.8127 51.1399 44.6762 54.0034 48.2084 54.0034C51.7407 54.0034 54.6042 51.1399 54.6042 47.6077C54.6042 47.403 54.5946 47.2007 54.5758 47.001H60V33.0888C60 31.6235 59.5335 30.1963 58.6681 29.0138L45.5027 11.0245C45.0319 10.3812 44.2825 10.001 43.4853 10.001ZM48.2084 42.2119C45.2284 42.2119 42.8127 44.6277 42.8127 47.6077C42.8127 50.5876 45.2284 53.0034 48.2084 53.0034C51.1884 53.0034 53.6042 50.5876 53.6042 47.6077C53.6042 44.6277 51.1884 42.2119 48.2084 42.2119Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M15.782 45.2656C14.4883 45.2656 13.4396 46.3144 13.4396 47.608C13.4396 48.9017 14.4883 49.9505 15.782 49.9505C17.0757 49.9505 18.1244 48.9017 18.1244 47.608C18.1244 46.3144 17.0757 45.2656 15.782 45.2656ZM14.4396 47.608C14.4396 46.8666 15.0406 46.2656 15.782 46.2656C16.5234 46.2656 17.1244 46.8666 17.1244 47.608C17.1244 48.3494 16.5234 48.9505 15.782 48.9505C15.0406 48.9505 14.4396 48.3494 14.4396 47.608Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M4 31.001V47.0009H9.41452C9.39572 47.2006 9.38611 47.403 9.38611 47.6077C9.38611 51.1399 12.2496 54.0034 15.7818 54.0034C19.3141 54.0034 22.1776 51.1399 22.1776 47.6077C22.1776 47.403 22.168 47.2006 22.1492 47.0009H37V46.0009H22V46.1047C21.3239 43.2976 18.7965 41.2119 15.7818 41.2119C12.8045 41.2119 10.3023 43.2463 9.58963 46.0009H5V32.001H31V31.001H4ZM15.7818 42.2119C12.8019 42.2119 10.3861 44.6277 10.3861 47.6077C10.3861 50.5876 12.8019 53.0034 15.7818 53.0034C18.7618 53.0034 21.1776 50.5876 21.1776 47.6077C21.1776 44.6277 18.7618 42.2119 15.7818 42.2119Z\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const StoreIcon = createIcon({\n    displayName: 'StoreIcon',\n    viewBox: '0 0 60 60',\n    path: (\n        <>\n            <path d=\"M7.99597 15.6748H55.996V14.6748H7.99597V15.6748Z\" fill=\"currentColor\" />\n            <path d=\"M7.99988 30.999H10.9999V29.999H7.99988V30.999Z\" fill=\"currentColor\" />\n            <path\n                d=\"M13.9397 30.0049H42.0118L41.9999 55.9087L40.9999 55.9082L41.0114 31.0049H14.9393L14.9278 55.9087L13.9278 55.9082L13.9397 30.0049Z\"\n                fill=\"currentColor\"\n            />\n            <path d=\"M44.9999 30.999H55.9999V29.999H44.9999V30.999Z\" fill=\"currentColor\" />\n            <path\n                d=\"M45.7183 39.2578L47.826 37.1501L47.1189 36.443L45.0112 38.5507L45.7183 39.2578Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M8.67413 21.0117L10.7818 18.904L10.0747 18.1969L7.96703 20.3046L8.67413 21.0117Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M45.7183 42.7197L51.0441 37.394L50.337 36.6869L45.0112 42.0126L45.7183 42.7197Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M8.70929 24.4736L14.0351 19.1479L13.3279 18.4408L8.00218 23.7665L8.70929 24.4736Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M30.3174 33.6532H30.1551L30.1516 33.649L30.2238 32.9407L30.228 32.9365H30.2486L30.2527 32.9407L30.3209 33.649L30.3174 33.6532Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M30.6283 33.6984L30.6325 33.6942L30.7501 33.0602L30.746 33.056L30.7253 33.0518L30.7219 33.056L30.4625 33.6571L30.4667 33.6613L30.6283 33.6984Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M30.6002 33.8719C30.6002 33.9294 30.5561 33.9707 30.5073 33.9707C30.4543 33.9707 30.4103 33.9294 30.4103 33.8719C30.4103 33.8187 30.455 33.7773 30.5073 33.7773C30.5554 33.7773 30.6002 33.8187 30.6002 33.8719Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M30.2362 33.9414C30.2851 33.9414 30.3291 33.9001 30.3291 33.8426C30.3291 33.7894 30.2844 33.748 30.2362 33.748C30.1839 33.748 30.1392 33.7894 30.1392 33.8426C30.1392 33.9001 30.1839 33.9414 30.2362 33.9414Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M30.0057 33.6613L29.8441 33.6984L29.8399 33.6942L29.7223 33.0602L29.7264 33.056L29.7471 33.0518L29.7505 33.056L30.0099 33.6571L30.0057 33.6613Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M29.8682 33.8719C29.8682 33.9294 29.9129 33.9707 29.9652 33.9707C30.014 33.9707 30.058 33.9294 30.058 33.8719C30.058 33.8187 30.0133 33.7773 29.9652 33.7773C29.9129 33.7773 29.8682 33.8187 29.8682 33.8719Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M18.004 34.1475H18.8289C19.3834 34.1475 19.8643 34.469 19.865 35.0372C19.865 35.6222 19.3875 35.9683 18.8296 35.9683C18.7732 35.9683 18.6074 35.9599 18.5344 35.9515L18.5303 35.9557V36.4748C18.5303 36.8251 18.5503 37.0269 18.5503 37.0269L18.5461 37.0311H18.004L17.9999 37.0269C17.9999 37.0269 18.0198 36.8251 18.0198 36.4748V34.7037C18.0198 34.3534 17.9999 34.1517 17.9999 34.1517L18.004 34.1475ZM18.5296 35.4744C18.5943 35.4863 18.7401 35.4947 18.8048 35.4947C19.1529 35.4947 19.3469 35.3293 19.3469 35.0379C19.3469 34.7374 19.1247 34.6218 18.8454 34.6218H18.5296V35.4744Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M21.4129 34.3822C21.3524 34.2378 21.3317 34.1517 21.3317 34.1517L21.3276 34.1475H20.8866L20.8825 34.1517C20.8825 34.1517 20.866 34.2378 20.8054 34.3822L19.8505 36.7221C19.7693 36.9197 19.6888 37.0269 19.6888 37.0269V37.0311H20.2468L20.2509 37.0269C20.2509 37.0101 20.2633 36.9407 20.3321 36.7677L20.5062 36.327H21.7356L21.9213 36.7677C21.9819 36.9365 22.0183 37.0269 22.0183 37.0269L22.0225 37.0311H22.5804V37.0269C22.5804 37.0269 22.5075 36.9197 22.4187 36.7221L21.4129 34.3822ZM20.6967 35.8527L21.0971 34.8354H21.1013L21.534 35.8527H20.6967Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M25.3722 34.1475L25.3763 34.1517C25.3763 34.1517 25.3557 34.3534 25.3557 34.7051V36.4762C25.3557 36.8265 25.3756 37.0283 25.3756 37.0283L25.3715 37.0325H24.9106L23.3736 34.9973H23.3695V36.4762C23.3695 36.8265 23.3895 37.0283 23.3895 37.0283L23.3853 37.0325H22.8921L22.8879 37.0283C22.8879 37.0283 22.9079 36.8265 22.9079 36.4762V34.4368C22.9079 34.3752 22.8755 34.2841 22.815 34.1524L22.8191 34.1482H23.3613L24.8906 36.1539H24.8948V34.7037C24.8948 34.3534 24.8748 34.1517 24.8748 34.1517L24.8789 34.1475H25.3722Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M26.9133 34.1475H25.9667L25.9625 34.1517C25.9625 34.1517 25.9825 34.3534 25.9825 34.7037V36.4748C25.9825 36.8251 25.9625 37.0269 25.9625 37.0269L25.9667 37.0311H26.2577C26.3476 37.0311 26.4424 37.0365 26.5428 37.0422C26.6559 37.0487 26.7765 37.0556 26.9051 37.0556C27.7747 37.0556 28.3897 36.4293 28.3897 35.5935C28.3897 34.7486 27.787 34.1475 26.9133 34.1475ZM26.881 36.582C26.7434 36.582 26.6182 36.5778 26.5452 36.5575C26.5005 36.5449 26.493 36.5288 26.493 36.4503V34.6169H26.8693C27.4802 34.6169 27.8723 35.0372 27.8723 35.597C27.8723 36.1532 27.4795 36.582 26.881 36.582Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M28.7839 35.5854C28.7839 34.7489 29.4189 34.1064 30.2362 34.1064C31.0611 34.1064 31.6885 34.7489 31.6885 35.5854C31.6885 36.4261 31.0611 37.0643 30.2362 37.0643C29.4189 37.0643 28.7839 36.4254 28.7839 35.5854ZM29.3019 35.5854C29.3019 36.1543 29.7106 36.5907 30.2362 36.5907C30.7659 36.5907 31.1746 36.1536 31.1746 35.5854C31.1746 35.0165 30.7659 34.58 30.2362 34.58C29.7106 34.58 29.3019 35.0172 29.3019 35.5854Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M33.707 36.051C33.6382 35.9354 33.533 35.845 33.4277 35.8163V35.8121C33.7228 35.7462 33.998 35.3959 33.998 35.0456C33.998 34.5678 33.6382 34.1475 33.0837 34.1475H32.1777L32.1735 34.1517C32.1735 34.1517 32.1935 34.3534 32.1935 34.7037V36.4748C32.1935 36.8251 32.1735 37.0269 32.1735 37.0269L32.1777 37.0311H32.7198L32.7239 37.0269C32.7239 37.0269 32.704 36.8251 32.704 36.4748V35.9227C32.975 35.9227 33.0803 35.976 33.1773 36.1329L33.4078 36.5119C33.5976 36.8251 33.6788 37.0269 33.6788 37.0269L33.6829 37.0311H34.3303V37.0269C34.3303 37.0269 34.1687 36.8251 33.9822 36.5119L33.707 36.051ZM32.9585 35.466C32.8938 35.466 32.7803 35.466 32.704 35.4492V34.6169H33.0156C33.319 34.6169 33.4807 34.8186 33.4807 35.0491C33.4807 35.2684 33.3149 35.466 32.9585 35.466Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M36.3323 34.3822L37.3395 36.7221C37.4135 36.8855 37.4757 36.9871 37.4942 37.0174C37.4981 37.0237 37.4998 37.0269 37.4998 37.0269V37.0311H36.9419L36.9378 37.0269C36.9378 37.0269 36.9013 36.9365 36.8408 36.7677L36.655 36.327H35.4256L35.2515 36.7677C35.1827 36.9407 35.1704 37.0101 35.1704 37.0269L35.1662 37.0311H34.6083V37.0269C34.6083 37.0269 34.6888 36.9197 34.77 36.7221L35.7249 34.3822C35.7854 34.2378 35.8019 34.1517 35.8019 34.1517L35.806 34.1475H36.247L36.2512 34.1517C36.2512 34.1517 36.2718 34.2378 36.3323 34.3822ZM36.0166 34.8354L35.6162 35.8527H36.4534L36.0207 34.8354H36.0166Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M59.9951 3.00586H3.99512V60.0017H18.996V39.998H37.0674V60.0017H59.9951V3.00586ZM4.99512 59.0017V4.00586H58.9951V59.0017H38.0674V38.998H17.996V59.0017H4.99512Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M25.9999 59.002H21.2202V60.002H26.9999V42.001H25.9999V59.002Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M29.9999 59.002H34.7202V60.002H28.9999V42.001H29.9999V59.002Z\"\n                fill=\"currentColor\"\n            />\n            <path d=\"M171.996 15.6748H219.996V14.6748H171.996V15.6748Z\" fill=\"currentColor\" />\n            <path d=\"M172 30.999H175V29.999H172V30.999Z\" fill=\"currentColor\" />\n            <path\n                d=\"M177.94 30.0049H206.012L206 55.9087L205 55.9082L205.011 31.0049H178.939L178.928 55.9087L177.928 55.9082L177.94 30.0049Z\"\n                fill=\"currentColor\"\n            />\n            <path d=\"M209 30.999H220V29.999H209V30.999Z\" fill=\"currentColor\" />\n            <path\n                d=\"M209.718 39.2578L211.826 37.1501L211.119 36.443L209.011 38.5507L209.718 39.2578Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M172.674 21.0117L174.782 18.904L174.075 18.1969L171.967 20.3046L172.674 21.0117Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M209.718 42.7197L215.044 37.394L214.337 36.6869L209.011 42.0126L209.718 42.7197Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M172.709 24.4736L178.035 19.1479L177.328 18.4408L172.002 23.7665L172.709 24.4736Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M194.317 33.6532H194.155L194.152 33.649L194.224 32.9407L194.228 32.9365H194.249L194.253 32.9407L194.321 33.649L194.317 33.6532Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M194.628 33.6984L194.632 33.6942L194.75 33.0602L194.746 33.056L194.725 33.0518L194.722 33.056L194.463 33.6571L194.467 33.6613L194.628 33.6984Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M194.6 33.8719C194.6 33.9294 194.556 33.9707 194.507 33.9707C194.454 33.9707 194.41 33.9294 194.41 33.8719C194.41 33.8187 194.455 33.7773 194.507 33.7773C194.555 33.7773 194.6 33.8187 194.6 33.8719Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M194.236 33.9414C194.285 33.9414 194.329 33.9001 194.329 33.8426C194.329 33.7894 194.284 33.748 194.236 33.748C194.184 33.748 194.139 33.7894 194.139 33.8426C194.139 33.9001 194.184 33.9414 194.236 33.9414Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M194.006 33.6613L193.844 33.6984L193.84 33.6942L193.722 33.0602L193.726 33.056L193.747 33.0518L193.75 33.056L194.01 33.6571L194.006 33.6613Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M193.868 33.8719C193.868 33.9294 193.913 33.9707 193.965 33.9707C194.014 33.9707 194.058 33.9294 194.058 33.8719C194.058 33.8187 194.013 33.7773 193.965 33.7773C193.913 33.7773 193.868 33.8187 193.868 33.8719Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M182.004 34.1475H182.829C183.383 34.1475 183.864 34.469 183.865 35.0372C183.865 35.6222 183.388 35.9683 182.83 35.9683C182.773 35.9683 182.607 35.9599 182.534 35.9515L182.53 35.9557V36.4748C182.53 36.8251 182.55 37.0269 182.55 37.0269L182.546 37.0311H182.004L182 37.0269C182 37.0269 182.02 36.8251 182.02 36.4748V34.7037C182.02 34.3534 182 34.1517 182 34.1517L182.004 34.1475ZM182.53 35.4744C182.594 35.4863 182.74 35.4947 182.805 35.4947C183.153 35.4947 183.347 35.3293 183.347 35.0379C183.347 34.7374 183.125 34.6218 182.845 34.6218H182.53V35.4744Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M185.413 34.3822C185.352 34.2378 185.332 34.1517 185.332 34.1517L185.328 34.1475H184.887L184.882 34.1517C184.882 34.1517 184.866 34.2378 184.805 34.3822L183.851 36.7221C183.769 36.9197 183.689 37.0269 183.689 37.0269V37.0311H184.247L184.251 37.0269C184.251 37.0101 184.263 36.9407 184.332 36.7677L184.506 36.327H185.736L185.921 36.7677C185.982 36.9365 186.018 37.0269 186.018 37.0269L186.022 37.0311H186.58V37.0269C186.58 37.0269 186.507 36.9197 186.419 36.7221L185.413 34.3822ZM184.697 35.8527L185.097 34.8354H185.101L185.534 35.8527H184.697Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M189.372 34.1475L189.376 34.1517C189.376 34.1517 189.356 34.3534 189.356 34.7051V36.4762C189.356 36.8265 189.376 37.0283 189.376 37.0283L189.372 37.0325H188.911L187.374 34.9973H187.37V36.4762C187.37 36.8265 187.389 37.0283 187.389 37.0283L187.385 37.0325H186.892L186.888 37.0283C186.888 37.0283 186.908 36.8265 186.908 36.4762V34.4368C186.908 34.3752 186.876 34.2841 186.815 34.1524L186.819 34.1482H187.361L188.891 36.1539H188.895V34.7037C188.895 34.3534 188.875 34.1517 188.875 34.1517L188.879 34.1475H189.372Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M190.913 34.1475H189.967L189.963 34.1517C189.963 34.1517 189.982 34.3534 189.982 34.7037V36.4748C189.982 36.8251 189.963 37.0269 189.963 37.0269L189.967 37.0311H190.258C190.348 37.0311 190.442 37.0365 190.543 37.0422C190.656 37.0487 190.777 37.0556 190.905 37.0556C191.775 37.0556 192.39 36.4293 192.39 35.5935C192.39 34.7486 191.787 34.1475 190.913 34.1475ZM190.881 36.582C190.743 36.582 190.618 36.5778 190.545 36.5575C190.501 36.5449 190.493 36.5288 190.493 36.4503V34.6169H190.869C191.48 34.6169 191.872 35.0372 191.872 35.597C191.872 36.1532 191.48 36.582 190.881 36.582Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M192.784 35.5854C192.784 34.7489 193.419 34.1064 194.236 34.1064C195.061 34.1064 195.689 34.7489 195.689 35.5854C195.689 36.4261 195.061 37.0643 194.236 37.0643C193.419 37.0643 192.784 36.4254 192.784 35.5854ZM193.302 35.5854C193.302 36.1543 193.711 36.5907 194.236 36.5907C194.766 36.5907 195.175 36.1536 195.175 35.5854C195.175 35.0165 194.766 34.58 194.236 34.58C193.711 34.58 193.302 35.0172 193.302 35.5854Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M197.707 36.051C197.638 35.9354 197.533 35.845 197.428 35.8163V35.8121C197.723 35.7462 197.998 35.3959 197.998 35.0456C197.998 34.5678 197.638 34.1475 197.084 34.1475H196.178L196.174 34.1517C196.174 34.1517 196.193 34.3534 196.193 34.7037V36.4748C196.193 36.8251 196.174 37.0269 196.174 37.0269L196.178 37.0311H196.72L196.724 37.0269C196.724 37.0269 196.704 36.8251 196.704 36.4748V35.9227C196.975 35.9227 197.08 35.976 197.177 36.1329L197.408 36.5119C197.598 36.8251 197.679 37.0269 197.679 37.0269L197.683 37.0311H198.33V37.0269C198.33 37.0269 198.169 36.8251 197.982 36.5119L197.707 36.051ZM196.959 35.466C196.894 35.466 196.78 35.466 196.704 35.4492V34.6169H197.016C197.319 34.6169 197.481 34.8186 197.481 35.0491C197.481 35.2684 197.315 35.466 196.959 35.466Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M200.332 34.3822L201.34 36.7221C201.414 36.8855 201.476 36.9871 201.494 37.0174C201.498 37.0237 201.5 37.0269 201.5 37.0269V37.0311H200.942L200.938 37.0269C200.938 37.0269 200.901 36.9365 200.841 36.7677L200.655 36.327H199.426L199.252 36.7677C199.183 36.9407 199.17 37.0101 199.17 37.0269L199.166 37.0311H198.608V37.0269C198.608 37.0269 198.689 36.9197 198.77 36.7221L199.725 34.3822C199.785 34.2378 199.802 34.1517 199.802 34.1517L199.806 34.1475H200.247L200.251 34.1517C200.251 34.1517 200.272 34.2378 200.332 34.3822ZM200.017 34.8354L199.616 35.8527H200.453L200.021 34.8354H200.017Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M223.995 3.00586H167.995V60.0017H182.996V39.998H201.067V60.0017H223.995V3.00586ZM168.995 59.0017V4.00586H222.995V59.0017H202.067V38.998H181.996V59.0017H168.995Z\"\n                fill=\"currentColor\"\n            />\n            <path d=\"M190 59.002H185.22V60.002H191V42.001H190V59.002Z\" fill=\"currentColor\" />\n            <path d=\"M194 59.002H198.72V60.002H193V42.001H194V59.002Z\" fill=\"currentColor\" />\n        </>\n    )\n})\n\nexport const HandsHeartIcon = createIcon({\n    displayName: 'HandsHeartIcon',\n    viewBox: '0 0 60 60',\n    path: (\n        <path\n            d=\"M24.6182 7.06424C23.6301 7.71983 22.7877 8.82919 22.2769 10.5189C21.424 13.3401 22.1771 16.1174 23.5797 18.6387C24.8687 20.9558 26.6787 23.0061 28.1941 24.6011V18.9658H29.1941V26.1216H22.0369V25.1216H27.3097C25.8095 23.5323 24.0103 21.4696 22.7058 19.1249C21.2328 16.477 20.3583 13.4097 21.3197 10.2295C21.8849 8.35979 22.849 7.038 24.0653 6.23097C25.2807 5.4246 26.7045 5.16099 28.1373 5.32996C29.9962 5.54919 31.8887 6.49571 33.4417 7.96879C34.9948 6.49571 36.8872 5.54919 38.7462 5.32996C40.179 5.16099 41.6028 5.4246 42.8181 6.23097C44.0344 7.038 44.9986 8.35979 45.5638 10.2296C46.6893 13.9526 45.8908 17.2159 44.2212 20.1712C42.6184 23.0082 40.1931 25.5941 37.8807 28.0597L37.6347 28.322L34.1134 31.5929C35.7782 31.6803 37.2496 31.9401 38.3902 32.3002C39.0961 32.523 39.6967 32.7909 40.141 33.0953C40.5658 33.3864 40.9449 33.7786 41.0072 34.279C41.0661 34.7526 40.8637 35.1587 40.5714 35.4732C40.2842 35.782 39.8821 36.0371 39.4377 36.2467C38.5449 36.6677 37.3571 36.9629 36.185 37.107C36.0254 37.1266 35.8618 37.1463 35.695 37.1664L35.6932 37.1666C34.1786 37.3494 32.3955 37.5645 30.9192 37.9899C30.0997 38.2261 29.4174 38.5159 28.941 38.8718C28.4745 39.2202 28.2395 39.603 28.2147 40.048C28.2023 40.2838 28.388 40.6112 29.1112 40.958C29.7943 41.2855 30.7752 41.5338 31.8788 41.6907C32.975 41.8465 34.1592 41.9077 35.2299 41.8778C36.305 41.8478 37.2303 41.7269 37.8304 41.5366C37.8326 41.5359 37.8349 41.5351 37.8371 41.5344C38.5098 41.3193 39.5231 40.704 40.7434 39.8088C41.9476 38.9255 43.3043 37.807 44.6513 36.6346C47.3447 34.2905 49.9758 31.752 51.2282 30.4996L51.2334 30.4944L51.2387 30.4894C53.6161 28.2472 56.081 27.4078 57.8033 27.6153C58.6644 27.7191 59.409 28.0999 59.7749 28.7872C60.1459 29.4838 60.0448 30.337 59.5529 31.1978L59.5473 31.2075L59.5414 31.217C58.5638 32.7628 54.8025 37.7743 50.9814 42.5835C49.0671 44.9928 47.13 47.3611 45.5091 49.2305C44.6989 50.1648 43.9643 50.9784 43.349 51.6116C42.7453 52.2328 42.2235 52.7153 41.8466 52.9534L41.8457 52.954C41.4698 53.1902 40.8826 53.339 40.2206 53.4461C39.5367 53.5567 38.6954 53.6335 37.7554 53.6875C35.8745 53.7954 33.5545 53.8138 31.2227 53.8144C30.6287 53.8146 30.034 53.8136 29.4451 53.8126C27.716 53.8097 26.0373 53.8069 24.5745 53.8335C23.5947 53.8514 22.7192 53.8823 21.9963 53.9346C21.2643 53.9875 20.7204 54.0604 20.387 54.1526C19.4187 54.4202 17.7009 55.2452 16.0069 56.1707C14.3201 57.0922 12.7324 58.0716 12.0296 58.6159C11.8257 58.7739 11.5351 58.7508 11.3587 58.5626C11.0524 58.2359 10.6335 57.6156 10.1488 56.8374C9.65543 56.0454 9.06866 55.0478 8.42323 53.9348C8.12367 53.4183 7.81128 52.8766 7.48917 52.3181C6.42013 50.4643 5.24409 48.425 4.0751 46.5045C3.96803 46.3287 3.97975 46.1051 4.10462 45.9414C8.46454 40.2243 13.244 36.6321 17.3559 34.4682C21.4544 32.3112 24.9148 31.5609 26.6484 31.5609V32.5609C25.1242 32.5609 21.825 33.2463 17.8216 35.3531C13.896 37.419 9.31752 40.8397 5.10725 46.2778C6.22423 48.1229 7.3434 50.0635 8.35935 51.8252C8.68031 52.3818 8.99124 52.921 9.28828 53.4332C9.93336 54.5455 10.5133 55.5312 10.9976 56.3087C11.3251 56.8346 11.5983 57.2474 11.8116 57.5367C12.6724 56.9337 14.0823 56.0827 15.5274 55.2931C17.2151 54.3711 19.0265 53.4911 20.1206 53.1887C20.5559 53.0684 21.1842 52.9907 21.9242 52.9372C22.6732 52.883 23.5691 52.8517 24.5563 52.8337C26.0299 52.8069 27.7234 52.8097 29.4556 52.8126C30.0423 52.8136 30.6338 52.8146 31.2224 52.8144C33.5553 52.8138 35.8491 52.7952 37.6981 52.6891C38.6231 52.636 39.4258 52.5616 40.0609 52.4589C40.7176 52.3527 41.1242 52.2262 41.3132 52.1075C41.5772 51.9406 42.0239 51.5403 42.6318 50.9147C43.2286 50.3006 43.9494 49.5027 44.7536 48.5753C46.3613 46.7212 48.2885 44.3652 50.1984 41.9614C54.0176 37.1548 57.7364 32.1963 58.6901 30.6921C59.0726 30.0179 59.0466 29.5471 58.8923 29.2572C58.7322 28.9565 58.3491 28.6883 57.6836 28.6082C56.3539 28.4479 54.1725 29.0992 51.9301 31.2119C50.6641 32.4776 48.0194 35.0291 45.3078 37.389C43.9505 38.5702 42.5705 39.7087 41.3349 40.6151C40.1192 41.507 38.9928 42.2126 38.1496 42.4844C38.1469 42.4853 38.1442 42.4862 38.1415 42.487C37.4103 42.7205 36.3735 42.8463 35.2578 42.8774C34.1334 42.9088 32.8927 42.8449 31.738 42.6807C30.5906 42.5176 29.4947 42.2509 28.6788 41.8597C27.9035 41.4879 27.1679 40.8931 27.2162 39.9939C27.2619 39.169 27.7158 38.5387 28.3425 38.0706C28.9594 37.6099 29.7745 37.2791 30.6423 37.029C32.2018 36.5796 34.069 36.3548 35.5706 36.1741L35.5777 36.1732C35.7443 36.1532 35.9063 36.1337 36.063 36.1144C37.1687 35.9785 38.2447 35.7037 39.0111 35.3422C39.3963 35.1606 39.6726 34.9712 39.839 34.7923C40.0001 34.6189 40.0262 34.4939 40.0148 34.4025C40.0068 34.3378 39.9294 34.1626 39.5757 33.9202C39.2415 33.6912 38.7416 33.4597 38.0892 33.2538C36.7889 32.8433 34.9673 32.5607 32.875 32.5607C32.6695 32.5607 32.4848 32.4349 32.4097 32.2435C32.3345 32.0521 32.3841 31.8343 32.5348 31.6944L36.9288 27.6129L37.1149 27.4144C39.4561 24.9177 41.8081 22.4094 43.3505 19.6793C44.9238 16.8945 45.6332 13.9149 44.6066 10.5189C44.0958 8.82919 43.2533 7.71983 42.2653 7.06424C41.2762 6.40798 40.0978 6.17749 38.8633 6.32308C37.2429 6.51417 35.5453 7.35396 34.1357 8.68837C34.6805 9.30564 35.1683 9.99389 35.579 10.7422C36.1049 11.7004 36.4805 13.3806 36.3165 14.8396C36.2339 15.5743 36.0087 16.3074 35.5428 16.8655C35.061 17.4427 34.3595 17.7863 33.439 17.7857C32.5192 17.785 31.8187 17.4404 31.3378 16.8628C30.8728 16.3043 30.6483 15.5713 30.5662 14.8368C30.4033 13.3783 30.7792 11.6993 31.3044 10.7422C31.7152 9.99389 32.203 9.30564 32.7477 8.68837C31.3382 7.35396 29.6405 6.51417 28.0202 6.32308C26.7857 6.17749 25.6073 6.40798 24.6182 7.06424ZM33.4417 9.41324C32.9695 9.95735 32.5434 10.5632 32.1811 11.2234C31.7581 11.9941 31.4192 13.4654 31.5601 14.7258C31.6299 15.3508 31.8119 15.8694 32.1063 16.223C32.3848 16.5574 32.7964 16.7852 33.4397 16.7857C34.084 16.7861 34.4962 16.5587 34.7751 16.2246C35.07 15.8714 35.2525 15.353 35.3228 14.7279C35.4644 13.4673 35.1259 11.995 34.7024 11.2234C34.34 10.5632 33.914 9.95735 33.4417 9.41324Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const DragHandleIcon = createIcon({\n    displayName: 'DragHandleIcon',\n    viewBox: '0 0 48 48',\n    path: (\n        <g id=\"Drag handle\">\n            <rect id=\"Drag handle_2\" x=\"4\" y=\"8\" width=\"52\" height=\"2\" rx=\"1\" fill=\"#E6E6E6\" />\n        </g>\n    )\n})\n\nexport const ReturnIcon = createIcon({\n    displayName: 'ReturnIcon',\n    path: (\n        <>\n            <path\n                d=\"M15.9933 12.9174C15.0635 15.0272 12.9538 16.5 10.5001 16.5C7.52956 16.5 5.06318 14.3412 4.58427 11.5069L7.00767 13.2038L7.58124 12.3846L3.89506 9.80352L1.31396 13.4897L2.13312 14.0633L3.64191 11.9085C4.29377 15.0994 7.11661 17.5 10.5001 17.5C13.2923 17.5 15.7026 15.8652 16.8262 13.5006L15.9933 12.9174Z\"\n                fill=\"currentColor\"\n            />\n            <path\n                d=\"M17.3584 9.09149L18.8672 6.93672L19.6863 7.51029L17.1052 11.1965L13.4191 8.61538L13.9926 7.79623L16.416 9.49311C15.9371 6.65879 13.4707 4.5 10.5001 4.5C8.0465 4.5 5.93684 5.97282 5.00703 8.08262L4.17407 7.49938C5.29766 5.13477 7.708 3.5 10.5001 3.5C13.8837 3.5 16.7065 5.9006 17.3584 9.09149Z\"\n                fill=\"currentColor\"\n            />\n        </>\n    )\n})\n\nexport const PaperPlaneIcon = createIcon({\n    displayName: 'PaperPlane',\n    path: (\n        <path\n            id=\"icon\"\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M18.0614 1.39648L12.0426 19.453L9.53566 13.1856L10.4641 12.8142L11.9572 16.5469L15.9384 4.6034L8.62064 11.0602L0.537598 8.57313L11.3059 4.03912L11.6939 4.96076L3.46221 8.42675L8.37917 9.93966L18.0614 1.39648Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\nexport const CreditIcon = createIcon({\n    displayName: 'CreditIcon',\n    path: (\n        <path\n            id=\"icon\"\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M2 3.5C1.72386 3.5 1.5 3.72386 1.5 4V5H0.5V4C0.5 3.17157 1.17157 2.5 2 2.5H18C18.8284 2.5 19.5 3.17157 19.5 4V16C19.5 16.8284 18.8284 17.5 18 17.5H2C1.17157 17.5 0.5 16.8284 0.5 16V7H16.5V8H1.5V16C1.5 16.2761 1.72386 16.5 2 16.5H18C18.2761 16.5 18.5 16.2761 18.5 16V4C18.5 3.72386 18.2761 3.5 18 3.5H2ZM9.5 14.5H3.5V13.5H9.5V14.5Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"diamond\",\n  \"use\": \"diamond-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"diamond\\\">\\n<g id=\\\"diamond_Diamond\\\">\\n<path id=\\\"diamond_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4.73679 2.49976H15.2636L18.6263 7.4037L9.7614 18.0693L7.03301 7.56496L6.99589 7.5H2.73686L6.8923 12.752L6.10808 13.3725L1.37939 7.39596L4.73679 2.49976ZM10.0001 15.0106L8.04932 7.5H11.9509L10.0001 15.0106ZM11.0469 14.9582L17.2459 7.5H13.0044L12.9672 7.56498L11.0469 14.9582ZM13.5758 6.5H16.7941L15.0387 3.93999L13.5758 6.5ZM14.1385 3.49976H5.86178L7.57621 6.5H12.4241L14.1385 3.49976ZM3.20629 6.5H6.42446L4.96165 3.94009L3.20629 6.5Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"marvel_x_pandora_white\",\n  \"use\": \"marvel_x_pandora_white-usage\",\n  \"viewBox\": \"0 0 206.52 34.22\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 206.52 34.22\\\" id=\\\"marvel_x_pandora_white\\\"><defs></defs><polygon points=\\\"108.29 10.92 103.25 16.08 98.22 10.92 97.18 11.96 102.22 17.11 97.18 22.27 98.22 23.3 103.25 18.15 108.29 23.3 109.32 22.27 104.26 17.11 109.32 11.96 108.29 10.92\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"174.84 8.79 175.19 8.79 175.21 8.78 174.91 5.74 174.89 5.72 174.81 5.72 174.79 5.74 174.47 8.78 174.49 8.79 174.84 8.79\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"176.55 8.99 176.57 8.97 177.08 6.25 177.06 6.24 176.97 6.22 176.96 6.24 175.83 8.81 175.85 8.83 176.55 8.99\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M496.42 292.09a.42.42 0 0 0 0-.83.42.42 0 1 0 0 .83ZM495.24 292a.42.42 0 0 0 0-.83.42.42 0 1 0 0 .83Z\\\" transform=\\\"translate(-320.4 -281.94)\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"173.13 8.99 173.84 8.83 173.85 8.81 172.72 6.24 172.71 6.22 172.62 6.24 172.6 6.25 173.11 8.97 173.13 8.99\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M493.64 291.67a.42.42 0 1 0 .83 0 .42.42 0 0 0-.41-.41A.41.41 0 0 0 493.64 291.67ZM445.5 292.85h-3.6l0 0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36l0 0h2.36l0 0s-.09-.86-.09-2.36V300.6l0 0c.32 0 1 .07 1.29.07 2.43 0 4.52-1.48 4.52-4S447.92 292.85 445.5 292.85Zm-.11 5.77a9.84 9.84 0 0 1-1.2-.09v-3.65h1.38c1.22 0 2.19.49 2.19 1.78S446.91 298.62 445.39 298.62ZM456.77 293.86a6.81 6.81 0 0 1-.36-1v0h-1.93v0a5.2 5.2 0 0 1-.34 1l-4.16 10a6.08 6.08 0 0 1-.71 1.3v0h2.44v0a4.52 4.52 0 0 1 .36-1.11l.76-1.89h5.36l.81 1.89c.26.72.42 1.11.42 1.11l0 0h2.43v0a10.34 10.34 0 0 1-.7-1.3Zm-3.13 6.29 1.75-4.35h0l1.89 4.35ZM474.05 292.87l0 0h-2.15l0 0s.09.86.09 2.36v6.21h0l-6.67-8.59H462.9l0 0a3.26 3.26 0 0 1 .41 1.22v8.73c0 1.5-.09 2.36-.09 2.36l0 0h2.15l0 0s-.09-.86-.09-2.36v-6.33h0l6.7 8.71h2l0 0s-.09-.86-.09-2.36v-7.59C474 293.73 474.05 292.87 474.05 292.87ZM480.75 292.85h-4.13v0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36v0h1.27c.84 0 1.77.11 2.83.11a6.17 6.17 0 0 0 6.47-6.27C487.19 295.43 484.56 292.85 480.75 292.85Zm-.14 10.43a6.29 6.29 0 0 1-1.46-.11c-.2-.05-.23-.12-.23-.46v-7.85h1.64a4.21 4.21 0 1 1 .05 8.42ZM495.24 292.68a6.33 6.33 0 1 0 6.33 6.33A6.24 6.24 0 0 0 495.24 292.68Zm0 10.63a4.31 4.31 0 1 1 4.09-4.3A4.13 4.13 0 0 1 495.24 303.31ZM510.38 301a2.21 2.21 0 0 0-1.22-1v0a3.53 3.53 0 0 0 2.49-3.28 3.83 3.83 0 0 0-4-3.85h-4l0 0s.09.86.09 2.36v7.59c0 1.5-.09 2.36-.09 2.36l0 0h2.36l0 0s-.09-.86-.09-2.36v-2.37c1.18 0 1.64.23 2.07.9l1 1.63a16.48 16.48 0 0 1 1.18 2.2l0 0h2.82v0a21.2 21.2 0 0 1-1.51-2.2Zm-3.27-2.5a6.24 6.24 0 0 1-1.11-.07v-3.57h1.36a1.85 1.85 0 0 1 2 1.85C509.39 297.65 508.67 298.5 507.11 298.5ZM526.22 303.88l-4.39-10a6.81 6.81 0 0 1-.36-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.16 10a6.67 6.67 0 0 1-.71 1.3v0h2.43l0 0a4.52 4.52 0 0 1 .36-1.11l.75-1.89h5.37l.81 1.89c.26.72.42 1.11.42 1.11l0 0h2.43v0A10.34 10.34 0 0 1 526.22 303.88Zm-7.52-3.73 1.75-4.35h0l1.88 4.35Z\\\" transform=\\\"translate(-320.4 -281.94)\\\" style=\\\"fill:#fff\\\" /><rect id=\\\"marvel_x_pandora_white_Red_Fill\\\" data-name=\\\"Red Fill\\\" width=\\\"85.04\\\" height=\\\"34.22\\\" style=\\\"fill:#ed1c24\\\" /><path id=\\\"marvel_x_pandora_white_Marvel\\\" d=\\\"M392.36,289.92v-5.24H377.79l-2.4,17.5L373,284.68h-5.26l.59,4.67a8.31,8.31,0,0,0-7.5-4.67h-5.26l0,25.51-3.83-25.51h-6.89l-4,26.43V284.68H334.3l-2.37,14.85-2.32-14.85H323v28.73h5.19V299.56l2.36,13.85h2.76l2.33-13.85v13.85h10l.6-4.42h4l.61,4.42h9.84v-9.32l1.21-.18,2.49,9.51h5.09l-3.27-11.14a8.31,8.31,0,0,0,3-7.32h0s3.09,18.48,3.09,18.48l6,0,4.14-26v26h9.79v-5.16h-4.65v-6.59h4.65v-5.25h-4.65v-6.49Zm-45.48,14.52,1.43-12.29,1.48,12.29ZM362,298.77a2.82,2.82,0,0,1-1.22.28v-9.24h0c.4,0,3.43.12,3.43,4.57C364.21,296.71,363.18,298.18,362,298.77Zm40.85,9.47v5.17h-9.56V284.67h5.15v23.57Z\\\" transform=\\\"translate(-320.4 -281.94)\\\" style=\\\"fill:#fff\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const card = {\n    py: 6,\n    px: 4,\n    backgroundColor: 'white',\n    rounded: 'base',\n    boxShadow: 'base'\n}\n\nconst cardBordered = {\n    ...card,\n    px: [4, 4, 5, 6],\n    border: '1px solid',\n    borderColor: 'borderColor'\n}\n\nexport default {\n    card,\n    cardBordered,\n    ccIcon: {\n        width: '34px',\n        height: '22px'\n    },\n    page: {\n        px: 0,\n        paddingTop: [4, 4, 6, 6, 8],\n        paddingBottom: 32,\n        width: '100%',\n        marginLeft: 'auto',\n        marginRight: 'auto'\n    }\n}\n","const fonts = {\n    heading: 'GothamSSm-Medium, Arial, sans-serif',\n    body: 'GothamSSm-Book, Arial, sans-serif',\n    kcp: 'GothamSSm-Light, Arial, sans-serif'\n}\n\nexport default fonts\n","/**\n * Size values with rem and corresponding pixel values.\n */\nconst sizes = {\n    /** 1px */\n    px: '1px',\n    /** 2px */\n    0.5: '0.125rem',\n    /** 4px */\n    1: '0.25rem',\n    /** 6px */\n    1.5: '0.375rem',\n    /** 8px */\n    2: '0.5rem',\n    /** 10px */\n    2.5: '0.625rem',\n    /** 11px */\n    2.75: '0.6875rem',\n    /** 12px */\n    3: '0.75rem',\n    /** 13px */\n    3.25: '0.8125rem',\n    /** 14px */\n    3.5: '0.875rem',\n    /** 16px */\n    4: '1rem',\n    /** 18px */\n    4.5: '1.125rem',\n    /** 20px */\n    5: '1.25rem',\n    /** 22px */\n    5.5: '1.375rem',\n    /** 24px */\n    6: '1.5rem',\n    /** 26px */\n    6.5: '1.625rem',\n    /** 28px */\n    7: '1.75rem',\n    /** 30px */\n    7.5: '1.875rem',\n    /** 32px */\n    8: '2rem',\n    /** 34px */\n    8.5: '2.125rem',\n    /** 36px */\n    9: '2.25rem',\n    /** 38px */\n    9.5: '2.375rem',\n    /** 40px */\n    10: '2.5rem',\n    /** 42px */\n    10.5: '2.625rem',\n    /** 44px */\n    11: '2.75rem',\n    /** 48px */\n    12: '3rem',\n    /** 52px */\n    13: '3.25rem',\n    /** 56px */\n    14: '3.5rem',\n    /** 60px */\n    15: '3.75rem',\n    /** 64px */\n    16: '4rem',\n    /** 68px */\n    17: '4.25rem',\n    /** 72px */\n    18: '4.5rem',\n    /** 76px */\n    19: '4.75rem',\n    /** 80px */\n    20: '5rem',\n    /** 84px */\n    21: '5.25rem',\n    /** 88px */\n    22: '5.5rem',\n    /** 92px */\n    23: '5.75rem',\n    /** 96px */\n    24: '6rem',\n    /** 100px */\n    25: '6.25rem',\n    /** 104px */\n    26: '6.5rem',\n    /** 108px */\n    27: '6.75rem',\n    /** 112px */\n    28: '7rem',\n    /** 116px */\n    29: '7.25rem',\n    /** 120px */\n    30: '7.5rem',\n    /** 124px */\n    31: '7.75rem',\n    /** 128px */\n    32: '8rem',\n    /** 132px */\n    33: '8.25rem',\n    /** 136px */\n    34: '8.5rem',\n    /** 140px */\n    35: '8.75rem',\n    /** 144px */\n    36: '9rem',\n    /** 148px */\n    37: '9.25rem',\n    /** 152px */\n    38: '9.5rem',\n    /** 156px */\n    39: '9.75rem',\n    /** 160px */\n    40: '10rem',\n    /** 164px */\n    41: '10.25rem',\n    /** 168px */\n    42: '10.5rem',\n    /** 172px */\n    43: '10.75rem',\n    /** 176px */\n    44: '11rem',\n    /** 180px */\n    45: '11.25rem'\n}\n\nexport default sizes\n","const headingCommonStyles = {\n    fontWeight: '500',\n    lineHeight: '145%',\n    letterSpacing: '0rem',\n    textTransform: 'uppercase',\n    fontFamily: 'heading'\n}\n\nconst bodyCommonStyles = {\n    fontWeight: '400',\n    letterSpacing: '0rem',\n    fontFamily: 'body'\n}\n\nconst textStyles = {\n    // Heading Styles\n    /** 64px */\n    headingXl: {\n        ...headingCommonStyles,\n        fontSize: '4rem'\n    },\n    /** 40px */\n    headingLg: {\n        ...headingCommonStyles,\n        fontSize: '2.5rem'\n    },\n    /** 28px */\n    headingMd: {\n        ...headingCommonStyles,\n        fontSize: '1.75rem'\n    },\n    /** 20px */\n    headingSm: {\n        ...headingCommonStyles,\n        fontSize: '1.25rem'\n    },\n\n    // Body Styles\n    /** 20px */\n    bodyLg: {\n        ...bodyCommonStyles,\n        fontSize: '1.25rem',\n        lineHeight: '145%'\n    },\n    /** 16px */\n    bodyMd: {\n        ...bodyCommonStyles,\n        fontSize: '1rem',\n        lineHeight: '150%'\n    },\n    /** 13px */\n    bodySm: {\n        ...bodyCommonStyles,\n        fontSize: '0.8125rem',\n        lineHeight: 5\n    },\n    /** 11px */\n    caption: {\n        ...bodyCommonStyles,\n        fontSize: '0.6875rem',\n        lineHeight: '145.4545%'\n    },\n    /** 11px */\n    label: {\n        fontSize: '0.6875rem',\n        lineHeight: '145.4545%',\n        fontWeight: '400',\n        textTransform: 'uppercase',\n        letterSpacing: '0.04286rem'\n    },\n\n    // Heading Styles KCP\n    /** 64px */\n    headingXlLight: {\n        ...headingCommonStyles,\n        fontSize: '4rem',\n        fontWeight: '300',\n        fontFamily: 'kcp'\n    },\n    /** 40px */\n    headingLgLight: {\n        ...headingCommonStyles,\n        fontSize: '2.5rem',\n        fontWeight: '300',\n        fontFamily: 'kcp'\n    },\n    /** 28px */\n    headingMdLight: {\n        ...headingCommonStyles,\n        fontSize: '1.75rem',\n        fontWeight: '300',\n        fontFamily: 'kcp'\n    },\n    /** 20px */\n    headingSmLight: {\n        ...headingCommonStyles,\n        fontSize: '1.25rem',\n        fontWeight: '300',\n        fontFamily: 'kcp'\n    }\n}\n\nexport default textStyles\n","// RTL configuration for Arabic locales\nexport const rtlConfig = {\n    direction: 'rtl',\n    // RTL-aware style props\n    styles: {\n        global: {\n            'html[dir=\"rtl\"]': {\n                direction: 'rtl',\n                textAlign: 'right'\n            },\n            '[dir=\"rtl\"]': {\n                // Basic layout flipping\n                '.chakra-stack': {\n                    '&[data-orientation=horizontal]': {\n                        flexDirection: 'row-reverse'\n                    }\n                },\n                '.chakra-button__icon': {\n                    marginLeft: '0 !important',\n                    marginRight: '0.5rem !important'\n                },\n                // Text components\n                '.chakra-text': {\n                    textAlign: 'right'\n                },\n                // Form elements\n                'input, textarea': {\n                    textAlign: 'right'\n                },\n                // Lists\n                'ul, ol, li': {\n                    paddingRight: '0',\n                    paddingLeft: '0',\n                    listStyle: 'none'\n                },\n                // Fix positioning issues\n                '[class*=\"left\"]': {\n                    left: 'auto',\n                    right: 'inherit'\n                },\n                '[class*=\"right\"]': {\n                    right: 'auto',\n                    left: 'inherit'\n                },\n                // Inset Media Tile specific fixes\n                '[dir=\"rtl\"] .largeMediaBox': {\n                    right: 'auto',\n                    left: '0'\n                },\n                '[dir=\"rtl\"] .largeMediaMotionBox': {\n                    right: 'auto',\n                    left: '0'\n                },\n                // Swiper specific fixes\n                '.swiper': {\n                    direction: 'rtl'\n                },\n                '.swiper-button-next': {\n                    right: 'auto',\n                    left: '10px'\n                },\n                '.swiper-button-prev': {\n                    left: 'auto',\n                    right: '10px'\n                },\n                // RTL adjustments for breadcrumbs\n                '.chakra-breadcrumb': {\n                    direction: 'rtl',\n                    textAlign: 'right'\n                },\n                '.chakra-breadcrumb__list-item': {\n                    _after: {\n                        marginRight: 2,\n                        marginLeft: 0\n                    }\n                }\n            }\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n// Helper function to get the appropriate colorScheme based on status\nfunction getColorScheme(props) {\n    const statusColorMap = {\n        error: 'red',\n        success: 'green',\n        warning: 'orange',\n        info: 'blue'\n    }\n    return props.colorScheme || statusColorMap[props.status] || 'green'\n}\n\nexport default {\n    baseStyle: (props) => {\n        const colorScheme = getColorScheme(props)\n\n        return {\n            container: {\n                borderRadius: 'base'\n            },\n            icon: {\n                color: `${colorScheme}.500`,\n                boxSize: 4\n            },\n            description: {\n                fontSize: 'sm',\n                ml: 3,\n                color: `${colorScheme}.700`\n            }\n        }\n    },\n    variants: {\n        subtle: (props) => {\n            const colorScheme = getColorScheme(props)\n\n            return {\n                container: {\n                    borderColor: `${colorScheme}.600`,\n                    borderWidth: 1,\n                    borderStyle: 'solid'\n                }\n            }\n        }\n    }\n}\n","import {\n    durationQuick1,\n    durationQuick2,\n    timingStandard,\n    timingStandardDecelerate\n} from '../../../../utils/motion'\nimport {borderIn, borderOut} from '../../../../utils/animations'\n\nexport default {\n    baseStyle: {\n        fontFamily: 'body',\n        textTransform: 'uppercase',\n        fontWeight: 400,\n        borderRadius: 0,\n        _focusVisible: {\n            boxShadow: 'none',\n            outline: '2px solid',\n            outlineColor: 'charcoalBlack',\n            outlineOffset: '2px'\n        }\n    },\n    sizes: {\n        sm: {\n            h: '64px',\n            px: 8,\n            fontSize: '2.75',\n            letterSpacing: '0.6px',\n            lineHeight: 5\n        }\n    },\n    variants: {\n        primary: {\n            bg: 'charcoalBlack',\n            border: 0,\n            color: 'white',\n            _hover: {\n                bg: 'subdued'\n            }\n        },\n        action: (props) => ({\n            bg: props.colorScheme === 'dark' ? 'black1' : 'white',\n            border: 0,\n            color: props.colorScheme === 'dark' ? 'white' : 'black1',\n            transition: `all ${durationQuick2}s ${timingStandard}`,\n\n            _hover: {\n                bg: props.colorScheme === 'dark' ? 'pandoraPink' : 'white',\n                opacity: props.colorScheme === 'dark' ? 1 : 0.5,\n                color: 'black1'\n            },\n\n            _active: {\n                background: props.colorScheme === 'dark' ? 'pandoraPressed' : 'none',\n                transition: `background ${durationQuick2}s ${timingStandard} 0s`\n            },\n\n            _disabled: {\n                bg: 'black4 !important',\n                color: 'black3a',\n                opacity: 1,\n                _hover: {\n                    bg: 'black4 !important',\n                    color: 'black3a'\n                }\n            }\n        }),\n        emphasized: (props) => ({\n            zIndex: 1,\n            border: 0,\n            bg: 'pandoraPink',\n            color: props.colorScheme === 'dark' ? 'white' : 'black1',\n            overflow: 'hidden',\n\n            '&::after': {\n                position: 'absolute',\n                content: '\"\"',\n                width: '100%',\n                height: '100%',\n                border: 0,\n                bottom: 0,\n                left: 0,\n                zIndex: '-1',\n                backgroundColor: props.colorScheme === 'dark' ? 'black1' : 'white',\n                transition: `all ${durationQuick2}s ${timingStandardDecelerate} 0s`\n            },\n            _hover: {\n                '&::after': {\n                    height: '0%',\n                    top: 0\n                },\n                color: 'black1'\n            },\n            _active: {\n                background: 'pandoraPressed',\n                transition: `background ${durationQuick2}s ${timingStandard} 0s`\n            },\n            _disabled: {\n                bg: 'black4 !important',\n                color: 'black3b',\n                '&::after': {\n                    content: 'none'\n                },\n                _hover: {\n                    bg: 'black4 !important',\n                    color: 'black3b'\n                }\n            }\n        }),\n        'emphasized-loading': (props) => ({\n            bg: props.colorScheme === 'dark' ? 'charcoalBlack' : 'white',\n            color: props.colorScheme === 'dark' ? 'white' : 'black1'\n        }),\n        'emphasized-buy': (props) => ({\n            zIndex: 1,\n            border: 0,\n            bg: 'pandoraPink',\n            color: props.colorScheme === 'dark' ? 'white' : 'black1',\n            '&::after': {\n                position: 'absolute',\n                content: '\"\"',\n                width: '100%',\n                height: '100%',\n                bottom: 0,\n                left: 0,\n                zIndex: '-1',\n                backgroundColor: props.colorScheme === 'dark' ? 'black1' : 'white',\n                transition: `all ${durationQuick2}s ${timingStandardDecelerate} 0s`\n            },\n            _hover: {\n                '&::after': {\n                    height: '0%',\n                    top: 0\n                },\n                color: 'black1'\n            },\n            _active: {\n                background: 'pandoraPressed',\n                transition: `background ${durationQuick2}s ${timingStandard} 0s`\n            }\n        }),\n        outline: (props) => ({\n            border: '1px solid',\n            borderColor: 'black4',\n            color: 'black1',\n            position: 'relative',\n\n            _hover: {\n                '&::before': {\n                    content: '\"\"',\n                    position: 'absolute',\n                    bottom: '-1px',\n                    left: '-1px',\n                    border: '1px solid',\n                    animation: `${borderIn} ${durationQuick2}s ${timingStandardDecelerate} forwards`\n                }\n            },\n            ...(props.animateOnHoverExit && {\n                '&::before': {\n                    content: '\"\"',\n                    position: 'absolute',\n                    top: '-1px',\n                    left: '-1px',\n                    border: '1px solid',\n                    animation: `${borderOut} ${durationQuick2}s ${timingStandardDecelerate} forwards`\n                }\n            }),\n            _active: {\n                ...(!props.isDisabled && {\n                    '&::before': {\n                        opacity: 0\n                    },\n                    border: '1px solid',\n                    borderColor: 'black3a',\n                    transition: `borderColor ${durationQuick2}s ${timingStandard} 0s`\n                })\n            },\n            _disabled: {\n                color: 'black3a',\n                borderColor: 'black4',\n                bg: 'black4',\n                opacity: 1,\n                '&::before': {\n                    content: 'none'\n                },\n                _hover: {\n                    '&::before': {\n                        content: 'none'\n                    }\n                }\n            }\n        }),\n        'outline-loading': {\n            border: '1px solid',\n            borderColor: 'black1'\n        },\n        'outline-buy': (props) => ({\n            border: '1px solid',\n            borderColor: 'black4',\n            color: 'black1',\n            position: 'relative',\n\n            _hover: {\n                '&::before': {\n                    content: '\"\"',\n                    position: 'absolute',\n                    bottom: '-1px',\n                    left: '-1px',\n                    border: '1px solid',\n                    animation: `${borderIn} ${durationQuick2}s linear forwards`\n                }\n            },\n            ...(props.animateOnHoverExit && {\n                '&::before': {\n                    content: '\"\"',\n                    position: 'absolute',\n                    top: '-1px',\n                    left: '-1px',\n                    border: '1px solid',\n                    animation: `${borderOut} ${durationQuick2}s linear forwards`\n                }\n            }),\n            _active: {\n                ...(!props.isDisabled && {\n                    '&::before': {\n                        opacity: 0\n                    },\n                    border: '1px solid',\n                    borderColor: 'black3a',\n                    transition: `borderColor ${durationQuick2}s ${timingStandard} 0s`\n                })\n            }\n        }),\n        link: (props) => ({\n            background:\n                props.colorScheme === 'dark'\n                    ? `linear-gradient(to right, rgb(33, 23, 16) 0 100%) left bottom no-repeat`\n                    : `linear-gradient(to right, white 0 100%) left bottom no-repeat`,\n            color: 'black1',\n            fontSize: '0.75rem',\n            justifyContent: 'flex-start',\n            letterSpacing: '0',\n            lineHeight: '20px',\n\n            _hover: {\n                backgroundSize: `100% 1px`,\n                borderColor: 'black1',\n                boxShadow: `inset 0 -1px 0 0 transparent`,\n                textDecoration: 'none',\n                transition: `background-size ${durationQuick2}s ${timingStandardDecelerate} ${durationQuick1}s, box-shadow ${durationQuick1}s ${timingStandard}`\n            },\n            '&:not(:hover)': {\n                boxShadow:\n                    props.colorScheme === 'dark'\n                        ? `rgb(33 23 16 / 20%) 0px -1px 0px 0px inset`\n                        : `rgb(117 117 117) 0px -1px 0px 0px inset`,\n                backgroundSize: `0% 1px`,\n                transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}, box-shadow ${durationQuick1}s ${timingStandard} ${durationQuick2}s`\n            },\n            _active: {\n                backgroundSize: `100% 1px`,\n                color: props.colorScheme === 'dark' ? 'black1' : 'white'\n            }\n        })\n    },\n    defaultProps: {\n        size: 'sm',\n        variant: 'primary',\n        colorScheme: 'dark'\n    }\n}\n","import {sheetWidth} from 'pandora-shared-app/overrides/app/components/drawer-sheet/drawer-utils/constants'\n\nexport default {\n    parts: ['dialog', 'header', 'body', 'footer'],\n    baseStyle: {\n        header: {\n            paddingTop: 1,\n            paddingRight: [4, 4, 6, 6],\n            paddingBottom: 1,\n            paddingLeft: [4, 4, 6, 6],\n            boxShadow: 'base'\n        },\n        body: {\n            padding: [4, 4, 6, 6]\n        },\n        footer: {\n            paddingTop: 6,\n            paddingRight: [4, 4, 6, 6],\n            paddingBottom: 11,\n            paddingLeft: [4, 4, 6, 6]\n        },\n        overlay: {\n            bg: 'overlayGray',\n            backdropFilter: 'blur(10px)'\n        }\n    },\n    variants: {\n        full: {\n            header: {\n                display: 'flex',\n                justifyContent: 'space-between',\n                alignItems: 'center',\n                paddingTop: 4,\n                paddingRight: [8, 8, 12, 16],\n                paddingBottom: 0,\n                paddingLeft: [8, 8, 12, 16],\n                boxShadow: 'none',\n\n                button: {\n                    padding: 0,\n\n                    '[dir=\"rtl\"] &': {\n                        marginLeft: 0,\n                        marginRight: 'auto',\n                        padding: 0\n                    }\n                }\n            },\n            body: {\n                paddingTop: [12, 12, 12, 12],\n                paddingX: [8, 8, 12, 16],\n                paddingBottom: [32, 32, 32, 32]\n            },\n            footer: {\n                borderTop: '1px solid',\n                borderColor: 'black4',\n                padding: [8, 8, 8, 8]\n            }\n        },\n        partial: {\n            dialog: {\n                borderTop: '1px solid',\n                borderColor: 'black4',\n                height: '50%',\n                overflow: 'hidden',\n                top: 'auto !important'\n            },\n            header: {\n                display: 'flex',\n                justifyContent: ['center', 'center', 'center', 'center', 'flex-end'],\n                alignItems: 'center',\n                paddingTop: [0, 0, 0, 0, 4],\n                paddingX: [0, 0, 0, 0, 16],\n                paddingBottom: 0,\n                boxShadow: 'none',\n                h: [12, 12, 12, 12, 20],\n\n                button: {\n                    w: [12, 12, 12, 12, 16],\n                    h: [12, 12, 12, 12, 16],\n                    p: 0,\n                    zIndex: 'overlay'\n                },\n\n                '&.header-absolute': {\n                    position: 'absolute',\n                    top: 0,\n                    left: 0,\n                    width: '100%'\n                }\n            },\n            body: {\n                paddingTop: [4, 4, 4, 8],\n                paddingX: [8, 8, 12, 16],\n                paddingBottom: [16, 16, 24, 24],\n\n                '.product-carousel': {\n                    pt: 0,\n                    pb: 0\n                },\n\n                '.carousel-header': {\n                    mt: {xl: -4},\n\n                    '.top-left': {\n                        ml: {xl: -6},\n                        mb: {xl: 12}\n                    }\n                }\n            }\n        },\n        learnMore: {\n            dialog: {\n                backgroundColor: 'transparent',\n                border: 'none',\n                borderRadius: '0',\n                width: '100%',\n                maxWidth: '100%',\n                height: '100vh',\n                maxHeight: '100vh',\n                zIndex: 1400\n            },\n            header: {\n                display: 'none'\n            },\n            body: {\n                padding: 0,\n                'h1, h2, h3, .drawer-title': {\n                    fontSize: '20px'\n                }\n            }\n        }\n    },\n    sizes: {\n        xl: {\n            dialog: {\n                maxWidth: '604px',\n                width: `${sheetWidth} !important`,\n                borderLeft: '1px solid',\n                borderColor: 'black4'\n            }\n        }\n    },\n    defaultProps: {\n        size: ['full', 'full', 'full', 'full', 'xl'],\n        placement: ['bottom', 'bottom', 'bottom', 'bottom', 'right']\n    }\n}\n","const mdSize = {height: 11, borderRadius: 'none'}\n\nexport default {\n    sizes: {\n        md: {\n            field: {...mdSize, px: 3},\n            addon: mdSize\n        },\n        lg: {\n            field: {...mdSize, px: 3},\n            addon: mdSize\n        },\n        sm: {\n            field: {...mdSize, px: 3},\n            addon: mdSize\n        },\n        xs: {\n            field: {...mdSize, px: 3},\n            addon: mdSize\n        }\n    },\n    baseStyle: {\n        field: {\n            _focus: {\n                borderColor: 'charcoalBlack'\n            }\n        }\n    },\n    variants: {\n        filled: {\n            // we use filled variant for\n            // search input\n            field: {\n                backgroundColor: 'white',\n                borderColor: 'borderColor',\n                borderWidth: '1px',\n                // iOS zoom prevention - clean approach without layout changes\n                '@supports (-webkit-touch-callout: none)': {\n                    fontSize: 'md'\n                },\n                _focus: {\n                    backgroundColor: 'white'\n                },\n                _hover: {\n                    backgroundColor: 'white',\n                    _focus: {\n                        backgroundColor: 'white'\n                    }\n                },\n                _placeholder: {\n                    color: 'black3a'\n                }\n            }\n        }\n    },\n    defaultProps: {\n        focusBorderColor: 'charcoalBlack'\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport theme from '@salesforce/retail-react-app/app/components/shared/theme'\n\nexport default {\n    baseStyle: {\n        container: {\n            flex: 1,\n            display: 'flex',\n            flexDirection: 'column',\n            backgroundColor: 'white',\n            minWidth: '375px'\n        },\n        headerWrapper: {\n            position: 'sticky',\n            top: 0,\n            zIndex: theme.zIndices.sticky\n        }\n    },\n    parts: ['container']\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([])\n\nexport const Header = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            height: {base: '64px', xl: 140},\n            width: 'full'\n        },\n        headerGrid: {\n            marginX: {base: 8, sm: 8, md: 12, xl: 16},\n            height: {base: 16, xl: 24},\n            alignItems: 'center'\n        },\n        logoContainer: {\n            width: {base: 31, xl: 35},\n            height: {base: 8.5, xl: 9.5}\n        },\n        navListContainer: {\n            position: 'relative',\n            _before: {\n                content: '\"\"',\n                display: 'block',\n                w: '100%',\n                h: 'px',\n                position: 'absolute',\n                bottom: 0\n            }\n        }\n    },\n    variants: {\n        transparent: {\n            navListContainer: {\n                _before: {\n                    bg: 'transparent'\n                }\n            }\n        },\n        white: {\n            navListContainer: {\n                _before: {\n                    bg: 'black4'\n                }\n            }\n        },\n        pink: {\n            navListContainer: {\n                _before: {\n                    bg: 'shadowBlack'\n                }\n            }\n        }\n    },\n    parts: ['headerGrid', 'logoContainer', 'navListContainer']\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const commonDrawerStyles = {\n    container: {\n        height: '100% !important', // Fix for drawer height issue on mobile devices.\n        maxW: {base: 'full', md: '606px', lg: 'calc(5 * (100% / 12) + 64px)'},\n        marginTop: 0,\n        borderRadius: '0px',\n        padding: '0px'\n    },\n    header: {\n        display: 'flex',\n        justifyContent: 'space-between',\n        alignItems: 'center',\n        padding: {\n            base: '16px 8px 0 32px',\n            md: '16px 24px 0 48px',\n            lg: '16px 40px 0 64px'\n        },\n        boxShadow: 'none'\n    },\n    content: {\n        display: 'flex',\n        flexDirection: 'column',\n        gap: '40px',\n        padding: {\n            base: '0 32px 20px',\n            md: '0 48px 20px',\n            lg: '0 64px 20px'\n        }\n    },\n    footer: {\n        borderTop: '1px solid',\n        borderColor: 'gray.100',\n        padding: {base: '32px', md: '32px 48px 58px 48px', lg: '32px 64px'},\n        justifyContent: 'space-between',\n        gap: '16px'\n    }\n}\n\nexport const RACDrawer = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        ...commonDrawerStyles\n    }\n})\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport Footer from '@salesforce/retail-react-app/app/theme/components/project/footer'\n\nconst {baseStyle} = Footer\n\nexport default {\n    parts: [\n        'container',\n        'content',\n        'horizontalRule',\n        'bottomHalf',\n        'copyright',\n        'creditCardIcon',\n        'customerService'\n    ],\n    baseStyle: {\n        container: baseStyle.container,\n        content: baseStyle.content,\n        horizontalRule: baseStyle.horizontalRule,\n        bottomHalf: baseStyle.bottomHalf,\n        copyright: baseStyle.copyright,\n        creditCardIcon: {\n            width: '38px',\n            height: '22px'\n        },\n        customerService: {\n            marginBottom: 6\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    parts: [\n        'container',\n        'content',\n        'subscribe',\n        'subscribeField',\n        'subscribeButtonContainer',\n        'subscribeHeading',\n        'subscribeMessage',\n        'localeSelector',\n        'bottomHalf',\n        'horizontalRule',\n        'copyright',\n        'socialIcons'\n    ],\n    baseStyle: {\n        container: {\n            width: 'full',\n            background: 'gray.900'\n        },\n        content: {\n            maxWidth: 'container.xxl',\n            marginLeft: 'auto',\n            marginRight: 'auto',\n            color: 'white',\n            paddingTop: {base: 8, lg: 10},\n            paddingBottom: 8,\n            paddingLeft: [4, 4, 6, 8],\n            paddingRight: [4, 4, 6, 8]\n        },\n        subscribe: {\n            maxWidth: {base: '21.5rem', lg: 'none'}\n        },\n        subscribeField: {\n            background: 'white',\n            color: 'gray.900'\n        },\n        subscribeButtonContainer: {\n            width: 'auto'\n        },\n        subscribeHeading: {\n            fontSize: 'md',\n            paddingTop: {base: 0, lg: 3},\n            marginBottom: 2\n        },\n        subscribeMessage: {\n            fontSize: 'sm',\n            marginBottom: 4\n        },\n        localeSelector: {\n            display: 'inline-block',\n            marginTop: 8\n        },\n        localeDropdown: {\n            background: 'gray.800',\n            _hover: {\n                background: 'whiteAlpha.500'\n            }\n        },\n        localeDropdownOption: {\n            color: 'black'\n        },\n        bottomHalf: {\n            maxWidth: {base: '34.5rem', lg: '100%'}\n        },\n        horizontalRule: {\n            marginTop: 4,\n            marginBottom: 4\n        },\n        copyright: {\n            fontSize: 'sm',\n            marginBottom: 6,\n            color: 'gray.50'\n        },\n        socialIcons: {\n            marginTop: 4\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport {durationQuick2, timingStandard} from '../../utils/motion'\n\nexport default {\n    baseStyle: {\n        container: {\n            flex: 1,\n            display: 'flex',\n            gap: 2\n        },\n        icon: {\n            width: 5,\n            height: 5\n        },\n        item: {\n            width: 10,\n            height: 10,\n            minWidth: 10,\n            minHeight: 10,\n            borderRadius: 'full',\n            border: '1px solid',\n            borderColor: 'black4',\n            transition: `border-color ${durationQuick2}s ${timingStandard}`,\n            padding: 2,\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            cursor: 'pointer',\n            _hover: {\n                borderColor: 'black3a'\n            },\n            _focusVisible: {\n                boxShadow: 'none',\n                outline: '2px solid',\n                outlineColor: 'charcoalBlack',\n                outlineOffset: 1\n            }\n        }\n    },\n    variants: {\n        'flex-start': {\n            container: {\n                justifyContent: 'flex-start'\n            },\n            item: {\n                flex: 0\n            }\n        },\n        'flex-end': {\n            container: {\n                justifyContent: 'flex-end'\n            },\n            item: {\n                flex: 0\n            }\n        },\n        flex: {\n            container: {\n                justifyContent: 'center'\n            },\n            item: {\n                flex: 1\n            }\n        }\n    },\n    parts: ['container', 'item', 'icon'],\n    defaultProps: {\n        variant: 'flex-start'\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\n// Constant(s)\nimport {VIDEO_CONTROLS_LANE_WIDTH} from './constants'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'headerGrid',\n    'mediaGrid',\n    'bagButton',\n    'bagButtonIconOnly',\n    'descriptionGrid',\n    'productsGrid',\n    'partialDrawerStyle'\n])\n\nexport const ShopTheLook = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            position: 'relative',\n            bgColor: 'white',\n\n            '.plp-product-group': {\n                pb: 32,\n                gridTemplateColumns: {base: 'repeat(6, 1fr)', xl: 'repeat(12, 1fr)'}\n            },\n\n            // Below `xl` the product group has no exposed grid, so the bottom padding that\n            // followed it would leave a large empty gap - drop it as the sheet variant does.\n            '.plp-product-group.sheet-only': {\n                pb: 0\n            },\n\n            '.plp-link-and-sheet': {\n                pb: 0,\n                gridTemplateColumns: {base: 'repeat(6, 1fr)'}\n            }\n        },\n\n        headerGrid: {\n            my: {base: 0},\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 4,\n\n            collaborationLogo: {\n                marginTop: 4,\n                display: 'flex'\n            }\n        },\n\n        mediaGrid: {\n            container: {\n                position: 'relative'\n            }\n        },\n\n        // Pre-INS-5194 icon-only square CTA. This is the enable-plp-stl-clickable-tile\n        // OFF path; delete this part together with the flag once it stabilises.\n        bagButtonIconOnly: {\n            width: 16,\n            height: 16,\n            position: 'absolute',\n            bottom: 0,\n            left: 0,\n            zIndex: 4\n        },\n\n        // Read by ShopTheLookBagButton for every variant that shops through the bag\n        // icon — the PLP \"Link + Sheet\" (half-width) tile and the sheet-only\n        // PLP_PRODUCT_GROUP tile (INS-5089) — whenever the media section resolves\n        // `isClickableTileEnabled`.\n        //\n        // enable-plp-stl-clickable-tile ON path (INS-5194). Per Figma (Gemini Ecom\n        // Library): 64px tall, 16px/24px padding, dark fill, label to the right of\n        // the bag icon. The 24px icon/label gap is set as `iconSpacing` on the\n        // Button itself — see the partial.\n        bagButton: {\n            // The CTA label is authored/translated in sentence case and rendered\n            // in upper case. Declared here rather than relied on from the Button\n            // base style, because it is a requirement of this CTA specifically.\n            textTransform: 'uppercase',\n            height: 16,\n            px: 6,\n            py: 4,\n            // Width is content-driven now that the CTA carries the \"SHOP THE LOOK\"\n            // label, so it is capped to leave the video [Sound]/[Pause] control\n            // strip in the opposite bottom corner permanently clear. The CTA\n            // stacks above the controls (z-index 4/5 vs 2/3), so any overlap would\n            // make them unclickable — the label must truncate instead.\n            //\n            // Deliberately unconditional rather than keyed off media type: image\n            // tiles have no controls and could take the full width, but making the\n            // guarantee depend on media-type detection means a shape that\n            // detection misses silently costs us the controls. A slightly narrower\n            // CTA on image tiles is the cheaper failure.\n            maxWidth: `calc(100% - ${VIDEO_CONTROLS_LANE_WIDTH})`,\n            // Chakra's Button sets minW 40px, which would win over maxWidth on an\n            // extremely narrow tile and let the CTA back into the control lane.\n            minWidth: 0,\n            // The label is the only thing that can overflow. The shared Button\n            // gives its content span `white-space: normal; text-overflow: clip`,\n            // which would wrap a long label to a second line and clip it mid-line\n            // against the fixed 64px height. Override to a single ellipsised line\n            // so a long translation degrades legibly. Targets both spans (the icon\n            // span is unaffected by these two properties).\n            '& > span': {\n                whiteSpace: 'nowrap',\n                textOverflow: 'ellipsis'\n            },\n            position: 'absolute',\n            bottom: 0,\n            left: 0,\n            // In RTL the VideoPlayer moves its controls to the physical left (see\n            // `adjustedControlWrapperPosition` in video-player/index.jsx), so the\n            // CTA has to mirror too or the two would stack in the same corner and\n            // maxWidth would be reserving the wrong side. A logical\n            // `insetInlineStart` does not work here — styled-system emits it as a\n            // physical `left`, so mirror explicitly, as the drawer styles below do.\n            '[dir=\"rtl\"] &': {\n                left: 'auto',\n                right: 0\n            },\n            zIndex: 4\n        },\n\n        descriptionGrid: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 4,\n\n            description: {\n                margin: 0\n            },\n\n            a: {\n                width: 'fit-content'\n            }\n        },\n\n        productsGrid: {\n            pt: {base: 8, md: 16, xl: 0},\n\n            grid: {\n                mx: 0,\n                gridRowGap: {base: 16, xl: 24}\n            },\n\n            linkStyle: {\n                p: 0,\n                border: 0,\n                width: '100%',\n                mt: {base: 16, xl: 24}\n            },\n\n            buttonStyle: {\n                width: '100%',\n                maxWidth: '100%'\n            },\n\n            '&.no-category-btn > div': {\n                mb: 0\n            }\n        },\n\n        partialDrawerStyle: {\n            height: 'auto',\n\n            '.close-btn': {\n                ml: 'auto',\n                mr: {base: 0, xl: -6},\n                '[dir=\"rtl\"] &': {\n                    mr: 'auto',\n                    ml: {base: 0, xl: -6}\n                }\n            },\n\n            bodyContentStyle: {\n                '.swiper': {\n                    marginLeft: {base: -8, md: -12, xl: 0},\n                    marginRight: {base: -8, md: -12, xl: 0},\n                    paddingLeft: {base: 8, md: 12, xl: 0},\n                    paddingRight: {base: 8, md: 12, xl: 0}\n                }\n            }\n        }\n    }\n})\n","import {sheetWidth} from '../../drawer-utils/constants'\n\nexport const PinkOverlay = {\n    baseStyle: {\n        position: 'fixed',\n        bottom: 0,\n        right: 0,\n        bgColor: 'pandoraPink',\n        zIndex: 'modal'\n    },\n    variants: {\n        full: {\n            height: 'calc(100% - 1px)',\n            width: {base: '100%', xl: sheetWidth},\n            maxW: {base: '100%', xl: '604px'},\n            top: 0,\n            left: 'auto'\n        },\n\n        partial: (props) => {\n            if (props.placement === 'top') {\n                return {\n                    height: 'calc(70% - 1px)',\n                    width: '100%',\n                    top: 0,\n                    left: 0\n                }\n            }\n\n            return {\n                height: 'calc(40% - 1px)',\n                width: '100%',\n                top: 'auto',\n                left: 0\n            }\n        },\n\n        learnMore: (props) => {\n            if (props.placement === 'right') {\n                return {\n                    height: '100%',\n                    width: '500px',\n                    maxW: '500px',\n                    top: 0,\n                    left: 'auto'\n                }\n            }\n\n            return {\n                height: '100%',\n                width: '100%',\n                top: 'auto',\n                left: 0\n            }\n        }\n    }\n}\n","import {dotAnimation} from '../../../../../../utils/animations'\n\nexport const LoadingDots = {\n    baseStyle: {\n        position: 'relative',\n        display: 'inline-block',\n        '&::after': {\n            position: 'absolute',\n            left: 0,\n            color: 'charcoalBlack',\n            content: \"''\",\n            animation: `${dotAnimation} 2s infinite`,\n            width: 6,\n            textAlign: 'left',\n            zIndex: 1\n        }\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport SFProductTile from '@salesforce/retail-react-app/app/theme/components/project/product-tile'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'imageWrapper',\n    'image',\n    'price',\n    'title',\n    'rating',\n    'variations',\n    'swatch',\n    'imageTileMobileContainer',\n    'imageTileMobileWrapper',\n    'favIcon',\n    'emphasizedWrapper',\n    'emphasizedGrid',\n    'emphasizedGridItem'\n])\n\nconst {container, imageWrapper, image, ...rest} = SFProductTile.baseStyle()\n\nexport const ProductTile = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        ...rest,\n        container: {...container, color: '#211710', _hover: {textDecoration: 'none'}},\n        imageWrapper: {...imageWrapper, marginBottom: 0, bgColor: '#F7F7F7'},\n        image: {\n            ...image,\n            paddingBottom: 0,\n            ratio: 0.75,\n            sx: {\n                img: {\n                    width: '100%',\n                    height: 'auto'\n                }\n            }\n        },\n        title: {fontSize: 'xs', fontWeight: 400},\n        label: {color: 'black3a', fontSize: 'xs'},\n        blacklabel: {color: 'black1', fontSize: 'xs', textTransform: 'uppercase'},\n        oosLabel: {color: 'black3a', fontSize: 'xs'},\n        collabBadge: {\n            position: 'absolute',\n            top: {base: 3, md: 4},\n            left: {base: 3, md: 4},\n            width: '50%',\n            minWidth: '96px',\n            maxWidth: '120px'\n        },\n        favIcon: {\n            background: 'transparent',\n            position: 'absolute',\n            top: '10px',\n            right: '10px',\n            height: '20px',\n            width: '20px',\n            lineHeight: 0,\n            _hover: {\n                background: 'transparent'\n            }\n        },\n        favIconWithBackground: {\n            position: 'absolute',\n            top: '10px',\n            right: '10px',\n            height: '20px',\n            width: '20px',\n            borderRadius: '50%',\n            background: '#F7F7F7',\n            lineHeight: 0,\n            _hover: {\n                background: '#F7F7F7'\n            }\n        },\n        price: {fontSize: 'xs'},\n        swatch: {\n            outer: {\n                width: '18px',\n                height: '18px',\n                borderRadius: 'full',\n                backgroundColor: 'white',\n                padding: 0,\n                minWidth: '18px',\n                _hover: {\n                    borderColor: 'newColors.contentSubdued',\n                    borderWidth: 1,\n                    borderStyle: 'solid'\n                },\n                _active: {\n                    background: 'transparent'\n                }\n            },\n            inner: {\n                width: '12px',\n                height: '12px',\n                bgRepeat: 'no-repeat',\n                bgSize: 'cover',\n                borderRadius: 'full',\n                _focus: {\n                    outline: 'none'\n                }\n            }\n        },\n        imageTileDesktop: {\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            width: '100%',\n            height: '100%'\n        },\n        imageTileContainer: {\n            position: 'relative'\n        },\n        imageTileMobileContainer: {\n            width: '100%',\n            overflow: 'hidden',\n            position: 'relative'\n        },\n        imageTileMobileWrapper: {\n            width: '100%',\n            transform: 'translateX(0)',\n            transition: 'transform 0.4s cubic-bezier(0.30, 0.00, 0.10, 1.00)'\n        },\n        productTileEmphasised: {\n            marginRight: {base: -8, md: 0},\n            marginLeft: {base: -8, md: 0}\n        },\n        emphasizedWrapper: {\n            colSpan: 6\n        },\n        emphasizedGrid: {\n            templateColumns: {base: `repeat(6, 1fr)`},\n            mx: 0\n        },\n        emphasizedGridItem: {\n            colSpan: {base: 6, md: 4, xl: 4}\n        }\n    }\n})\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: () => ({\n        container: {\n            position: 'relative'\n        },\n        favIcon: {\n            position: 'absolute',\n            variant: 'unstyled',\n            top: 2,\n            right: 2\n        },\n        imageWrapper: {\n            position: 'relative',\n            marginBottom: 2\n        },\n        image: {\n            ratio: 1,\n            paddingBottom: 2\n        },\n        link: {\n            display: 'block'\n        },\n        price: {},\n        title: {\n            fontWeight: 600\n        },\n        rating: {},\n        variations: {},\n        badgeGroup: {\n            position: 'absolute',\n            top: 2,\n            left: 2\n        }\n    }),\n    parts: [\n        'container',\n        'imageWrapper',\n        'image',\n        'price',\n        'title',\n        'rating',\n        'variations',\n        'badgeGroup'\n    ]\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'triggerButton',\n    'drawerText',\n    'drawerList',\n    'signUpLink'\n])\n\nexport const MemberPriceTooltip = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            display: 'inline-flex',\n            alignItems: 'center'\n        },\n        triggerButton: {\n            display: 'inline-flex',\n            alignItems: 'center',\n            cursor: 'pointer',\n            bg: 'transparent',\n            border: 'none',\n            p: 0,\n            m: 0,\n            lineHeight: '1'\n        },\n        drawerText: {\n            fontSize: '13px',\n            lineHeight: '20px',\n            color: 'charcoalBlack',\n            mb: 4\n        },\n        drawerList: {\n            styleType: 'disc',\n            fontSize: '13px',\n            lineHeight: '20px',\n            color: 'charcoalBlack',\n            mb: 4,\n            pl: 4,\n            spacing: 1\n        },\n        signUpLink: {\n            fontSize: '13px',\n            lineHeight: '20px',\n            color: 'charcoalBlack',\n            textDecoration: 'underline',\n            cursor: 'pointer',\n            bg: 'transparent',\n            border: 'none',\n            p: 0,\n            textAlign: 'left'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['carouselWrapper', 'activeStep', 'inactiveStep'])\n\nexport const CarouselStepIndicator = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        carouselWrapper: {\n            display: 'flex',\n            flexDirection: 'row',\n            gap: '4px'\n        },\n        activeStep: {\n            height: '1px',\n            transition: 'width 0.4s ease-out, background-color 0.4s ease-out',\n            width: '32px',\n            backgroundColor: '#211710'\n        },\n        inactiveStep: {\n            height: '1px',\n            transition: 'width 0.4s ease-out, background-color 0.4s ease-out',\n            width: '8px',\n            backgroundColor: '#E6E6E6'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const SearchDrawer = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        header: {\n            display: 'flex',\n            justifyContent: 'space-between',\n            alignItems: 'center',\n            paddingX: 8,\n            paddingTop: 8,\n            paddingBottom: 4,\n\n            boxShadow: 'none'\n        },\n        flyoutHeading: {\n            color: 'black1',\n            fontSize: 5,\n            height: 8,\n            lineHeight: '145%',\n            textTransform: 'uppercase',\n            _focus: {\n                border: '0px',\n                boxShadow: 'none'\n            }\n        }\n    }\n})\n","// Common style patterns to avoid duplication\nconst createLinkStyles = (decorationColor, hoverColor) => ({\n    textDecorationColor: decorationColor,\n    textDecorationThickness: '1px',\n    textUnderlineOffset: '2px',\n    transition: 'text-decoration-color 0.2s ease, color 0.2s ease',\n    '&:hover': {\n        color: hoverColor,\n        textDecorationColor: hoverColor\n    }\n})\n\nconst createUnderlineStyles = (decorationColor) => ({\n    textDecorationColor: decorationColor,\n    textDecorationThickness: '1px',\n    textUnderlineOffset: '2px'\n})\n\nconst createTextWithLinksStyles = (linkColor, hoverColor) => ({\n    '& a': createLinkStyles(linkColor, hoverColor),\n    '& u': createUnderlineStyles(linkColor)\n})\n\nconst createMessageTextStyles = (linkColor, hoverColor) => ({\n    '& a': {\n        textDecorationColor: linkColor,\n        '&:hover': {\n            color: hoverColor,\n            textDecorationColor: hoverColor\n        }\n    },\n    '& u': createUnderlineStyles(linkColor)\n})\n\nexport const TradeBanner = {\n    parts: [\n        'container',\n        'flex',\n        'text',\n        'progressBar',\n        'progressBarColor',\n        'skeletonContainer',\n        'messageContainer',\n        'learnMoreButton',\n        'messageText',\n        'progressBarSx',\n        'mainFlex',\n        'progressBarContainer',\n        'messageTextComponent',\n        'progressGoalText',\n        'learnMoreButtonComponent',\n        'progressComponent'\n    ],\n    baseStyle: {\n        container: {\n            minWidth: 'xs',\n            width: 'full',\n            boxShadow: 'none',\n            minHeight: {base: 12, md: 13, lg: 12},\n            py: {base: 3.5, md: 3.5, lg: 3.5},\n            px: {base: 8, md: 12, lg: 16},\n            gap: 4\n        },\n        flex: {\n            display: 'flex',\n            flexWrap: 'nowrap',\n            justifyContent: 'flex-start',\n            alignItems: 'center',\n            gap: 4,\n            flexShrink: 0\n        },\n        text: {\n            color: 'secondaryColor',\n            fontWeight: 'normal',\n            fontSize: '13px',\n            lineHeight: 'base',\n            overflowWrap: 'break-word',\n            wordWrap: 'break-word',\n            hyphens: 'auto',\n            whiteSpace: 'normal'\n        },\n        progressBar: {\n            width: {base: '120px', md: '150px', xl: 60},\n            height: 1,\n            bg: 'white',\n            flexShrink: 0\n        },\n        skeletonContainer: {\n            minWidth: 'xs',\n            width: 'full',\n            boxShadow: 'none',\n            minHeight: {base: 12, md: 13, lg: 12}\n        },\n        messageContainer: {\n            display: 'flex',\n            flexDirection: 'row',\n            flexWrap: 'wrap',\n            alignItems: 'center',\n            justifyContent: 'flex-start',\n            gap: 2,\n            lineHeight: 'base'\n        },\n        learnMoreButton: {\n            textDecoration: 'underline',\n            textTransform: 'none',\n            background: 'none',\n            boxShadow: 'none',\n            marginBottom: '2px',\n            _hover: {\n                textDecoration: 'underline',\n                color: 'inherit',\n                backgroundColor: 'transparent',\n                background: 'none',\n                boxShadow: 'none'\n            },\n            _focus: {\n                outline: '2px solid',\n                outlineColor: 'blue.500',\n                outlineOffset: '1px',\n                backgroundColor: 'transparent',\n                background: 'none',\n                boxShadow: 'none'\n            },\n            _active: {\n                backgroundColor: 'transparent',\n                background: 'none',\n                boxShadow: 'none'\n            },\n            '&:hover': {\n                backgroundColor: 'transparent !important',\n                background: 'none !important'\n            }\n        },\n        messageText: {\n            '& > *': {\n                display: 'inline'\n            },\n            '& style': {\n                display: 'none'\n            },\n            '& p': {\n                display: 'inline',\n                margin: 0\n            },\n            '& a': {\n                textDecorationThickness: '1px',\n                textUnderlineOffset: '2px',\n                transition: 'color 0.2s ease'\n            },\n            '& u': {\n                textDecorationThickness: '1px',\n                textUnderlineOffset: '2px'\n            }\n        },\n        progressBarSx: {\n            '& > div': {}\n        },\n        mainFlex: {\n            display: 'flex',\n            height: '100%',\n            flexDirection: 'column',\n            alignItems: 'flex-start',\n            gap: 3\n        },\n        progressBarContainer: {\n            width: '100%',\n            maxWidth: {base: '100%', lg: '50%'},\n            alignItems: 'center',\n            gap: 8\n        },\n        messageTextComponent: {\n            width: '100%',\n            lineHeight: '20px'\n        },\n        progressGoalText: {\n            whiteSpace: 'nowrap',\n            lineHeight: 'inherit',\n            flexShrink: 0\n        },\n        learnMoreButtonComponent: {\n            variant: 'unstyled',\n            size: 'sm',\n            color: 'inherit',\n            fontWeight: 'inherit',\n            fontSize: 'inherit',\n            height: 'auto',\n            minHeight: 'auto',\n            padding: '0',\n            margin: '0',\n            lineHeight: 'inherit',\n            display: 'inline',\n            verticalAlign: 'baseline'\n        },\n        progressComponent: {\n            flex: '1',\n            width: 'auto'\n        }\n    },\n    variants: {\n        'high-priority': {\n            container: {backgroundColor: 'secondaryColor'},\n            text: {color: 'bodyBg'},\n            progressBarColor: 'brand'\n        },\n        'medium-priority': {\n            container: {backgroundColor: 'brand'},\n            text: {color: 'secondaryColor'},\n            progressBarColor: 'secondaryColor'\n        },\n        'low-priority': {\n            container: {backgroundColor: 'background'},\n            text: {color: 'secondaryColor'},\n            progressBarColor: 'secondaryColor'\n        },\n        black: {\n            container: {backgroundColor: 'black'},\n            text: {\n                color: 'white',\n                ...createTextWithLinksStyles('#504C49', 'rgba(255, 255, 255, 0.8)')\n            },\n            progressBarColor: 'brand',\n            learnMoreButton: {\n                ...createLinkStyles('#504C49', 'rgba(255, 255, 255, 0.8)'),\n                _hover: {\n                    textDecorationColor: 'rgba(255, 255, 255, 0.8)'\n                }\n            },\n            messageText: createMessageTextStyles('#504C49', 'rgba(255, 255, 255, 0.8)'),\n            progressBarSx: {\n                '& > div': {\n                    bg: 'brand'\n                }\n            }\n        },\n        blue: {\n            container: {backgroundColor: 'pandoraBlue'},\n            text: {color: 'white'},\n            progressBarColor: 'secondaryColor'\n        },\n        fusia: {\n            container: {backgroundColor: 'pandoraPurple'},\n            text: {color: 'white'},\n            progressBarColor: 'secondaryColor'\n        },\n        red: {\n            container: {backgroundColor: 'pandoraRed'},\n            text: {color: 'white'},\n            progressBarColor: 'secondaryColor'\n        },\n        pink: {\n            container: {backgroundColor: 'pandoraPink'},\n            text: {\n                color: 'black1',\n                ...createTextWithLinksStyles('rgba(0, 0, 0, 0.10)', 'rgba(33, 23, 16, 0.8)')\n            },\n            progressBarColor: 'secondaryColor',\n            learnMoreButton: {\n                textDecorationColor: 'rgba(0, 0, 0, 0.20)',\n                textDecorationThickness: '1px',\n                textUnderlineOffset: '2px',\n                transition: 'text-decoration-color 0.2s ease, color 0.2s ease',\n                _hover: {\n                    textDecorationColor: 'rgba(33, 23, 16, 0.8)'\n                }\n            },\n            messageText: createMessageTextStyles('rgba(0, 0, 0, 0.10)', 'rgba(33, 23, 16, 0.8)')\n        },\n        default: {\n            container: {backgroundColor: 'brand'},\n            text: {color: 'secondaryColor'},\n            progressBarColor: 'secondaryColor'\n        }\n    },\n    defaultProps: {\n        variant: 'default'\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {INDICATOR_POSITION, THEME} from './constants'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'controls',\n    'playPauseBtn',\n    'progressBar'\n])\n\nconst CONTROLS_HEIGHT = 16\n\nexport const Carousel = helpers.defineMultiStyleConfig({\n    baseStyle: ({isActive, segments, theme}) => {\n        return {\n            container: {\n                position: 'relative',\n\n                headerCarousel: {\n                    display: 'flex',\n\n                    heading: {\n                        lineHeight: 1.778,\n                        mb: 8,\n                        display: 'flex',\n                        alignItems: 'center'\n                    }\n                }\n            },\n\n            progressBar: {\n                container: {\n                    py: 4,\n                    px: {base: 8, md: 0},\n                    display: 'flex',\n                    justifyContent: 'center',\n                    gap: 1,\n                    bgColor: 'white',\n                    mx: 0\n                },\n\n                inactiveBar: {\n                    height: 'px',\n                    my: '-px',\n                    width: isActive ? '50%' : `${50 / (segments - 1)}%`,\n                    // The width for active should be half of the entire space\n                    // and the rest should split the remaining space even\n                    bgColor: 'black4',\n                    position: 'relative',\n                    overflow: 'hidden',\n                    mx: '0.5',\n                    transition: 'width 0.3s ease-in-out',\n                    borderRadius: '0.5'\n                },\n\n                activeBar: {\n                    height: 'px',\n                    bgColor: 'black1',\n                    position: 'absolute',\n                    top: 0,\n                    left: 0\n                }\n            },\n\n            controls: {\n                container: {\n                    display: 'flex',\n                    justifyContent: 'center',\n                    position: 'absolute',\n                    zIndex: 'sticky',\n                    left: 0,\n                    bottom: 0,\n                    overflow: 'hidden',\n                    h: CONTROLS_HEIGHT,\n\n                    [`&.${INDICATOR_POSITION.TOP_LEFT}`]: {\n                        position: 'relative',\n                        mb: 8,\n                        justifyContent: 'left',\n                        ml: {base: 0, xl: -6}\n                    },\n\n                    [`&.${INDICATOR_POSITION.TOP_RIGHT}`]: {\n                        position: 'relative',\n                        mb: 8,\n                        ml: 'auto',\n                        mr: {base: 0, xl: -6}\n                    },\n\n                    [`&.${INDICATOR_POSITION.BOTTOM_LEFT}`]: {\n                        bottom: 0,\n                        left: 0,\n                        '[dir=\"rtl\"] &': {\n                            left: 'auto',\n                            right: 0\n                        }\n                    },\n\n                    div: {\n                        bgColor: theme == THEME?.DARK ? 'black1' : 'white'\n                    },\n\n                    '.inactive': {\n                        opacity: 0.4,\n                        pointerEvents: 'none',\n                        cursor: 'not-allowed'\n                    },\n\n                    '[dir=\"rtl\"] &': {\n                        flexDirection: 'row-reverse'\n                    }\n                },\n\n                button: {\n                    p: 0,\n                    outline: 'none !important',\n                    bgColor: theme == THEME?.DARK ? 'black1' : 'white',\n\n                    width: 16,\n                    height: 16,\n\n                    _hover: {\n                        opacity: 1\n                    },\n\n                    _active: {\n                        opacity: 1\n                    },\n\n                    svg: {\n                        width: 5,\n                        height: 5\n                    }\n                },\n\n                numbers: {\n                    display: 'flex',\n                    width: CONTROLS_HEIGHT,\n                    height: CONTROLS_HEIGHT,\n                    justifyContent: 'center',\n                    alignItems: 'center',\n                    color: theme === THEME?.DARK ? 'white' : 'black1'\n                },\n\n                text: {\n                    lineHeight: 4,\n                    letterSpacing: '0.55px'\n                }\n            },\n\n            playPauseBtn: {\n                display: 'flex',\n                justifyContent: 'center',\n                alignItems: 'center',\n                position: 'absolute',\n                bottom: 0,\n                left: 0,\n                zIndex: 'sticky',\n                p: 0,\n\n                width: 16,\n                height: 16,\n\n                svg: {\n                    width: 5,\n                    height: 5\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\n// Full-bleed pair: pull the body out to the viewport edges, then push its content\n// back to where the column starts, so slides overflow but the first one stays aligned.\nconst BLEED_MARGIN = 'calc(50% - 50vw)'\nconst BLEED_PADDING = 'calc(50vw - 50%)'\n\n// Shared top padding of the carousel container. Exported so scoped overrides can\n// neutralise it while restoring the desktop value.\nexport const CONTAINER_PADDING_TOP = {base: 8, xl: 16}\n\nexport const ProductCarousel = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            pt: CONTAINER_PADDING_TOP,\n            pb: 32,\n\n            '.carousel-body': {\n                mx: {base: -8, md: -12, xl: 0},\n                px: {base: 8, md: 12, xl: 0}\n            },\n\n            button: {\n                svg: {\n                    color: 'black1'\n                }\n            }\n        }\n    },\n    // Dark variant\n    variants: {\n        dark: {\n            container: {\n                pt: {base: 0, xl: 0},\n                pb: 0,\n                '.carousel-header': {\n                    '.chakra-text': {\n                        fontSize: '20px'\n                    }\n                },\n                '.carousel-body': {\n                    '.chakra-link': {\n                        color: 'white'\n                    }\n                },\n\n                button: {\n                    svg: {\n                        color: 'white'\n                    }\n                }\n            }\n        },\n        // Compact PLP in-grid variant (FIND-6594). The zone's header/tab spacing is\n        // owned by the recommendation-tabs panel, so this variant only sets the\n        // carousel's own vertical rhythm and its horizontal bleed.\n        inGrid: {\n            container: {\n                pt: 0,\n                // No bottom padding at any breakpoint: the zone sits inside the PLP\n                // grid, whose own row gap supplies the separation, and no other grid\n                // element adds padding of its own.\n                pb: 0,\n                // Below xl the peeking card must run to the screen edge rather than\n                // be cropped by the PLP grid's gutter. Viewport-relative so it holds\n                // whatever that gutter is, while the first slide stays aligned with\n                // the grid column. At xl there is no peek, so no bleed. `md` is set\n                // explicitly: the baseStyle's own md offset would otherwise survive\n                // the variant merge and reinstate the standalone-carousel gutter.\n                '.carousel-body': {\n                    mx: {base: BLEED_MARGIN, md: BLEED_MARGIN, xl: 0},\n                    px: {base: BLEED_PADDING, md: BLEED_PADDING, xl: 0}\n                },\n                '.swiper-slide': {\n                    flexShrink: 0\n                }\n            }\n        },\n        // Part of Set variant - for PDP Part of a Set section\n        partOfSet: {\n            container: {\n                pt: 0,\n                pb: 0,\n                '.carousel-header': {\n                    justifyContent: 'flex-end',\n                    mb: 6\n                },\n                '.carousel-body': {\n                    mx: 0,\n                    px: 0\n                },\n                '.swiper-slide': {\n                    flexShrink: 0\n                },\n                '.product-tile-image': {\n                    height: {base: '440px', xl: '279px'}\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'wrapper',\n    'container',\n    'heading',\n    'text',\n    'skeletonStack',\n    'skeletonHeading',\n    'skeletonText'\n])\n\nexport const HeroBanner = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        wrapper: {\n            display: 'flex',\n            flexDirection: {base: 'column', lg: 'row'},\n            pl: {base: 8, md: 12, lg: 16},\n            pr: {lg: 13},\n            pt: {base: 4, lg: 8},\n            pb: 8,\n            gap: {base: '48px', lg: '0'}\n        },\n        container: {\n            alignItems: 'flex-start',\n            color: 'black1',\n            display: 'flex',\n            flexDirection: 'column',\n            h: 'auto',\n            justifyContent: 'left',\n            position: 'relative',\n            textAlign: 'left',\n            w: '100%',\n            pr: {base: 8, md: 12, lg: 0},\n            gap: 4\n        },\n        heading: {\n            as: 'h1',\n            fontSize: {base: 7, md: 7, lg: 10},\n            mb: 0,\n            maxW: {base: '100%'}\n        },\n        text: {\n            fontSize: 3.25,\n            maxW: {base: '100%', sm: '100%', md: '326px', lg: '429px'},\n            lineHeight: 1.54,\n            sx: {\n                a: {\n                    borderBottom: '1px solid',\n                    borderBottomColor: 'black4',\n                    _hover: {\n                        borderBottom: '1px solid',\n                        borderBottomColor: 'black1'\n                    }\n                },\n                u: {\n                    textDecoration: 'none'\n                },\n                p: {\n                    display: 'inline'\n                },\n                button: {\n                    borderBottom: '1px solid',\n                    borderBottomColor: 'black4',\n                    lineHeight: 1.13\n                }\n            },\n            w: '100%'\n        },\n        skeletonStack: {\n            px: {base: 8, md: 12, lg: 16}\n        },\n        skeletonHeading: {\n            width: '30%',\n            height: {base: 7, md: 7, lg: 10}\n        },\n        skeletonText: {\n            width: {base: '100%', md: '50%', lg: '50%'},\n            noOfLines: 5,\n            skeletonHeight: 3\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'visualNavText',\n    'visualNavImg',\n    'navItem',\n    'navList',\n    'variants'\n])\n\nexport const VisualNavigation = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        navList: {\n            display: 'flex',\n            flexDirection: 'row',\n            gap: {base: '8px', lg: '12px'},\n            width: '100%',\n            whiteSpace: 'nowrap',\n            overflowX: 'scroll',\n            overflowY: 'hidden',\n            sx: {\n                '::-webkit-scrollbar': {\n                    display: 'none'\n                },\n                'scrollbar-width': 'none',\n                '-webkit-overflow-scrolling': 'touch'\n            }\n        },\n        navItem: {\n            display: 'flex',\n            flexDirection: 'column',\n            width: {base: '95px', lg: '102px'},\n            maxWidth: {base: '95px', lg: '102px'},\n            minWidth: {base: '95px', lg: '102px'},\n            textAlign: 'center',\n            gap: '12px',\n            whiteSpace: 'normal'\n        },\n        visualNavImg: {\n            height: {base: '95px', lg: '102px'},\n            borderRadius: '50%'\n        },\n        visualNavText: {\n            sx: {\n                'text-wrap': 'balance'\n            },\n            fontSize: '11px',\n            lineHeight: '16px'\n        },\n        variants: {\n            grid: {\n                navList: {\n                    display: 'flex',\n                    flexWrap: 'wrap',\n                    justifyContent: 'flex-start',\n                    gap: {base: '8px', lg: '12px'},\n                    overflow: 'visible',\n                    whiteSpace: 'normal'\n                },\n                navItem: {\n                    width: {base: '98px', lg: '98px'},\n                    maxWidth: {base: '98px', lg: '98px'},\n                    minWidth: {base: '98px', lg: '98px'},\n                    textAlign: 'center',\n                    gap: '12px',\n                    whiteSpace: 'normal'\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'wrapper',\n    'spaces',\n    'tabSpace',\n    'bracketLeft',\n    'bracketRight',\n    'tabIndicator'\n])\n\nexport const ContentTabs = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        wrapper: {\n            fontWeight: 400,\n            fontSize: 'xs',\n            color: '#828282',\n            textTransform: 'uppercase',\n            _selected: {\n                color: '#211710'\n            }\n        },\n        spaces: {\n            pl: {base: 8, md: 12, lg: 16}\n        },\n        tabSpace: {\n            pl: 0\n        },\n        bracketLeft: {\n            mr: '2px',\n            ml: '2px',\n            color: '#e6e6e6'\n        },\n        bracketRight: {\n            ml: '2px',\n            color: '#e6e6e6'\n        },\n        tabIndicator: {\n            mt: '-1.5px',\n            height: '1px',\n            bg: 'charcoalBlack',\n            borderRadius: '1px'\n        },\n        tabPanelWrapper: {\n            padding: 0\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'button',\n    'badge',\n    'chip',\n    'scrollArea',\n    'searchResultCount',\n    'pill',\n    'pillBadge',\n    'productCount',\n    'separator'\n])\n\nexport const FilterBar = helpers.defineMultiStyleConfig({\n    baseStyle: ({isActive}) => ({\n        button: {\n            textTransform: 'uppercase',\n            fontSize: 'xs',\n            lineHeight: '20px',\n            maxHeight: '24px',\n            textWrap: 'nowrap',\n            whiteSpace: 'nowrap',\n            color: isActive ? 'black1' : 'subdued',\n            bg: 'white',\n            py: 8,\n            pr: 4,\n            mr: 4,\n            display: 'flex',\n            flexShrink: 0,\n            gap: 2,\n            alignItems: 'center',\n            _after: {\n                content: \"''\",\n                display: 'block',\n                width: '1px',\n                height: '12px',\n                background: 'lightGrey',\n                ml: 4\n            }\n        },\n        badge: {\n            backgroundColor: 'black5',\n            height: '24px',\n            borderRadius: '20px',\n            py: '2px',\n            px: '12px',\n            color: 'black'\n        },\n        chip: {\n            textTransform: 'uppercase',\n            fontSize: 'xs',\n            display: 'inline-flex',\n            alignItems: 'center',\n            lineHeight: '20px',\n            textWrap: 'nowrap',\n            whiteSpace: 'nowrap',\n            color: isActive ? 'black1' : 'subdued',\n            flexShrink: 0,\n            py: 4\n        },\n        scrollArea: {\n            overflowX: 'auto',\n            position: 'relative',\n            scrollbarWidth: 'none',\n            'button:nth-of-type(1n+7)': {\n                display: 'none'\n            }\n        },\n        searchResultCount: {\n            textTransform: 'uppercase',\n            color: 'black3a',\n            fontSize: 3,\n            lineHeight: '16px'\n        },\n        pill: {\n            display: 'inline-flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            gap: 2,\n            flexShrink: 0,\n            position: 'relative',\n            // Contain the hit-area layering so the ::before never escapes the pill's\n            // own stacking context and overlaps neighbouring bar elements.\n            isolation: 'isolate',\n            height: '24px',\n            py: '2px',\n            pl: '12px',\n            pr: isActive ? '4px' : '12px',\n            color: 'black1',\n            bg: 'black5',\n            border: '1px solid',\n            borderColor: 'black4',\n            borderRadius: '12px',\n            // Icon and badge sit above the transparent hit-area overlay so it never\n            // paints over them (FIND-6817).\n            '& > *': {\n                position: 'relative',\n                zIndex: 1\n            },\n            _before: {\n                content: \"''\",\n                position: 'absolute',\n                top: '50%',\n                left: '50%',\n                transform: 'translate(-50%, -50%)',\n                minWidth: '44px',\n                minHeight: '44px',\n                zIndex: 0\n            },\n            _focusVisible: {\n                outline: '2px solid',\n                outlineColor: 'black1',\n                outlineOffset: '2px'\n            }\n        },\n        pillBadge: {\n            display: 'inline-flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            minWidth: '16px',\n            height: '16px',\n            borderRadius: 'full',\n            bg: 'black3a',\n            color: 'white'\n        },\n        productCount: {\n            textTransform: 'uppercase',\n            color: 'black1',\n            fontSize: 3,\n            lineHeight: '20px',\n            textWrap: 'nowrap',\n            whiteSpace: 'nowrap',\n            flexShrink: 0\n        },\n        // Mini vertical divider between the filter pill and the quick filters (FIND-6093).\n        separator: {\n            alignSelf: 'center',\n            height: '12px',\n            borderColor: 'black4',\n            flexShrink: 0\n        }\n    })\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {commonDrawerStyles} from 'pandora-shared-app/overrides/app/theme/components/project/rac-drawer'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const FilterDrawer = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        ...commonDrawerStyles,\n        accordion: {\n            borderTop: 0\n        },\n        accordionButton: {\n            maxHeight: '64px',\n            padding: '24px 0',\n            boxSizing: 'border-box',\n            justifyContent: 'space-between'\n        },\n        colorButton: {\n            outer: {\n                width: '38px',\n                height: '38px',\n                borderRadius: 'full',\n                backgroundColor: 'white',\n                padding: 0,\n                minWidth: '38px',\n                _hover: {\n                    borderColor: 'gray.200',\n                    borderWidth: 1,\n                    borderStyle: 'solid'\n                },\n                _active: {\n                    background: 'transparent'\n                }\n            },\n            inner: {\n                width: '28px',\n                height: '28px',\n                borderRadius: 'full',\n                _focus: {\n                    outline: 'none'\n                }\n            }\n        },\n        plate: {\n            border: '1px solid',\n            borderColor: 'gray.200',\n            borderRadius: 0,\n            height: 10,\n            fontSize: 'xs',\n            letterSpacing: '0',\n            padding: 0\n        },\n        radio: {\n            borderColor: 'newColors.lightGray',\n            _checked: {\n                background: 'white',\n                _before: {\n                    content: '\"\"',\n                    display: 'block',\n                    width: 2.5,\n                    height: 2.5,\n                    borderRadius: 'full',\n                    bg: 'black'\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'title'])\n\nexport const RecirculationNavigator = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            gap: 8,\n            rowGap: 8,\n            paddingTop: 4,\n            paddingBottom: 8\n        },\n        title: {\n            fontSize: [5, 5, 5, 7],\n            textTransform: 'uppercase',\n            color: 'secondaryColor'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['button', 'badge'])\n\nexport const SearchResultHeader = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            paddingTop: 12\n        },\n        headingMarginBottom: {\n            marginBottom: 3\n        },\n        searchLabel: {\n            fontSize: [5, 5, 5, 7],\n            textTransform: 'uppercase',\n            color: 'black3a'\n        },\n        searchQuery: {\n            fontSize: [5, 5, 5, 7],\n            textTransform: 'uppercase',\n            color: 'black1'\n        },\n        noResultText: {\n            fontSize: '13px',\n            color: 'black3b',\n            lineHeight: '20px'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['box'])\n\nexport const CollaborationLogo = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        box: {\n            width: 'auto',\n            display: 'inline-flex',\n\n            svg: {\n                maxWidth: '100%'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['text'])\n\nexport const EyebrowText = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        text: {\n            mb: {base: 2, md: 3}\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const Description = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            marginBottom: 4\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\n/**\n * Multi-style config helpers for VideoPlayer component\n * Defines style parts: container, backgroundVideo, ctrlContainer, lazyLoadContainer\n */\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'backgroundVideo',\n    'ctrlContainer',\n    'lazyLoadContainer'\n])\n\n/**\n * VideoPlayer style configuration\n * Defines base styles for all style parts of the VideoPlayer component\n */\nexport const VideoPlayer = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        // Main container - holds all video player elements\n        container: {\n            position: 'relative',\n            width: '100%',\n            height: '100%',\n            overflow: 'hidden',\n            backgroundColor: 'transparent'\n        },\n\n        // Lazy load wrapper container\n        // Used when lazy loading is enabled\n        lazyLoadContainer: {\n            position: 'relative',\n            width: '100%',\n            height: '100%',\n            overflow: 'hidden',\n            backgroundColor: 'transparent'\n        },\n\n        // Background video container\n        // Video is below poster initially, above when ready\n        backgroundVideo: {\n            position: 'relative',\n            top: 0,\n            left: 0,\n            width: '100%',\n            height: '100%',\n            overflow: 'hidden',\n            backgroundColor: 'transparent',\n            zIndex: 0, // Default below poster\n            // Ensure all nested divs are transparent\n            '& > div': {\n                backgroundColor: 'transparent !important'\n            },\n            // ReactPlayer wrapper transparency\n            '& .background-video': {\n                backgroundColor: 'transparent !important',\n                '& > div': {\n                    backgroundColor: 'transparent !important'\n                }\n            },\n            // Video element styling\n            video: {\n                objectFit: 'cover',\n                backgroundColor: 'transparent'\n            }\n        },\n\n        // Controls container\n        // Positioned at bottom with animation support\n        ctrlContainer: {\n            width: '100%',\n            position: 'absolute',\n            left: 0,\n            bottom: 0,\n            zIndex: 2, // Above video and poster\n            color: 'white'\n        },\n\n        // Poster image container\n        // Positioned absolutely to cover full area\n        // Above video when loading, below when video is ready\n        images: {\n            top: 0,\n            left: 0,\n            position: 'absolute',\n            width: '100%',\n            height: '100%',\n            zIndex: 1, // Default above video, below controls\n            pointerEvents: 'none', // Allow clicks to pass through to video\n            backgroundColor: 'transparent'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['controlIcon', 'controlWrapper'])\n\nexport const VideoControls = helpers.defineMultiStyleConfig({\n    baseStyle: (props) => {\n        const defaultRight = {base: 0, md: 12, xl: 16}\n        const defaultBottom = 0\n\n        // Only apply position if explicitly set and not conflicting\n        const position = {\n            bottom: props.bottom || defaultBottom // Always at bottom\n        }\n\n        // Handle horizontal positioning (right/left)\n        if (props.left != null) {\n            position.left = props.left\n        } else if (props.right != null) {\n            position.right = props.right ?? defaultRight\n        } else {\n            position.right = defaultRight // Default case\n        }\n\n        return {\n            controlIcon: {\n                width: 16,\n                height: 16,\n\n                svg: {\n                    width: 5,\n                    height: 5\n                }\n            },\n            controlWrapper: {\n                direction: 'ltr',\n                display: 'flex',\n                justifyContent: 'center',\n                alignItems: 'center',\n                position: 'absolute',\n                ...position,\n                zIndex: 2,\n                '& > button': {\n                    padding: 0\n                },\n                bgColor: 'black1'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['copyrightText'])\n\nexport const CopyrightText = helpers.defineMultiStyleConfig({\n    baseStyle: ({variant, color, direction}) => {\n        const isRTL = direction === 'rtl'\n        const baseStyle = {\n            position: 'absolute',\n            color: color ?? 'white',\n            textAlign: isRTL ? 'left' : 'right',\n            zIndex: 1\n        }\n\n        switch (variant) {\n            case 'image':\n                return {\n                    copyrightText: {\n                        ...baseStyle,\n                        bottom: 3,\n                        [isRTL ? 'left' : 'right']: 3,\n                        width: {base: '60%', md: 'auto'}\n                    }\n                }\n            case 'video-controller-right':\n                return {\n                    copyrightText: {\n                        ...baseStyle,\n                        bottom: 19,\n                        [isRTL ? 'left' : 'right']: {base: 3, md: 12, xl: 16}\n                    }\n                }\n            case 'plp-video-controller-right':\n                return {\n                    copyrightText: {\n                        ...baseStyle,\n                        bottom: 19,\n                        [isRTL ? 'left' : 'right']: {base: 3}\n                    }\n                }\n            case 'video-controller-left':\n                return {\n                    copyrightText: {\n                        ...baseStyle,\n                        bottom: 3,\n                        [isRTL ? 'right' : 'left']: {base: 3, md: 12, xl: 16}\n                    }\n                }\n            default:\n                return {\n                    copyrightText: {\n                        ...baseStyle\n                    }\n                }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['alert', 'icon', 'title'])\n\nexport const MediaError = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            width: '100%',\n            height: '100%'\n        },\n        alert: {\n            flexDirection: 'column',\n            alignItems: 'center',\n            justifyContent: 'center',\n            textAlign: 'center'\n        },\n        icon: {\n            m: 0\n        },\n        title: {\n            mx: 0,\n            my: 4\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const Media = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            background: 'white',\n            height: '100%',\n            width: '100%'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'bgImage'])\n\nexport const ImageCard = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            position: 'relative',\n            height: '100%',\n            width: '100%',\n\n            '.lazyload-wrapper': {\n                position: 'relative',\n                width: '100%',\n                height: '100%',\n                overflow: 'hidden'\n            }\n        },\n        bgImage: {\n            objectFit: 'cover'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'label'])\n\nexport const ImagePlaceholder = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            width: '100%',\n            backgroundColor: 'black5'\n        },\n        label: {\n            color: 'black3a',\n            textStyle: 'bodySm',\n            textAlign: 'center',\n            px: 4\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'card'])\n\nexport const CraftAndQuality = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            paddingTop: {base: 8, xl: 16},\n            paddingBottom: 32,\n            display: 'flex',\n            gap: 6,\n            flexDirection: 'column',\n\n            '.caq-carousel': {\n                rowGap: 8\n            },\n\n            '.swiper': {\n                mx: {base: -8, md: -12},\n                px: {base: 8, md: 12}\n            }\n        },\n        card: {\n            display: 'flex',\n            gap: 6,\n            flexDirection: 'column',\n\n            grid: {\n                mx: 0\n            },\n\n            info: {\n                display: 'flex',\n                gap: 2,\n                flexDirection: 'column',\n\n                p: {\n                    textStyle: 'bodySm'\n                },\n\n                subHeading: {\n                    color: 'black1'\n                },\n\n                description: {\n                    color: 'black3a'\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {\n    CAROUSEL_CLASS,\n    INDICATOR_POSITION\n} from 'pandora-shared-app/overrides/app/components/carousel/constants'\n\nimport {getEntryCardsKcpThemeStyle, MODULE_PAGE, SPACE_BETWEEN} from './constants'\n\nconst carouselHeaderSelector = `.${CAROUSEL_CLASS.HEADER}`\nconst carouselBodySelector = `.${CAROUSEL_CLASS.BODY}`\nconst carouselControlsSelector = `.${INDICATOR_POSITION.TOP_RIGHT}`\n\nconst helpers = createMultiStyleConfigHelpers([\n    'root',\n    'carouselWrapper',\n    'gridWrapper',\n    'header',\n    'title',\n    'subheader',\n    'ctaContainer'\n])\n\nconst pageMarginX = {base: 8, md: 12, xl: 16}\nconst bleedMarginX = {base: -8, md: -12, xl: 0}\nconst bleedPaddingX = {base: 8, md: 12, xl: 0}\nconst desktopLayoutColumns = 12\nconst desktopSubheaderColumns = 4\nconst desktopGutter = SPACE_BETWEEN.LARGE\nconst desktopLayoutGutterWidth = (desktopLayoutColumns - 1) * desktopGutter\nconst desktopSubheaderGutterWidth = (desktopSubheaderColumns - 1) * desktopGutter\nconst desktopSubheaderWidth = `calc((100% - ${desktopLayoutGutterWidth}px) / ${\n    desktopLayoutColumns / desktopSubheaderColumns\n} + ${desktopSubheaderGutterWidth}px)`\n\nexport const EntryCards = helpers.defineMultiStyleConfig({\n    baseStyle: ({modulePage, isGridLayout, KCPTheme} = {}) => {\n        const isHomepage = !modulePage || modulePage === MODULE_PAGE.HOMEPAGE\n        const {backgroundColor, textColor} = getEntryCardsKcpThemeStyle(KCPTheme)\n\n        return {\n            root: {\n                bgColor: backgroundColor,\n                height: isHomepage ? '100%' : 'auto',\n                minHeight: isHomepage ? '95vh' : 'auto',\n                display: isHomepage ? 'flex' : 'block',\n                flexDirection: 'column',\n                justifyContent: 'center',\n                mx: isHomepage ? 0 : pageMarginX,\n                px: isHomepage ? pageMarginX : 0,\n                pt: isHomepage ? 2 : {base: 8, xl: 16},\n                pb: isHomepage ? 2 : {base: 16, xl: 32},\n                '@supports (height: 95svh)': {\n                    minHeight: isHomepage ? '95svh' : 'auto'\n                },\n\n                [carouselHeaderSelector]: {\n                    alignItems: 'flex-start',\n                    justifyContent: 'space-between',\n                    gap: 8,\n                    mb: 6,\n\n                    '&:empty': {\n                        display: 'none'\n                    },\n\n                    [carouselControlsSelector]: {\n                        mb: 0,\n                        mr: 0,\n                        alignSelf: 'flex-end',\n\n                        div: {\n                            bgColor: backgroundColor\n                        },\n\n                        button: {\n                            bgColor: backgroundColor,\n                            color: textColor,\n                            transition: 'none',\n\n                            _hover: {\n                                bgColor: backgroundColor,\n                                color: textColor,\n                                opacity: 1\n                            },\n\n                            _active: {\n                                bgColor: backgroundColor,\n                                color: textColor,\n                                opacity: 1\n                            }\n                        }\n                    }\n                },\n\n                [carouselBodySelector]: {\n                    display: isGridLayout ? {base: 'none', md: 'block'} : 'block',\n                    mx: bleedMarginX,\n                    px: bleedPaddingX\n                }\n            },\n\n            carouselWrapper: {\n                width: '100%'\n            },\n\n            gridWrapper: {\n                display: {base: 'grid', md: 'none'}\n            },\n\n            header: {\n                display: 'flex',\n                flexDirection: 'column',\n                flex: 1,\n                minWidth: 0,\n                gap: 1\n            },\n\n            title: {\n                textStyle: {base: 'headingSm', xl: 'headingMd'},\n                textTransform: 'uppercase',\n                color: textColor\n            },\n\n            subheader: {\n                textStyle: 'bodySm',\n                color: textColor,\n                maxWidth: {base: '100%', xl: desktopSubheaderWidth},\n                overflow: 'hidden',\n                textOverflow: 'ellipsis',\n                display: '-webkit-box',\n                WebkitLineClamp: 3,\n                WebkitBoxOrient: 'vertical'\n            },\n\n            ctaContainer: {\n                display: 'flex',\n\n                '> a': {\n                    textStyle: 'bodySm',\n                    color: textColor,\n                    lineHeight: 5,\n                    fontVariantNumeric: 'lining-nums proportional-nums',\n                    fontFeatureSettings: \"'liga' off, 'clig' off\"\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {\n    durationQuick1,\n    durationQuick2,\n    timingStandardDecelerate\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nimport {getEntryCardsKcpThemeStyle} from '../../constants'\n\nconst helpers = createMultiStyleConfigHelpers(['root', 'media', 'details', 'title', 'description'])\n\nconst TITLE_CLASS = '.entry-card-title'\n\nexport const EntryCard = helpers.defineMultiStyleConfig({\n    baseStyle: (props) => {\n        const underline = props?.theme?.sizes?.px\n        const {textColor, descriptionColor} = getEntryCardsKcpThemeStyle(props?.KCPTheme)\n\n        return {\n            root: {\n                display: 'block',\n                width: '100%',\n                textDecoration: 'none',\n\n                _hover: {\n                    [TITLE_CLASS]: {\n                        backgroundSize: `100% ${underline}`,\n                        transition: `background-size ${durationQuick2}s ${timingStandardDecelerate} ${durationQuick1}s`\n                    }\n                }\n            },\n\n            media: {\n                width: '100%',\n                overflow: 'hidden'\n            },\n\n            details: {\n                display: 'flex',\n                flexDirection: 'column',\n                gap: 2,\n                pt: 4,\n                pr: 1\n            },\n\n            title: {\n                textStyle: {base: 'bodyMd', xl: 'bodyLg'},\n                color: textColor,\n                display: 'inline',\n                alignSelf: 'flex-start',\n                backgroundImage: 'linear-gradient(to right, currentColor 0 100%)',\n                backgroundRepeat: 'no-repeat',\n                backgroundPosition: 'left bottom',\n                backgroundSize: `0% ${underline}`,\n                transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}`\n            },\n\n            description: {\n                textStyle: 'caption',\n                color: descriptionColor,\n                overflow: 'hidden',\n                textOverflow: 'ellipsis',\n                display: '-webkit-box',\n                WebkitLineClamp: 3,\n                WebkitBoxOrient: 'vertical'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {PromoVariants} from 'content/overrides/app/constants'\n\nconst helpers = createMultiStyleConfigHelpers(['contentPromoMessage'])\n\nexport const ContentPromoMessage = helpers.defineMultiStyleConfig({\n    baseStyle: ({variant}) => {\n        const defaults = {\n            labelBackgroundColor: 'pandoraPink',\n            labelTextColor: 'black1',\n            isLabelHidden: true\n        }\n\n        const variantStyles = {\n            [PromoVariants.EARLY_ACCESS]: {\n                labelBackgroundColor: 'pandoraPink40',\n                isLabelHidden: false\n            },\n            [PromoVariants.ADDED_MESSAGING]: {\n                labelBackgroundColor: 'pandoraPink',\n                isLabelHidden: false\n            },\n            [PromoVariants.MAXIMUM_ESCALATION]: {\n                labelBackgroundColor: 'black1',\n                labelTextColor: 'white',\n                isLabelHidden: false\n            }\n        }\n\n        const styles = {...defaults, ...variantStyles[variant]}\n\n        return {\n            label: {\n                display: styles.isLabelHidden ? 'none' : 'inline-block',\n                backgroundColor: styles.labelBackgroundColor,\n                padding: 1,\n                color: styles.labelTextColor,\n                maxWidth: 'fit-content'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'videoContainer',\n    'collabLogoContainer',\n    'descriptionGrid',\n    'descriptionContainer'\n])\n\nconst HALF_WIDTH_GAP = 4\nconst HALF_WIDTH_TEMPLATE_COLUMNS = 'repeat(6, 1fr)'\nconst INGRID_DESCRIPTION_MARGIN_X = {base: 0, md: 12, xl: 0}\nconst DEFAULT_DESCRIPTION_MARGIN_X = {base: 8, md: 12, xl: 16}\nconst INGRID_MEDIA_MARGIN_X = {base: -8, md: 0}\n\nexport const FeatureVideo = helpers.defineMultiStyleConfig({\n    baseStyle: ({isHalfWidthInGrid, isInGrid}) => {\n        const isFullWidthInGrid = Boolean(isInGrid && !isHalfWidthInGrid)\n\n        let descriptionGrid = {}\n        if (isHalfWidthInGrid) {\n            descriptionGrid = {\n                gridColumn: {base: 'auto', xl: '1 / -1'},\n                templateColumns: HALF_WIDTH_TEMPLATE_COLUMNS,\n                columnGap: HALF_WIDTH_GAP,\n                gap: HALF_WIDTH_GAP,\n                mx: 0\n            }\n        } else if (isFullWidthInGrid) {\n            descriptionGrid = {mx: 0}\n        }\n\n        return {\n            container: {\n                paddingBottom: isHalfWidthInGrid ? 0 : 32,\n                paddingTop: isHalfWidthInGrid ? 0 : {base: 8, xl: 16},\n                bgColor: 'white',\n                ...(isHalfWidthInGrid && {\n                    display: {base: 'block', xl: 'grid'},\n                    gridTemplateColumns: HALF_WIDTH_TEMPLATE_COLUMNS,\n                    gap: HALF_WIDTH_GAP\n                })\n            },\n            videoContainer: {\n                aspectRatio: {base: 3 / 4, xl: isHalfWidthInGrid ? 3 / 4 : 16 / 9},\n                marginBottom: 8,\n                ...(isInGrid && {marginX: INGRID_MEDIA_MARGIN_X}),\n                ...(isHalfWidthInGrid && {gridColumn: {base: 'auto', xl: '2 / span 4'}})\n            },\n            collabLogoContainer: {\n                marginBottom: 6\n            },\n            descriptionGrid,\n            descriptionContainer: {\n                marginLeft:\n                    isHalfWidthInGrid || isFullWidthInGrid\n                        ? INGRID_DESCRIPTION_MARGIN_X\n                        : DEFAULT_DESCRIPTION_MARGIN_X,\n                marginRight:\n                    isHalfWidthInGrid || isFullWidthInGrid\n                        ? INGRID_DESCRIPTION_MARGIN_X\n                        : DEFAULT_DESCRIPTION_MARGIN_X,\n                color: 'black1'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'root',\n    'mobileLayout',\n    'innerGrid',\n    'mediaBox',\n    'textColumn',\n    'textStack',\n    'collaborationContainer',\n    'title',\n    'message',\n    'ctaContainer',\n    'ctaButton'\n])\n\nexport const ExplorePrompt = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        root: {\n            margin: 0,\n            padding: 0,\n            width: '100%',\n            maxWidth: 'none'\n        },\n        mobileLayout: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 6\n        },\n        innerGrid: {\n            display: 'flex',\n            flexDirection: 'row',\n            gap: {md: 8, xl: 12}\n        },\n        mediaBox: {\n            width: '100%',\n            flex: {md: '0 0 calc((100% - 32px) / 2)', xl: '0 0 calc((100% - 48px) / 2)'},\n            aspectRatio: '4 / 3',\n            overflow: 'hidden',\n            backgroundColor: 'gray.100'\n        },\n        textColumn: {\n            display: 'flex',\n            flexDirection: 'column',\n            width: '100%',\n            flex: {md: '0 0 calc((100% - 32px) / 2)', xl: '0 0 calc((100% - 48px) / 2)'},\n            alignSelf: 'stretch',\n            justifyContent: 'space-between',\n            gap: 0\n        },\n        textStack: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 6\n        },\n        collaborationContainer: {\n            display: 'flex',\n            alignItems: 'flex-start'\n        },\n        title: {\n            textStyle: 'headingSm',\n            textTransform: 'uppercase',\n            textAlign: {base: 'left'},\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            display: '-webkit-box',\n            WebkitLineClamp: 2,\n            WebkitBoxOrient: 'vertical'\n        },\n        message: {\n            textStyle: 'bodySm',\n            color: 'black1',\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            display: '-webkit-box',\n            WebkitLineClamp: 3,\n            WebkitBoxOrient: 'vertical'\n        },\n        ctaContainer: {\n            width: '100%',\n            marginTop: {base: 2, md: 0}\n        },\n        ctaButton: {\n            minWidth: {base: '100%', md: 'auto'}\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['partialDrawerStyle', 'overlayStyle'])\n\nexport const IdleUserOverlay = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        partialDrawerStyle: {\n            height: 'auto',\n            zIndex: 'idleOverlay',\n            borderTop: '1px solid',\n            borderColor: 'black4',\n            '.close-btn': {\n                ml: 'auto',\n                mr: {base: 0, xl: -6},\n                '[dir=\"rtl\"] &': {\n                    mr: 'auto',\n                    ml: {base: 0, xl: -6}\n                }\n            },\n            '.chakra-drawer__body': {\n                px: 0,\n                pb: {base: 8, md: 12, xl: 16},\n                pt: {base: 4, md: 6, xl: 8}\n            }\n        },\n        overlayStyle: {\n            zIndex: 'overlay'\n        }\n    }\n})\n","import {durationExtended1, easeStandard} from 'pandora-shared-app/overrides/app/utils/motion'\n\nexport const FullScreenMediaTileMedia = {\n    baseStyle: {\n        container: {\n            position: 'relative',\n            height: '100%',\n            zIndex: 0,\n            transition: {duration: durationExtended1, ease: easeStandard, delay: 0},\n            initial: {opacity: 0},\n            animate: {opacity: 1}\n        },\n        box: {\n            backgroundPosition: 'center',\n            backgroundSize: 'cover',\n            height: '100%'\n        }\n    }\n}\n","import colors from 'pandora-shared-app/overrides/app/theme/foundations/colors'\n\nexport const FullScreenMediaTileTitle = (textColorBlack = false) => {\n    const textColor = textColorBlack ? 'black1' : 'white'\n\n    return {\n        baseStyle: {\n            container: {\n                position: 'absolute',\n                // `container` is applied as an inline style on a framer-motion div, where theme\n                // tokens are not resolved, so the colour has to be a plain CSS value.\n                color: textColorBlack ? colors.black1 : 'white',\n                width: '100%',\n                bottom: '4rem',\n                zIndex: 4,\n                minHeight: 25\n            },\n            icon: {\n                display: 'inline-flex',\n                mb: {base: 2, xl: 3}\n            },\n            titleStyle: {\n                size: 'lg',\n                fontSize: {base: '1.75rem', md: '2.5rem'},\n                lineHeight: '145%',\n                textTransform: 'uppercase',\n                color: textColor\n            },\n            grid: {\n                mt: 0,\n                mb: {base: 8, md: 12, xl: 16}\n            },\n            gridItem: {\n                colSpan: {base: 6, md: 4}\n            }\n        }\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {FullScreenMediaTileMedia} from './partials/full-screen-media-tile-media/full-screen-media-tile-media.style'\nimport {FullScreenMediaTileTitle} from './partials/full-screen-media-tile-title/full-screen-media-tile-title.style'\nimport colors from 'pandora-shared-app/overrides/app/theme/foundations/colors'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'content',\n    'ctaWrapper',\n    'cta',\n    'link',\n    'media',\n    'title',\n    'ctaLinkStyle'\n])\n\nexport const FullScreenMediaTile = helpers.defineMultiStyleConfig({\n    baseStyle: (props = {}) => {\n        const direction = props.direction || 'ltr'\n        const isRTL = direction === 'rtl'\n        const textColorBlack = Boolean(props.textColorBlack)\n\n        return {\n            container: {\n                height: '100%',\n\n                position: 'relative',\n                overflow: 'hidden',\n                top: 0,\n                bg: 'transparent'\n            },\n            content: {\n                height: '100%',\n                overflow: 'hidden',\n                position: 'relative'\n            },\n            ctaWrapper: {\n                left: isRTL ? 'auto' : {base: 0, md: 12, xl: 16},\n                right: isRTL ? {base: 0, md: 12, xl: 16} : 'auto',\n                position: 'relative'\n            },\n            ctaStyle: {\n                width: 'auto',\n                position: 'absolute',\n                left: isRTL ? 'auto' : 0,\n                right: isRTL ? 0 : 'auto',\n                bottom: 0,\n                zIndex: 5,\n                color: 'white'\n            },\n            ctaBgStyle: {\n                backgroundColor: colors.pandoraPink,\n                height: 15,\n                position: 'absolute',\n                left: isRTL ? 'auto' : 0,\n                right: isRTL ? 0 : 'auto',\n                bottom: 0,\n                zIndex: 3\n            },\n            linkStyle: {\n                width: '100%',\n                height: '100%',\n                padding: 0,\n                border: 'none'\n            },\n            media: {\n                ...FullScreenMediaTileMedia\n            },\n            title: FullScreenMediaTileTitle(textColorBlack),\n            ctaLinkStyle: {\n                position: 'relative',\n                width: 'auto',\n                overflow: 'hidden',\n                display: 'inline-flex'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'contentLinkContainer',\n    'container',\n    'grid',\n    'flexContent',\n    'link',\n    'largeMediaBox',\n    'largeMediaMotionBox',\n    'largeImage',\n    'imageContainer'\n])\n\nexport const InsetMediaTile = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        contentLinkContainer: {\n            width: '100%',\n            height: '100%',\n            paddingBottom: 0,\n            border: 0\n        },\n        container: {\n            backgroundColor: 'white',\n            position: 'relative',\n            height: '100%',\n            display: 'flex',\n            alignItems: {base: 'center', lg: 'normal'},\n            overflow: 'hidden',\n            top: 0,\n            cursor: 'pointer'\n        },\n        grid: {\n            marginX: 8,\n            height: 'full'\n        },\n        flexContent: {\n            width: {base: 'full', md: 'full', xl: '50%'},\n            height: 'full',\n            justifyContent: 'center',\n            flexDirection: 'column',\n            marginX: 'auto',\n            py: {base: 20, md: 32}\n        },\n        link: {\n            textStyle: 'bodySm',\n            marginBottom: 8,\n            paddingBottom: '0.5'\n        },\n        largeMediaBox: {\n            width: '50%',\n            height: 'full',\n            display: {base: 'none', xl: 'block'},\n            position: 'absolute',\n            insetInlineEnd: 0,\n            backgroundColor: 'pandoraPink',\n            overflow: 'hidden'\n        },\n        largeMediaMotionBox: {\n            height: 'full',\n            width: '100%',\n            position: 'absolute',\n            insetInlineEnd: 0,\n            transformOrigin: 'center'\n        },\n        largeImage: {\n            height: '100%',\n            width: '100%',\n            objectFit: 'cover'\n        },\n        imageContainer: {\n            position: 'relative',\n            height: '100%'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/react'\nimport {keyframes} from '@emotion/react'\nimport colors from 'pandora-shared-app/overrides/app/theme/foundations/colors'\n\nconst {definePartsStyle, defineMultiStyleConfig} = createMultiStyleConfigHelpers([\n    'container',\n    'radialDotAnimation'\n])\n\nexport const COLORS = {\n    corner: colors?.black || '#000000',\n    radial: colors?.black || '#000000',\n    cyberMonday: colors?.black || '#000000',\n    blackFriday: colors?.pandoraPink || '#FF93A0'\n}\n\n// Helper function to convert hex to rgba\nexport function hexToRGBA(hex, alpha = 1) {\n    const r = Number.parseInt(hex.slice(1, 3), 16)\n    const g = Number.parseInt(hex.slice(3, 5), 16)\n    const b = Number.parseInt(hex.slice(5, 7), 16)\n\n    return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\nconst baseStyle = definePartsStyle({\n    container: {\n        backgroundSize: 'cover',\n        height: '100%',\n        position: 'absolute',\n        inset: 0,\n        zIndex: 3\n    }\n})\n\nconst gradients = {\n    corner: {\n        base: `radial-gradient(313.41% 108.75% at 0% 100%, ${hexToRGBA(\n            COLORS.corner,\n            0.4\n        )} 0%, ${hexToRGBA(\n            COLORS.corner,\n            0\n        )} 100%), radial-gradient(205.36% 141.42% at 0% 100%, ${hexToRGBA(\n            COLORS.corner,\n            0.4\n        )} 0%, ${hexToRGBA(COLORS.corner, 0.39)} 30.45%, ${hexToRGBA(\n            COLORS.corner,\n            0.36\n        )} 35.94%, ${hexToRGBA(COLORS.corner, 0.31)} 42.28%, ${hexToRGBA(\n            COLORS.corner,\n            0.22\n        )} 50.1%, ${hexToRGBA(COLORS.corner, 0.14)} 56.67%, ${hexToRGBA(\n            COLORS.corner,\n            0.1\n        )} 64.69%, ${hexToRGBA(COLORS.corner, 0)} 100%)`,\n        md: `radial-gradient(251.78% 90.81% at 0% 100%, ${hexToRGBA(\n            COLORS.corner,\n            0.4\n        )} 0%, ${hexToRGBA(\n            COLORS.corner,\n            0\n        )} 100%), radial-gradient(205.36% 141.42% at 0% 100%, ${hexToRGBA(\n            COLORS.corner,\n            0.4\n        )} 0%, ${hexToRGBA(COLORS.corner, 0.39)} 25.06%, ${hexToRGBA(\n            COLORS.corner,\n            0.36\n        )} 29.31%, ${hexToRGBA(COLORS.corner, 0.31)} 33.83%, ${hexToRGBA(\n            COLORS.corner,\n            0.22\n        )} 41.76%, ${hexToRGBA(COLORS.corner, 0.14)} 49.2%, ${hexToRGBA(\n            COLORS.corner,\n            0.1\n        )} 55.71%, ${hexToRGBA(COLORS.corner, 0)} 100%)`,\n        xl: `radial-gradient(137.24% 71.37% at 14.93% 63.8%, ${hexToRGBA(\n            COLORS.corner,\n            0.3\n        )} 0%, ${hexToRGBA(\n            COLORS.corner,\n            0\n        )} 100%), radial-gradient(116.47% 101.25% at 7.08% 100%, ${hexToRGBA(\n            COLORS.corner,\n            0.4\n        )} 0%, ${hexToRGBA(COLORS.corner, 0.39)} 34%, ${hexToRGBA(\n            COLORS.corner,\n            0.36\n        )} 40%, ${hexToRGBA(COLORS.corner, 0.31)} 45%, ${hexToRGBA(\n            COLORS.corner,\n            0.22\n        )} 55%, ${hexToRGBA(COLORS.corner, 0.14)} 65%, ${hexToRGBA(\n            COLORS.corner,\n            0.1\n        )} 73.52%, ${hexToRGBA(COLORS.corner, 0)} 100%)`\n    },\n    radial: {\n        base: `radial-gradient(100.26% 29.71% at 50% 39.96%, ${hexToRGBA(\n            COLORS.radial,\n            0\n        )} 47.5%, ${COLORS.radial} 100%)`,\n        md: `radial-gradient(116.65% 34.62% at 50.07% 41.11%, ${hexToRGBA(\n            COLORS.radial,\n            0\n        )} 47.5%, ${COLORS.radial} 100%)`,\n        xl: `radial-gradient(57.77% 76.92% at 91.24% 78.78%, ${hexToRGBA(\n            COLORS.radial,\n            0\n        )} 38%, ${hexToRGBA(COLORS.radial, 0.01)} 45.31%, ${hexToRGBA(\n            COLORS.radial,\n            0.03\n        )} 51.26%, ${hexToRGBA(COLORS.radial, 0.07)} 56.05%, ${hexToRGBA(\n            COLORS.radial,\n            0.12\n        )} 59.91%, ${hexToRGBA(COLORS.radial, 0.18)} 63.03%, ${hexToRGBA(\n            COLORS.radial,\n            0.25\n        )} 65.63%, ${hexToRGBA(COLORS.radial, 0.33)} 67.91%, ${hexToRGBA(\n            COLORS.radial,\n            0.41\n        )} 70.09%, ${hexToRGBA(COLORS.radial, 0.5)} 72.37%, ${hexToRGBA(\n            COLORS.radial,\n            0.59\n        )} 74.97%, ${hexToRGBA(COLORS.radial, 0.67)} 78.09%, ${hexToRGBA(\n            COLORS.radial,\n            0.76\n        )} 81.95%, ${hexToRGBA(COLORS.radial, 0.85)} 86.74%, ${hexToRGBA(\n            COLORS.radial,\n            0.93\n        )} 92.69%, ${COLORS.radial} 100%)`\n    }\n}\n\nconst yKeyframes = keyframes`\n    0%{\n      -webkit-transform:\n        translateY(-0vh);\n    }\n    10%{\n      -webkit-transform:\n        translateY(-0vh);\n    }\n    40% {\n      -webkit-transform:\n        translateY(100vh)\n        rotate(-180deg);\n    }\n    60% {\n      -webkit-transform:\n        translateY(100vh)\n        rotate(-180deg);\n    }\n    90%{\n      -webkit-transform:\n        translateY(0vh)\n        rotate(0deg);\n    }\n`\n\nconst xKeyframes = keyframes`\n    0%{\n      -webkit-transform:\n        translateX(0);\n    }\n    10%{\n      -webkit-transform:\n        translateX(0);\n    }\n    25%{\n       -webkit-transform:\n        translateX(-20vw);\n    }\n    40% {\n      -webkit-transform:\n        translateX(0)\n    }\n    60% {\n      -webkit-transform:\n        translateX(0)\n    }\n    75%{\n       -webkit-transform:\n        translateX(-20vw);\n    }\n    90%{\n      -webkit-transform:\n        translateX(0)\n    }\n`\n\n// Helper function to get radial dot styles\nconst getDotStyles = (radialDotColor) => ({\n    animation: `${xKeyframes} 20s infinite linear`,\n    position: 'absolute',\n    top: {base: '-50vw', xl: '-25vw'},\n    left: {base: '-100vw', xl: '-50vw'},\n    _after: {\n        content: '\"\"',\n        display: 'block',\n        width: {base: '200vw', xl: '100vw'},\n        height: {base: '100vw', xl: '50vw'},\n        borderRadius: '100vw',\n        filter: {base: 'blur(40vw)', xl: 'blur(20vw)'},\n        backgroundColor: radialDotColor,\n        animation: `${yKeyframes} 20s infinite linear`\n    }\n})\n\nconst variants = {\n    corner: definePartsStyle({\n        container: {\n            backgroundImage: {\n                base: gradients.corner.base,\n                md: gradients.corner.md,\n                xl: gradients.corner.xl\n            }\n        }\n    }),\n    radial: definePartsStyle({\n        container: {\n            backgroundImage: {\n                base: gradients.radial.base,\n                md: gradients.radial.md,\n                xl: gradients.radial.xl\n            },\n            opacity: 0.55\n        }\n    }),\n    cyberMonday: definePartsStyle({\n        container: {\n            overflow: 'hidden',\n            backgroundColor: colors.cyberMonday\n        },\n        radialDotAnimation: getDotStyles(colors.black)\n    }),\n    blackFriday: definePartsStyle({\n        container: {\n            backgroundColor: colors.black,\n            overflow: 'hidden'\n        },\n        radialDotAnimation: getDotStyles(colors.pandoraPink)\n    })\n}\n\nexport const ContentDim = defineMultiStyleConfig({\n    baseStyle,\n    variants,\n    defaultProps: {\n        variant: 'corner'\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['heading', 'accordionCcontainerontainer'])\n\nexport const MultipleQandA = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            paddingTop: {base: 8, xl: 16},\n            paddingBottom: 32,\n            bgColor: 'white'\n        },\n        heading: {\n            marginBottom: {base: 24, md: 0}\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'accordionItem',\n    'questionContainer',\n    'question',\n    'answerContainer',\n    'answer',\n    'link'\n])\n\nexport const QuestionItem = helpers.defineMultiStyleConfig({\n    baseStyle: ({isFirst, isLast}) => ({\n        accordionItem: {\n            borderTop: isFirst ? 0 : '1px solid',\n            borderBottom: isLast && 0,\n            borderColor: 'black4'\n        },\n        questionContainer: {\n            display: 'flex',\n            flexDirection: 'row',\n            justifyContent: 'space-between',\n            pt: isFirst ? 0 : 8,\n            pb: 6,\n            alignItems: 'baseline',\n\n            h3: {\n                textTransform: 'unset'\n            }\n        },\n        answerContainer: {\n            marginRight: {base: 10, xl: 'unset'},\n            padding: 0,\n            marginBottom: 8\n        },\n        answer: {\n            color: 'black3a',\n            textAlign: 'left',\n            width: {xl: '66%'},\n            '& p': {\n                paddingBottom: 3\n            }\n        },\n        link: {\n            color: 'black3a',\n            textAlign: 'left'\n        }\n    })\n})\n","export const EntryPointsImageOverlay = {\n    baseStyle: {\n        container: {\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            width: '100%',\n            height: '100%',\n            backgroundColor: 'pandoraPink',\n            pointerEvents: 'none',\n            zIndex: 2\n        }\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {getEntryPointsLinkItemStyles} from './partials/entry-points-link/entry-points-link-item/entry-points-link-item.style'\nimport {EntryPointsImageOverlay} from './partials/entry-points-images/entry-points-image-overlay/entry-points-image-overlay.style'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'grid',\n    'itemsGridItem',\n    'fixedImageGridItem',\n    'fixedImageContainer',\n    'itemImageGridItem',\n    'itemImageContainer',\n    'itemsContainer'\n])\n\nexport const EntryPointsTile = helpers.defineMultiStyleConfig({\n    baseStyle: ({KCPTheme}) => {\n        let backgroundColor = 'white'\n        let textColor = 'black1'\n\n        if (KCPTheme) {\n            const normalizedTheme = KCPTheme.toLowerCase().trim()\n\n            const themeColorMapping = {\n                'black friday': 'black',\n                'cyber monday': 'pandoraPurple',\n                sale: 'pandoraRed',\n                'blue sale': 'black5'\n            }\n\n            const lightThemes = ['blue sale']\n\n            backgroundColor = themeColorMapping[normalizedTheme] || 'white'\n            textColor = lightThemes.includes(normalizedTheme) ? 'black1' : 'white'\n        }\n\n        let linkItemStyles = getEntryPointsLinkItemStyles(textColor)\n\n        return {\n            container: {\n                backgroundColor: backgroundColor,\n                position: 'relative',\n                display: 'flex',\n                flexDirection: 'column',\n                pt: {base: '6'},\n                color: textColor,\n\n                '.assurance-text-container': {\n                    WebkitLineClamp: 'unset'\n                }\n            },\n            grid: {\n                flex: 1,\n                mx: {base: '8', md: '12', xl: '16'}\n            },\n            itemsGridItem: {\n                height: '100%',\n                display: 'flex',\n                flexDirection: 'column',\n                justifyContent: 'space-between',\n                pb: {base: '8', xl: '14'}\n            },\n            fixedImageGridItem: {\n                height: '100%',\n                py: {base: '1', md: '14'}\n            },\n            fixedImageContainer: {\n                overflow: 'hidden',\n                width: '100%',\n                height: '100%',\n                position: 'relative'\n            },\n            itemImageGridItem: {\n                position: 'relative',\n                alignItems: {base: 'end', xl: 'start'},\n                display: 'flex',\n                height: '100%',\n                pt: {base: '14'},\n                pb: {base: '8', xl: '14'}\n            },\n            itemImageContainer: {\n                overflow: 'hidden',\n                width: '100%',\n                position: 'sticky',\n                bottom: {\n                    base: `calc(-5vh + 72px)`,\n                    xl: 'auto'\n                },\n                top: {base: 'auto', xl: '20'}\n            },\n            itemsContainer: {\n                position: 'sticky',\n                top: '14',\n                py: {\n                    base: '2.5',\n                    md: '14'\n                },\n                pb: {\n                    base: KCPTheme ? '34' : '8',\n                    md: KCPTheme ? '34' : '8',\n                    lg: KCPTheme ? '38' : '14'\n                }\n            },\n            imageLinkStyles: {width: '100%', height: '100%', padding: 0, border: 'none'},\n            EntryPointsLinkItem: {\n                ...linkItemStyles\n            },\n            EntryPointsImageOverlay: {...EntryPointsImageOverlay}\n        }\n    }\n})\n","export const getEntryPointsLinkItemStyles = (textColor) => ({\n    baseStyle: {\n        container: {\n            display: 'flex',\n            gap: 1,\n            alignItems: 'baseline',\n            color: textColor,\n            position: 'relative'\n        },\n        link: {\n            textDecoration: 'none',\n            color: textColor,\n            position: 'relative',\n            borderBottom: 'none'\n        },\n        underlineLine: {\n            position: 'absolute',\n            height: '1px',\n            backgroundColor: textColor,\n            transformOrigin: 'left',\n            pointerEvents: 'none'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'image'])\n\nexport const PageCover = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            m: 'auto',\n            h: 'full',\n            w: 'full'\n        },\n        image: {\n            width: '100%',\n            height: '100%',\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            objectFit: 'cover',\n            objectPosition: 'center center'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport breakpoints from 'pandora-shared-app/overrides/app/theme/foundations/breakpoints'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'logo', 'description', 'link'])\n\nconst XL_MEDIA_QUERY = `@media screen and (min-width: ${breakpoints.xl})`\n\nexport const PlpDescription = helpers.defineMultiStyleConfig({\n    baseStyle: (props) => ({\n        container: {\n            mt: props?.showSmall ? {base: 8} : {base: 8, xl: 0},\n            ...(!props?.showSmall &&\n                props?.isHalfWidthInGrid && {\n                    [XL_MEDIA_QUERY]: {\n                        mt: 0,\n                        mb: 2\n                    }\n                }),\n            '> *:last-child': {\n                mb: 0\n            }\n        },\n        logo: {\n            mb: 6\n        },\n        description: {\n            mb: 6,\n            ...(!props?.showSmall &&\n                props?.isHalfWidthInGrid && {\n                    [XL_MEDIA_QUERY]: {\n                        mb: 4,\n                        textStyle: 'bodySm'\n                    }\n                })\n        },\n        link: {\n            mb: 0\n        }\n    })\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {PlpDescription} from './partials/plp-description/plp-description.style'\nimport theme from '@salesforce/retail-react-app/app/theme'\nimport breakpoints from 'pandora-shared-app/overrides/app/theme/foundations/breakpoints'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'headerGrid',\n    'mediaGrid',\n    'descriptionGrid',\n    'plpDescription'\n])\n\nconst XL_MEDIA_QUERY = `@media screen and (min-width: ${breakpoints.xl})`\n\nconst halfWidthDesktop = (isHalfWidthInGrid, styles) =>\n    isHalfWidthInGrid ? {[XL_MEDIA_QUERY]: styles} : {}\n\nexport const PlpStories = helpers.defineMultiStyleConfig({\n    baseStyle: (props) => {\n        return {\n            container: {\n                height: '100%',\n                position: 'relative',\n                bg: 'white'\n            },\n            headerGrid: {\n                pt: props?.showSmall ? 0 : {base: 0, xl: 16},\n                pb: 32,\n                ...(!props?.showSmall &&\n                    halfWidthDesktop(props?.isHalfWidthInGrid, {\n                        pt: 0,\n                        mx: 0,\n                        gridTemplateColumns: 'repeat(6, 1fr)',\n                        gridTemplateAreas: `\"media\" \"header\" \"description\"`,\n                        gridTemplateRows: 'auto auto auto'\n                    })),\n\n                item: props?.showSmall\n                    ? {}\n                    : halfWidthDesktop(props?.isHalfWidthInGrid, {\n                          gridColumn: '2 / span 4'\n                      }),\n\n                heading: props?.showSmall\n                    ? {}\n                    : halfWidthDesktop(props?.isHalfWidthInGrid, {\n                          textStyle: 'headingMd',\n                          fontStyle: 'normal'\n                      }),\n\n                container: {\n                    py: props?.showSmall ? 8 : {base: 8, xl: 0},\n                    lineHeight: 0,\n                    ...(!props?.showSmall &&\n                        halfWidthDesktop(props?.isHalfWidthInGrid, {pt: 8, pb: 4}))\n                },\n\n                logo: {\n                    mb: props?.showSmall ? 4 : {base: 4, xl: 6},\n                    ...(!props?.showSmall && halfWidthDesktop(props?.isHalfWidthInGrid, {mb: 4}))\n                }\n            },\n            mediaGrid: {\n                container: {\n                    position: 'relative',\n                    mx: props?.showSmall ? {base: -8} : {base: -8, md: 0}\n                },\n\n                swiper: {\n                    background: '#FF93A0'\n                },\n\n                mediaItem: {\n                    background: 'white'\n                }\n            },\n\n            descriptionGrid: {\n                container: {\n                    '.swiper.swiper-fade': {\n                        '.swiper-slide': {\n                            pointerEvents: 'none !important',\n                            '&.swiper-slide-active': {\n                                pointerEvents: 'auto !important'\n                            },\n                            '&.swiper-slide-prev, &.swiper-slide-next': {\n                                zIndex: -1\n                            }\n                        }\n                    },\n                    ...(!props?.showSmall &&\n                        halfWidthDesktop(props?.isHalfWidthInGrid, {\n                            '.swiper .swiper-slide': {\n                                height: '100% !important'\n                            }\n                        }))\n                },\n\n                swiper: {\n                    height: props?.heightValue,\n\n                    box: {\n                        display: 'flex',\n                        flexDirection: 'column',\n                        justifyContent: 'flex-end',\n                        height: '100%',\n                        position: 'relative',\n                        width: '100%',\n                        transition: 'opacity 0.5s ease-in-out, transform .8s ease',\n                        opacity: 0,\n                        transform: `translateY(${theme.space[5]})`,\n                        '.swiper-slide-active &': {\n                            opacity: 1,\n                            transform: 'translateY(0)'\n                        }\n                    }\n                }\n            },\n\n            plpDescription: {\n                ...PlpDescription.baseStyle(props)\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'box'])\n\nexport const Panel = helpers.defineMultiStyleConfig({\n    baseStyle: ({isFixedPanel, panelNumber}) => {\n        return {\n            container: {\n                position: isFixedPanel ? 'relative' : 'sticky',\n                width: '100%',\n                bottom: isFixedPanel ? 'auto' : 0,\n                zIndex: 10 - panelNumber\n            },\n\n            box: {\n                position: 'relative',\n                height: '100%'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const ErrorAlert = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            m: `5rem`,\n            w: `calc(100% - 10rem)`,\n            flexDirection: 'column',\n            alignItems: 'flex-start',\n\n            title: {\n                fontSize: 5,\n                fontWeight: 'bold'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {ErrorAlert} from './partials/error-alert/error-alert.style'\n\nconst helpers = createMultiStyleConfigHelpers(['errorAlert'])\n\nexport const ContentVisualization = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        errorAlert: {\n            ...ErrorAlert?.baseStyle\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {PromoVariants} from 'content/overrides/app/constants'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'contentLinkContainer',\n    'container',\n    'grid',\n    'flexContent',\n    'link',\n    'label',\n    'heading',\n    'description',\n    'controlIcon',\n    'controlWrapper'\n])\n\nexport const PromoInsetTile = helpers.defineMultiStyleConfig({\n    baseStyle: ({promoVariant, context, isFullWidth = true}) => {\n        const containerBackgroundColor =\n            promoVariant === PromoVariants.MAXIMUM_ESCALATION ? 'pandoraPink' : 'white'\n\n        const isGridSpot = context === 'grid-spot'\n\n        // Spacing differs between the two variants:\n        // - Full width spans the whole product grid row. As a grid spot it bleeds to\n        //   the row edges via negative container margins that are cancelled by matching\n        //   grid padding, and it uses generous vertical padding.\n        // - Half width (INS-4948) sits inside a single grid cell, so it must not bleed\n        //   and carries no vertical padding. Its horizontal inset comes from the empty\n        //   1st/6th grid columns on desktop, so padding is only needed on smaller\n        //   screens where the content spans all 6 columns.\n        const spacing = isFullWidth\n            ? {\n                  containerMarginX: isGridSpot ? {base: -8, md: -12, xl: -16} : 0,\n                  gridMarginX: isGridSpot ? 0 : {base: 8, md: 12, xl: 16},\n                  gridPaddingX: isGridSpot ? {base: 8, md: 12, xl: 16} : 0,\n                  gridPaddingY: {base: 15, md: 21, xl: 35}\n              }\n            : {\n                  containerMarginX: 0,\n                  gridMarginX: 0,\n                  gridPaddingX: {base: 8, md: 8, xl: 0},\n                  gridPaddingY: 0\n              }\n\n        return {\n            contentLinkContainer: {\n                width: '100%',\n                paddingBottom: 0,\n                borderBottom: 0\n            },\n            container: {\n                marginX: spacing.containerMarginX,\n                backgroundColor: containerBackgroundColor,\n                position: 'relative',\n                overflow: 'hidden',\n                justifyContent: {base: 'center', xl: 'normal'},\n                top: 0,\n                display: 'flex',\n                flexDirection: {base: 'column', xl: 'row'}\n            },\n            grid: {\n                mx: spacing.gridMarginX,\n                px: spacing.gridPaddingX,\n                py: spacing.gridPaddingY,\n                // One uniform 32px gap between the text and the picture wherever they\n                // stack (INS-5249, per Figma), replacing the old 16px gap plus a 32px\n                // bottom margin on the text. Keep it flat — a responsive value would\n                // reintroduce the tighter mobile spacing this deliberately removed.\n                // rowGap, not gap: the shared Grid owns columnGap ({base: 2, md: 3}),\n                // and a `gap` shorthand here would override it on mobile.\n                rowGap: 8,\n                height: 'auto'\n            },\n            link: {\n                textStyle: 'bodySm',\n                paddingBottom: '0.5'\n            },\n            heading: {\n                marginBottom: 4,\n                color: 'black1'\n            },\n            description: {\n                color: 'black1',\n                marginBottom: 4\n            },\n            controlIcon: {\n                width: 'auto',\n                height: 16,\n                color: 'white'\n            },\n            controlWrapper: {\n                display: 'flex',\n                justifyContent: 'center',\n                alignItems: 'center',\n                position: 'absolute',\n                bottom: 0,\n                left: 0,\n                backgroundColor: 'black1',\n                zIndex: 2,\n                '& > button': {\n                    padding: 0\n                }\n            }\n        }\n    }\n})\n","export const KcpFeatureTileTermsAndConditions = (options = {}) => {\n    const {\n        direction = 'ltr',\n        hasVideoControls = false,\n        hasBothColumns = true\n    } = typeof options === 'string' ? {direction: options} : options\n    const containerGap = hasBothColumns ? {base: hasVideoControls ? 4 : 0, md: 8} : 0\n    const columnMaxWidth = hasBothColumns\n        ? {base: hasVideoControls ? '100%' : 'calc(50% - 12px)', md: 'calc(50% - 16px)'}\n        : '100%'\n\n    return {\n        baseStyle: {\n            container: {\n                display: 'flex',\n                direction,\n                flexDirection: {\n                    base: hasVideoControls ? 'column' : 'row',\n                    md: 'row'\n                },\n                justifyContent: {\n                    base: hasVideoControls ? 'start' : 'space-between',\n                    md: 'start'\n                },\n                alignItems: 'flex-start',\n                gap: containerGap\n            },\n            firstColumn: {\n                minWidth: 0\n            },\n            column: {\n                display: 'flex',\n                flexDirection: 'column',\n                justifyContent: 'flex-start',\n                alignItems: 'flex-start',\n                textAlign: 'start',\n                flex: '0 1 auto',\n                maxWidth: columnMaxWidth,\n                minWidth: 0,\n                '& .chakra-text': {\n                    maxWidth: '100%',\n                    overflowWrap: 'break-word',\n                    whiteSpace: 'normal'\n                }\n            },\n            rightColumn: {\n                minWidth: 0\n            }\n        }\n    }\n}\n","export const KcpFeatureTileCta = {\n    baseStyle: {\n        button: {\n            fontSize: '0.6875rem',\n            lineHeight: '145.455%',\n            letterSpacing: '0.034375rem',\n            height: 16,\n            width: {base: '100%', md: 'auto'},\n            maxWidth: '100%',\n            mt: 10\n        }\n    }\n}\n","export const KcpFeatureTileTermsAndConditionsLink = {\n    baseStyle: {\n        container: {\n            display: 'block',\n            border: 'none'\n        }\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\nimport {KcpFeatureTileTermsAndConditions} from './partials/kcp-feature-tile-terms-and-conditions/kcp-feature-tile-terms-and-conditions.style'\nimport {KcpFeatureTileCta} from './partials/kcp-feature-tile-cta/kcp-feature-tile-cta.style'\nimport {KcpFeatureTileTermsAndConditionsLink} from './partials/kcp-feature-tile-terms-and-conditions-link/kcp-feature-tile-terms-and-conditions-link.style'\n\n// INS-5064: no hyphenation, so long words wrap whole instead of being split with a\n// hyphen and the rendered copy keeps the ratio shown in the Amplience preview\nconst nonHyphenatedText = {\n    wordWrap: 'break-word',\n    hyphens: 'none',\n    WebkitHyphens: 'none'\n}\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'grid',\n    'centerSection',\n    'innerContainer',\n    'mediaLayer'\n])\n\nexport const KcpFeatureTile = helpers.defineMultiStyleConfig({\n    baseStyle: ({\n        heightValue,\n        KCPTheme,\n        hasLodBanner = false,\n        direction = 'ltr',\n        isSsrPosterEnabled = false,\n        hasVideoControls = false,\n        hasBothTermsColumns = true\n    }) => {\n        let backgroundColor = 'black'\n        let textColor = 'white'\n\n        if (KCPTheme) {\n            const normalizedTheme = KCPTheme.toLowerCase().trim()\n\n            const themeColorMapping = {\n                'black friday': 'black',\n                'cyber monday': 'pandoraPurple',\n                promo: 'pandoraPromo',\n                sale: 'pandoraRed',\n                'summer sale image': 'white',\n                'summer sale video': 'white'\n            }\n\n            if (normalizedTheme === 'promo') {\n                textColor = 'black'\n            }\n\n            backgroundColor = themeColorMapping[normalizedTheme]\n        }\n\n        return {\n            container: {\n                backgroundColor: backgroundColor,\n                position: 'relative',\n                height: heightValue,\n                color: textColor\n            },\n            mediaLayer: {\n                position: 'absolute',\n                inset: 0,\n                overflow: 'hidden',\n                pointerEvents: 'none',\n                '& [data-testid=\"ctrl-container\"]': {\n                    pointerEvents: 'auto !important',\n                    zIndex: isSsrPosterEnabled ? '5 !important' : '4 !important'\n                }\n            },\n            grid: {\n                height: '100%',\n                boxSizing: 'border-box',\n                pt: {base: 16, md: 16, xl: '142px'},\n                pb: {base: 8, md: 10, xl: 10}\n            },\n            centerSection: {\n                display: 'flex',\n                flexDirection: 'column',\n                justifyContent: 'center',\n                flex: 1,\n                minHeight: 0,\n\n                '& > .chakra-heading': {\n                    paddingTop: hasLodBanner ? {base: 17, md: 17, xl: 12} : 0,\n                    ...nonHyphenatedText\n                },\n\n                '& > .chakra-text': nonHyphenatedText,\n\n                '& > * > .chakra-text': nonHyphenatedText\n            },\n            innerContainer: {\n                display: 'flex',\n                flexDirection: 'column',\n                height: '100%',\n                boxSizing: 'border-box'\n            },\n            gridItem: {\n                height: '100%',\n                zIndex: 4\n            },\n            contentLinkStyle: {\n                display: 'block',\n                height: '100%'\n            },\n            KcpFeatureTileTermsAndConditions: KcpFeatureTileTermsAndConditions({\n                direction,\n                hasVideoControls,\n                hasBothColumns: hasBothTermsColumns\n            }),\n            KcpFeatureTileCta: {\n                ...KcpFeatureTileCta\n            },\n            KcpFeatureTileTermsAndConditionsLink: {\n                ...KcpFeatureTileTermsAndConditionsLink\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers()\n\nexport const Toolbar = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        backIcon: {\n            width: '2em',\n            height: '2em'\n        },\n        icons: {\n            display: 'flex',\n            flexDirection: 'column',\n            justifyContent: 'space-between',\n            height: '60px',\n            alignItems: 'center'\n        },\n        previewIconClose: {\n            top: {base: '45px', sm: '65px'}\n        },\n        slide: {\n            zIndex: {base: 9999, lg: 1300}\n        },\n        previewIconInitial: {\n            top: {base: '52px', sm: '52px', md: '60px', lg: '15px'},\n            transition: 'opacity .8s ease-out',\n            zIndex: 1300\n        },\n        previewIcon: {\n            left: {base: 4, md: 6, lg: 4},\n            top: {base: '5px', sm: '15px'},\n            position: 'fixed',\n            boxShadow: 'lg',\n            backgroundColor: 'pandoraPink',\n            color: 'white',\n            minWidth: [9, 11],\n            height: [9, 11],\n            cursor: 'pointer',\n            zIndex: 1600,\n\n            _hover: {\n                backgroundColor: '#B66869'\n            },\n            _focus: {\n                boxShadow: 'outline'\n            },\n            _active: {}\n        },\n        container: {\n            padding: '20px',\n            display: 'flex',\n            flexDirection: 'column',\n            gap: '12px',\n            justifyContent: 'space-between',\n            alignItems: 'left',\n            top: '0px',\n            zIndex: 100\n        },\n        header: {\n            textAlign: 'center',\n            borderBottomWidth: '1px',\n            //padding: {base: '30px 0', lg: '5px 0'},\n            paddingLeft: [6, 8],\n            paddingRight: [6, 8],\n            paddingTop: [6],\n            paddingBottom: [6],\n            boxShadow: 'none'\n        },\n        section: {\n            borderTop: 'none',\n            // cursor: 'pointer',\n            borderBottomWidth: '1px'\n        },\n        sectionTitle: {\n            fontSize: 'lg',\n            margin: '20px 0',\n            marginLeft: '20px',\n            fontWeight: 'bold'\n        },\n        button: {\n            background: 'gray.50',\n            cursor: 'pointer',\n            paddingLeft: [4, 4],\n            paddingRight: [3, 4],\n            paddingTop: [1, 2],\n            paddingBottom: [1, 2],\n            _hover: {}\n        },\n        panel: {\n            paddingInlineStart: 0,\n            paddingInlineEnd: 0,\n            padding: '0 20px 20px 20px'\n        },\n        box: {\n            padding: '20px'\n        },\n        infoContainer: {\n            zIndex: 998,\n            position: 'absolute',\n            right: '10px',\n            top: '10px',\n            display: 'flex'\n        },\n        infoIcon: {\n            marginLeft: '5px'\n        },\n        popoverBody: {\n            margin: 2,\n            paddingInlineStart: 0,\n            paddingInlineEnd: 0\n        },\n        infoBox: {\n            marginRight: '5px',\n            width: '12px'\n        }\n    }\n})\n","import {defineStyleConfig} from '@chakra-ui/react'\n\nexport const Heading = defineStyleConfig({\n    defaultProps: {},\n    sizes: {\n        sm: {\n            fontSize: 'lg',\n            lineHeight: 1.3\n        },\n        md: {\n            fontSize: 'xl',\n            lineHeight: 1.2\n        },\n        lg: {\n            fontSize: '2xl',\n            lineHeight: 1.1\n        }\n    },\n    baseStyle: {\n        fontFamily: 'heading'\n    }\n})\n","import {defineStyleConfig} from '@chakra-ui/react'\n\nexport const Link = defineStyleConfig({\n    baseStyle: {\n        fontFamily: 'body'\n    },\n    sizes: {\n        xs: {\n            fontSize: 'xs',\n            lineHeight: 1.3\n        },\n        sm: {\n            fontSize: 'sm',\n            lineHeight: 1.4\n        },\n        md: {\n            fontSize: 'md',\n            lineHeight: 1.5\n        }\n    },\n    variants: {\n        linkUnderline: {\n            display: 'inline-block',\n            textDecoration: 'none',\n            color: 'inherit',\n            borderBottom: '1px solid',\n            borderBottomColor: 'black4',\n            _hover: {\n                borderBottomColor: 'transparent',\n                textDecoration: 'none'\n            }\n        },\n        linkSubdued: {\n            color: 'black3a',\n            textDecoration: 'none',\n            _hover: {\n                color: 'charcoalBlack',\n                textDecoration: 'none'\n            }\n        },\n        linkTextOnlyUnderline: {\n            display: 'inline-block',\n            textDecoration: 'none',\n            color: 'inherit',\n            borderBottom: 'none',\n            '& [data-underline-target]': {\n                textDecoration: 'underline',\n                textDecorationColor: 'black4',\n                textUnderlineOffset: '5px'\n            },\n            _hover: {\n                textDecoration: 'none'\n            },\n            '&:hover [data-underline-target]': {\n                textDecorationColor: 'transparent'\n            }\n        }\n    }\n})\n","/**\n * Converts a 6-character hex color and an opacity value into an 8-character hex color.\n *\n * @param {string} hexColor - The 6-character hex color (e.g., \"#FFFFFF\").\n * @param {number} opacity - The opacity percentage (0 to 100).\n * @returns {string} - The 8-character hex color with alpha channel (e.g., \"#FFFFFF33\").\n */\nexport const hexWithOpacity = (hexColor, opacity) => {\n    if (!/^#([A-Fa-f0-9]{6})$/.test(hexColor)) {\n        throw new Error(\n            'Invalid hex color format. Expected 6-character hex color (e.g., \"#FFFFFF\").'\n        )\n    }\n\n    if (opacity < 0 || opacity > 100) {\n        throw new Error('Opacity must be between 0 and 100.')\n    }\n\n    const alpha = Math.round((opacity / 100) * 255)\n        .toString(16)\n        .padStart(2, '0') // Convert opacity to 2-character hex\n    return `${hexColor}${alpha}`.toUpperCase()\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nimport {\n    durationQuick1,\n    durationQuick2,\n    timingStandard,\n    timingStandardDecelerate\n} from '../../utils/motion'\n\nimport {hexWithOpacity} from './utils'\nimport {COLORS, COLOR_SCHEMES, SIZES, VARIANTS} from './constants'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'disabled'])\n\nconst WHITE_COLOR = 'white'\nconst BLACK_COLOR = 'black1'\nconst TRANSPARENT = 'transparent'\n\nconst OPACITY_100 = 100\nconst OPACITY_010 = 10\nconst OPACITY_020 = 20\nconst OPACITY_025 = 25\nconst OPACITY_060 = 60\nconst OPACITY_070 = 70\n\nconst SMALL_STYLE = 'caption'\nconst LARGE_STYLE = 'bodySm'\n\nconst UNDERLINE_HEIGHT = 'px'\n\nconst LIGHT_THEME = COLOR_SCHEMES.LIGHT\nconst COLOR_SECONDARY = COLORS.SECONDARY\n\nconst DEFAULT_COLOR = COLORS.PRIMARY\nconst DEFAULT_SIZE = SIZES.LARGE\nconst DEFAULT_VARIANT = VARIANTS.UNDERLINE\n\nexport const NewLink = helpers.defineMultiStyleConfig({\n    baseStyle: (props) => {\n        const {colorScheme, direction} = props\n\n        let colorValue = props?.theme?.colors?.[BLACK_COLOR]\n        let transparent = props?.theme?.colors?.[TRANSPARENT]\n\n        let underlineValue = props?.theme?.sizes?.[UNDERLINE_HEIGHT]\n\n        if (colorScheme !== LIGHT_THEME) {\n            colorValue = props?.theme?.colors?.[WHITE_COLOR]\n        }\n\n        return {\n            // Initial State (default state)\n            container: {\n                color: hexWithOpacity(colorValue, OPACITY_100),\n                position: 'relative',\n                textDecoration: 'none',\n\n                WebkitBoxDecorationBreak: 'clone',\n                boxDecorationBreak: 'clone',\n\n                lineHeight: 6, // this will override the caption or bodyS line-height value\n\n                background: `linear-gradient(to right, ${hexWithOpacity(\n                    colorValue,\n                    OPACITY_100\n                )} 0 100%) ${direction} bottom no-repeat`,\n\n                // Hover state\n                // - hide gray underline\n                // - expand black underline\n                // - smooth hover animation\n                _hover: {\n                    boxShadow: `inset 0 -${underlineValue} 0 0 ${transparent}`,\n                    transition: `background-size ${durationQuick2}s ${timingStandardDecelerate} ${durationQuick1}s, box-shadow ${durationQuick1}s ${timingStandard}`,\n                    backgroundSize: `100% ${underlineValue}`\n                },\n\n                // Mouse-out state (to reverse the animation)\n                // - restore gray underline\n                // - collapse black underline\n                // - smooth reverse animation\n                '&:not(:hover)': {\n                    boxShadow: `inset 0 -${underlineValue} 0 0 ${hexWithOpacity(\n                        colorValue,\n                        OPACITY_020\n                    )}`,\n                    backgroundSize: `0% ${underlineValue}`,\n                    transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}, box-shadow ${durationQuick1}s ${timingStandard} ${durationQuick2}s`\n                },\n\n                // Disabled state\n                _disabled: {\n                    cursor: 'not-allowed',\n                    opacity: OPACITY_020 / 100,\n                    pointerEvents: 'none',\n                    textDecoration: 'none',\n                    boxShadow: `inset 0 -${underlineValue} 0 0 ${hexWithOpacity(\n                        colorValue,\n                        OPACITY_100\n                    )}`\n                },\n\n                // Active state\n                _active: {\n                    color: hexWithOpacity(colorValue, OPACITY_100),\n                    backgroundSize: `100% ${underlineValue}`\n                }\n            }\n        }\n    },\n    sizes: {\n        small: {\n            container: {\n                textStyle: SMALL_STYLE\n            }\n        },\n        large: {\n            container: {\n                textStyle: LARGE_STYLE\n            }\n        }\n    },\n    variants: {\n        underline: (props) => {\n            const {color, colorScheme, direction} = props\n\n            let colorValue = props?.theme?.colors?.[BLACK_COLOR]\n            let transparent = props?.theme?.colors?.[TRANSPARENT]\n\n            let underlineValue = props?.theme?.sizes?.[UNDERLINE_HEIGHT]\n\n            if (colorScheme !== LIGHT_THEME) {\n                colorValue = props?.theme?.colors?.[WHITE_COLOR]\n            }\n\n            let textOpacity = OPACITY_100\n            let underlineOpacity = OPACITY_020\n            let disabledOpacity = OPACITY_020\n\n            if (colorScheme !== LIGHT_THEME) {\n                disabledOpacity = OPACITY_025\n\n                if (color === COLOR_SECONDARY) {\n                    textOpacity = OPACITY_060\n                }\n            } else if (color === COLOR_SECONDARY) {\n                textOpacity = OPACITY_070\n                underlineOpacity = OPACITY_010\n            }\n\n            return {\n                container: {\n                    color: hexWithOpacity(colorValue, textOpacity),\n                    background: `linear-gradient(to right, ${hexWithOpacity(\n                        colorValue,\n                        textOpacity\n                    )} 0 100%) ${direction} bottom no-repeat`,\n\n                    _hover: {\n                        boxShadow: `inset 0 -${underlineValue} 0 0 ${transparent}`,\n                        transition: `background-size ${durationQuick2}s ${timingStandardDecelerate} ${durationQuick1}s, box-shadow ${durationQuick1}s ${timingStandard}`,\n                        backgroundSize: `100% ${underlineValue}`\n                    },\n\n                    '&:not(:hover)': {\n                        boxShadow: `inset 0 -${underlineValue} 0 0 ${hexWithOpacity(\n                            colorValue,\n                            underlineOpacity\n                        )}`,\n                        backgroundSize: `0% ${underlineValue}`,\n                        transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}, box-shadow ${durationQuick1}s ${timingStandard} ${durationQuick2}s`\n                    },\n\n                    _disabled: {\n                        opacity: disabledOpacity / 100,\n                        boxShadow: `inset 0 -${underlineValue} 0 0 ${hexWithOpacity(\n                            colorValue,\n                            textOpacity\n                        )}`\n                    },\n\n                    _active: {\n                        color: hexWithOpacity(colorValue, textOpacity),\n                        backgroundSize: `100% ${underlineValue}`\n                    }\n                }\n            }\n        },\n        inline: (props) => {\n            const {color, colorScheme, direction} = props\n\n            let colorValue = props?.theme?.colors?.[BLACK_COLOR]\n            let underlineValue = props?.theme?.sizes?.[UNDERLINE_HEIGHT]\n\n            if (colorScheme !== LIGHT_THEME) {\n                colorValue = props?.theme?.colors?.[WHITE_COLOR]\n            }\n\n            let textOpacity = OPACITY_100\n            let disabledOpacity = OPACITY_020\n\n            if (colorScheme !== LIGHT_THEME) {\n                disabledOpacity = OPACITY_025\n\n                if (color === COLOR_SECONDARY) {\n                    textOpacity = OPACITY_060\n                }\n            } else if (color === COLOR_SECONDARY) {\n                textOpacity = OPACITY_070\n            }\n\n            return {\n                container: {\n                    color: hexWithOpacity(colorValue, textOpacity),\n                    background: `linear-gradient(to right, ${hexWithOpacity(\n                        colorValue,\n                        textOpacity\n                    )} 0 100%) ${direction} bottom no-repeat`,\n\n                    _hover: {\n                        boxShadow: 'none',\n                        transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}`,\n                        backgroundSize: `100% ${underlineValue}`\n                    },\n\n                    '&:not(:hover)': {\n                        boxShadow: 'none',\n                        backgroundSize: `0% ${underlineValue}`,\n                        transition: `background-size ${durationQuick2}s ${timingStandardDecelerate}`\n                    },\n\n                    _disabled: {\n                        opacity: disabledOpacity / 100,\n                        boxShadow: 'none'\n                    },\n\n                    _active: {\n                        color: hexWithOpacity(colorValue, textOpacity),\n                        backgroundSize: `100% ${underlineValue}`\n                    }\n                }\n            }\n        },\n        none: {\n            container: {\n                _hover: {\n                    boxShadow: 'none',\n                    backgroundSize: 0\n                },\n\n                '&:not(:hover)': {\n                    boxShadow: 'none',\n                    backgroundSize: 0\n                },\n\n                _disabled: {\n                    boxShadow: 'none',\n                    backgroundSize: 0\n                },\n\n                _active: {\n                    boxShadow: 'none',\n                    backgroundSize: 0\n                }\n            }\n        }\n    },\n    defaultProps: {\n        colorScheme: LIGHT_THEME,\n        size: DEFAULT_SIZE,\n        variant: DEFAULT_VARIANT,\n        color: DEFAULT_COLOR\n    }\n})\n","import {defineStyleConfig} from '@chakra-ui/react'\n\nexport const Text = defineStyleConfig({\n    sizes: {\n        sm: {\n            fontSize: 'sm',\n            lineHeight: 1.4\n        },\n        md: {\n            fontSize: 'md',\n            lineHeight: 1.5\n        }\n    },\n    variants: {\n        caption: {\n            fontSize: 'xs',\n            lineHeight: 1.3\n        }\n    }\n})\n","export const getGridBoxWidth = ({bp, numColumns, extraMargins, extraGutters}) => {\n    const breakpoints = {\n        sm: {\n            cols: 6,\n            margin: 32,\n            gutter: 8\n        },\n        md: {\n            cols: 6,\n            margin: 48,\n            gutter: 8\n        },\n        lg: {\n            cols: 12,\n            margin: 64,\n            gutter: 12\n        }\n    }\n    const {cols, margin, gutter} = breakpoints[bp]\n\n    return `calc((((100vw - ${margin * 2}px - (${\n        cols - 1\n    } * ${gutter}px)) / ${cols}) * ${numColumns}) + (${numColumns - 1} * ${gutter}px) + ${\n        gutter * extraGutters\n    }px + ${margin * extraMargins}px)`\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/react'\nimport {getGridBoxWidth} from '../../../../utils/get-grid-box-width'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'overlay',\n    'modal',\n    'modalHeader',\n    'closeIcon',\n    'modalBody',\n    'levelContainer',\n    'levelOneItems',\n    'logInLink',\n    'levelTwoWrapper',\n    'levelTwoItems',\n    'menuItem',\n    'sectionContainer',\n    'sectionName'\n])\n\nexport const Menu = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        overlay: {\n            position: 'fixed',\n            left: 0,\n            top: 0,\n            h: '100%',\n            w: '100%',\n            bg: 'rgba(26, 24, 24, 0.55)',\n            backdropFilter: 'blur(20px)',\n            zIndex: 'overlay'\n        },\n        modal: {\n            position: 'fixed',\n            right: 0,\n            top: 0,\n            h: '100%',\n            w: {\n                base: getGridBoxWidth({bp: 'sm', numColumns: 5, extraMargins: 1, extraGutters: 0}),\n                md: getGridBoxWidth({bp: 'md', numColumns: 3, extraMargins: 1, extraGutters: 0})\n            },\n            display: 'flex',\n            flexDirection: 'column',\n            bg: 'white',\n            color: 'black1',\n            overflow: 'hidden',\n            zIndex: 'modal'\n        },\n        modalHeader: {\n            px: {base: 8, md: 12},\n            pt: 6,\n            pb: 8,\n            display: 'flex',\n            justifyContent: 'flex-end'\n        },\n        closeIcon: {\n            height: 12,\n            width: 12,\n            my: -4,\n            mr: -4\n        },\n        modalBody: {\n            flexGrow: 1,\n            display: 'flex',\n            position: 'relative',\n            overflowX: 'hidden',\n            overscrollBehavior: 'contain'\n        },\n        levelContainer: {\n            px: {base: 8, md: 12},\n            position: 'absolute',\n            pb: 12,\n            top: 0,\n            left: 0,\n            minHeight: '100%',\n            width: '100%',\n            display: 'flex',\n            flexDirection: 'column',\n            justifyContent: 'space-between'\n        },\n        levelOneItems: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 2\n        },\n        logInLink: {\n            display: 'flex',\n            gap: 1,\n            alignItems: 'center'\n        },\n        levelTwoWrapper: {\n            py: 1\n        },\n        levelTwoItems: {\n            flexDirection: 'column',\n            gap: 8,\n            pb: 8\n        },\n        menuItem: {\n            display: 'flex',\n            gap: 2.5,\n            alignItems: 'center',\n            textAlign: 'left',\n            w: '100%',\n            h: 11,\n            _hover: {\n                textDecoration: 'none'\n            }\n        },\n        sectionContainer: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 1\n        },\n        sectionName: {\n            py: 3.5,\n            color: 'black3a'\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([])\n\nexport const NavListItem = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        fontSize: 'sm',\n        lineHeight: '20px',\n        display: 'block',\n        whiteSpace: 'nowrap',\n        position: 'relative',\n        color: 'inherit',\n        paddingBottom: '6',\n        _after: {\n            content: '\"\"',\n            display: 'block',\n            w: '100%',\n            h: '1px',\n            bg: 'charcoalBlack',\n            position: 'absolute',\n            bottom: '0',\n            left: '0',\n            transform: 'scale(0)',\n            transition: 'transform 0.3s ease-in-out'\n        },\n        _hover: {\n            _after: {\n                transform: 'scale(1)'\n            }\n        }\n    },\n    variants: {\n        active: {\n            _after: {\n                transform: 'scale(1)'\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([])\n\nexport const DropdownMenu = helpers.defineMultiStyleConfig({\n    baseStyle: ({headerHeight}) => ({\n        overlay: {\n            position: 'fixed',\n            left: 0,\n            w: '100%',\n            bg: 'rgba(26, 24, 24, 0.55)',\n            backdropFilter: 'blur(20px)',\n            zIndex: 'overlay',\n            top: headerHeight,\n            height: `calc(100vh - ${headerHeight}px)`,\n            pointerEvents: 'none'\n        },\n        menu: {\n            display: 'grid',\n            position: 'absolute',\n            top: '100%',\n            left: 0,\n            width: '100%',\n            zIndex: 'modal',\n            bg: 'white',\n            color: 'charcoalBlack',\n            overflow: 'hidden'\n        },\n        innerMenu: {\n            overflowY: 'scroll',\n            maxHeight: '85vh',\n            overscrollBehavior: 'contain'\n        },\n        sectionContainer: {\n            display: 'flex',\n            flexDirection: 'column',\n            gap: 1,\n            paddingTop: 2\n        }\n    }),\n    parts: ['overlay', 'menu', 'innerMenu', 'sectionContainer']\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container'])\n\nexport const RichTextEditor = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            h1: {\n                paddingTop: 16,\n                paddingBottom: 8,\n                textStyle: {base: 'headingMd', xl: 'headingLg'}\n            },\n\n            h2: {\n                paddingTop: 8,\n                paddingBottom: 4,\n                textStyle: {base: 'headingSm', xl: 'headingMd'}\n            },\n\n            h3: {\n                paddingTop: 8,\n                paddingBottom: 4,\n                textStyle: 'bodyLg'\n            },\n\n            p: {\n                textStyle: 'bodySm',\n                paddingBottom: 4\n            },\n\n            li: {\n                display: 'flex',\n                alignItems: 'start',\n                position: 'relative',\n                textStyle: 'bodySm',\n\n                _before: {\n                    marginX: 4,\n                    width: 1.5\n                }\n            },\n\n            ul: {\n                display: 'flex',\n                flexDirection: 'column',\n                rowGap: 2,\n                paddingBottom: 4,\n\n                li: {\n                    _before: {\n                        content: '\"•\"'\n                    }\n                }\n            },\n\n            ol: {\n                display: 'flex',\n                flexDirection: 'column',\n                rowGap: 2,\n                counterReset: 'item',\n                paddingBottom: 4,\n\n                li: {\n                    counterIncrement: 'item',\n\n                    _before: {\n                        content: 'counter(item)'\n                    }\n                }\n            },\n\n            '.pt-0': {\n                paddingTop: 0\n            },\n\n            '.row': {\n                '&:empty': {\n                    display: 'none' // Hides the .row if it has no children\n                },\n                '& > :last-child': {\n                    paddingBottom: 0 // Remove bottom padding for the last element\n                }\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'paragraphSection'])\n\nexport const ArticleSection = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {},\n\n        paragraphSection: {\n            paddingY: 16,\n\n            grid: {\n                colSpan: {base: 6, xl: 8},\n                colStart: {base: 1, xl: 3}\n            }\n        },\n\n        ctaSection: {\n            paddingBottom: 16,\n\n            grid: {\n                colSpan: {base: 6, xl: 8},\n                colStart: {base: 1, xl: 3}\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['container', 'articlesGrid', 'thumbnail'])\n\nconst commonTextCss = {\n    textStyle: 'bodySm',\n    display: '-webkit-box',\n    WebkitLineClamp: 3,\n    WebkitBoxOrient: 'vertical',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis'\n}\n\nexport const ArticlesHub = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            paddingTop: 8,\n            paddingBottom: 16\n        },\n\n        articlesGrid: {\n            rowGap: 16,\n\n            gridItem: {\n                colSpan: {base: 6, md: 3}\n            }\n        },\n\n        thumbnail: {\n            display: 'flex',\n            flexDirection: 'column',\n            mx: {base: -8, md: 0},\n\n            '& > div': {\n                rowGap: 4,\n                display: 'grid'\n            },\n\n            text: {\n                px: {base: 8, md: 0},\n                rowGap: 2,\n                display: 'grid'\n            },\n\n            description: {\n                ...commonTextCss,\n                color: 'black3a'\n            },\n\n            link: {\n                ...commonTextCss\n            }\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers(['button', 'badge'])\n\nexport const DefaultSuggestions = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            display: 'flex',\n            alignItems: 'flex-start'\n        },\n        item: {\n            height: 11,\n            paddingTop: 3,\n            paddingBottom: 3\n        },\n        linkLabel: {\n            fontSize: '13px',\n            color: 'black1',\n            fontWeight: 400\n        },\n        linkHeader: {\n            fontSize: '11px',\n            color: 'black3a',\n            fontWeight: 400,\n            marginBottom: 4\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'sliderWrapper',\n    'slideItem',\n    'slideItemActive',\n    'carouselItem',\n    'messageText'\n])\n\n/**\n * LodBanner Style Configuration\n *\n * Multi-style config for LOD banner component with responsive design.\n * Optimized for performance with minimal re-renders and smooth animations.\n *\n * Features:\n * - Responsive padding\n * - Text truncation with 2-line max\n * - Smooth transitions for carousel animations\n * - Black background with white text for high contrast\n *\n * @version 1.0.0\n * @author Pandora Inspire Team\n */\nexport const LodBanner = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        // Main container with responsive height and smooth transitions\n        container: {\n            overflow: 'hidden',\n            position: 'relative',\n            transition: 'height 0.3s ease-in-out',\n            width: '100%',\n            willChange: 'height',\n            bgColor: 'black' // Consistent black background\n        },\n\n        // Carousel wrapper for infinite scroll animation\n        sliderWrapper: {\n            display: 'flex',\n            flexDirection: 'column',\n            width: '100%',\n            willChange: 'transform' // Optimize for transform animations\n        },\n\n        // Individual slide item with fade transition\n        slideItem: {\n            margin: '0',\n            padding: '0',\n            lineHeight: '1.3',\n            display: 'flex',\n            alignItems: 'center',\n            width: '100%',\n            opacity: 0 // Hidden by default, shown when active\n        },\n\n        // Active slide with full opacity\n        slideItemActive: {\n            opacity: 1\n        },\n\n        // Carousel item with responsive padding and styling\n        carouselItem: {\n            margin: 0,\n            paddingY: 3.5, // 14px vertical padding\n            paddingX: {base: 8, md: 12, xl: 16}, // Responsive horizontal padding\n            display: 'flex',\n            width: '100%',\n            minWidth: 0, // Allow text truncation\n            height: '100%',\n            bgColor: 'black',\n            color: 'white',\n            alignItems: 'center',\n            textStyle: 'bodySm',\n\n            // Link styling within tiles\n            a: {\n                display: 'inline-block',\n                lineHeight: 5\n            }\n        },\n\n        // Message text with 2-line truncation\n        messageText: {\n            textStyle: 'bodySm',\n            maxHeight: 10,\n            overflow: 'hidden',\n            display: '-webkit-box',\n            WebkitLineClamp: 2,\n            WebkitBoxOrient: 'vertical',\n            textOverflow: 'ellipsis',\n            wordBreak: 'break-word' // Handle long words gracefully\n        }\n    }\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'grid',\n    'leftColumn',\n    'headingWrapper',\n    'heading',\n    'tabsWrapper',\n    'captionWrapper',\n    'tabListOuter',\n    'tabList',\n    'tab',\n    'tabIndicator',\n    'tabUnderline',\n    'richText'\n])\n\nconst HALF_WIDTH_TEMPLATE_COLUMNS = 'repeat(6, 1fr)'\nconst HALF_WIDTH_GAP = 4\n\nexport const TabbedGuide = helpers.defineMultiStyleConfig({\n    baseStyle: ({isInGrid, isHalfWidthInGrid}) => {\n        const isFullWidthInGrid = Boolean(isInGrid && !isHalfWidthInGrid)\n\n        return {\n            container: {\n                pt: isHalfWidthInGrid ? 0 : 16,\n                pb: isHalfWidthInGrid ? 0 : 32,\n                width: '100%'\n            },\n            grid: {\n                ...(isHalfWidthInGrid && {\n                    templateColumns: {\n                        base: HALF_WIDTH_TEMPLATE_COLUMNS,\n                        xl: HALF_WIDTH_TEMPLATE_COLUMNS\n                    },\n                    columnGap: HALF_WIDTH_GAP,\n                    gap: HALF_WIDTH_GAP\n                }),\n                ...((isHalfWidthInGrid || isFullWidthInGrid) && {mx: 0})\n            },\n            leftColumn: {\n                display: isHalfWidthInGrid ? 'contents' : {base: 'contents', xl: 'grid'},\n                gridColumn: {xl: 'span 4'},\n                gridTemplateColumns: {xl: 'subgrid'},\n                alignContent: {xl: 'start'}\n            },\n            headingWrapper: {\n                gridColumn: isHalfWidthInGrid\n                    ? {base: 'span 6', xl: '2 / span 4'}\n                    : {base: 'span 6', md: 'span 4'}\n            },\n            heading: {\n                textStyle: {base: 'headingSm', xl: 'headingMd'},\n                marginBottom: 8\n            },\n            tabsWrapper: {\n                gridColumn: isHalfWidthInGrid\n                    ? {base: 'span 6', xl: '2 / span 4'}\n                    : {base: 'span 6', xl: 'span 4'}\n            },\n            captionWrapper: {\n                gridColumn: isHalfWidthInGrid\n                    ? {base: 'span 6', xl: '2 / span 4'}\n                    : {base: 'span 6', md: 'span 3'},\n                order: isHalfWidthInGrid ? 4 : {base: 4, xl: 0},\n                height: isHalfWidthInGrid ? 'auto' : {base: '19rem', xl: 'auto'},\n                overflow: 'visible'\n            },\n            tabListOuter: {\n                display: 'flex',\n                marginX: isInGrid ? 0 : {base: -8, md: -12, xl: 0},\n                overflowX: 'auto',\n                overflowY: 'hidden',\n                scrollBehavior: 'smooth',\n                scrollPaddingInline: isInGrid ? 0 : {base: 32, md: 48, xl: 0},\n                WebkitOverflowScrolling: 'touch',\n                msOverflowStyle: 'none',\n                scrollbarWidth: 'none',\n                marginBottom: {base: 8, xl: 0},\n                '&::-webkit-scrollbar': {\n                    display: 'none'\n                },\n                '&::after': {\n                    content: '\"\"',\n                    flexShrink: 0,\n                    width: isInGrid ? 0 : {base: 8, md: 12, xl: 0}\n                }\n            },\n            tabList: {\n                display: 'flex',\n                flexShrink: 0,\n                marginLeft: isInGrid ? 0 : {base: 8, md: 12, xl: 0},\n                minWidth: isInGrid\n                    ? '100%'\n                    : {\n                          base: 'calc(100% - var(--chakra-space-16))',\n                          md: 'calc(100% - var(--chakra-space-24))',\n                          xl: '100%'\n                      },\n                gap: 0,\n                '& > :first-of-type': {\n                    paddingLeft: 0\n                },\n                '& > :last-of-type': {\n                    paddingRight: 0\n                },\n                '&::after': {\n                    content: '\"\"',\n                    flexGrow: 1,\n                    flexShrink: 0\n                },\n                borderBottom: '1px solid',\n                borderColor: 'gray.200'\n            },\n            tab: {\n                background: 'none',\n                border: 'none',\n                paddingX: 4,\n                paddingBottom: 4,\n                textStyle: 'label',\n                cursor: 'pointer',\n                color: 'black3a',\n                whiteSpace: 'nowrap',\n                flexShrink: 0,\n                position: 'relative',\n                _hover: {\n                    color: 'black1'\n                },\n                '& > span': {\n                    display: 'inline-block',\n                    position: 'relative'\n                }\n            },\n            tabIndicator: {\n                color: 'black1'\n            },\n            tabUnderline: {\n                position: 'absolute',\n                bottom: '-17px',\n                left: 0,\n                right: 0,\n                height: '1px',\n                backgroundColor: 'black1'\n            },\n            richText: {\n                marginTop: {base: 6, xl: 8},\n                marginBottom: {base: 10, xl: 10},\n                height: isHalfWidthInGrid ? 'auto' : '12.5rem',\n                overflow: 'visible'\n            }\n        }\n    }\n})\n","export const getGridBoxWidth = (bp, numColumns, extraMargins, extraGutters) => {\n    const breakpoints = {\n        sm: {\n            cols: 6,\n            margin: 32,\n            gutter: 8\n        },\n        md: {\n            cols: 6,\n            margin: 48,\n            gutter: 8\n        },\n        lg: {\n            cols: 12,\n            margin: 64,\n            gutter: 12\n        }\n    }\n    const {cols, margin, gutter} = breakpoints[bp]\n\n    return `calc((((100vw - ${margin * 2}px - (${\n        cols - 1\n    } * ${gutter}px)) / ${cols}) * ${numColumns}) + (${numColumns - 1} * ${gutter}px) + ${\n        gutter * extraGutters\n    }px + ${margin * extraMargins}px)`\n}\n","import {getGridBoxWidth} from '../../utils/grid'\nexport default {\n    parts: ['container', 'heroContainer', 'heroImage', 'listContainer'],\n    baseStyle: {\n        container: {\n            ml: -16,\n            mr: -3\n        },\n        heroContainer: {\n            bg: 'offWhite'\n        }\n    },\n    sizes: {},\n    variants: {\n        gallery: {\n            container: {\n                display: 'flex'\n            },\n            heroContainer: {\n                flexBasis: getGridBoxWidth('lg', 4, 1, 1),\n                flexGrow: 0,\n                flexShrink: 0\n            },\n            heroImage: {\n                height: '100vh'\n            },\n            listContainer: {\n                flexBasis: getGridBoxWidth('lg', 3, 0, 1),\n                flexGrow: 0,\n                flexShrink: 0\n            }\n        },\n        list: {\n            listContainer: {\n                '& picture': {\n                    width: '100%',\n                    height: '100%'\n                }\n            }\n        }\n    },\n    defaultProps: {\n        variant: 'list'\n    }\n}\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'image',\n    'pagination',\n    'paginationButton'\n])\n\nconst MotionSwipe = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            position: 'relative',\n            w: '100%',\n            h: '100%'\n        },\n        media: {\n            overflow: 'hidden',\n            position: 'relative',\n            w: '100%',\n            h: '100%'\n        },\n        pagination: {\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            right: 0,\n            bottom: 0,\n            h: `calc(100% - 48px)`, // Prevent from overlapping the video controls, etc.\n            flexDir: 'row',\n            display: 'flex',\n            alignItems: 'stretch',\n            justifyContent: 'stretch'\n        },\n        paginationButton: {\n            alignSelf: 'stretch',\n            width: '50%',\n            height: '100%',\n            opacity: 0,\n            touchAction: 'none'\n        }\n    },\n    sizes: {},\n    variants: {},\n    defaultProps: {}\n})\n\nexport default MotionSwipe\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([])\n\nexport const ProductViewStyles = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        productDetailStack: {\n            align: 'strech',\n            flex: '1'\n        },\n        swatchContainer: {\n            backgroundRepeat: 'no-repeat',\n            backgroundSize: 'cover',\n            flexDirection: 'column',\n            height: '100%',\n            minWidth: '32px',\n            width: '100%'\n        },\n        detailsContainer: {\n            align: 'strech',\n            spacing: 0\n        },\n        customText: {\n            fontWeight: '600',\n            marginBottom: 8\n        },\n        buttonCTA: {\n            bg: 'white',\n            bottom: 0,\n            left: 0,\n            p: [4, 4, 6],\n            position: 'fixed',\n            width: '100%',\n            zIndex: 2\n        },\n        productDetailGrid: {\n            columnGap: {\n                base: 2,\n                xl: 3\n            },\n            mx: {base: 4, md: 12, xl: 16}\n        },\n        productDetailGridItemRight: {\n            colSpan: {\n                base: 6,\n                xl: 4\n            },\n            colStart: {xl: 9},\n            ml: {xl: -3},\n            mr: {xl: -16},\n            pr: {xl: 'calc(-21.6px + 8.3vw)'},\n            pt: 8\n        },\n        productDetailGridItemLeft: {\n            colSpan: {\n                base: 6,\n                xl: 7\n            }\n        },\n        containerStyles: {\n            px: {base: 4, md: 0, lg: 0},\n            h: '100%'\n        },\n        scrollParent: {\n            position: 'relative',\n            h: '100%',\n            display: 'flex',\n            flexDirection: 'column'\n        },\n        ProductPricePromo: {\n            mr: '4',\n            spacing: '2',\n            gap: '0',\n            align: 'flex-start',\n            marginBottom: [4, 4, 4, 0, 0]\n        },\n        studioPlaceholder: {\n            display: ['none', 'none', 'none', 'block']\n        },\n        childProductListWrapper: {\n            display: 'grid',\n            gridTemplateColumns: ['1fr', 'repeat(auto-fit, minmax(120px, 1fr))'],\n            gap: '4',\n            mt: '8',\n            mb: '24'\n        },\n        childProductListContainer: {\n            mt: '8'\n        },\n        childProductName: {\n            mt: '4',\n            lineHeight: '4'\n        },\n        childProductPrice: {\n            mt: '3',\n            fontSize: 2.75,\n            lineHeight: '4'\n        },\n        childProductQuantity: {\n            color: 'black3a',\n            mt: '3',\n            fontSize: 2.75,\n            lineHeight: '4'\n        },\n        childProductListImage: {\n            bg: 'offWhite',\n            width: '100%',\n            height: '100%'\n        },\n        badgeRatingContainer: {\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'space-between',\n            width: '100%',\n            gap: 3,\n            marginBottom: 2,\n            flexWrap: 'wrap'\n        }\n    },\n    parts: [\n        'productDetailStack',\n        'swatchContainer',\n        'detailsContainer',\n        'customText',\n        'buttonCTA',\n        'productDetailGrid',\n        'productDetailGridItemRight',\n        'productDetailGridItemLeft',\n        'containerStyles',\n        'scrollParent',\n        'ProductPricePromo',\n        'studioPlaceholder',\n        'childProductListContainer',\n        'childProductName',\n        'childProductPrice',\n        'childProductQuantity',\n        'childProductListImage',\n        'badgeRatingContainer'\n    ]\n})\n","import {createMultiStyleConfigHelpers} from '@chakra-ui/styled-system'\n\nconst helpers = createMultiStyleConfigHelpers([\n    'container',\n    'grid',\n    'gridItemLeft',\n    'gridItemRight',\n    'heroImage',\n    'heroImageMobile',\n    'contentWrapper',\n    'header',\n    'descriptionDesktop',\n    'descriptionMobile',\n    'carouselWrapper',\n    'ctaSection',\n    'ctaSectionCompact',\n    'totalPrice',\n    'buyButton'\n])\n\nexport const PartOfSet = helpers.defineMultiStyleConfig({\n    baseStyle: {\n        container: {\n            bgColor: 'white',\n            mt: {base: 24, xl: 32},\n            mb: 32\n        },\n        grid: {\n            columnGap: {base: 2, xl: 3},\n            mx: {base: 8, md: 12, xl: 16},\n            mt: {base: 0, xl: 16},\n            pb: {xl: 16}\n        },\n        gridItemLeft: {\n            colSpan: {base: 6, xl: 4},\n            display: {base: 'none', xl: 'block'},\n            overflow: 'hidden'\n        },\n        gridItemRight: {\n            paddingTop: {xl: 0},\n            colSpan: {base: 6, xl: 6},\n            colStart: {xl: 7},\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: {base: 'stretch', xl: 'flex-start'}\n        },\n        heroImage: {\n            width: '100%',\n            aspectRatio: '3/4',\n            overflow: 'hidden',\n            bgColor: 'black5',\n            img: {\n                width: '100%',\n                height: '100%',\n                objectFit: 'cover'\n            }\n        },\n        heroImageMobile: {\n            display: {base: 'block', xl: 'none'},\n            bgColor: 'black5',\n            width: 'auto',\n            mx: {base: -8, md: -12},\n            aspectRatio: '3/4',\n            overflow: 'hidden',\n            img: {\n                width: '100%',\n                height: '100%',\n                objectFit: 'cover'\n            }\n        },\n        contentWrapper: {\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: {base: 'stretch', xl: 'flex-start'},\n            gap: {base: 2, xl: 6}\n        },\n        header: {\n            fontFamily: 'heading',\n            fontWeight: 500,\n            fontSize: {base: 5, xl: 7},\n            lineHeight: 1.45,\n            color: 'secondaryColor',\n            textTransform: 'uppercase',\n            pt: {base: 8, xl: 0},\n            pb: {base: 8, xl: 0}\n        },\n        descriptionDesktop: {\n            display: {base: 'none', xl: 'block'},\n            fontFamily: 'body',\n            fontWeight: 400,\n            fontSize: 3.25,\n            lineHeight: 5,\n            color: 'black1',\n            mt: 8,\n            maxW: '429px'\n        },\n        descriptionMobile: {\n            display: {base: 'block', xl: 'none'},\n            fontFamily: 'body',\n            fontWeight: 400,\n            fontSize: {base: 3.25, md: 4},\n            lineHeight: {base: 5, md: 6},\n            color: 'black1',\n            mt: 8,\n            mb: 2\n        },\n        carouselWrapper: {\n            width: '100%',\n            mt: {base: 6, xl: 0},\n            mr: {base: -8, md: -12, xl: 0},\n            '.swiper-slide': {\n                flexShrink: 0\n            },\n            '.carousel-header': {\n                display: {base: 'none', xl: 'flex'},\n                mt: {xl: 6},\n                mb: {xl: 6},\n                justifyContent: 'flex-end !important',\n\n                '.top-right': {\n                    margin: 0\n                }\n            },\n            '&.without-controls': {\n                mt: {xl: 6},\n                '.carousel-header': {\n                    display: 'none'\n                }\n            },\n            '.chakra-stack > div > .chakra-button': {\n                fontSize: 2.75\n            }\n        },\n        ctaSection: {\n            width: '100%',\n            mt: {base: 12, md: 16, xl: 16},\n            button: {\n                textTransform: 'none'\n            }\n        },\n        ctaSectionCompact: {\n            maxW: {md: 'calc(66.667% - 4px)', xl: 'calc(66.667% - 4px)'}\n        },\n        totalPrice: {\n            fontFamily: 'body',\n            fontWeight: 400,\n            fontSize: 3.25,\n            lineHeight: 5,\n            color: 'black1',\n            px: 4,\n            py: 3,\n            flexShrink: 0\n        },\n        buyButton: {\n            flex: 1,\n            borderLeft: '1px solid',\n            borderLeftColor: 'black4',\n            borderRadius: 0,\n            height: 'auto',\n            py: 3\n        }\n    }\n})\n","import {extendTheme} from '../components/shared/ui'\n\n// Foundational style overrides\nimport gradients from '@salesforce/retail-react-app/app/theme/foundations/gradients'\n\nimport styles from './foundations/styles'\nimport layerStyles from './foundations/layerStyles'\nimport colors, {semanticColors} from './foundations/colors'\nimport fonts from './foundations/fonts'\nimport space from './foundations/space'\nimport sizes from './foundations/sizes'\nimport breakpoints from './foundations/breakpoints'\nimport zIndices from './foundations/zIndices'\nimport textStyles from './foundations/textStyles'\nimport shadows from './foundations/shadows'\nimport {rtlConfig} from './foundations/rtl'\n\n// Base component style overrides\nimport Alert from '@salesforce/retail-react-app/app/theme/components/base/alert'\nimport Accordion from '@salesforce/retail-react-app/app/theme/components/base/accordion'\nimport Badge from '@salesforce/retail-react-app/app/theme/components/base/badge'\nimport Button from '../components/shared/ui/Button/button.style'\nimport Checkbox from '../components/shared/ui/Checkbox/checkbox.style'\nimport Progress from '../components/shared/ui/Progress/progress.style'\nimport Container from '@salesforce/retail-react-app/app/theme/components/base/container'\nimport Drawer from '../components/drawer-sheet/drawer.style'\nimport FormLabel from '@salesforce/retail-react-app/app/theme/components/base/formLabel'\nimport Icon from '@salesforce/retail-react-app/app/theme/components/base/icon'\nimport Input from '../components/shared/ui/Input/input.style'\nimport Modal from '../components/shared/ui/Modal/modal.style'\nimport Radio from '@salesforce/retail-react-app/app/theme/components/base/radio'\nimport Select from '@salesforce/retail-react-app/app/theme/components/base/select'\nimport Skeleton from '@salesforce/retail-react-app/app/theme/components/base/skeleton'\nimport Tooltip from '@salesforce/retail-react-app/app/theme/components/base/tooltip'\nimport Popover from '../components/shared/ui/Popover/popover.style'\nimport AccordionItem from '../components/shared/ui/AccordionItem/accordion-item.style'\nimport AccordionButton from '../components/shared/ui/AccordionButton/accordion-button.style'\nimport AccordionPanel from '../components/shared/ui/AccordionPanel/accordion-panel.style'\n\n// Project Component style overrides\nimport App from '@salesforce/retail-react-app/app/theme/components/project/_app'\nimport {Header} from '../components/nav/partials/header/header.styles'\nimport Footer from '../components/footer/footer.style'\nimport {RACDrawer} from './components/project/rac-drawer'\nimport CheckoutFooter from '@salesforce/retail-react-app/app/theme/components/project/checkout-footer'\nimport LinksList from '../components/links-list/links-list.style'\nimport NestedAccordion from '@salesforce/retail-react-app/app/theme/components/project/nested-accordion'\nimport LocaleSelector from '@salesforce/retail-react-app/app/theme/components/project/locale-selector'\nimport OfflineBanner from '@salesforce/retail-react-app/app/theme/components/project/offline-banner'\nimport Pagination from '@salesforce/retail-react-app/app/theme/components/project/pagination'\nimport SocialIcons from '../components/social-icons/social-icons.styles'\nimport SwatchGroup from '@salesforce/retail-react-app/app/theme/components/project/swatch-group'\nimport ImageGallery from '@salesforce/retail-react-app/app/theme/components/project/image-gallery'\nimport {ShopTheLook} from 'content/overrides/app/components/shop-the-look/shop-the-look.style'\nimport {PinkOverlay} from '../components/drawer-sheet/partials/pink-overlay/pink-overlay.styles'\nimport {DragButton} from '../components/drawer-sheet/partials/drag-button/drag-button.styles'\nimport {CloseButton} from '../components/drawer-sheet/partials/close-button/close-button.styles'\nimport {LoadingDots} from '../components/shared/ui/Button/partials/loading-dots/loading-dots.styles'\nimport {Search} from '../components/search/partials/search-desktop/search.styles'\nimport {ProductTile} from '../components/product-tile/product-tile.styles'\nimport {MemberPriceTooltip} from '../components/product-tile/partials/member-price-tooltip.styles'\nimport {CarouselStepIndicator} from '../components/carousel-step-indicator/carousel-step-indicator.styles'\nimport {SearchDrawer} from '../components/search/partials/search-mobile/search-mobile.styles'\nimport {TradeBanner} from '../components/trade-banner/trade-banner.styles'\nimport {Slider} from '../components/slider/slider.styles'\nimport {LocaleMenu} from '../components/site-locator/partials/locale-menu.styles'\nimport {SearchFlyout} from '../components/search/partials/search-flyout/search-flyout.styles'\n\nimport {Carousel} from '../components/carousel/carousel.style'\nimport {ProductCarousel} from '../components/product-carousel/product-carousel.style'\n\n//PLP Specific styles\nimport {HeroBanner} from 'product-list/overrides/app/components/hero-banner/hero-banner.styles'\nimport {VisualNavigation} from 'product-list/overrides/app/components/visual-navigation/visual-navigation.styles'\nimport {ContentTabs} from 'product-list/overrides/app/components/content-tabs/content-tabs.styles'\nimport {FilterBar} from 'product-list/overrides/app/components/filter/filter-bar/filter-bar.styles'\nimport {FilterDrawer} from 'product-list/overrides/app/components/filter/filter-drawer/filter-drawer.styles'\nimport {RecirculationNavigator} from 'product-list/overrides/app/components/recirculation-navigator/recirculation-navigator.styles'\nimport {SearchResultHeader} from 'product-list/overrides/app/components/search-result-header/search-result-header.styles'\n\n// Content Shared Styles\nimport {CollaborationLogo} from '../components/collaboration-logo/collaboration-logo.style'\nimport {EyebrowText} from '../components/eyebrow-text/eyebrow-text.style'\nimport {Description} from '../components/description/description.style'\nimport {VideoPlayer} from '../components/video-player/video-player.style'\nimport {VideoControls} from '../components/video-player/partials/video-controls/video-controls.style'\nimport {CopyrightText} from '../components/copyright-text/copyright-text.style'\nimport {MediaError} from '../components/media-error/media-error.style'\nimport {Media} from '../components/media/media.style'\nimport {ImageCard} from '../components/image-card/image-card.style'\nimport {ImagePlaceholder} from '../components/shared/image-placeholder/image-placeholder.style'\nimport {CraftAndQuality} from 'content/overrides/app/components/craft-and-quality/craft-and-quality.style'\nimport {EntryCards} from 'content/overrides/app/components/entry-cards/entry-cards.style'\nimport {EntryCard} from 'content/overrides/app/components/entry-cards/partials/entry-card/entry-card.style'\nimport {ContentPromoMessage} from 'content/overrides/app/components/shared/content-promo-message/content-promo-message.style'\n\n// Content Specific Styles\nimport {FeatureVideo} from 'content/overrides/app/components/feature-video/feature-video.style'\nimport {ExplorePrompt} from 'content/overrides/app/components/explore-prompt/explore-prompt.style'\nimport {IdleUserOverlay} from '../components/idle-user-overlay/idle-user-overlay.style'\nimport {FullScreenMediaTile} from 'content/overrides/app/components/full-screen-media-tile/full-screen-media-tile.style'\nimport {InsetMediaTile} from 'content/overrides/app/components/inset-media-tile/inset-media.style'\nimport {ContentDim} from 'content/overrides/app/components/shared/content-dim/content-dim.style'\nimport {MultipleQandA} from 'content/overrides/app/components/QandA/multiple-q-and-a/multiple-q-and-a.style'\nimport {QuestionItem} from 'content/overrides/app/components/QandA/multiple-q-and-a/partials/question-item/question-item.style'\nimport {EntryPointsTile} from 'content/overrides/app/components/entry-points-tile/entry-points-tile.style'\nimport {PageCover} from 'content/overrides/app/components/page-cover/page-cover.style'\nimport {PlpStories} from 'content/overrides/app/components/plp-stories/plp-stories.style'\nimport {Panel} from 'content/overrides/app/components/scroll-panels/partials/Panel/panel.style'\nimport {ContentVisualization} from 'content/overrides/app/components/visualization/content-visualization.style'\nimport {PromoInsetTile} from 'content/overrides/app/components/promo-inset-tile/promo-inset-tile.style'\nimport {KcpFeatureTile} from 'content/overrides/app/components/kcp-feature-tile/kcp-feature-tile.style'\nimport {Toolbar} from 'content/overrides/app/components/toolbar/toolbar.style'\nimport {Heading} from '../components/shared/ui/Heading/heading.styles'\nimport {Link} from '../components/shared/ui/Link/link.style'\nimport {NewLink} from '../components/link/link.style'\nimport {Text} from '../components/shared/ui/Text/text.styles'\nimport {Menu} from '../components/nav/partials/menu/menu.styles'\nimport {NavListItem} from '../components/nav/partials/nav-list-item/nav-list-item.styles'\nimport {Navigation} from '../components/nav/navigation.styles'\nimport {DropdownMenu} from '../components/nav/partials/dropdown-menu/dropdown-menu.styles'\nimport {Breadcrumb} from '../components/breadcrumb/breadcrumb.styles'\nimport {MiniCart} from '../components/nav/partials/mini-cart/mini-cart.styles'\nimport {IncentiveBanner} from '../components/incentive-banner/incentive-banner.styles'\nimport {RichTextEditor} from '../components/rich-text-editor/rich-text-editor.style'\nimport {SiteLocator} from '../components/site-locator/site-locator.styles'\nimport {Country} from '../components/site-locator/partials/country.styles'\nimport {ArticleSection} from 'content/overrides/app/components/article-section/article-section.style'\nimport {ArticlesHub} from '../components/articles-hub/articles-hub.style'\nimport {DefaultSuggestions} from '../components/search/partials/default-suggestions/default-suggestions.styles'\nimport {LodBanner} from 'pandora-shared-app/overrides/app/components/lod-banner/lod-banner.style'\nimport {TabbedGuide} from '../components/tabbed-guide/tabbed-guide.style'\n\n// PVA component\nimport {LiveChat} from '../components/live-chat/live-chat.styles'\n\n// Custom PDP Component style overrides\nimport Gallery from 'product-details/overrides/app/components/gallery/gallery.styles'\nimport ProductImage from 'product-details/overrides/app/components/product-image/product-image.styles'\nimport MotionSwipe from 'product-details/overrides/app/components/motion-swipe/motion-swipe.styles'\nimport Indicators from 'product-details/overrides/app/components/indicators/indicators.styles'\nimport {ProductViewStyles} from 'product-details/overrides/app/components/product-view/product-view.styles'\nimport {PartOfSet} from 'product-details/overrides/app/components/part-of-set/part-of-set.styles'\n// Please refer to the Chakra-Ui theme customization docs found\n// here https://chakra-ui.com/docs/theming/customize-theme to learn\n// more about extending and overriding themes for your project.\nexport const overrides = {\n    styles,\n    layerStyles,\n    colors,\n    fonts,\n    breakpoints,\n    sizes,\n    space,\n    gradients,\n    shadows,\n    zIndices,\n    textStyles,\n    components: {\n        // base components\n        Accordion,\n        Alert,\n        Badge,\n        Button,\n        Checkbox,\n        Container,\n        Drawer,\n        FormLabel,\n        Icon,\n        Input,\n        Modal,\n        Popover,\n        Radio,\n        Select,\n        Skeleton,\n        Tooltip,\n        Progress,\n        AccordionItem,\n        AccordionButton,\n        AccordionPanel,\n\n        // Project components.\n        App,\n        Breadcrumb,\n        Header,\n        Search,\n        Footer,\n        CheckoutFooter,\n        LinksList,\n        NestedAccordion,\n        LocaleSelector,\n        OfflineBanner,\n        SocialIcons,\n        Pagination,\n        ProductTile,\n        CarouselStepIndicator,\n        SwatchGroup,\n        ImageGallery,\n        FilterBar,\n        FilterDrawer,\n        SearchDrawer,\n        HeroBanner,\n        VisualNavigation,\n        ContentTabs,\n        TradeBanner,\n        Slider,\n        LocaleMenu,\n        Carousel,\n        ProductCarousel,\n        RACDrawer,\n        PinkOverlay,\n        DragButton,\n        CloseButton,\n        LoadingDots,\n        RecirculationNavigator,\n        SearchResultHeader,\n\n        // CONTENT Components\n        CollaborationLogo,\n        EyebrowText,\n        Description,\n        VideoPlayer,\n        VideoControls,\n        CopyrightText,\n        FeatureVideo,\n        ExplorePrompt,\n        IdleUserOverlay,\n        MultipleQandA,\n        QuestionItem,\n        FullScreenMediaTile,\n        InsetMediaTile,\n        PromoInsetTile,\n        ContentDim,\n        EntryPointsTile,\n        PageCover,\n        PlpStories,\n        MediaError,\n        Panel,\n        ContentVisualization,\n        ShopTheLook,\n        Heading,\n        Link,\n        NewLink,\n        Menu,\n        NavListItem,\n        Text,\n        DropdownMenu,\n        MiniCart,\n        Navigation,\n        KcpFeatureTile,\n        Media,\n        ImageCard,\n        ImagePlaceholder,\n        Toolbar,\n        CraftAndQuality,\n        EntryCards,\n        EntryCard,\n        ContentPromoMessage,\n        RichTextEditor,\n        ArticleSection,\n        ArticlesHub,\n        IncentiveBanner,\n        SiteLocator,\n        Country,\n        DefaultSuggestions,\n        LodBanner,\n        TabbedGuide,\n        LiveChat,\n\n        // Custom PDP components\n        Gallery,\n        ProductImage,\n        MotionSwipe,\n        Indicators,\n        ProductViewStyles,\n        PartOfSet,\n        MemberPriceTooltip,\n        SearchFlyout\n    },\n    semanticTokens: {\n        colors: semanticColors\n    }\n}\n\nexport const THEME_DIRECTION = {\n    RTL: 'rtl',\n    LTR: 'ltr'\n}\n\n//Create a function that will conditionally apply RTL styles\nconst getThemeWithDirection = (direction) => {\n    if (direction === THEME_DIRECTION.RTL) {\n        return {\n            ...overrides,\n            fontSizes: {\n                ...sizes\n            },\n            direction: THEME_DIRECTION.RTL,\n            styles: {\n                ...overrides.styles,\n                ...rtlConfig.styles\n            }\n        }\n    }\n    return {\n        ...overrides,\n        fontSizes: {\n            ...sizes\n        },\n        direction: THEME_DIRECTION.LTR\n    }\n}\n\n// Export the default theme\nexport default extendTheme({\n    ...overrides,\n    fontSizes: {\n        ...sizes\n    }\n})\n\n// Export the function to get theme with specific direction\nexport const getThemeWithRTL = (isRTL) => extendTheme(getThemeWithDirection(isRTL ? 'rtl' : 'ltr'))\n","export default {\n    global: {\n        '*, *::before, *::after': {\n            boxSizing: 'border-box'\n        },\n        'html, body': {\n            margin: 0,\n            minWidth: '320px',\n            minHeight: '100vh',\n            fontSize: '16px'\n        },\n        body: {\n            fontFamily: 'body',\n            fontWeight: 400,\n            lineHeight: 'tall',\n            color: 'black1',\n            fontSynthesis: 'none',\n            textRendering: 'optimizeLegibility',\n            WebkitFontSmoothing: 'antialiased',\n            MozOsxFontSmoothing: 'grayscale'\n        },\n        ul: {\n            listStyle: 'none'\n        }\n    }\n}\n","/**\n * Space values with rem and corresponding pixel values.\n */\nconst space = {\n    /** 1px */\n    px: '1px',\n    /** 2px */\n    0.5: '0.125rem',\n    /** 4px */\n    1: '0.25rem',\n    /** 6px */\n    1.5: '0.375rem',\n    /** 8px */\n    2: '0.5rem',\n    /** 10px */\n    2.5: '0.625rem',\n    /** 12px */\n    3: '0.75rem',\n    /** 14px */\n    3.5: '0.875rem',\n    /** 16px */\n    4: '1rem',\n    /** 18px */\n    4.5: '1.125rem',\n    /** 20px */\n    5: '1.25rem',\n    /** 22px */\n    5.5: '1.375rem',\n    /** 24px */\n    6: '1.5rem',\n    /** 26px */\n    6.5: '1.625rem',\n    /** 28px */\n    7: '1.75rem',\n    /** 30px */\n    7.5: '1.875rem',\n    /** 32px */\n    8: '2rem',\n    /** 34px */\n    8.5: '2.125rem',\n    /** 36px */\n    9: '2.25rem',\n    /** 38px */\n    9.5: '2.375rem',\n    /** 40px */\n    10: '2.5rem',\n    /** 42px */\n    10.5: '2.625rem',\n    /** 44px */\n    11: '2.75rem',\n    /** 48px */\n    12: '3rem',\n    /** 52px */\n    13: '3.25rem',\n    /** 56px */\n    14: '3.5rem',\n    /** 60px */\n    15: '3.75rem',\n    /** 64px */\n    16: '4rem',\n    /** 68px */\n    17: '4.25rem',\n    /** 72px */\n    18: '4.5rem',\n    /** 76px */\n    19: '4.75rem',\n    /** 80px */\n    20: '5rem',\n    /** 84px */\n    21: '5.25rem',\n    /** 88px */\n    22: '5.5rem',\n    /** 92px */\n    23: '5.75rem',\n    /** 96px */\n    24: '6rem',\n    /** 100px */\n    25: '6.25rem',\n    /** 104px */\n    26: '6.5rem',\n    /** 108px */\n    27: '6.75rem',\n    /** 112px */\n    28: '7rem',\n    /** 116px */\n    29: '7.25rem',\n    /** 120px */\n    30: '7.5rem',\n    /** 124px */\n    31: '7.75rem',\n    /** 128px */\n    32: '8rem',\n    /** 132px */\n    33: '8.25rem',\n    /** 136px */\n    34: '8.5rem',\n    /** 140px */\n    35: '8.75rem',\n    /** 144px */\n    36: '9rem',\n    /** 148px */\n    37: '9.25rem',\n    /** 152px */\n    38: '9.5rem',\n    /** 156px */\n    39: '9.75rem',\n    /** 160px */\n    40: '10rem',\n    /** 208px */\n    53: '13rem'\n}\n\nexport default space\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    imageBackground: 'linear(270deg, #E6E5EA, #EEEEEE)'\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    top: '0px -1px 3px rgba(0, 0, 0, 0.1), 0px -1px 2px rgba(0, 0, 0, 0.06)',\n    outline: '0 0 0 2px var(--chakra-colors-black1)'\n}\n","export default {\n    zIndices: {\n        hide: -1,\n        auto: 'auto',\n        base: 0,\n        docked: 10,\n        dropdown: 1000,\n        sticky: 1100,\n        banner: 1200,\n        overlay: 1300,\n        idleOverlay: 1350,\n        modal: 1400,\n        popover: 1500,\n        skipLink: 1600,\n        toast: 1700,\n        tooltip: 1800\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        button: {\n            paddingLeft: 0,\n\n            _hover: {\n                background: 'none'\n            }\n        },\n        panel: {\n            paddingTop: 0,\n            paddingBottom: 0\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    variants: {\n        notification: {\n            display: 'inline-flex',\n            justifyContent: 'center',\n            position: 'absolute',\n            top: 0,\n            right: 0,\n            minWidth: 5,\n            height: 5,\n            color: 'white',\n            fontSize: 'xs',\n            backgroundColor: 'blue.600',\n            border: '1px solid',\n            borderColor: 'white',\n            borderRadius: 'full'\n        }\n    }\n}\n","export default {\n    variants: {\n        black: {\n            control: {\n                borderRadius: 'none',\n                border: '1px solid',\n                _checked: {\n                    backgroundColor: 'black',\n                    borderColor: 'black',\n                    _hover: {\n                        backgroundColor: 'black',\n                        borderColor: 'black'\n                    }\n                }\n            }\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        maxWidth: 'container.xxl'\n    },\n    variants: {\n        form: {\n            maxWidth: '522px',\n            px: 0\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        marginBottom: 1,\n        fontSize: 'sm',\n        fontWeight: 'semibold'\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        display: 'inline-block',\n        verticalAlign: 'bottom',\n        boxSize: 6\n    }\n}\n","export default {\n    baseStyle: {\n        dialog: {\n            borderRadius: 'base'\n        },\n        dialogContainer: {\n            overflow: 'visible' // This is to prevent the modal from overflowing the viewport\n        }\n    }\n}\n","export default {\n    parts: ['popper'],\n    baseStyle: {\n        popper: {\n            borderColor: 'transparent',\n            borderRadius: 'base'\n        },\n        content: {\n            boxShadow: '0px 1px 12px rgba(0, 0, 0, 0.25)'\n        }\n    },\n    variants: {\n        small: {},\n        normal: {\n            popper: {\n                width: 275\n            },\n            header: {\n                textAlign: 'left',\n                fontWeight: 700,\n                borderBottom: 'none',\n                fontSize: 18,\n                px: 7,\n                paddingTop: 6\n            },\n            footer: {\n                textAlign: 'left',\n                fontSize: 14,\n                px: 3,\n                borderTop: 'none'\n            },\n            content: {\n                width: '100%'\n            },\n            body: {\n                py: 0\n            }\n        },\n        fullWidth: {\n            popper: {\n                width: '100%',\n                maxWidth: '100%',\n                boxShadow: 'none',\n                top: '0',\n                right: 'auto',\n                bottom: 'auto',\n                left: '0'\n            },\n            content: {\n                width: 'auto'\n            }\n        }\n    },\n    defaultProps: {\n        variant: 'normal'\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        container: {display: 'flex'},\n        label: {\n            width: 'full'\n        },\n        control: {\n            backgroundColor: 'white',\n            _checked: {\n                backgroundColor: 'blue.600',\n                borderColor: 'blue.600',\n                _hover: {\n                    backgroundColor: 'blue.700',\n                    borderColor: 'blue.700'\n                }\n            },\n            _indeterminate: {}\n        }\n    },\n    sizes: {\n        md: {\n            container: {alignItems: 'flex-start'},\n            control: {marginTop: '0.25em'},\n            label: {marginLeft: 3}\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nconst mdSize = {height: 11, h: 11, borderRadius: 'base'}\n\nexport default {\n    sizes: {\n        md: {\n            field: mdSize\n        }\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        borderRadius: 'base',\n        opacity: 0.3\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        '--tooltip-bg': `colors.blue.800`,\n        px: 2,\n        py: 2,\n        bg: 'var(--tooltip-bg)',\n        '--popper-arrow-bg': 'var(--tooltip-bg)',\n        color: 'whiteAlpha.900',\n        borderRadius: 'base',\n        maxW: '280px',\n        lineHeight: '1.5em'\n    }\n}\n","export default {\n    baseStyle: {\n        filledTrack: {\n            bgColor: '#211710'\n        },\n        track: {\n            bgColor: '#E6E6E6'\n        }\n    }\n}\n","export default {\n    baseStyle: {\n        borderTop: '1px solid',\n        borderColor: 'black4',\n        _first: {\n            borderTop: 0,\n            '& > .chakra-accordion__button': {\n                pt: 0\n            }\n        },\n        _last: {\n            borderBottom: 0\n        }\n    }\n}\n","export default {\n    baseStyle: {\n        display: 'flex',\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        pt: 6,\n        pb: 6,\n        alignItems: 'baseline',\n        label: {\n            cursor: 'pointer',\n            marginRight: {base: 4, xl: 'unset'},\n            textAlign: 'left',\n            color: 'black1'\n        },\n        subline: {\n            color: 'black1',\n            textAlign: 'left'\n        }\n    }\n}\n","export default {\n    baseStyle: {\n        marginRight: {base: 10, xl: 'unset'},\n        padding: 0,\n        marginBottom: 8,\n        text: {\n            color: 'black3a',\n            textAlign: 'left',\n            marginBottom: 3,\n            width: {xl: '66%'}\n        }\n    }\n}\n","export const Breadcrumb = {\n    baseStyle: {\n        container: {\n            alignItems: 'center',\n            display: 'flex',\n            gap: 1.5,\n            height: {base: 8, md: 12},\n            paddingX: {base: 8, md: 12, lg: 12, xl: 16}\n        },\n        motionBox: {\n            display: 'flex',\n            gap: 1.5,\n            paddingX: 0\n        },\n        listItem: {\n            whiteSpace: 'nowrap',\n            _after: {\n                content: '\"/\"',\n                display: 'inline-block',\n                marginLeft: 2,\n                fontSize: 'xs'\n            },\n            _last: {\n                _after: {\n                    display: 'none'\n                }\n            }\n        },\n        link: {\n            fontSize: 2.75,\n            lineHeight: 4,\n            _hover: {\n                color: 'black3b',\n                textDecoration: 'none'\n            }\n        }\n    },\n    variants: {\n        transparent: {\n            listItem: {\n                _after: {\n                    color: 'black4'\n                }\n            }\n        },\n        white: {\n            listItem: {\n                _after: {\n                    color: 'black4'\n                }\n            }\n        },\n        pink: {\n            listItem: {\n                _after: {\n                    color: 'shadowBlack'\n                }\n            }\n        }\n    },\n    parts: ['container', 'motionBox', 'listItem', 'link']\n}\n","export const Search = {\n    baseStyle: {\n        container: {\n            alignItems: 'center',\n            height: {base: 8, xl: 8},\n            justifyContent: {base: 'start', md: 'center'},\n            width: {base: 'full', md: '20.625rem', xl: '26.75rem'}\n        },\n        input: {\n            flexGrow: 1,\n            height: 5,\n            minWidth: 212,\n            width: 'auto'\n        },\n        icon: {\n            boxSize: 5\n        },\n        iconButton: {\n            boxSize: 5,\n            minWidth: 0\n        },\n        suggestionsContainer: {\n            width: '400px',\n            overflowY: 'auto',\n            minHeight: '200px',\n            height: '70vh',\n            overscrollBehavior: 'contain'\n        },\n        categorySuggestionContainer: {\n            width: 'full',\n            fontSize: 'md',\n            marginTop: 5,\n            paddingX: 0,\n            display: 'inline-flex',\n            flexDirection: 'column',\n            alignItems: 'flex-start',\n            size: 'sm',\n            textTransform: 'uppercase',\n            _hover: {cursor: 'pointer'}\n        },\n        categoryFlyoutSuggestionContainer: {\n            width: 'full',\n            fontSize: 'md',\n            my: 3,\n            paddingX: 0,\n            display: 'inline-flex',\n            flexDirection: 'row',\n            alignItems: 'flex-start',\n            size: 'sm',\n            _hover: {cursor: 'pointer'}\n        },\n        suggestionTitle: {\n            color: 'black1',\n            fontSize: 'sm',\n            lineHeight: 5,\n            whiteSpace: 'break-spaces',\n            textAlign: 'left',\n            _hover: {textDecoration: 'underline'}\n        },\n        flyoutSuggestionTitle: {\n            color: 'black1',\n            fontSize: '13px',\n            lineHeight: 5,\n            whiteSpace: 'break-spaces',\n            textAlign: 'left',\n            textTransform: 'lowercase',\n            _hover: {textDecoration: 'underline'},\n            marginLeft: 2\n        },\n        suggestionSubTitle: {\n            color: 'subdued',\n            fontSize: 'xs',\n            lineHeight: 4,\n            _hover: {textDecoration: 'none'}\n        },\n        suggestionPriceTitle: {\n            color: 'subdued',\n            fontSize: 'xs',\n            lineHeight: 4,\n            _hover: {textDecoration: 'none'},\n            textAlign: 'left'\n        },\n        tab: {\n            minHeight: 11,\n            height: 'auto',\n            width: '100%',\n            display: 'flex',\n            justifyContent: 'flex-start',\n            alignItems: 'center',\n            overflow: 'hidden',\n            paddingX: 0,\n            gap: 5,\n            _hover: {\n                cursor: 'pointer'\n            }\n        },\n        tags: {\n            background: 'offWhite',\n            color: 'black1',\n            borderRadius: 'xl',\n            borderColor: 'transparent',\n            marginRight: 2,\n            marginTop: 2,\n            paddingY: 1,\n            _hover: {\n                background: 'gray.100',\n                color: 'black'\n            }\n        },\n        headers: {\n            fontSize: 'xs',\n            color: 'subdued'\n        },\n        productImage: {\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            minWidth: 21,\n            minHeight: 27,\n            backgroundColor: 'black5'\n        }\n    },\n    variants: {\n        transparent: ({borderBottomWidth, isStickyHeader}) => ({\n            input: {\n                _placeholder: {\n                    color: isStickyHeader ? 'black1' : 'white'\n                }\n            },\n            separator: {\n                borderBottom: `${borderBottomWidth} solid`\n            },\n            icon: {\n                color: 'white'\n            }\n        }),\n        white: {\n            input: {\n                _placeholder: {\n                    color: 'black3a'\n                },\n                color: 'black3a',\n                sx: {\n                    '&:hover::placeholder': {\n                        color: 'black3a'\n                    }\n                }\n            },\n            separator: {\n                borderBottom: 'none'\n            },\n            icon: {\n                color: 'black1'\n            }\n        },\n        pink: {\n            input: {\n                _placeholder: {\n                    color: 'black1'\n                }\n            },\n            separator: {\n                borderBottom: 'none'\n            }\n        }\n    },\n    parts: [\n        'container',\n        'input',\n        'icon',\n        'iconButton',\n        'separator',\n        'categorySuggestionContainer',\n        'suggestionsContainer',\n        'suggestionTitle',\n        'categoryFlyoutSuggestionContainer',\n        'flyoutSuggestionTitle',\n        'suggestionSubTitle',\n        'suggestionPriceTitle',\n        'tab',\n        'tags',\n        'headers',\n        'productImage'\n    ]\n}\n","export default {\n    parts: [\n        'container',\n        'content',\n        'subscribe',\n        'subscribeField',\n        'subscribeButtonContainer',\n        'subscribeHeading',\n        'subscribeMessage',\n        'horizontalRule',\n        'accordionHeader',\n        'linkStacks',\n        'localeSpecificContent',\n        'assurances'\n    ],\n    baseStyle: (props) => {\n        const {direction} = props.theme\n        const isRTL = direction === 'rtl'\n\n        return {\n            container: {\n                width: 'full',\n                background: 'white'\n            },\n            content: {\n                maxWidth: 'container.xxl',\n                marginLeft: 'auto',\n                marginRight: 'auto',\n                color: 'linkColor',\n                paddingTop: {base: 5, xl: 8},\n                paddingBottom: [8, 8, 16, 16],\n                paddingLeft: [8, 8, 12, 16],\n                paddingRight: [8, 8, 12, 16]\n            },\n            subscribe: {\n                width: '100%',\n                maxWidth: {base: '100%', lg: '2xl'},\n                flexDirection: ['column', 'row', 'row']\n            },\n            subscribeField: {\n                background: 'white',\n                color: 'subdued',\n                borderColor: 'charcoalBlack',\n                borderTopRight: 0,\n                borderBottomRight: 0\n            },\n            subscribeInputContainer: {\n                width: ['100%', '100%', 'md']\n            },\n            subscribeButtonContainer: {\n                width: 'auto'\n            },\n            subscribeHeading: {\n                fontSize: 'md',\n                fontFamily: 'body',\n                fontWeight: 'normal',\n                marginBottom: 2\n            },\n            subscribeMessage: {\n                fontSize: 'xs'\n            },\n            horizontalRule: {\n                display: ['none', 'none', 'none', 'none', 'block'],\n                marginTop: 10,\n                marginBottom: 10\n            },\n            linkStacks: {\n                color: 'subdued',\n                fontSize: 'xs'\n            },\n            accordionHeader: {\n                paddingTop: 0,\n                paddingBottom: 0\n            },\n            bottomGrid: {\n                templateRows: {base: 'repeat(3, auto)', xl: 'repeat(1, auto)'},\n                rowGap: {base: 8, xl: 0},\n                mx: 0\n            },\n            brandLogoGridItem: {\n                colSpan: {base: 6, xl: 2},\n                colStart: {base: 1, xl: 1},\n                rowStart: {base: 3, xl: 1},\n                width: '100%',\n                display: 'flex',\n                justifySelf: 'end'\n            },\n            brandLogoContainer: {\n                width: '100%',\n                maxWidth: {xl: 48},\n                display: 'flex',\n                alignItems: 'center'\n            },\n            brandLogo: {\n                width: {base: '100%', xl: '160px'},\n                height: {base: '100%', xl: '32.5px'}\n            },\n            brandLogoLink: {\n                width: '100%',\n                cursor: 'pointer'\n            },\n            siteLocatorCopyrightGridItem: {\n                colSpan: {base: 6},\n                colStart: {base: 1, xl: 4},\n                rowStart: {base: 2, xl: 1},\n                justifySelf: {base: 'start', xl: 'initial'},\n                alignSelf: {base: 'start', xl: 'end'},\n                width: '100%'\n            },\n            flexContainer: {\n                flexDirection: {base: 'column', xl: 'row'},\n                gap: {base: 4, xl: 5}\n            },\n            copyrightMessageText: {\n                textStyle: 'bodySm',\n                alignSelf: {base: 'start', xl: 'end'}\n            },\n            socialIconsGridItem: {\n                colSpan: {base: 6, xl: 2},\n                colStart: {base: 1, xl: 10},\n                rowStart: {base: 1, xl: 1},\n                justifySelf: 'start',\n                alignSelf: {base: 'start', xl: 'end'},\n                mt: {base: 16, xl: 0}\n            },\n            localeSpecificContent: {\n                colSpan: 6,\n                colStart: 1,\n                mt: {base: 0, xl: 16},\n                mb: {base: 2, md: 0}\n            },\n            assurances: {\n                width: '100%',\n                paddingTop: {base: 8},\n                paddingBottom: {base: 32},\n\n                '.cards': {\n                    display: {base: 'grid', xl: 'flex'},\n                    gridTemplateColumns: {base: 'repeat(2, 1fr)', md: 'repeat(4, 1fr)'},\n                    columnGap: {xl: 3},\n                    borderCollapse: 'collapse'\n                },\n\n                card: {\n                    width: {base: '100%'},\n                    height: 150,\n                    display: 'flex',\n                    alignItems: 'center',\n                    justifyContent: 'center',\n                    borderBottom: {base: '1px solid', md: 'none'},\n                    borderBottomColor: 'black4',\n                    borderInlineEnd: '1px solid',\n                    borderInlineEndColor: 'black4',\n                    mr: isRTL ? {xl: 0} : {xl: 3},\n                    ml: isRTL ? {xl: 3} : {xl: 0},\n                    pr: isRTL ? {base: 5, xl: 0} : 5,\n                    pl: isRTL ? 5 : {base: 5, xl: 0},\n\n                    '& > div': {\n                        width: '100%',\n                        display: 'block',\n                        textAlign: {base: 'center', xl: isRTL ? 'right' : 'left'},\n\n                        '& > div': {\n                            textAlign: {base: 'center', xl: isRTL ? 'right' : 'left'}\n                        },\n\n                        a: {\n                            textStyle: {base: 'caption', xl: 'bodySm'},\n                            lineHeight: {base: 4, xl: 5}\n                        }\n                    },\n\n                    // Remove right border for last item\n                    '&:nth-of-type(4)': {\n                        borderInlineEnd: 'none',\n                        borderBottom: 'none'\n                    },\n                    '&:nth-of-type(3)': {\n                        borderBottom: 'none'\n                    },\n                    '&:nth-of-type(2)': {\n                        borderInlineEnd: {base: 'none', md: '1px solid'},\n                        borderInlineEndColor: {md: 'black4'}\n                    }\n                }\n            },\n            livechat: {\n                width: '48px',\n                height: '48px',\n                position: 'fixed',\n                // Above the sticky PLP filter bar (1100), below overlays/drawers\n                // (1300+) and the OneTrust cookie banner. See PVA-3266.\n                zIndex: 1150,\n                right: '35px',\n                bottom: '35px',\n                textAlign: 'center',\n\n                button: {\n                    background: 'black1',\n                    display: 'block',\n                    width: '100%',\n                    height: '100%',\n                    borderRadius: '100%'\n                }\n            }\n        }\n    }\n}\n","export default {\n    parts: ['container', 'list', 'listItem', 'listItemSx', 'heading'],\n    baseStyle: {\n        container: {\n            color: 'secondary.900'\n        },\n        list: {\n            fontSize: '12px',\n            fontFamily: 'body',\n            fontWeight: 'regular',\n            lineHeight: '18px',\n            color: 'ironsideLightGrey'\n        },\n        listItem: {},\n        headingLink: {\n            display: 'inline-flex'\n        },\n        heading: {\n            color: 'charcoalBlack',\n            fontFamily: 'body',\n            fontSize: '16px',\n            fontWeight: 'normal',\n            lineHeight: '24px',\n            marginBottom: '10px',\n            textTransform: 'uppercase'\n        }\n    },\n    variants: {\n        vertical: {},\n        horizontal: {\n            listItem: {\n                borderLeft: '1px solid',\n                paddingLeft: 2\n            },\n            listItemSx: {\n                '&:first-of-type': {\n                    borderLeft: 0,\n                    paddingLeft: 0\n                }\n            }\n        }\n    },\n    defaultProps: {\n        variant: 'vertical'\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        container: {},\n        nestedAccordion: {\n            paddingLeft: 4\n        },\n        internalButton: {},\n        internalButtonIcon: {\n            color: 'grey',\n            marginRight: 2\n        },\n        leafButton: {\n            color: 'black',\n            paddingLeft: 8,\n            paddingTop: 2,\n            paddingBottom: 2\n        }\n    },\n    parts: ['container', 'nestedAccordion', 'internalButton', 'leafButtonIcon', 'leafButton']\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        accordion: {},\n        container: {},\n        selectedButtonIcon: {\n            color: 'grey'\n        },\n        selectedButton: {\n            paddingLeft: 0\n        },\n        selectedText: {\n            flex: '1',\n            textAlign: 'left',\n            paddingLeft: 2\n        },\n        selectedIcon: {\n            color: 'blue.600'\n        },\n        optionButton: {\n            paddingLeft: 2\n        },\n        optionText: {\n            paddingLeft: 2,\n            paddingRight: 4,\n            textAlign: 'left'\n        }\n    },\n    parts: [\n        'accordion',\n        'container',\n        'selectedButton',\n        'selectedText',\n        'optionButton',\n        'optionText'\n    ]\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        container: {\n            paddingTop: 4,\n            paddingBottom: 4,\n            paddingLeft: [4, 4, 6, 6, 8],\n            paddingRight: [4, 4, 6, 6, 8]\n        },\n        icon: {\n            height: 5,\n            width: 5\n        },\n        message: {\n            paddingLeft: 2,\n            fontWeight: 700\n        }\n    },\n    parts: ['container', 'icon', 'message']\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        button: {\n            color: 'black'\n        },\n        container: {},\n        text: {\n            whiteSpace: 'nowrap',\n            paddingLeft: 4,\n            paddingRight: 4,\n            paddingTop: 2,\n            paddingBottom: 2\n        }\n    },\n    parts: ['button', 'container', 'text']\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: () => ({\n        swatchGroup: {\n            flexDirection: 'column '\n        },\n        swatchLabel: {\n            marginBottom: 3\n        },\n        swatch: {\n            position: 'relative',\n            backgroundColor: 'white',\n            _focus: {\n                outline: 'none',\n                boxShadow: 'outline'\n            }\n        },\n        swatchesWrapper: {\n            flexWrap: 'wrap'\n        },\n        swatchButton: {\n            borderColor: 'gray.200',\n            _disabled: {\n                opacity: 1\n            }\n        }\n    }),\n    variants: {\n        circle: (props) => ({\n            swatch: {\n                height: 11,\n                width: 11,\n                borderRadius: 'full',\n                padding: 1,\n                cursor: 'pointer',\n                marginRight: 2,\n                marginLeft: 0,\n                marginBottom: 2,\n                color: `${props.selected ? 'black' : 'gray.600'}`,\n                border: `${props.selected ? '1px' : '0'}`,\n                _hover: {\n                    borderColor: `${props.selected ? 'black' : 'gray.200'}`,\n                    borderWidth: 1,\n                    borderStyle: 'solid'\n                },\n                _active: {\n                    background: 'transparent'\n                },\n                _before: {\n                    content: '\"\"',\n                    display: `${props.disabled ? 'block' : 'none'}`,\n                    position: 'absolute',\n                    height: 11,\n                    width: '1px',\n                    transform: 'rotate(45deg)',\n                    backgroundColor: 'black',\n                    zIndex: 1\n                }\n            },\n            swatchButton: {\n                height: 8,\n                borderColor: 'gray.200',\n                width: 8,\n                overflow: 'hidden',\n                borderRadius: 'full',\n                minWidth: 'auto',\n                opacity: 1,\n                _focus: {\n                    outline: 'none'\n                }\n            }\n        }),\n        square: (props) => ({\n            swatch: {\n                marginRight: 2,\n                // diagonal line for disabled options\n                // theme variable like gray.200 won't work inside linear-gradient\n                backgroundImage: `${\n                    props.disabled\n                        ? `${\n                              props.selected\n                                  ? 'linear-gradient(to top left, transparent calc(50% - 1px), black, transparent calc(50% + 1px) )'\n                                  : 'linear-gradient(to top left, white calc(50% - 1px), #c9c9c9, white calc(50% + 1px) )'\n                          } `\n                        : ''\n                }`,\n                borderColor: `${props.selected ? 'black' : 'gray.200'}`,\n                borderStyle: 'solid',\n                borderWidth: 1,\n                paddingLeft: 3,\n                paddingRight: 3,\n                marginBottom: 2,\n                _focus: {outline: 'none'},\n                _hover: {\n                    textDecoration: 'none',\n                    borderColor: 'gray.900'\n                },\n                _active: {\n                    borderColor: 'gray.900'\n                },\n                backgroundColor: `${\n                    props.selected ? (props.disabled ? 'gray.100' : 'black') : 'white'\n                }`,\n                color: `${props.selected && !props.disabled ? 'white' : 'gray.900'}`\n            },\n            swatchButton: {}\n        })\n    },\n    parts: ['swatch', 'swatchButton']\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nexport default {\n    baseStyle: {\n        container: {},\n        heroImage: {},\n        heroImageGroup: {\n            marginBottom: 2\n        },\n        heroImageSkeleton: {\n            marginBottom: 2\n        },\n        thumbnailImageGroup: {},\n        thumbnailImageItem: {\n            flexShrink: 0,\n            cursor: 'pointer',\n            flexBasis: [20, 20, 24],\n            borderStyle: 'solid',\n            marginBottom: [1, 1, 2, 2],\n            marginRight: [1, 1, 2, 2],\n            _focus: {\n                boxShadow: 'outline'\n            },\n            _focusVisible: {\n                outline: 0\n            }\n        },\n        thumbnailImageSkeleton: {\n            marginRight: 2,\n            width: [20, 20, 24, 24]\n        }\n    },\n    sizes: {\n        sm: {\n            heroImageSkeleton: {\n                maxWidth: ['none', 'none', 'none', '500px']\n            },\n            heroImage: {\n                maxWidth: ['none', 'none', 'none', '500px']\n            }\n        },\n        md: {\n            heroImageSkeleton: {\n                maxWidth: ['none', 'none', 'none', '680px']\n            },\n            heroImage: {\n                maxWidth: ['none', 'none', 'none', '680px']\n            }\n        }\n    },\n    defaultProps: {\n        size: 'md'\n    },\n    parts: ['container', 'heroImageGroup', 'heroImage', 'heroImageSkeleton', 'thumbnailImageGroup']\n}\n","export const Slider = {\n    parts: [\n        'container',\n        'header',\n        'title',\n        'sliderContainer',\n        'sliderGrid',\n        'productContainer',\n        'button',\n        'skeletonContainer',\n        'sliderButton'\n    ],\n    baseStyle: {\n        container: {\n            minWidth: 'xs',\n            width: 'full',\n            boxShadow: 'none',\n            px: {base: 8, md: 12, lg: 16}\n        },\n        header: {\n            justifyContent: 'space-between',\n            alignItems: 'center',\n            paddingTop: 16,\n            paddingBottom: 8\n        },\n        title: {\n            fontSize: [5, 5, 7],\n            textTransform: 'uppercase',\n            color: 'secondaryColor'\n        },\n        sliderContainer: {\n            width: 'full',\n            overflow: 'hidden',\n            pb: 32\n        },\n        sliderGrid: {\n            display: 'flex',\n            scrollSnapType: 'x mandatory',\n            whiteSpace: 'nowrap',\n            transition: 'scroll 0.5s ease',\n            gap: 3\n        },\n        productContainer: {\n            width: {\n                base: '145px',\n                sm: '159px',\n                md: '225px',\n                lg: '272px',\n                xl: '272px',\n                '2xl': '410px'\n            },\n            height: {\n                base: '212px',\n                sm: '212px',\n                md: '300px',\n                lg: '425px',\n                xl: '550px',\n                '2xl': '645px'\n            },\n            flex: '0 0 auto',\n            whiteSpace: 'normal'\n        },\n        button: {\n            height: 16,\n            width: 16\n        },\n        skeletonContainer: {\n            minWidth: 'xs',\n            width: 'full',\n            boxShadow: 'none',\n            minHeight: 12\n        },\n        gridColumns: {\n            base: 2,\n            md: 4\n        },\n        sliderButton: {\n            display: ['none', 'none', 'flex']\n        }\n    },\n    // Dark variant\n    variants: {\n        // Compact PLP in-grid layout (FIND-6594): the zone sits inside the PLP grid,\n        // which already carries the page margins, so the standalone-carousel padding\n        // must not double up.\n        inGrid: {\n            container: {\n                minWidth: 0,\n                px: {base: 0, md: 0, lg: 0}\n            }\n        },\n        dark: {\n            container: {\n                px: {base: 0, md: 0, lg: 0},\n                color: 'white',\n\n                '.carousel-header': {\n                    'chakra-text': {\n                        color: 'white'\n                    }\n                },\n                button: {\n                    svg: {\n                        color: 'white'\n                    }\n                }\n            }\n        }\n    }\n}\n","export const LocaleMenu = {\n    parts: [\n        'menuButton',\n        'menuList',\n        'menuItem',\n        'iconContainer',\n        'localeText',\n        'menuFlex',\n        'menuContent',\n        'menuItemFlex',\n        'menuItemBox'\n    ],\n    baseStyle: {\n        menuList: {\n            minWidth: '165px',\n            borderWidth: '1px',\n            rounded: '0px',\n            borderColor: 'charcoalBlack',\n            padding: '0px',\n            mt: '-1px',\n            fontSize: 3\n        },\n        menuItem: {\n            textStyle: 'bodySm',\n            _focusVisible: {bg: 'offWhite', color: 'charcoalBlack'},\n            _hover: 'none'\n        },\n        localeText: {\n            textStyle: 'bodySm'\n        },\n        menuFlex: {\n            direction: 'row',\n            align: 'center',\n            gap: 2\n        },\n        menuContent: {\n            direction: 'column',\n            gap: 5,\n            p: 6,\n            w: '240px'\n        },\n        menuItemFlex: {\n            direction: 'row',\n            justify: 'space-between',\n            py: 1\n        }\n    }\n}\n","export const DragButton = {\n    baseStyle: {\n        display: 'flex',\n        flexDirection: 'column',\n        background: 'white',\n        alignItems: 'center',\n        gap: 6\n    }\n}\n","export const CloseButton = {\n    baseStyle: {\n        width: '64px !important',\n        height: '64px !important',\n        _hover: {\n            bg: 'none'\n        },\n        overflow: 'hidden',\n\n        svg: {\n            width: 5,\n            height: 5\n        }\n    }\n}\n","export const MiniCart = {\n    baseStyle: {\n        miniCartPopover: {\n            border: '1px solid',\n            borderColor: 'black4',\n            boxShadow: '5px 5px 40px 0 rgba(0, 0, 0, 0.1)',\n            borderRadius: '0'\n        },\n        miniCartHeaderText: {\n            fontSize: 5,\n            textTransform: 'uppercase',\n            fontWeight: '500'\n        },\n        minicartFooterText: {\n            fontSize: 3.25,\n            marginBottom: 3\n        },\n        miniCartFooter: {\n            borderTop: '1px solid',\n            borderColor: 'newColors.lightGray',\n            padding: '12px 20px 20px',\n            justifyContent: 'space-between',\n            gap: 4\n        },\n        miniCartText: {\n            fontSize: 2.75,\n            lineHeight: 4\n        },\n        primaryTextColor: {\n            color: 'black1'\n        },\n        secondaryTextColor: {\n            color: 'black3b'\n        },\n        saleTextColor: {\n            color: 'red100'\n        },\n        outlineButtonText: {\n            whiteSpace: 'normal'\n        },\n        netPriceText: {\n            position: 'relative',\n            top: '-15px'\n        }\n    },\n    parts: [\n        'miniCartPopover',\n        'miniCartHeaderText',\n        'minicartFooterText',\n        'miniCartFooter',\n        'miniCartText',\n        'primaryTextColor',\n        'secondaryTextColor',\n        'saleTextColor',\n        'outlineButtonText',\n        'netPriceText'\n    ]\n}\n","export const Navigation = {\n    baseStyle: {\n        width: 'full'\n    },\n    variants: {\n        transparent: {\n            position: 'absolute',\n            width: '100%',\n            zIndex: 'banner'\n        }\n    }\n}\n","export const IncentiveBanner = {\n    baseStyle: {\n        basePopover: {},\n        basePopoverArrow: {\n            left: '-5px !important',\n            top: '-1px !important'\n        },\n        basePopoverHeader: {\n            padding: '0',\n            textTransform: 'uppercase',\n            display: 'flex',\n            justifyContent: 'space-between',\n            alignItems: 'start'\n        },\n        basePopoverHeaderText: {\n            as: 'h3',\n            size: 'md',\n            fontWeight: 500,\n            mb: 4,\n            mr: 4,\n            color: 'black1'\n        },\n        basePopoverCloseButton: {\n            color: 'black1',\n            padding: 0,\n            position: 'static',\n            maxWidth: 5,\n            minWidth: 5,\n            maxHeight: 5\n        },\n        /** Specific styles for the incentive banner popover */\n        incentiveBannerPopoverContent: {\n            padding: 8,\n            marginRight: 8,\n            borderRadius: '0',\n            minWidth: '326px',\n            color: 'black1',\n            border: '1px solid',\n            borderColor: 'black4',\n            boxShadow: '5px 5px 40px 0 rgba(0, 0, 0, 0.1)'\n        },\n        incentiveList: {\n            listStyleType: 'none',\n            margin: 0,\n            padding: 0\n        },\n\n        incentiveListItem: {\n            display: 'flex',\n            alignItems: 'center',\n            textStyle: 'bodySm',\n            color: 'black1'\n        },\n        incentiveListIcon: {\n            width: 3,\n            height: 3,\n            marginRight: 2,\n            flexShrink: 0\n        },\n        incentiveButtonWrapper: {\n            mt: 8,\n            spacing: 4,\n            direction: 'column'\n        },\n        incentiveButton: {\n            cursor: 'pointer'\n        }\n    },\n    parts: [\n        'basePopover',\n        'basePopoverArrow',\n        'basePopoverHeader',\n        'basePopoverHeaderText',\n        'basePopoverCloseButton',\n        'incentiveBannerPopoverContent',\n        'incentiveList',\n        'incentiveListItem',\n        'incentiveListIcon'\n    ]\n}\n","export const SiteLocator = {\n    parts: [\n        'container',\n        'button',\n        'accordion',\n        'accordionContent',\n        'regionBox',\n        'regionText',\n        'headerStyles',\n        'headerTextStyles'\n    ],\n    baseStyle: {\n        container: {\n            align: 'center',\n            justify: 'flex-start',\n            alignItems: {xl: 'end'},\n            width: 'auto',\n            gap: 3,\n            height: 5\n        },\n        button: {\n            variant: 'link',\n            fontSize: 3,\n            color: 'black',\n            letterSpacing: '1px'\n        },\n        accordion: {\n            allowToggle: true\n        },\n        accordionContent: {\n            flexFlow: 'column',\n            flexWrap: 'wrap',\n            width: '100%',\n            flexDirection: 'column'\n        },\n        regionBox: {\n            pb: 12,\n            borderColor: 'white !important'\n        },\n        regionText: {\n            fontSize: 'xs',\n            sx: {columnSpan: 'all'},\n            pb: 2\n        },\n        headerStyles: {\n            textStyle: 'headingSm',\n            padding: {\n                base: '16px 8px 0px 32px !important',\n                xl: '16px 40px 0px 64px !important'\n            },\n            maxW: '100%'\n        },\n        headerTextStyles: {\n            pt: '17px'\n        }\n    }\n}\n","export const Country = {\n    parts: [\n        'accordionButton',\n        'accordionPanel',\n        'countryContainer',\n        'countryLink',\n        'localeList',\n        'localeListItem',\n        'localeLink'\n    ],\n    baseStyle: {\n        accordionButton: {\n            p: '2px 0px 2px 0px'\n        },\n        accordionPanel: {\n            pr: '0px',\n            m: '0px !important'\n        },\n        countryContainer: {\n            align: 'center',\n            py: 2,\n            w: '100%',\n            minW: '170px'\n        },\n        countryLink: {\n            fontSize: 'xs'\n        },\n        localeList: {\n            spacing: 4,\n            pl: '26px',\n            pt: 1,\n            pb: 2\n        },\n        localeListItem: {\n            height: 4\n        },\n        localeLink: {\n            fontSize: 'xs'\n        }\n    }\n}\n","export const LiveChat = {\n    parts: [\n        'button',\n        'rotatingBg',\n        'container',\n        'textContainer',\n        'iconWrapper',\n        'paragraph',\n        'dots'\n    ],\n\n    baseStyle: {\n        button: {\n            position: 'fixed',\n            bottom: 8.5,\n            right: 8.5,\n            borderRadius: 'full',\n            padding: 1.5,\n            border: 'none',\n            cursor: 'pointer',\n            bgGradient: 'linear(111deg, pandoraPink, red60, pandoraRed, pandoraPurple)',\n            display: 'flex',\n            overflow: 'hidden',\n            height: 17,\n            // Above the sticky PLP filter bar (1100), below overlays/drawers\n            // (1300+) and the OneTrust cookie banner. See PVA-3266.\n            zIndex: 1150,\n            transition: 'width 0.2s linear'\n        },\n\n        rotatingBg: {\n            content: '',\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            width: '100%',\n            height: '100%',\n            borderRadius: 'full',\n            zIndex: 0,\n            bgGradient: 'linear(111deg, pandoraPink, red60, pandoraRed, pandoraPurple)'\n        },\n\n        container: {\n            width: '100%',\n            height: '100%',\n            borderRadius: 'full',\n            display: 'flex',\n            alignItems: 'center',\n            overflow: 'hidden',\n            position: 'relative',\n            background: 'black1'\n        },\n\n        textContainer: {\n            paddingLeft: 6,\n            flex: 1,\n            maxHeight: 14\n        },\n\n        iconWrapper: {\n            width: 14,\n            height: 14,\n            display: 'grid',\n            placeItems: 'center',\n            borderRadius: 'full'\n        },\n\n        paragraph: {\n            margin: 0,\n            color: 'white'\n        },\n\n        dots: {\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            gap: '2px',\n            width: '100%',\n            height: '100%',\n            fontSize: '20px',\n            lineHeight: 0,\n            letterSpacing: '1px'\n        }\n    },\n    variants: {\n        collapsed: {\n            button: {\n                width: 17\n            },\n            textContainer: {\n                opacity: 0\n            }\n        },\n\n        expanded: {\n            button: {\n                width: '274px'\n            },\n            textContainer: {\n                opacity: 1\n            }\n        },\n\n        loading: {\n            button: {\n                width: 17,\n                boxShadow: '1px 1px 7px 0 rgba(0, 0, 0, 0.25)'\n            }\n        }\n    },\n\n    defaultProps: {\n        variant: 'collapsed'\n    }\n}\n","export default {\n    parts: ['container', 'image'],\n    baseStyle: {\n        container: {\n            bg: 'offWhite',\n            width: '100%',\n            height: '100%'\n        },\n        image: {\n            display: 'block',\n            width: '100%'\n        }\n    },\n    sizes: {},\n    variants: {\n        bottom: {\n            container: {\n                alignItems: 'flex-end',\n                display: 'flex'\n            }\n        },\n        top: {\n            container: {\n                alignItems: 'flex-start',\n                display: 'flex'\n            }\n        },\n        center: {\n            container: {\n                alignItems: 'center',\n                display: 'flex'\n            }\n        },\n        cover: {\n            image: {\n                height: '100%',\n                objectFit: 'cover'\n            }\n        }\n    },\n    defaultProps: {\n        variant: 'cover'\n    }\n}\n","export default {\n    baseStyle: {\n        steps: {\n            gap: 1,\n            px: 3,\n            h: 4,\n            alignItems: 'center',\n            w: 'full',\n            left: 0\n        }\n    },\n    sizes: {},\n    variants: {\n        bottom: {\n            steps: {\n                position: 'absolute',\n                bottom: 0\n            }\n        },\n        below: {\n            steps: {\n                position: 'relative',\n                px: {base: 8, md: 12},\n                h: 8\n            }\n        }\n    },\n    defaultProps: {}\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pixar_black\",\n  \"use\": \"pixar_black-usage\",\n  \"viewBox\": \"0 0 62.4 13.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 62.4 13.1\\\" id=\\\"pixar_black\\\"><path d=\\\"M4.5 11.4c.7.1 1.4.1 2.1.2l.2.8c-1.2-.1-2.3-.1-3.5-.1-1.1 0-2.2 0-3.3.1l.2-.8c.6-.1 1.2-.1 1.7-.2C2 10.4 2 7.2 2 5.8V5.1C2 4.6 2 2 1.9 1.2 1.3 1.1.7 1.1.1 1L0 .2h4.1c1.8 0 3.4.1 4.3.5C10 1.4 10.2 2.5 10.2 3c0 2.9-2.9 4.2-5.3 4.6L5 6.7c1.5-.4 2.6-1.2 2.6-3.1 0-.9-.5-1.7-1.2-2C6 1.4 5.2 1.3 4.6 1.3c-.1.8-.1 2.8-.1 4V6C4.4 7.1 4.4 10.5 4.5 11.4L4.5 11.4zM16.4 11.4c.6.1 1.2.2 1.7.2l.2.9c-1.2-.1-2.4-.1-3.6-.1-1 0-1.9 0-2.9.1l.2-.9c.6 0 1.2-.1 1.7-.2.1-.9.1-3.7.1-5.2v-1c0-.5 0-3.2-.1-4C13.1 1.1 12.6 1 12 1l-.2-.9c1.2.1 2.5.1 3.6.1.9 0 1.9 0 2.9-.1L18.1 1c-.6.1-1.2.2-1.7.2 0 .6-.1 2.3-.1 4.1v1C16.4 8.3 16.4 10.7 16.4 11.4L16.4 11.4zM28.5 9.6c-.9-1-1.7-2-2.1-2.5-.6.8-2 3.1-2.7 4.3.4.1.8.1 1.2.2l.1.8h-.3c-.3 0-1.7-.1-2.6-.1-.7 0-1.4 0-2.2.1l.3-.8c.4-.1.8-.1 1.1-.2.7-.5 3.6-4.3 4.3-5.2-.6-.7-1.4-1.8-2.1-2.7-.8-1-1.5-1.9-1.8-2.3C21.3 1.1 20.9 1 20.5 1l-.1-.9c.9.2 1.9.1 2.8.1 1 0 2.1 0 3.1-.1l-.2.8c-.4 0-.8.1-1.2.2.5.7 1.7 2.5 2.2 3.2.6-.8 1.7-2.4 2.2-3.3L29 .9c-.2 0-.5-.1-.7-.1L28.1 0c.9.1 1.7.1 2.6.1.7 0 1.3 0 2-.1l-.1.8c-.4.1-.8.2-1.2.3l-.1.1c-.6.5-1.1 1.2-1.6 1.8-.8.9-1.6 1.8-1.9 2.2 1.8 2.5 3.6 5.1 5.5 7.6L32 13.1C30.7 12.2 29.5 10.8 28.5 9.6L28.5 9.6zM43.7 11.4c-.5-1.5-1-3-1.6-4.5-.7 0-2.8.1-3.5.2-.2.6-.9 3-1.1 4.3.4.1.9.1 1.4.2l.2.8c-1-.1-2-.1-3-.1-.7 0-1.5 0-2.2.1l.1-.9c.5 0 1-.1 1.5-.2.7-1.3 3.4-8.7 4-10.3-.4-.1-.8-.1-1.2-.2V0c.9.1 1.7.1 2.6.1 1.1 0 2.2 0 3.3-.1l-.1.8c-.4 0-.8.1-1.2.2.3 1 1.1 3.3 1.7 4.8.5 1.3 1.4 3.9 2.2 5.4.5.1 1 .2 1.5.2l.1.9c-1-.2-2.2-.1-3.2-.1s-2.1 0-3.1.1l.2-.9C42.7 11.6 43.2 11.5 43.7 11.4L43.7 11.4zM40.4 2c-.5 1.3-1.2 3.2-1.4 4l2.8.1C41.5 4.9 40.8 3.1 40.4 2L40.4 2zM51.3 1.2c-.6-.1-1.2-.1-1.8-.2l-.1-.8h4c1.6 0 3.8 0 4.9.5 1 .4 1.6 1.1 1.6 2.1 0 1.1-1.2 2.5-2.4 3.2 1.2 2 3.4 5.1 4.9 6.7L61 12.9c-1.2-.6-4.9-4.7-5.9-6-.5 0-.9.1-1.2.1v.2c0 1 0 3.3.1 4.2.6.1 1.1.2 1.7.2l.2.9c-1-.1-2.1-.1-3.2-.1s-2.2 0-3.3.1l.2-.9c.6 0 1.2-.1 1.7-.2.1-.8.1-3.7.1-5.3v-1C51.3 4.5 51.3 1.9 51.3 1.2L51.3 1.2zM55.5 5.7c.7-.3 1.7-1 1.7-2.5 0-.8-.7-2-3.4-2.1 0 1-.1 3.5-.1 4.6V6C54.4 6 55 5.9 55.5 5.7L55.5 5.7z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"store-primary\",\n  \"use\": \"store-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"store-primary\\\">\\n    <g clip-path=\\\"url(#store-primary_clip0_3110_10719)\\\">\\n        <path d=\\\"M11 15.5002H10V14.5002H11V15.5002Z\\\" fill=\\\"currentColor\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.5 0.500244H19.5V3.00024H18.5V1.50024H1.5V18.5002H4V9.44758H14V18.5002H18.5V7.00024H19.5V19.5002H8.5L8.5 10.4476H5V19.5002H0.5V0.500244ZM9.5 18.5002H13V10.4476H9.5V18.5002Z\\\" fill=\\\"currentColor\\\" />\\n        <path d=\\\"M3.00008 4.00032L4.00008 3.00032L3.29297 2.29321L2.29297 3.29321L3.00008 4.00032Z\\\" fill=\\\"currentColor\\\" />\\n        <path d=\\\"M6.00008 4.00032L4.00008 6.00032L3.29297 5.29321L5.29297 3.29321L6.00008 4.00032Z\\\" fill=\\\"currentColor\\\" />\\n        <path d=\\\"M7 15.5002H8V14.5002H7V15.5002Z\\\" fill=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"store-primary_clip0_3110_10719\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * SVG Optimization - Main Icons Entry Point\n *\n * This file implements SVG optimization to improve SSR performance.\n *\n * OPTIMIZATION STRATEGY:\n * - Critical icons: Server-side rendered for immediate availability\n * - Non-critical icons: Lazy loaded on-demand for better performance\n *\n * PERFORMANCE IMPACT:\n * - Reduction in server-side SVG bundle size\n * - Improved Core Web Vitals (LCP, CLS)\n * - Progressive enhancement approach\n */\n\nimport React, {useState, useEffect, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {Spinner, Box} from '@salesforce/retail-react-app/app/components/shared/ui'\n\n// Import critical icons (always server-side rendered)\nexport * from './critical-icons'\n\n// Import icon loader utilities for lazy loading\nimport {\n    loadIconCategory,\n    preloadIconCategories,\n    getCachedIconCategory,\n    isIconCategoryLoading,\n    clearIconCache,\n    getIconCacheStats,\n    ICON_CATEGORIES,\n    ICON_LOAD_ERRORS\n} from './utils/icon-loader'\n\n// Re-export for external use\nexport {\n    loadIconCategory,\n    preloadIconCategories,\n    getCachedIconCategory,\n    isIconCategoryLoading,\n    clearIconCache,\n    getIconCacheStats,\n    ICON_CATEGORIES,\n    ICON_LOAD_ERRORS\n}\n\n// No legacy icon imports - that would defeat the optimization!\n\n/**\n * Lazy Icon Component\n *\n * This component handles lazy loading of non-critical icons with proper\n * loading states and error boundaries. Uses non-blocking loading to ensure\n * smooth rendering performance.\n */\nexport const LazyIcon = ({\n    category,\n    iconName,\n    fallbackIcon,\n    showLoadingSpinner = false,\n    loadingSize = 'sm',\n    onLoadError,\n    priority = 'low',\n    ...iconProps\n}) => {\n    const [iconSet, setIconSet] = useState(null)\n    const [isLoading, setIsLoading] = useState(false)\n    const [error, setError] = useState(null)\n    const isMounted = useRef(true)\n\n    useEffect(() => {\n        return () => {\n            isMounted.current = false\n        }\n    }, [])\n\n    useEffect(() => {\n        const loadIcon = async () => {\n            try {\n                setIsLoading(true)\n                setError(null)\n\n                // Check cache first\n                const cached = getCachedIconCategory(category)\n                if (cached && cached[iconName]) {\n                    setIconSet(cached)\n                    setIsLoading(false)\n                    return\n                }\n\n                // Non-blocking delay for low priority icons\n                if (priority === 'low' && typeof window !== 'undefined') {\n                    // Use requestIdleCallback if available\n                    if (window.requestIdleCallback) {\n                        await new Promise((resolve) =>\n                            window.requestIdleCallback(resolve, {timeout: 2000})\n                        )\n                    } else {\n                        // Fallback to setTimeout\n                        await new Promise((resolve) => setTimeout(resolve, 0))\n                    }\n                }\n\n                // Load icon category\n                const {loadIconCategory} = await import('./utils/icon-loader')\n                const loadedIconSet = await loadIconCategory(category, {\n                    onError: (cat, err, type) => {\n                        if (isMounted.current) {\n                            setError({category: cat, error: err, type})\n                            if (onLoadError) {\n                                onLoadError(cat, err, type)\n                            }\n                        }\n                    }\n                })\n\n                if (isMounted.current) {\n                    setIconSet(loadedIconSet)\n                }\n            } catch (err) {\n                if (isMounted.current) {\n                    setError({category, error: err, type: 'LOAD_ERROR'})\n                    if (onLoadError) {\n                        onLoadError(category, err, 'LOAD_ERROR')\n                    }\n                }\n            } finally {\n                if (isMounted.current) {\n                    setIsLoading(false)\n                }\n            }\n        }\n\n        loadIcon()\n    }, [category, iconName, onLoadError, priority])\n\n    // Show loading state\n    if (isLoading && showLoadingSpinner) {\n        return (\n            <Box display=\"inline-flex\" alignItems=\"center\" justifyContent=\"center\">\n                <Spinner size={loadingSize} />\n            </Box>\n        )\n    }\n\n    // Show error fallback\n    if (error && fallbackIcon) {\n        const FallbackComponent = fallbackIcon\n        return <FallbackComponent {...iconProps} />\n    }\n\n    // Render loaded icon\n    if (iconSet && iconSet[iconName]) {\n        const IconComponent = iconSet[iconName]\n        return <IconComponent {...iconProps} />\n    }\n\n    // Default fallback - invisible placeholder\n    return <Box display=\"inline-block\" width=\"1em\" height=\"1em\" />\n}\n\nLazyIcon.propTypes = {\n    category: PropTypes.string.isRequired,\n    iconName: PropTypes.string.isRequired,\n    fallbackIcon: PropTypes.elementType,\n    showLoadingSpinner: PropTypes.bool,\n    loadingSize: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n    onLoadError: PropTypes.func,\n    priority: PropTypes.string\n}\n\n/**\n * Lazy Icon Factory\n *\n * Creates lazy-loaded icon components for specific categories\n */\nexport const createLazyIcon = (category, iconName, fallbackIcon) => {\n    const LazyIconComponent = (props) => (\n        <LazyIcon category={category} iconName={iconName} fallbackIcon={fallbackIcon} {...props} />\n    )\n\n    LazyIconComponent.displayName = `Lazy${iconName}`\n    return LazyIconComponent\n}\n\n// Export non-critical icons with original names for compatibility\n// These will load lazily when used\n\n// Collaboration Icons (lazy loaded)\nexport const PandoraNetflixWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraNetflixWhiteIcon'\n)\nexport const PandoraNetflixBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraNetflixBlackIcon'\n)\nexport const PandoraDiamondsWhiteFrIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraDiamondsWhiteFrIcon'\n)\nexport const PandoraDiamondsBlackFrIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraDiamondsBlackFrIcon'\n)\nexport const PandoraDiamondsWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraDiamondsWhiteIcon'\n)\nexport const PandoraDiamondsBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraDiamondsBlackIcon'\n)\nexport const GotPandoraWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'GotPandoraWhiteIcon'\n)\nexport const GotPandoraBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'GotPandoraBlackIcon'\n)\nexport const PandoraMeHorizontalWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraMeHorizontalWhiteIcon'\n)\nexport const PandoraMeHorizontalBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraMeHorizontalBlackIcon'\n)\nexport const PandoraMeFestivalWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraMeFestivalWhiteIcon'\n)\nexport const PandoraMeFestivalBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraMeFestivalBlackIcon'\n)\nexport const PixarWhiteIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'PixarWhiteIcon')\nexport const PixarBlackIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'PixarBlackIcon')\nexport const MyPandoraWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MyPandoraWhiteIcon'\n)\nexport const MyPandoraBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MyPandoraBlackIcon'\n)\nexport const PandoraBridgertonWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraBridgertonWhiteIcon'\n)\nexport const PandoraBridgertonBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraBridgertonBlackIcon'\n)\nexport const MarvelPandoraWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MarvelPandoraWhiteIcon'\n)\nexport const MarvelPandoraBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MarvelPandoraBlackIcon'\n)\nexport const MandalorianWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MandalorianWhiteIcon'\n)\nexport const MandalorianBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'MandalorianBlackIcon'\n)\nexport const StarWarsIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'StarWarsIcon')\nexport const StarWarsCollectorsIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'StarWarsCollectorsIcon'\n)\nexport const StarWarsBlackIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'StarWarsBlackIcon')\nexport const HpPandoraIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'HpPandoraIcon')\nexport const HpPandoraBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'HpPandoraBlackIcon'\n)\nexport const DisneyPandoraIcon = createLazyIcon(ICON_CATEGORIES.COLLABORATION, 'DisneyPandoraIcon')\nexport const DisneyPandoraWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'DisneyPandoraWhiteIcon'\n)\nexport const PandoraUnicefWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraUnicefWhiteIcon'\n)\nexport const PandoraUnicefWhiteBlueIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraUnicefWhiteBlueIcon'\n)\nexport const PandoraUnicefBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraUnicefBlackIcon'\n)\nexport const PandoraUnicefBlackBlueIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraUnicefBlackBlueIcon'\n)\nexport const PandoraPatMcGrathWhiteIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraPatMcGrathWhiteIcon'\n)\nexport const PandoraPatMcGrathBlackIcon = createLazyIcon(\n    ICON_CATEGORIES.COLLABORATION,\n    'PandoraPatMcGrathBlackIcon'\n)\n\n// Social Media Icons (lazy loaded)\nexport const SocialFacebookIcon = createLazyIcon(ICON_CATEGORIES.SOCIAL_MEDIA, 'SocialFacebookIcon')\nexport const SocialInstagramIcon = createLazyIcon(\n    ICON_CATEGORIES.SOCIAL_MEDIA,\n    'SocialInstagramIcon'\n)\nexport const SocialTwitterIcon = createLazyIcon(ICON_CATEGORIES.SOCIAL_MEDIA, 'SocialTwitterIcon')\nexport const SocialTikTokIcon = createLazyIcon(ICON_CATEGORIES.SOCIAL_MEDIA, 'SocialTikTokIcon')\nexport const SocialYoutubeIcon = createLazyIcon(ICON_CATEGORIES.SOCIAL_MEDIA, 'SocialYoutubeIcon')\nexport const SocialPinterestIcon = createLazyIcon(\n    ICON_CATEGORIES.SOCIAL_MEDIA,\n    'SocialPinterestIcon'\n)\n\n// Pictogram Icons (lazy loaded)\nexport const CalendarWithCheckPictogram = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'CalendarWithCheckPictogram'\n)\nexport const GiftPictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'GiftPictogram')\nexport const HandWithHeartPictogram = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'HandWithHeartPictogram'\n)\nexport const StorePictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'StorePictogram')\nexport const TruckPictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'TruckPictogram')\nexport const LoyaltyPictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'LoyaltyPictogram')\nexport const WarrantyPictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'WarrantyPictogram')\nexport const ReturnPictogram = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'ReturnPictogram')\nexport const FlexiblePaymentPictogram = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'FlexiblePaymentPictogram'\n)\nexport const FlexibleDeliveryPictogram = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'FlexibleDeliveryPictogram'\n)\n\n// Primary Icons (lazy loaded)\nexport const TruckPrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'TruckPrimary')\nexport const StorePrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'StorePrimary')\nexport const HandWithHeartPrimary = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'HandWithHeartPrimary'\n)\nexport const CalendarPrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'CalendarPrimary')\nexport const LoyaltyPrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'LoyaltyPrimary')\nexport const WarrantyPrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'WarrantyPrimary')\nexport const ReturnPrimary = createLazyIcon(ICON_CATEGORIES.PICTOGRAM, 'ReturnPrimary')\nexport const FlexiblePaymentPrimary = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'FlexiblePaymentPrimary'\n)\nexport const FlexibleDeliveryPrimary = createLazyIcon(\n    ICON_CATEGORIES.PICTOGRAM,\n    'FlexibleDeliveryPrimary'\n)\n\n// BNPL Icons (lazy loaded)\nexport const ClearpayWhiteIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'ClearpayWhiteIcon')\nexport const ClearpayMintIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'ClearpayMintIcon')\nexport const ClearpayBlackIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'ClearpayBlackIcon')\nexport const AfterpayWhiteIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'AfterpayWhiteIcon')\nexport const AfterpayBlackIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'AfterpayBlackIcon')\nexport const KlarnaWhiteIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'KlarnaWhiteIcon')\nexport const KlarnaBlackIcon = createLazyIcon(ICON_CATEGORIES.BNPL, 'KlarnaBlackIcon')\n\n// Payment Method Icons (lazy loaded)\nexport const AmexIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'AmexIcon')\nexport const CVVIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'CVVIcon')\nexport const DiscoverIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'DiscoverIcon')\nexport const MastercardIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'MastercardIcon')\nexport const PaypalIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'PaypalIcon')\nexport const VisaIcon = createLazyIcon(ICON_CATEGORIES.PAYMENT, 'VisaIcon')\n\n// Feature Icons (lazy loaded)\nexport const FooterBrandLogoIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FooterBrandLogoIcon')\nexport const LiveChatIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'LiveChatIcon')\nexport const StaticEngravingIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticEngravingIcon')\nexport const PlayIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'PlayIcon')\nexport const PauseIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'PauseIcon')\nexport const MuteIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'MuteIcon')\nexport const UnmuteIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'UnmuteIcon')\nexport const NextIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'NextIcon')\nexport const PrevIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'PrevIcon')\nexport const StaticPlayIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticPlayIcon')\nexport const FigmaLogo = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FigmaLogo')\nexport const GithubLogo = createLazyIcon(ICON_CATEGORIES.FEATURE, 'GithubLogo')\nexport const FileIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FileIcon')\nexport const PlugIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'PlugIcon')\nexport const ReceiptIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'ReceiptIcon')\nexport const StaticPaperPlaneIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticPaperPlaneIcon')\nexport const StaticCirclesIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticCirclesIcon')\nexport const StaticDiamondIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticDiamondIcon')\nexport const StaticHandWithHeartIcon = createLazyIcon(\n    ICON_CATEGORIES.FEATURE,\n    'StaticHandWithHeartIcon'\n)\nexport const StaticImportantInfoIcon = createLazyIcon(\n    ICON_CATEGORIES.FEATURE,\n    'StaticImportantInfoIcon'\n)\nexport const StaticRulerIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticRulerIcon')\nexport const StaticSparklesIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticSparklesIcon')\nexport const StaticChevronDownIcon = createLazyIcon(\n    ICON_CATEGORIES.FEATURE,\n    'StaticChevronDownIcon'\n)\nexport const StaticChevronUpIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'StaticChevronUpIcon')\nexport const StaticChevronLeftIcon = createLazyIcon(\n    ICON_CATEGORIES.FEATURE,\n    'StaticChevronLeftIcon'\n)\nexport const StaticChevronRightIcon = createLazyIcon(\n    ICON_CATEGORIES.FEATURE,\n    'StaticChevronRightIcon'\n)\n\n// Country Flag Icons (lazy loaded)\nexport const FlagCAIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagCAIcon')\nexport const FlagUSIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagUSIcon')\nexport const FlagGBIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagGBIcon')\nexport const FlagFRIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagFRIcon')\nexport const FlagITIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagITIcon')\nexport const FlagCNIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagCNIcon')\nexport const FlagJPIcon = createLazyIcon(ICON_CATEGORIES.FEATURE, 'FlagJPIcon')\n\n/**\n * Icon Preloader Hook\n *\n * Hook to preload icon categories for better performance\n */\nexport const useIconPreloader = (categories = [], options = {}) => {\n    useEffect(() => {\n        if (categories.length === 0) {\n            return\n        }\n\n        // Preload categories on idle\n        const preload = async () => {\n            try {\n                const {preloadIconCategories} = await import('./utils/icon-loader')\n                await preloadIconCategories(categories, options)\n            } catch (error) {\n                console.warn('Failed to preload icon categories:', error)\n            }\n        }\n\n        if (typeof window !== 'undefined' && window.requestIdleCallback) {\n            window.requestIdleCallback(preload)\n        } else {\n            setTimeout(preload, 100)\n        }\n    }, [categories, options])\n}\n\n// Performance monitoring for development\nif (typeof window !== 'undefined' && process.env.NODE_ENV === 'development') {\n    // Track icon loading performance\n    window.__PANDORA_ICON_PERFORMANCE__ = {\n        loadTimes: new Map(),\n        errors: [],\n        cacheHits: 0,\n        cacheMisses: 0\n    }\n}\n","/**\n * Constants for useRecommendations\n * @module hooks/use-recommendations/constants\n */\n\nexport const RECOMMENDATION_TYPES = {\n    ITEM: 'item',\n    CATEGORY: 'category',\n    KEYWORD: 'keyword',\n    PERSONALIZED: 'personalized',\n    GLOBAL: 'global'\n}\n\nexport const RECOMMENDER_IDS = {\n    COMPLETE_THE_LOOK: 'completeTheLook',\n    FREQUENTLY_VIEWED_TOGETHER: 'frequentlyViewedTogether',\n    SIMILAR_PRODUCTS: 'similarProducts',\n    EXPERIENCE_DRIVEN: 'experienceDriven',\n    PART_OF_SET: 'partOfSet',\n    TRENDING_PRODUCTS: 'trendingProducts',\n    BESTSELLERS: 'bestsellers',\n    PAST_PURCHASES: 'pastPurchases',\n    RECENTLY_VIEWED: 'recentlyViewed'\n}\n\nexport const RECOMMENDER_ENGINES = {\n    BLOOMREACH: 'bloomreach',\n    SALESFORCE: 'salesforce',\n    EINSTEIN: 'einstein'\n}\n\nexport const RECOMMENDATION_PATHS = {\n    [RECOMMENDATION_TYPES.ITEM]: '/item',\n    [RECOMMENDATION_TYPES.CATEGORY]: '/category',\n    [RECOMMENDATION_TYPES.KEYWORD]: '/keyword',\n    [RECOMMENDATION_TYPES.PERSONALIZED]: '/personalized',\n    [RECOMMENDATION_TYPES.GLOBAL]: '/global'\n}\n\n/**\n * Opt-in caching behaviour for a recommendation query. `DEFAULT` keeps the\n * app-wide react-query defaults; only a caller that needs a widget's result to\n * survive remounting asks for `RETAINED`.\n */\nexport const CACHE_POLICIES = {\n    DEFAULT: 'default',\n    RETAINED: 'retained'\n}\n\n// Long enough to cover a browsing session on one page, bounded so the cached\n// product payloads are still garbage-collected once nothing renders them.\nconst RETAINED_CACHE_TIME_MS = 30 * 60 * 1000\n\nexport const CACHE_POLICY_QUERY_OPTIONS = Object.freeze({\n    [CACHE_POLICIES.DEFAULT]: Object.freeze({}),\n    [CACHE_POLICIES.RETAINED]: Object.freeze({\n        staleTime: Infinity,\n        cacheTime: RETAINED_CACHE_TIME_MS\n    })\n})\n","/**\n * Validation functions for recommendation parameters.\n *\n * @module hooks/use-recommendations/utils/validators\n */\n\n/**\n * @typedef {import('../types/recommendations').RecommendationItemParams} RecommendationItemParams\n * @typedef {import('../types/recommendations').RecommendationCategoryParams} RecommendationCategoryParams\n * @typedef {import('../types/recommendations').RecommendationKeywordParams} RecommendationKeywordParams\n * @typedef {import('../types/recommendations').RecommendationPersonalizedParams} RecommendationPersonalizedParams\n * @typedef {import('../types/recommendations').RecommendationGlobalParams} RecommendationGlobalParams\n * @typedef {import('../types/recommendations').RecommendationParams} RecommendationParams\n * @typedef {import('../types/recommendations').RecommendationType} RecommendationType\n * @typedef {import('../types/recommendations').ValidationResult} ValidationResult\n */\n\nconst COMMON_REQUIRED_FIELDS = ['recommenderId', 'visitorId', 'pageUrl']\n\n/**\n * Validates common + type-specific required fields.\n * recommenderId is validated as a required non-empty string; the backend\n * handles whether a given ID is valid for the requested recommendation type.\n *\n * @param {RecommendationParams} params\n * @param {RecommendationType} type - Recommendation type\n * @param {string[]} [requiredFields=[]] - Additional required field names\n * @returns {ValidationResult}\n */\nconst validate = (params, type, requiredFields = []) => {\n    const missingCommon = COMMON_REQUIRED_FIELDS.find((field) => !params[field])\n    if (missingCommon) {\n        return {isValid: false, error: `${missingCommon} is required`}\n    }\n\n    const missingSpecific = requiredFields.find((field) => !params[field])\n    if (missingSpecific) {\n        return {isValid: false, error: `${missingSpecific} is required for ${type} recommendations`}\n    }\n\n    return {isValid: true}\n}\n\n/** @param {RecommendationItemParams} params */\nexport const validateItemParams = (params) => validate(params, 'item', ['productId'])\n\n/** @param {RecommendationCategoryParams} params */\nexport const validateCategoryParams = (params) => validate(params, 'category', ['categoryId'])\n\n/** @param {RecommendationKeywordParams} params */\nexport const validateKeywordParams = (params) => validate(params, 'keyword', ['query'])\n\n/** @param {RecommendationPersonalizedParams} params */\nexport const validatePersonalizedParams = (params) =>\n    validate(params, 'personalized', ['userId', 'productId'])\n\n/** @param {RecommendationGlobalParams} params */\nexport const validateGlobalParams = (params) => validate(params, 'global')\n","/**\n * Recommendation Config Factory\n * Creates strategy configuration based on recommendation type.\n *\n * @module hooks/use-recommendations/utils/create-recommendation-config\n */\n\n/**\n * @typedef {import('../types/recommendations').RecommendationConfig} RecommendationConfig\n * @typedef {import('../types/recommendations').RecommendationItemConfig} RecommendationItemConfig\n * @typedef {import('../types/recommendations').RecommendationCategoryConfig} RecommendationCategoryConfig\n * @typedef {import('../types/recommendations').RecommendationKeywordConfig} RecommendationKeywordConfig\n * @typedef {import('../types/recommendations').RecommendationPersonalizedConfig} RecommendationPersonalizedConfig\n * @typedef {import('../types/recommendations').RecommendationGlobalConfig} RecommendationGlobalConfig\n * @typedef {import('../types/recommendations').RecommendationType} RecommendationType\n */\n\nimport {RECOMMENDATION_TYPES, RECOMMENDATION_PATHS} from '../constants'\nimport {\n    validateItemParams,\n    validateCategoryParams,\n    validateKeywordParams,\n    validatePersonalizedParams,\n    validateGlobalParams\n} from './validators'\n\n/** @type {Object.<string, RecommendationConfig>} */\nconst CONFIGS = {\n    /** @type {RecommendationItemConfig} */\n    [RECOMMENDATION_TYPES.ITEM]: {\n        type: RECOMMENDATION_TYPES.ITEM,\n        subPath: RECOMMENDATION_PATHS[RECOMMENDATION_TYPES.ITEM],\n        validate: validateItemParams,\n        buildQueryParams: (params) => ({productId: params.productId})\n    },\n    /** @type {RecommendationCategoryConfig} */\n    [RECOMMENDATION_TYPES.CATEGORY]: {\n        type: RECOMMENDATION_TYPES.CATEGORY,\n        subPath: RECOMMENDATION_PATHS[RECOMMENDATION_TYPES.CATEGORY],\n        validate: validateCategoryParams,\n        buildQueryParams: (params) => ({categoryId: params.categoryId})\n    },\n    /** @type {RecommendationKeywordConfig} */\n    [RECOMMENDATION_TYPES.KEYWORD]: {\n        type: RECOMMENDATION_TYPES.KEYWORD,\n        subPath: RECOMMENDATION_PATHS[RECOMMENDATION_TYPES.KEYWORD],\n        validate: validateKeywordParams,\n        buildQueryParams: (params) => ({query: params.query})\n    },\n    /** @type {RecommendationPersonalizedConfig} */\n    [RECOMMENDATION_TYPES.PERSONALIZED]: {\n        type: RECOMMENDATION_TYPES.PERSONALIZED,\n        subPath: RECOMMENDATION_PATHS[RECOMMENDATION_TYPES.PERSONALIZED],\n        validate: validatePersonalizedParams,\n        buildQueryParams: (params) => ({productId: params.productId})\n    },\n    /** @type {RecommendationGlobalConfig} */\n    [RECOMMENDATION_TYPES.GLOBAL]: {\n        type: RECOMMENDATION_TYPES.GLOBAL,\n        subPath: RECOMMENDATION_PATHS[RECOMMENDATION_TYPES.GLOBAL],\n        validate: validateGlobalParams,\n        buildQueryParams: () => ({})\n    }\n}\n\n/**\n * Creates a recommendation config for the given type\n * @param {RecommendationType} type\n * @returns {RecommendationConfig|null}\n */\nexport const createRecommendationConfig = (type) => CONFIGS[type] || null\n","/**\n * useRecommendations Hook\n *\n * Fetches product recommendations from different Recommendations API via DOL.\n * Uses a strategy pattern to handle 5 recommendation types (item, category, keyword,\n * personalized, global) with shared response shape but different required params.\n * Supports configurable recommender engine (bloomreach, salesforce, einstein).\n *\n * @module hooks/use-recommendations/use-recommendations\n */\n\n/**\n * @typedef {import('./types/recommendations').RecommendationParams} RecommendationParams\n * @typedef {import('./types/recommendations').UseRecommendationsResult} UseRecommendationsResult\n */\n\nimport {useMemo} from 'react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nimport {useCustomQuery} from '../useCustomQuery'\nimport {useVariant} from '../use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {getCustomApiPaths} from '../../utils/get-custom-apis'\nimport {createRecommendationConfig} from './utils/create-recommendation-config'\nimport {CACHE_POLICIES, CACHE_POLICY_QUERY_OPTIONS, RECOMMENDER_ENGINES} from './constants'\n\n/**\n * Common hook to fetch recommendations.\n *\n * @param {RecommendationParams} params\n * @returns {UseRecommendationsResult}\n */\nexport const useRecommendations = (params) => {\n    const {\n        type,\n        recommenderId,\n        visitorId,\n        pageUrl,\n        productId,\n        categoryId,\n        query,\n        userId,\n        recommenderEngine,\n        channelName,\n        enabled = true,\n        cachePolicy = CACHE_POLICIES.DEFAULT\n    } = params\n\n    // 1. Third-party hooks\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const enableRecommendationTabs = useVariant(LD_KEYS.enablePlpRecommendationTabs, false)\n\n    // 2. Derived config\n    const organizationId = appConfig?.commerceAPI?.parameters?.organizationId\n    const proxyPath = appConfig?.dolAPI?.proxyPath\n    const recommendationsBasePath = getCustomApiPaths(proxyPath, organizationId).RECOMMENDATIONS\n\n    // 3. Strategy resolution\n    const config = useMemo(() => createRecommendationConfig(type), [type])\n\n    // 4. Validation\n    const validation = useMemo(() => {\n        if (!config) {\n            return {isValid: false, error: `Unknown recommendation type: ${type}`}\n        }\n        return config.validate(params)\n    }, [config, type, recommenderId, visitorId, pageUrl, productId, categoryId, query, userId])\n\n    // 5. API path\n    const path = config ? `${recommendationsBasePath}${config.subPath}` : ''\n\n    // 6. Query params\n    const queryParams = useMemo(() => {\n        if (!config || !validation.isValid) return {}\n\n        return {\n            recommenderId,\n            pageUrl,\n            locale: locale?.id,\n            ...config.buildQueryParams(params)\n        }\n    }, [\n        config,\n        validation.isValid,\n        recommenderId,\n        pageUrl,\n        locale?.id,\n        productId,\n        categoryId,\n        query\n    ])\n\n    // 7. Headers\n    const headers = useMemo(() => {\n        // Bloomreach is the default engine when none is provided\n        const isBloomreachEngine =\n            !recommenderEngine || recommenderEngine === RECOMMENDER_ENGINES.BLOOMREACH\n        // Bloomreach expects a strict 'production' | 'staging' value\n        const bloomreachEnvironment = appConfig?.targetEnvironment?.includes('production')\n            ? 'production'\n            : 'staging'\n        const xEnvironment = isBloomreachEngine\n            ? bloomreachEnvironment\n            : appConfig?.targetEnvironment\n\n        const base = {\n            channelname: channelName,\n            channeltype: 'online',\n            'x-environment': xEnvironment,\n            visitorid: visitorId\n        }\n        if (userId) {\n            base.userid = userId\n        }\n        if (recommenderEngine) {\n            base['x-recommender-engine'] = recommenderEngine\n        }\n        return base\n    }, [appConfig?.targetEnvironment, visitorId, userId, recommenderEngine, channelName])\n\n    // 8. Query key\n    const typeSpecificId = productId || categoryId || query || ''\n    const queryKey = useMemo(\n        () => ['recommendations', type, recommenderId, typeSpecificId, locale?.id],\n        [type, recommenderId, typeSpecificId, locale?.id]\n    )\n\n    // 9. Data fetching\n    const isQueryEnabled = enabled && validation.isValid\n    const queryOptions = {\n        enabled: isQueryEnabled,\n        ...(enableRecommendationTabs && CACHE_POLICY_QUERY_OPTIONS[cachePolicy])\n    }\n    const {\n        data,\n        isLoading: isQueryLoading,\n        isError: isQueryError,\n        error: queryError\n    } = useCustomQuery(queryKey, {path, queryParams, headers}, queryOptions)\n\n    // 10. Derived return\n    const recommendations = data?.recommendations ?? []\n    const metadata = data?.metadata ?? null\n\n    const isLoading = isQueryEnabled && isQueryLoading\n    const isError = !validation.isValid || isQueryError\n    const error = !validation.isValid ? new Error(validation.error) : queryError ?? null\n\n    // 11. Return\n    return {\n        recommendations,\n        metadata,\n        isLoading,\n        isError,\n        error\n    }\n}\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {usePdpStaticContent} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\n\nimport {replacePlaceholders} from 'pandora-shared-app/overrides/app/utils/common'\n\nconst DefaultButtonAssurance = ({\n    assuranceData,\n    defaultLink,\n    defaultTitle,\n    children,\n    virtualPagePath,\n    placeholderData = {}\n}) => {\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const handleDrawerClose = () => {\n        setIsDrawerOpen(false)\n    }\n\n    // Fetch Amplience content\n    const {\n        Component: PdpStaticContent,\n        drawerLink,\n        drawerTitle\n    } = usePdpStaticContent({\n        assetKeys: assuranceData.assets\n    })\n\n    const bodyContent = (\n        <>\n            <PdpStaticContent />\n            {children}\n        </>\n    )\n\n    return (\n        <>\n            <Button\n                variant=\"link\"\n                aria-haspopup=\"dialog\"\n                onClick={() => setIsDrawerOpen(true)}\n                data-testid=\"pdp-assurance-text\"\n                textTransform=\"none\"\n                isTruncated\n                maxWidth=\"auto\"\n                textAlign=\"justify\"\n                data-auto={`${assuranceData.assets}`}\n            >\n                {replacePlaceholders(drawerLink || defaultLink, placeholderData)}\n            </Button>\n            <FullDrawerSheet\n                isOpen={isDrawerOpen}\n                virtualPagePath={virtualPagePath}\n                onClose={handleDrawerClose}\n                headerText={drawerTitle || defaultTitle}\n                bodyContent={bodyContent}\n            />\n        </>\n    )\n}\n\nDefaultButtonAssurance.propTypes = {\n    assuranceData: PropTypes.object.isRequired,\n    defaultLink: PropTypes.string,\n    defaultTitle: PropTypes.string,\n    children: PropTypes.node,\n    placeholderData: PropTypes.object,\n    virtualPagePath: PropTypes.string\n}\n\nDefaultButtonAssurance.displayName = 'DefaultButtonAssurance'\n\nexport {DefaultButtonAssurance}\n","// React Core\nimport React, {useState, memo} from 'react'\n\n// Type Definitions & Validation\nimport PropTypes from 'prop-types'\nimport {DIRECTIONS, VARIANTS} from '../../../link/constants'\n\n// Shared Components\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport StaticContentBody from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content/partials/static-content-body'\n\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\n/**\n * LinkAssurance Component\n *\n * This component renders a clickable ContentLink that opens a FullDrawerSheet.\n * Used to display detailed assurance content in a drawer when clicked.\n *\n * @component\n * @example\n * <LinkAssurance\n *    defaultLink=\"Free shipping on orders over C$99\"\n *    defaultTitle=\"GET FREE SHIPPING\"\n *    drawerBodyContent={[...]}\n * >\n *   <Box>Icon + Text</Box>\n * </LinkAssurance>\n *\n * @param {string} defaultLink - The visible text of the link.\n * @param {string} defaultTitle - The drawer's header title.\n * @param {Array} drawerBodyContent - The content shown inside the drawer.\n * @param {string} linkDirection - Direction used by ContentLink.\n * @param {string} linkVariant - Visual variant for the ContentLink.\n * @param {string} virtualPagePath - name of side drawer clicked\n * @param {ReactNode} children - The visual content wrapped by the link (icon + text).\n *\n * @returns {JSX.Element}\n */\nexport const LinkAssurance = memo(\n    ({\n        defaultLink = '',\n        defaultTitle = '',\n        drawerBodyContent = [],\n        linkDirection = DIRECTIONS.LEFT,\n        linkVariant = VARIANTS.INLINE,\n        virtualPagePath,\n        children\n    }) => {\n        const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n\n        const handleOpenDrawer = (e) => {\n            e.preventDefault()\n            setIsDrawerOpen(true)\n        }\n\n        const handleCloseDrawer = () => {\n            setIsDrawerOpen(false)\n        }\n\n        const linkData = {\n            text: defaultLink\n        }\n\n        return (\n            <>\n                <ContentLink\n                    variant={linkVariant}\n                    direction={linkDirection}\n                    linkData={linkData}\n                    data-testid=\"link-assurance\"\n                    data-auto=\"link-assurance\"\n                    display=\"flex\"\n                    onClick={handleOpenDrawer}\n                >\n                    {children}\n                </ContentLink>\n\n                <FullDrawerSheet\n                    isOpen={isDrawerOpen}\n                    onClose={handleCloseDrawer}\n                    headerText={defaultTitle}\n                    virtualPagePath={virtualPagePath}\n                    sheetType=\"\"\n                    bodyContent={\n                        <StaticContentBody\n                            drawerBodyContent={drawerBodyContent}\n                            isLoading={false}\n                        />\n                    }\n                />\n            </>\n        )\n    }\n)\n\nLinkAssurance.propTypes = {\n    defaultLink: PropTypes.string,\n    defaultTitle: PropTypes.string,\n    drawerBodyContent: PropTypes.array,\n    linkVariant: PropTypes.oneOf(Object.values(VARIANTS)),\n    linkDirection: PropTypes.oneOf(Object.values(DIRECTIONS)),\n    virtualPagePath: PropTypes.string,\n    children: PropTypes.node\n}\n\nLinkAssurance.displayName = 'LinkAssurance'\n","import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Text, useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {\n    CalendarIcon,\n    GiftIcon,\n    TruckIcon,\n    StoreIcon,\n    HandsHeartIcon,\n    ReturnIcon,\n    PaperPlaneIcon,\n    CreditIcon\n} from 'pandora-shared-app/overrides/app/components/icons-temp'\nimport {\n    StaticShippingIcon,\n    StaticWarrantyIcon,\n    StaticReturnIcon,\n    StaticGiftPackagingIcon,\n    StaticCreditCardIcon,\n    StaticEngravingIcon,\n    // Import Pictograms\n    CalendarWithCheckPictogram,\n    StorePictogram,\n    TruckPictogram,\n    LoyaltyPictogram,\n    WarrantyPictogram,\n    GiftPictogram,\n    ReturnPictogram,\n    FlexiblePaymentPictogram,\n    FlexibleDeliveryPictogram,\n    // Primary\n    TruckPrimary,\n    StorePrimary,\n    CalendarPrimary,\n    LoyaltyPrimary,\n    WarrantyPrimary,\n    ReturnPrimary,\n    FlexiblePaymentPrimary,\n    FlexibleDeliveryPrimary\n} from 'pandora-shared-app/overrides/app/components/icons'\nimport {DefaultButtonAssurance} from './partials/default-button-assurance'\nimport {ContentLink} from 'pandora-shared-app/overrides/app/components/content-link'\n\nimport {\n    COLORS,\n    DIRECTIONS,\n    VARIANTS\n} from 'pandora-shared-app/overrides/app/components/link/constants'\nimport {LinkAssurance} from './partials/link-assurance'\n\n/**\n * WE NEED TO REFACTOR ALL RELATED THE ICONS\n * - NAMES\n * - ICONS SVG to be like they are in FIGMA\n *\n * this we'll happen in task INS-2573\n */\n\nconst ICONS_MAP = {\n    Calendar: CalendarIcon,\n    Gift: GiftIcon,\n    Truck: TruckIcon,\n    Store: StoreIcon,\n    'Hands with Heart': HandsHeartIcon,\n    Return: ReturnIcon,\n    PaperPlane: PaperPlaneIcon,\n    Credit: CreditIcon,\n    ShippingSVG: StaticShippingIcon,\n    WarrantySVG: StaticWarrantyIcon,\n    ReturnSVG: StaticReturnIcon,\n    'Gift PackagingSVG': StaticGiftPackagingIcon,\n    bnpl: StaticCreditCardIcon,\n    diamond: StaticCreditCardIcon,\n    engraving: StaticEngravingIcon\n}\n\nconst ENTRY_POINTS_ICON_MAP = {\n    Calendar: CalendarIcon,\n    Gift: GiftIcon,\n    Truck: TruckIcon,\n    Store: StoreIcon,\n    'Hands with Heart': HandsHeartIcon\n}\n\nexport const PICTOGRAM_ICONS_MAP = {\n    shipping: TruckPictogram,\n    store: StorePictogram,\n    pickup: StorePictogram,\n    returns: ReturnPictogram,\n    bnpl: CalendarWithCheckPictogram,\n    loyalty: LoyaltyPictogram,\n    warranty: WarrantyPictogram,\n    gift: GiftPictogram,\n    packaging: GiftPictogram,\n    payment: FlexiblePaymentPictogram,\n    delivery: FlexibleDeliveryPictogram\n}\n\nexport const SMALL_ICONS_MAP = {\n    shipping: TruckPrimary,\n    store: StorePrimary,\n    pickup: StorePrimary,\n    returns: ReturnPrimary,\n    bnpl: CalendarPrimary,\n    loyalty: LoyaltyPrimary,\n    warranty: WarrantyPrimary,\n    gift: StaticGiftPackagingIcon,\n    packaging: StaticGiftPackagingIcon,\n    payment: FlexiblePaymentPrimary,\n    delivery: FlexibleDeliveryPrimary\n}\n\nexport const ICON_VARIANTS = {\n    SMALL: 'small',\n    PICTOGRAM: 'pictogram',\n    DYNAMIC: 'dynamic'\n}\n\nconst ALIGNMENT_MAP = {\n    left: 'flex-start',\n    center: 'center',\n    right: 'flex-end'\n}\n\nconst twoLineEllipsis = {\n    display: '-webkit-box',\n    WebkitLineClamp: 2,\n    WebkitBoxOrient: 'vertical',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    textStyle: {base: 'caption', xl: 'bodySm'},\n    lineHeight: {base: 4, xl: 5}\n}\n\n// it's a fixed value based on Figma requirements\nconst SPACE_BETWEEN_ASSURANCE_TEXT_AND_ICON = 4\n\nexport const Assurance = ({\n    linkData,\n    contentMeta,\n    icon = 'Gift',\n    iconVariant = ICON_VARIANTS.SMALL,\n    iconColor = 'black1',\n    direction = 'vertical',\n    alignment = 'left',\n    iconSize = {base: 14},\n    text,\n    textSize = 'large',\n    withButton = false,\n    withDefaultText = false,\n    assuranceData = {},\n    KCPTheme = '',\n    defaultLink = '',\n    defaultTitle = '',\n    withLinkAndDrawer = false,\n    linkVariant = VARIANTS.UNDERLINE,\n    linkDirection = DIRECTIONS.LEFT,\n    virtualPagePath,\n    drawerBodyContent = [],\n    placeholderData = {},\n    children\n}) => {\n    const isSmallScreen = useBreakpointValue({base: true, xl: false})\n\n    let SelectedIcon = ICONS_MAP[icon]\n\n    if (withDefaultText && iconVariant === ICON_VARIANTS.PICTOGRAM) {\n        SelectedIcon = ENTRY_POINTS_ICON_MAP[icon]\n    }\n\n    if (withLinkAndDrawer && iconVariant === ICON_VARIANTS.DYNAMIC) {\n        SelectedIcon = isSmallScreen ? SMALL_ICONS_MAP[icon] : PICTOGRAM_ICONS_MAP[icon]\n    }\n\n    const containerStyles = useMemo(\n        () => ({\n            display: 'inline-flex',\n            flexDirection: direction === 'vertical' ? 'column' : 'row',\n            alignItems: direction === 'horizontal' ? 'center' : ALIGNMENT_MAP[alignment],\n            gap: withDefaultText ? 0 : SPACE_BETWEEN_ASSURANCE_TEXT_AND_ICON,\n            marginTop: withDefaultText ? 8 : 0,\n            textAlign: alignment\n        }),\n        [direction, alignment]\n    )\n\n    const renderContent = () => {\n        // Button Assurance, used in the PDP AssuranceList\n        if (withButton) {\n            return (\n                <DefaultButtonAssurance\n                    assuranceData={assuranceData}\n                    virtualPagePath={virtualPagePath}\n                    defaultLink={defaultLink}\n                    defaultTitle={defaultTitle}\n                    placeholderData={placeholderData}\n                >\n                    {children}\n                </DefaultButtonAssurance>\n            )\n        }\n\n        // Text only Assurance, used in the EntryPointsTile\n        if (withDefaultText) {\n            return (\n                <Box sx={twoLineEllipsis} className=\"assurance-text-container\">\n                    <Text marginTop={3} textStyle=\"bodySm\">\n                        {text}\n                    </Text>\n                </Box>\n            )\n        }\n\n        return (\n            <Box sx={twoLineEllipsis}>\n                <ContentLink\n                    color={COLORS.PRIMARY}\n                    variant={linkVariant}\n                    direction={linkDirection}\n                    data-testid=\"content-assurance-text\"\n                    size={textSize}\n                    linkData={linkData}\n                    contentMeta={contentMeta}\n                    enabled={!withLinkAndDrawer}\n                />\n            </Box>\n        )\n    }\n\n    const renderContentWithIcon = () => (\n        <Box sx={containerStyles} data-auto={`div${KCPTheme ? 'KCP' : ''}Assurance`}>\n            {SelectedIcon && (\n                <SelectedIcon\n                    data-testid={`styledIcon${icon}Icon`}\n                    boxSize={iconSize}\n                    color={iconColor}\n                    aria-label={null}\n                    aria-hidden=\"true\"\n                />\n            )}\n            {renderContent()}\n        </Box>\n    )\n\n    if (withLinkAndDrawer) {\n        return (\n            <LinkAssurance\n                defaultLink={defaultLink}\n                defaultTitle={defaultTitle}\n                virtualPagePath={virtualPagePath}\n                drawerBodyContent={drawerBodyContent}\n                linkVariant={linkVariant}\n                linkDirection={linkDirection}\n            >\n                {renderContentWithIcon()}\n            </LinkAssurance>\n        )\n    }\n\n    return renderContentWithIcon()\n}\n\nAssurance.propTypes = {\n    icon: PropTypes.string.isRequired,\n    iconColor: PropTypes.string,\n    direction: PropTypes.oneOf(['horizontal', 'vertical']),\n    alignment: PropTypes.oneOf(['left', 'right', 'center']),\n    textSize: PropTypes.oneOf(['large', 'small']),\n    iconSize: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.number]),\n    iconVariant: PropTypes.oneOf(Object.values(ICON_VARIANTS)),\n    linkData: PropTypes.shape({\n        type: PropTypes.string,\n        value: PropTypes.string,\n        target: PropTypes.bool,\n        text: PropTypes.string\n    }),\n    text: PropTypes.string,\n    withDefaultText: PropTypes.bool,\n    withButton: PropTypes.bool,\n    assuranceData: PropTypes.object,\n    contentMeta: PropTypes.shape({\n        deliveryId: PropTypes.string,\n        name: PropTypes.string,\n        schema: PropTypes.string\n    }),\n    KCPTheme: PropTypes.string,\n    defaultLink: PropTypes.string,\n    defaultTitle: PropTypes.string,\n\n    // for Assurance with Link And Drawer:\n    withLinkAndDrawer: PropTypes.bool,\n    linkVariant: PropTypes.oneOf(Object.values(VARIANTS)),\n    linkDirection: PropTypes.oneOf(Object.values(DIRECTIONS)),\n    drawerBodyContent: PropTypes.array,\n    virtualPagePath: PropTypes.string,\n    placeholderData: PropTypes.object,\n    children: PropTypes.node\n}\n\nAssurance.displayName = 'Assurance'\n","/**\n * @file ld-keys.js\n *\n * This file exports preference keys to be used across the application.\n * `LD_KEYS` - It represents a key used for identifying a specific launch darkly flag ID.\n *\n * These naming conventions help in understanding the role and usage of each export at a glance:\n * - `LD_KEYS` is a constant value that should not change, hence the UPPER_SNAKE_CASE.\n *\n * @exports LD_KEYS - Constant query key for feature flag ID.\n */\nexport const LD_KEYS = {\n    //THREE\n\n    enableBraceletEditor: 'enable-bracelet-editor', //shared-app, product-detail, product-list\n    enableBraceletEditorPLP: 'enable-bracelet-editor-plp', //shared-app, product-detail, product-list\n    enablePdpSpaNavigation: 'enable-pdp-spa-navigation', //shared-app, product-detail, product-list\n    enableNewDolContract: 'enable-new-dol-contract', //shared-app, product-detail, product-list\n    defaultSearchSourceFlag: 'pwa-search-engine', //content, product-list, shared-app\n\n    //TWO\n\n    isGridSpotContentEnabled: 'enable-plp-grid-spots', //product-list, shared-app\n    removePlpEmphasisedTile: 'remove-plp-emphasised-tile', //product-list, shared-app\n    enablePdpRecommendationsAddToWishlist: 'enable-pdp-recommendations-add-to-wishlist', //shared-app, product-detail\n    enableGlobalExcludeSetsFromWishlist: 'enable-global-exclude-sets-from-wishlist', //shared-app, product-detail — kill switch for hiding the wishlist affordance on Sets (FIND-5111)\n    enableEUPricing: 'enable-eu-pricing', //shared-app, product-detail\n    enablePdpNotifyMe: 'enable-pdp-notify-me', //shared-app, product-detail\n    enableBuyBox: 'enable-pdp-buy-box', //shared-app, product-detail\n    enablePdpCncExcludeFindInStore: 'enable-pdp-cnc-exclude-find-in-store', //shared-app, product-detail\n    enablePdpCncForDiscontinued: 'enable-pdp-cnc-for-discontinued', //shared-app, product-detail\n    enableNewCnCTrigger: 'enable-new-cnc-trigger', //shared-app, product-detail\n    enableGlobalRecommendationsTracking: 'enable-global-recommendations-tracking', //shared-app, product-detail\n    enablePdpEstimatedDeliveryCallout: 'enable-pdp-estimated-delivery-callout', //shared-app, product-detail\n    isPromotionBR: 'enable-promotional-pricing-br', //product-list, shared-app\n    enableSkeletonWhileProductLoading: 'enable-skeleton-while-product-is-loading', //product-detail, shared-app\n    enableNewEarlyAccessJourney: 'enable-new-early-access-journey', //product-detail, shared-app\n    enablePlpScrollRestoration: 'enable-plp-scroll-restoration', //product-list, shared-app\n    enablePlpScrollRestorationFix: 'enable-plp-scroll-restoration-fix', //product-list, shared-app\n    enablePlpPageNumberFix: 'enable-plp-page-number-fix', //product-list, shared-app\n    enablePromotionalPricingCacheFix: 'enable-plp-promotional-pricing-cache-fix', //product-list, shared-app\n    enablePdpHideBrokenVideoOnMainImages: 'enable-pdp-hide-broken-video-on-main-images', //product-detail, shared-app\n    enablePdpRingSizer: 'enable-pdp-ring-sizer', //product-detail, shared-app\n    enablePdpRingSizerQRCode: 'enable-pdp-ring-sizer-qr-code', //product-detail, shared-app\n    enablePdpRingSizerRefactoring: 'enable-pdp-ring-sizer-refactoring', //product-detail, shared-app — gates media-partial refactor; remove with old buildLegacyImageSrc after rollout\n    enablePdpRingSizerTrackingFix: 'enable-pdp-ring-sizer-tracking-fix', //product-detail, shared-app\n    enablePdpRingSizerUiEnhancements: 'enable-pdp-ring-sizer-ui-enhancements', //product-detail, shared-app\n    enablePdpRingSizerQrCodeTracking: 'enable-pdp-ring-sizer-qr-code-tracking', //product-detail, shared-app\n    enablePdpRingSizerNewEntryPointsTracking: 'enable-pdp-ring-sizer-new-entry-points-tracking', //product-detail, shared-app — OG-8735: gates size_guide_measure_finger button_id for the \"Measure Finger\" CTA\n    enablePdpNewEarlyAccessTracking: 'enable-pdp-new-early-access-tracking', //product-detail, shared-app\n    enablePdpCustomizationTracking: 'enable-pdp-customization-tracking', //product-detail, shared-app — gates product[].customization on PDP view (OG-8582)\n    enablePdpFlexibleSetAnalytics: 'enable-pdp-flexible-set-analytics', //product-detail, shared-app — gates flexible-set datalayer (customization: ['flexible'], finding_method: 'pdp_flexset')\n    enableEngravingTrackingListenerEvent: 'enable-engraving-tracking-listener-event', //shared-app — gates V2 engraving datalayer; cleanup notes in engraving-tracking-helpers.js\n\n    //PRODUCT-LIST\n\n    enablePlpMainContent: 'enable-plp-main-content', //shared-app, product-list\n    enablePlpDuplicateViewGuard: 'enable-plp-duplicate-view-guard', //shared-app, product-list — FIND-6888 suppress consecutive identical PLP view events\n    enablePlpUpTo5InGridModules: 'enable-plp-up-to-5-in-grid-modules', //shared-app, product-list\n    enablePlpRecommendationTabs: 'enable-plp-recommendation-tabs', //shared-app, product-list\n    enablePlpRefactoredRecommendation: 'enable-plp-refactored-recommendation',\n    enablePlpAvoidDuplicateCategorySsrCall: 'enable-plp-avoid-duplicate-category-ssr-call',\n    enablePlpBrowserTranslationProtection: 'enable-plp-browser-translation-protection',\n    enableProductSearchOn404: 'enable-product-search-on-404',\n    enablePlpProductSearch404Redirect: 'enable-plp-product-search-404-redirect',\n    enableUrlNormalizationRedirect: 'enable-url-normalization-redirect',\n    enablePlpPriceRangeDisplay: 'enable-plp-price-range-display',\n    removePrimaryCategoryBadRefinement: 'remove-primary-category-bad-refinement',\n    enableItemListSchema: 'enable-item-list-schema',\n    enableCollectionPageSchema: 'enable-collection-page-schema',\n\n    //SHARED-APP\n\n    enableNewsletterSignup: 'enable-newsletter-subscription',\n    enableGlobalOrganizationSchema: 'enable-global-organization-schema',\n    enableGlobalWebSiteSchema: 'enable-global-website-schema',\n    enableGlobalOpenGraphTags: 'enable-global-open-graph-tags',\n    enableGhbEngagementTracking: 'enable-ghb-engagement-tracking',\n    enableGlobalUserSignInSignOut: 'enable-global-user-signin-signout',\n    enableCategorySkipHydrate: 'enable-category-skip-hydrate',\n    enableNavListSsrFix: 'enable-nav-list-ssr-fix',\n    enableGlobalMenuL1SpacingFix: 'enable-global-menu-l-1-spacing-fix',\n    enableTradingBannerLearnMore: 'enable-trading-banner-learn-more',\n    enableNewProductsPricingAPI: 'enable-new-products-pricing-api',\n    enableNewProductsInventoryAPI: 'enable-new-products-inventory-api',\n    disablePlpDoubleLocaleRemoval: 'disable-plp-double-locale-removal',\n    enableXEnvironmentHeaderForGetCustomerBaskets:\n        'enable-x-environment-header-for-get-customer-baskets',\n    disableGetCustomerBasketsOrganisationIdShortCodeSiteIdParameters:\n        'disable-get-customer-baskets-organisation-id-short-code-site-id-parameters',\n    enableXEnvironmentHeaderForCreateAndDeleteCustomerProductList:\n        'enable-x-environment-header-for-create-and-delete-customer-product-list',\n    disableCreateAndDeleteCustomerProductListOrganisationIdShortCodeSiteIdParameters:\n        'disable-create-and-delete-customer-product-list-organisation-id-short-code-site-id-parameters',\n    enableXEnvironmentHeaderForTradingBanner: 'enable-x-environment-header-for-trading-banner',\n    disableTradingBannerOrganisationIdShortCodeSiteIdParameters:\n        'disable-trading-banner-organisation-id-short-code-site-id-parameters',\n    enablePdpNoToastError: 'enable-pdp-no-toast-error',\n    enableOneTrustBannerTransition: 'enable-ot-banner-transition',\n    enableSlasTokenDntFix: 'enable-slas-token-dnt-fix',\n    enableDntConsentForceRender: 'enable-dnt-consent-force-render',\n    enableShortPostalCodeLookup: 'enable-short-postal-code-lookup',\n    enablePostalCodeDelimiterTrim: 'enable-postal-code-delimiter-trim',\n    enablePdpBuyFromTile: 'enable-pdp-buy-from-tile',\n    enablePva: 'enable-pva',\n    enablePvaEntryPoint: 'enable-pva-entry-point',\n    enablePvaFullPage: 'enable-pva-full-page',\n    enablePvaMonetateTrigger: 'enable-pva-monetate-trigger',\n    enablePvaPageVisibility: 'enable-pva-page-visibility',\n    enableGlobalDolGetCustomerBasketIntegration:\n        'enable-global-dol-get-customer-basket-integration',\n    enableGlobalDolQ3ChannelMigration: 'enable-global-dol-q-3-channel-migration',\n    enableGlobalDolChannelMigrationContent: 'enable-global-dol-channel-migration-content',\n    selectPdpRecommenderConfirmationSheet: 'select-pdp-recommender-confirmation-sheet',\n    enableTealiumRefetchCustomer: 'enable-tealium-customer-tracking',\n    enableTealiumPdpViewCurrentData: 'enable-tealium-pdp-view-current-data',\n    enableClosingDrawerTracking: 'enable-closing-drawer-tracking',\n    enableGlobalIdleUserOverlay: 'enable-global-idle-user-overlay',\n    selectGlobalIdleUserOverlayTimings: 'select-global-idle-user-overlay-timings',\n    enableSmartErrorPage: 'enable-smart-error-page',\n    enableShopperContextPutOn404: 'enable-shopper-context-put-on-404',\n    enableGlobalNavigationContent: 'enable-global-navigation-content',\n    enableContentLastOrderDateBanner: 'enable-content-last-order-date-banner',\n    enableGlobalFooterAssurance: 'enable-global-footer-assurance',\n    enableContentFooterAssurancesFlexibleIcons: 'enable-content-footer-assurances-flexible-icons',\n    enableGlobalAmplienceFooterLinks: 'enable-global-amplience-footer-links',\n    enableGlobalArFooterButton: 'enable-global-ar-footer-button',\n    isSegContextEnabled: 'enable-global-ab-test',\n    enableGlobalSsrPriceContextCookieHandling: 'enable-global-ssr-price-context-cookie-handling', //shared-app, product-list\n    enablePDPDOLResponse: 'enable-pdp-dol-responses',\n    enableOptimisticNavigation: 'enable-optimistic-navigation',\n    enableSkeletonOverlayTransition: 'enable-skeleton-overlay-transition',\n    enablePromotionProgressBarQualificationFlag: 'enable-promotion-progress-bar-qualification-flag',\n    enablePromotionGrantedMessageFix: 'enable-promotion-granted-message-fix',\n    enableDwsidHeader: 'enable-dwsid-header-for-shopper-requests',\n    enablePlpXEnvironmentHeaderForUserPriceContext:\n        'enable-plp-x-environment-header-for-user-price-context',\n    enablePdpSetProductTracking: 'enable-pdp-set-product-tracking',\n    enablePlpBundleGiftsetTracking: 'enable-plp-bundle-giftset-tracking',\n    disablePlpUserPriceContextOrganisationIdShortCodeSiteIdParameters:\n        'disable-plp-user-price-context-organisation-id-short-code-site-id-parameters',\n    enableSneakPeekPDP: 'enable-sneak-peek-pdp',\n    enableBrAbTesting: 'enable-plp-bloomreach-a-b-testing', //shared-app, product-list\n    enableBrExplicitReferrer: 'enable-global-bloomreach-explicit-referrer-use', //shared-app\n    enableSearchRefUrl: 'enable-search-ref-url', //shared-app\n    enableGlobalSearchDrawerFullUrlTracking: 'enable-global-search-drawer-full-url-tracking', //shared-app\n    enableCleanBloomreachSuffixFromDataLayer: 'enable-clean-bloomreach-suffix-from-data-layer',\n    enableStaleTimeForProductsRequest: 'enable-stale-time-for-products-request',\n    enablePromotionalBarConfirmationSheet: 'enable-promotion-bar-confirmation-sheet',\n    enableConfirmationSheetProductNameFix: 'enable-confirmation-sheet-product-name-fix',\n    enableConfirmationSheetEinsteinEngine: 'enable-confirmation-sheet-einstein-engine',\n    enablePdpProductIdValidation: 'enable-pdp-product-id-validation',\n    enableGlobalPvaFabIconUiUpdate: 'release-global-pva-fab-icon-ui-update',\n    enablePvaFabLoadingAnimation: 'enable-pva-fab-loading-animation',\n    enableCategoryRestrictedFieldsOptimization: 'enable-category-restricted-fields-optimization',\n    enableBreadcrumbsTrailingSlashSupport: 'enable-breadcrumbs-trailing-slash-support',\n    enableBreadcrumbFixes: 'enable-breadcrumb-fixes',\n    enableBreadcrumbSchemaJsonLd: 'enable-breadcrumb-schema-json-ld',\n    enablePlpStandardPriceTest: 'enable-plp-standard-price-test',\n    enableShopTabDefault: 'enable-shop-tab-default', //shared-app, product-list — force Shop tab active, sunset Discover\n    enableDeferredPixelLoading: 'enable-deferred-pixel-loading',\n    enablePixelPendingPayloadUpdate: 'enable-global-pixel-pending-payload-update', //shared-app — gates whether setInitialPageView keeps updating the pending payload until the pixel initializes\n    enableOmnibusPercentageDisplay: 'enable-global-omnibus-percentage-display',\n    enableOriginalPercentageDisplayWithOmnibus: 'enable-original-percentage-display-with-omnibus',\n    enableDrawerPinkOverlay: 'enable-drawer-pink-overlay',\n    enableEinsteinRecoTracking: 'enable-einstein-reco-tracking',\n    enableGlobalBloomreachRecoTracking: 'enable-global-bloomreach-reco-tracking',\n    disablePdpGetProductsOrganisationIdShortCodeSiteIdParameters:\n        'disable-pdp-get-products-organisation-id-short-code-site-id-parameters',\n    disablePdpSendAHintOrganisationIdShortCodeSiteIdParameters:\n        'disable-pdp-send-a-hint-organisation-id-short-code-site-id-parameters',\n    enableViewBagLottieLoader: 'enable-view-bag-lottie-loader',\n    enableGlobalTradingBannerSsrSkeleton: 'enable-global-trading-banner-ssr-skeleton',\n    enableGlobalVideoSsrPosterFrame: 'enable-global-video-ssr-poster-frame',\n    enableMemberPricing: 'enable-member-pricing-display',\n    enablePdpPricingAndMemberDisplay: 'enable-pdp-pricing-and-member-display', //shared-app, product-detail\n    enablePdpNewRecommendationsApi: 'enable-pdp-new-recommendations-api', //shared-app, product-detail\n    pdpRecommendationEngine: 'pdp-recommendation-engine', //shared-app, product-detail\n    enablePdpRecommendationsFindingMethodSplit: 'enable-pdp-recommendations-finding-method-split', //shared-app — split product.finding_method into pdp_recommendations_einstein / pdp_recommendations_bloomreach on ATC from PDP rec widgets\n    enableBrDiscoveryFallbackRecommendations: 'enable-br-discovery-fallback-recommendations', //shared-app, product-detail, product-list\n    disableTabbedGuide: 'disable-tabbed-guide',\n    enablePvaFabStickyOffset: 'enable-pva-fab-sticky-offset',\n    enablePvaBasketRefetchOnAtb: 'enable-pva-basket-refetch-on-atb', //shared-app\n    enableIslandArchitecture: 'enable-island-architecture',\n    enableCmsActionCategoryCache: 'enable-cms-action-category-cache',\n    enableGlobalMobileScrollOptimization: 'enable-global-mobile-scroll-optimization',\n    enableDynamicManifest: 'enable-dynamic-manifest',\n    enableStructuredDataJson: 'enable-structured-data-json',\n    enableBasketTrace: 'enable-basket-trace',\n    enableGlobalAtbBackgroundBasketRefetch: 'enable-global-atb-background-basket-refetch', //shared-app — fire-and-forget SCAPI basket refetch after ATB so the confirmation sheet isn't blocked\n    enableGlobalLaunchDarklyObservabilityPlugin: 'enable-global-launch-darkly-observability-plugin', //shared-app\n    enableGlobalGuardedRolloutExposureTracking: 'enable-global-guarded-rollout-exposure-tracking', //shared-app — evaluate the flags a unit is in an experiment for, so both arms of every guarded rollout are counted\n    enableSkipTranslationsWarning: 'enable-skip-translations-warning', //shared-app — suppress missing-translation warn logs (translations managed by external system)\n    enableDolAuthHeaderInjection: 'enable-dol-x-api-auth-header-injection',\n    enableGlobalSignUpIconReposition: 'enable-global-sign-up-icon-reposition', //shared-app — FIND-6763, temporary: moves the mobile drawer login link to the top slot for guests\n    enableGlobalLaunchDarklyClientSdk: 'enable-global-launch-darkly-client-sdk', //shared-app\n    enableTapperCsp: 'enable-tapper-csp-whitelist', //shared-app — INS-5248, temporary: whitelists the Tapper vendor domains in the CSP\n    enableLocalizedCurrencyLabel: 'enable-global-localize-product-price', //shared-app, product-detail, product-list — CA price display shows \"C$\" (FIND-5112)\n\n    //NOT-USED\n\n    enableFetchByDOL: 'ops_product_details_source',\n    isAutoSuggestionsDataEnabled: 'enable-auto-suggestions-data',\n    isPrimaryColorSkuFilterEnabled: 'enable-plp-primary-color-sku-filter',\n    enablePageLevelContexts: 'enable-page-level-contexts',\n    isAdvancedAnalyticsEnabled: 'enable-advanced-analytics',\n    isNewRatingContainerEnabled: 'enable-new-rating-container',\n    enableSecondaryColorSkuFilter: 'enable-plp-secondary-color-sku-filter',\n    isAmplienceContentEnabled: 'enable-amplience-content',\n    isGoogleAnalyticsDebugEnabled: 'enable-google-analytics-debug',\n    enableAmplienceTrackingSlots: 'enable-amplience-content-tracking-slots',\n    enableOmnitureStagingServer: 'enable-omniture-staging-server',\n    isInteractionToNextPaintEnabled: 'enable-inp-tracking',\n    isCustomImageLazyLoadingEnabled: 'enable-custom-image-lazy-loading',\n    enableWebVitalsTracking: 'enable-web-vitals-tracking',\n    enableOmnitureC40Config: 'enable-omniture-c40-config',\n    isPrimaryNavigationContainerEnabled: 'enable-primary-navigation-container',\n    enableNewFooter: 'enable-new-footer',\n    enableOptimizedImageDelivery: 'enable-optimized-image-delivery',\n    enableSharedPromotionCards: 'enable-shared-promotion-cards',\n    enableAdjustPixelTracking: 'enable-adjust-pixel-tracking',\n    isPandoraIdCookieEnabledAsia: 'enable-pandora-id-cookie-asia',\n    enableStoryblokContent: 'enable-storyblok-content',\n    enablePrimaryNavigationContent: 'enable-primary-navigation-content',\n    isWishListIconUpdated: 'enable-wishlist-icon-updated',\n    enableHotjarTracking: 'enable-hotjar-tracking',\n    enableSubsetFonts: 'enable-subset-fonts',\n    enableDolProdForPromotions: 'enable-dol-e-2-e-endpoint-for-promotions',\n    enablePdpBuyBox: 'enable-pdp-buy-box',\n    enableGlobalRecommendationsTraking: 'enable-global-recommendations-tracking',\n\n    //PRODUCT-DETAIL\n\n    enablePdpDeliverModuleLayoutShift: 'enable-pdp-deliver-module-layout-shift',\n    enableProductImagePreload: 'enable-product-image-preload',\n    enablePdpBloomreachEngageIdentifier: 'enable-pdp-bloomreach-engage-id',\n    enablePdpBloomreachPixel: 'enable-pdp-bloomreach-pixel',\n    enableGiftCardTabLinks: 'enable-gift-card-links',\n    enablePdpPudoShippingEstimates: 'enable-pdp-pudo-shipping-estimates',\n    enablePdpAggregateRatings: 'enable-pdp-aggregate-ratings',\n    enableLowStockMessage: 'enable-low-stock-message',\n    enablePdpDeliverySection: 'enable-pdp-delivery-section',\n    selectPdpRecommenderRecentlyViewed: 'select-pdp-recommender-recently-viewed',\n    selectPdpRecommenderSimilarProducts: 'select-pdp-recommender-similar-products',\n    selectPdpRecommenderCompleteTheLook: 'select-pdp-recommender-complete-the-look',\n    enablePdpAmplienceVideo: 'enable-pdp-amplience-video',\n    enablePdpPagePerformance: 'enable-pdp-page-performance',\n    enablePdpAddToWishlist: 'enable-pdp-add-to-wishlist',\n    enablePdpOnlineDeliveryOptions: 'enable-pdp-online-delivery-options',\n    enablePdpBundlePriceSum: 'enable-bundle-price-sum',\n    enablePdpCaratWeightInfoLink: 'enable-pdp-carat-weight-info-link',\n    enableRatingAndReviews: 'enable-rating-and-reviews',\n    enablePdpEngravingModal: 'enable-pdp-engraving-modal',\n    enablePdpEngravingAssurance: 'enable-pdp-engraving-assurance',\n    enableBraceletEditorPDP: 'enable-bracelet-editor-pdp',\n    enableAssurances: 'enable-assurances-prerequisite',\n    enableLoyaltyPdp: 'enable-loyalty-pdp',\n    enableDiamondPDPAssurance: 'enable-diamond-pdp-assurance',\n    enableSkeletonAfterClickingOnRecZoneForSpa:\n        'enable-skeleton-after-clicking-on-rec-zone-for-spa',\n    enablePriceForAddToBagButton: 'enable-price-for-add-to-bag-button',\n    enablePdpSizeGuide: 'enable-pdp-size-guide',\n    enableRemovingGalleryAndCarouselImageDuplications:\n        'enable-removing-gallery-and-carousel-image-duplications',\n    enablePdpAddToBag: 'enable-add-to-bag',\n    enablePdpGiftCardTabs: 'enable-pdp-gift-card-tabs',\n    enableEngraving: 'enable-engraving',\n    enableBnplAssurance: 'enable-bnpl-assurance',\n    enablePdpWarrantyAssurance: 'enable-warranty-assurance',\n    enablePdpGiftPackagingAssurance: 'enable-pdp-gift-packaging-assurance',\n    enablePdpDropAHintSmsShare: 'enable-pdp-drop-hint-sms',\n    enablePdpDropAHintInstagramShare: 'enable-pdp-drop-hint-instagram',\n    enablePdpDropAHintWhatsappShare: 'enable-pdp-drop-hint-whatsapp',\n    enablePdpDropAHintAssurance: 'enable-pdp-drop-hint-assurance',\n    enablePdpShippingAssurance: 'enable-shipping-promo-assurance',\n    enablePdpReturnAssurance: 'enable-returns-assurance',\n    enablePdpDesktopLightboxView: 'enable-pdp-desktop-lightbox-view',\n    enablePdpDropAHintMessageValidation: 'enable-pdp-drop-a-hint-message-validation',\n    enablePlpBuyFromTile: 'enable-plp-buy-from-tile',\n    enablePdpBloomreachPixelEnhanced: 'enable-pdp-bloomreach-pixel-enhanced',\n    enableGlobalBloomreachPixelTracking: 'enable-global-bloomreach-pixel-tracking',\n    enableSetProductPriceCalculation: 'enable-set-product-price-calculation',\n    enableHiddingReviewsWithThreshold: 'enable-hidding-reviews-with-threshold',\n    enablePDPGiftCardCurrencyValues: 'enable-pdp-gift-card-currency-values',\n    enableRestrictedCampaignPDPRedirect: 'enable-restricted-campaign-pdp-redirect',\n    enablePdpStickyCncStoreCheck: 'enable-pdp-sticky-cnc-store-check',\n    enableProductFindingMethodTracking: 'enable-product-finding-method-tracking',\n    enablePlpFindingMethod: 'enable-plp-finding-method-tracking',\n    enablePdpFindingMethodTracking: 'enable-decide-pdp-finding-method-tracking',\n    enablePdpDirectAtbFromSizeSelector: 'enable-pdp-direct-atb-from-size-selector',\n    enableLoadingBraceletEditorOnlyWhenEligible:\n        'enable-loading-bracelet-editor-only-when-eligible',\n    enablePlpPdpImageSync: 'enable-plp-pdp-image-sync',\n    enableImageSyncForDetailedShotOnly: 'enable-image-sync-for-detailed-shot-only',\n    enablePdpCsrProductQueryRefetch: 'enable-pdp-csr-product-query-refetch',\n    enablePdpCsrSpaReturnFix: 'enable-pdp-csr-spa-return-fix',\n    enableBraceletEditorMfeRegistry: 'enable-bracelet-editor-mfe-registry',\n    enableEngravingEditorMfeRegistry: 'enable-engraving-editor-mfe-registry',\n    enablePdpPartOfSet: 'enable-pdp-part-of-set',\n    enableRefetchAllQueries: 'enable-refetch-all-queries',\n    enableEmptyResponseHandling: 'enable-empty-response-handling',\n    enablePdpRecImageOptimization: 'enable-pdp-rec-image-optimization',\n    enablePdpPlatinumPlatedInfo: 'enable-pdp-platinum-plated-info',\n    enablePdpPlatinumCareInstructions: 'enable-pdp-platinum-care-instructions',\n    enablePdpSizeSelectorPricing: 'enable-pdp-size-selector-pricing',\n    enableCarouselLowestPriceFallback: 'enable-carousel-lowest-price-fallback',\n    enablePdpAdditionalDetailsCrawler: 'enable-pdp-additional-details-crawler',\n    enablePdpVseParamForwarding: 'enable-pdp-vse-param-forwarding',\n    enableProductCarouselPromotionalPricing: 'enable-product-carousel-promotional-pricing',\n    enableSearchSuggestionsPromotionalPrices: 'enable-search-suggestions-promotional-prices',\n    enableDeferAnalyticsScripts: 'enable-defer-analytics-scripts',\n    enableUrlMappingErrorGuard: 'enable-plp-url-mapping-error-guard',\n    enableSearchSuggestionsDebounce: 'enable-search-suggestions-debounce', //shared-app\n    enableCartStateTracking: 'enable-cart-state-tracking', //shared-app, product-detail\n    enableGlobalCartStateEnrichment: 'enable-global-cart-state-enrichment', //shared-app — fetch missing catalog attrs for basket items so cart_state is fully populated on PDP/PLP/ATC\n    enablePdpDatalayerNoCategoryFix: 'enable-pdp-datalayer-no-category-fix', //shared-app, product-detail\n    enablePdpCncTwoTierRadiusFallback: 'enable-pdp-cnc-two-tier-radius-fallback', //shared-app, product-detail\n    enablePdpCncLoqateStoreSearch: 'enable-pdp-cnc-loqate-store-search', //shared-app, product-detail\n    enablePdpCncLoqateSearchTypes: 'enable-pdp-cnc-loqate-search-types', //shared-app, product-detail\n    enablePdpCncNoStoresBannerReset: 'enable-pdp-cnc-no-stores-banner-reset', //shared-app, product-detail\n    enableDrawerPlacementFix: 'enable-drawer-placement-fix',\n    enableDrawerOpenDirectionFix: 'enable-drawer-open-direction-fix',\n    enableContentCommercePreviewToolbar: 'enable-content-commerce-preview-toolbar',\n    selectGlobalAprimoDamPrimary: 'select-global-aprimo-dam-primary', //shared-app, content — controls Aprimo vs Amplience DAM resolution priority\n    enablePlpHeroLcp: 'enable-plp-hero-lcp', //shared-app, content, product-list — FIND-6627 LCP hero (<img>/preload + slot reservation)\n    enableContentBlockTracking: 'enable-content-block-tracking', //shared-app, product-list\n    enableCrawlablePaginatedPlpUrls: 'enable-crawlable-paginated-plp-urls', //product-list, shared-app\n    enablePlpPageSortFallback: 'enable-plp-page-sort-fallback', //product-list, shared-app\n    enableLoadingBraceletEditorWhenOos: 'enable-loading-bracelet-editor-when-oos', //shared-app, product-detail\n    enableGlobalSearchSuggestionImageFit: 'enable-global-search-suggestion-image-fit', //shared-app\n    enablePlpStlClickableTile: 'enable-plp-stl-clickable-tile', //shared-app, content — INS-5194 full-tile STL click target + \"SHOP THE LOOK\" CTA\n    enablePlpFilterBarRedesign: 'enable-plp-filter-bar-redesign', //product-list, shared-app — icon-only filter pill + product count label\n    enableGlobalSearchFlyoutDesignAudit: 'enable-global-search-flyout-design-audit', //shared-app\n    enableGlobalNewBagIconCountBadge: 'enable-global-new-bag-icon-count-badge' //shared-app — FIND-6832 bag icon + count badge in the global header and mini-cart trigger\n}\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {useState, useEffect, createContext} from 'react'\nimport PropTypes from 'prop-types'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useDisclosure} from '@salesforce/retail-react-app/app/components/shared/ui'\n\nconst onClient = typeof window !== 'undefined'\n\nconst readValue = (key) => {\n    if (onClient) {\n        return window.localStorage.getItem(key)\n    }\n    return null\n}\n\nexport const StoreLocatorContext = createContext(null)\n\nexport const StoreLocatorProvider = ({config, children}) => {\n    // remember the shopper's preferred store for the current site\n    // TODO: Change this to `useLocalStorage` hook when localStorage detection is more robust\n    const {site} = useMultiSite()\n    const selectedStoreBySiteId = `selectedStore_${site?.id}`\n    const selectedStoreId = readValue(selectedStoreBySiteId)\n    const {isOpen, onOpen, onClose} = useDisclosure()\n\n    const [state, setState] = useState({\n        mode: 'input',\n        formValues: {\n            countryCode: '',\n            postalCode: ''\n        },\n        deviceCoordinates: {\n            latitude: null,\n            longitude: null\n        },\n        selectedStoreId,\n        config\n    })\n\n    useEffect(() => {\n        if (onClient && state.selectedStoreId) {\n            window.localStorage.setItem(selectedStoreBySiteId, state.selectedStoreId)\n        }\n    }, [state.selectedStoreId])\n\n    const value = {\n        state,\n        setState,\n        // Modal actions\n        isOpen,\n        onOpen,\n        onClose\n    }\n\n    return <StoreLocatorContext.Provider value={value}>{children}</StoreLocatorContext.Provider>\n}\n\nStoreLocatorProvider.propTypes = {\n    config: PropTypes.shape({\n        defaultCountryCode: PropTypes.string.isRequired,\n        defaultPostalCode: PropTypes.string.isRequired\n    }).isRequired,\n    children: PropTypes.node\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_diamonds_white_fr\",\n  \"use\": \"pandora_diamonds_white_fr-usage\",\n  \"viewBox\": \"0 0 284 82\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 284 82\\\" id=\\\"pandora_diamonds_white_fr\\\"><polygon points=\\\"178.1,11.3 179.3,11.3 179.4,11.3 178.4,1.2 178.3,1.1 178,1.1 178,1.2 176.9,11.3 177,11.3\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"183.8,12 183.9,11.9 185.6,2.9 185.5,2.8 185.2,2.8 185.2,2.8 181.4,11.4 181.5,11.5\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M182.1 15.9c.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4-1.4.6-1.4 1.4S181.3 15.9 182.1 15.9zM178.1 15.5c.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4-1.4.6-1.4 1.4S177.4 15.5 178.1 15.5z\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"172.4,12 174.8,11.5 174.8,11.4 171.1,2.8 171,2.8 170.7,2.8 170.7,2.9 172.4,11.9\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M172.8 14.5c0 .8.6 1.4 1.4 1.4.7 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4S172.8 13.7 172.8 14.5zM12.3 18.4h-12l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.4l.1-.1c1.1.1 3.5.2 4.3.2 8.1 0 15.1-4.9 15.1-13.3C27.4 23 20.4 18.4 12.3 18.4zM12 37.6c-.9 0-3.1-.1-4-.3V25.1h4.6c4.1 0 7.3 1.6 7.3 5.9C19.8 35.3 17 37.6 12 37.6zM49.9 21.8c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L27.1 55.2c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1c0 0-1.1-1.5-2.4-4.4L49.9 21.8zM39.5 42.7l5.8-14.5h.1l6.3 14.5H39.5zM107.5 18.5 107.5 18.5l-7.2-.1-.1.1c0 0 .3 2.9.3 7.9V47h-.1L78.2 18.4h-7.9l-.1.1c.9 1.9 1.4 3.2 1.4 4.1v29.1c0 5-.3 7.9-.3 7.9l.1.1h7.2l.1-.1c0 0-.3-2.9-.3-7.9V30.6h.1l22.3 29h6.7l.1-.1c0 0-.3-2.9-.3-7.9V26.3C107.2 21.3 107.5 18.5 107.5 18.5zM129.8 18.4H116l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h4.2c2.8 0 5.9.4 9.4.4 12.6 0 21.6-8.9 21.6-20.9C151.3 27 142.5 18.4 129.8 18.4zM129.4 53.2c-2 0-3.8-.1-4.9-.4-.6-.2-.8-.4-.8-1.5V25.1h5.5c8.9 0 14.6 6 14.6 14C143.8 47 138.1 53.2 129.4 53.2zM178.1 17.8c-11.9 0-21.1 9.2-21.1 21.1 0 12 9.2 21.1 21.1 21.1 12 0 21.1-9.1 21.1-21.1C199.2 27 190.1 17.8 178.1 17.8zM178.1 53.3c-7.6 0-13.6-6.2-13.6-14.3s5.9-14.3 13.6-14.3 13.6 6.2 13.6 14.3C191.8 47 185.8 53.3 178.1 53.3zM228.6 45.6c-1-1.6-2.5-2.9-4.1-3.4v-.1c4.3-.9 8.3-5.9 8.3-10.9 0-6.8-5.2-12.8-13.3-12.8h-13.2l-.1.1c0 0 .3 2.9.3 7.9v25.3c0 5-.3 7.9-.3 7.9l.1.1h7.9l.1-.1c0 0-.3-2.9-.3-7.9v-7.9c3.9 0 5.5.8 6.9 3l3.4 5.4c2.8 4.5 3.9 7.3 3.9 7.3l.1.1h9.4v-.1c0 0-2.4-2.9-5.1-7.3L228.6 45.6zM217.7 37.2c-.9 0-2.6 0-3.7-.2V25.1h4.5c4.4 0 6.8 2.9 6.8 6.2C225.3 34.4 222.9 37.2 217.7 37.2zM281.4 55.2l-14.6-33.4c-.9-2.1-1.2-3.3-1.2-3.3l-.1-.1h-6.4l-.1.1c0 0-.2 1.2-1.1 3.3L244 55.2c-1.2 2.8-2.4 4.4-2.4 4.4v.1h8.1l.1-.1c0-.2.2-1.2 1.2-3.7l2.5-6.3h17.9l2.7 6.3c.9 2.4 1.4 3.7 1.4 3.7l.1.1h8.1v-.1C283.7 59.5 282.7 58 281.4 55.2zM256.3 42.7l5.8-14.5h.1l6.3 14.5H256.3zM.2 71.4h3.6c.7 0 1.4.1 2 .4.6.2 1.1.6 1.6 1 .4.4.8.9 1 1.5s.4 1.2.4 1.8l0 0c0 .7-.1 1.3-.4 1.8-.2.6-.6 1.1-1 1.5s-1 .7-1.6 1c-.6.2-1.3.4-2 .4H.2V71.4L.2 71.4zM3.9 78.9c.4 0 .8-.1 1.1-.2.3-.1.6-.3.9-.6.2-.2.4-.5.6-.9.1-.3.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.3-.3-.6-.6-.9-.2-.2-.5-.4-.9-.6-.3-.1-.7-.2-1.1-.2H2.3v5.6L3.9 78.9 3.9 78.9zM11.8 71.4h2.1v9.3h-2.1C11.8 80.7 11.8 71.4 11.8 71.4zM20.4 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2.1L20.4 71.3zM22.6 76.8l-1.2-3-1.2 3H22.6zM28.8 71.4H31l2.5 4 2.5-4h2.2v9.3h-2v-6.1l-2.6 4h-.1l-2.6-4v6.1h-2v-9.3H28.8zM44.6 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2.1L44.6 71.3zM46.8 76.8l-1.2-3-1.2 3H46.8zM53 71.4h1.9l4.4 5.8v-5.8h2v9.3h-1.7l-4.5-5.9v5.9h-2L53 71.4 53 71.4zM66.7 73.3h-2.8v-1.9h7.7v1.9h-2.8v7.4h-2.1V73.3L66.7 73.3zM77.6 80.9c-.7 0-1.4-.1-2.1-.4-.7-.2-1.3-.6-1.9-1.1l1.2-1.5c.4.3.9.6 1.3.8.4.2.9.3 1.5.3.4 0 .8-.1 1-.2.2-.2.4-.4.4-.6l0 0c0-.1 0-.3-.1-.4 0-.1-.1-.2-.3-.3-.1-.1-.3-.2-.6-.3-.2-.1-.6-.2-1-.3-.5-.1-.9-.2-1.3-.4-.4-.1-.7-.3-1-.5s-.5-.5-.6-.8-.2-.7-.2-1.2l0 0c0-.4.1-.8.2-1.2.2-.3.4-.6.7-.9.3-.2.6-.4 1-.6.4-.1.8-.2 1.3-.2.7 0 1.3.1 1.9.3.6.2 1.1.5 1.6.9l-1.1 1.5c-.4-.3-.8-.5-1.2-.7-.4-.2-.8-.2-1.2-.2-.4 0-.7.1-.9.2-.2.2-.3.3-.3.6l0 0c0 .2 0 .3.1.4s.2.2.3.3c.2.1.4.2.6.3.3.1.6.2 1 .3.5.1.9.3 1.3.4s.7.3.9.6c.3.2.4.5.6.8.1.3.2.6.2 1.1l0 0c0 .5-.1.9-.3 1.2-.2.4-.4.7-.7.9-.3.2-.7.4-1.1.6C78.5 80.8 78.1 80.9 77.6 80.9zM93.3 80.9c-.7 0-1.3-.1-1.9-.4-.6-.2-1.1-.6-1.5-1s-.8-.9-1-1.5-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9.2-.6.6-1.1 1-1.5s.9-.8 1.5-1c.6-.3 1.3-.4 2-.4.4 0 .8 0 1.2.1.4.1.7.2 1 .3.3.1.6.3.8.5.2.2.5.4.7.6l-1.3 1.5c-.4-.3-.7-.6-1.1-.8-.4-.2-.8-.3-1.3-.3-.4 0-.8.1-1.1.2s-.6.4-.9.6-.4.6-.6.9c-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.2.3.5.5.9.6.3.2.7.2 1.1.2.5 0 1-.1 1.4-.3.4-.2.7-.5 1.1-.8l1.3 1.3c-.2.3-.5.5-.7.7-.3.2-.5.4-.8.5s-.6.3-1 .3C94.1 80.8 93.7 80.9 93.3 80.9zM99.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1L99.8 71.4 99.8 71.4zM103.9 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1s-.7-.3-1.2-.3h-2v2.7L103.9 75.9 103.9 75.9zM110.6 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM114.5 68.3l1.7.8-1.7 1.6H113L114.5 68.3zM120.8 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM124.7 68.3l1.7.8-1.7 1.6h-1.5L124.7 68.3zM134.2 80.9c-.7 0-1.4-.1-2.1-.4-.7-.2-1.3-.6-1.9-1.1l1.2-1.5c.4.3.9.6 1.3.8.4.2.9.3 1.5.3.4 0 .8-.1 1-.2.2-.2.4-.4.4-.6l0 0c0-.1 0-.3-.1-.4 0-.1-.1-.2-.3-.3-.1-.1-.3-.2-.6-.3-.2-.1-.6-.2-1-.3-.5-.1-.9-.2-1.3-.4-.4-.1-.7-.3-1-.5s-.5-.5-.6-.8-.2-.7-.2-1.2l0 0c0-.4.1-.8.2-1.2s.4-.6.7-.9c.3-.2.6-.4 1-.6.4-.1.8-.2 1.3-.2.7 0 1.3.1 1.9.3.6.2 1.1.5 1.6.9l-1.1 1.5c-.4-.3-.8-.5-1.2-.7s-.8-.2-1.2-.2-.7.1-.9.2c-.2.2-.3.3-.3.6l0 0c0 .2 0 .3.1.4s.2.2.3.3c.2.1.4.2.6.3.3.1.6.2 1 .3.5.1.9.3 1.3.4s.7.3.9.6c.3.2.4.5.6.8.1.3.2.6.2 1.1l0 0c0 .5-.1.9-.3 1.2-.2.4-.4.7-.7.9-.3.2-.7.4-1.1.6C135.2 80.8 134.7 80.9 134.2 80.9zM145.6 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4zM155.7 71.4h1.9l4.4 5.8v-5.8h2v9.3h-1.7l-4.5-5.9v5.9h-2L155.7 71.4 155.7 71.4zM172.4 71.4h2.1v7.5h4.7v1.9h-6.7v-9.4H172.4zM185.3 71.3h1.9l4 9.4H189l-.9-2.1h-4l-.9 2.1h-2.1L185.3 71.3zM187.4 76.8l-1.2-3-1.2 3H187.4zM193.7 71.4h4.3c1.1 0 1.9.3 2.4.8.4.4.6 1 .6 1.6l0 0c0 .3 0 .5-.1.7s-.2.4-.3.6-.2.3-.4.4c-.1.1-.3.2-.5.3.5.2 1 .5 1.3.8.3.4.5.8.5 1.5l0 0c0 .4-.1.8-.2 1.1-.2.3-.4.6-.7.8-.3.2-.7.4-1.1.5s-.9.2-1.4.2h-4.4L193.7 71.4 193.7 71.4zM197.6 75.2c.5 0 .8-.1 1.1-.2.3-.2.4-.4.4-.8l0 0c0-.3-.1-.5-.3-.7s-.6-.2-1-.2h-2v2L197.6 75.2 197.6 75.2zM198.1 78.9c.5 0 .8-.1 1.1-.2.3-.2.4-.4.4-.8l0 0c0-.3-.1-.6-.4-.7-.2-.2-.6-.3-1.2-.3h-2.4V79L198.1 78.9 198.1 78.9 198.1 78.9zM208.9 80.9c-.7 0-1.4-.1-2-.4s-1.1-.6-1.6-1c-.4-.4-.8-.9-1-1.5s-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9.2-.6.6-1.1 1-1.5s1-.8 1.6-1c.6-.3 1.3-.4 2-.4s1.4.1 2 .4 1.1.6 1.6 1c.4.4.8.9 1 1.5s.4 1.2.4 1.9l0 0c0 .7-.1 1.3-.4 1.9-.2.6-.6 1.1-1 1.5s-1 .8-1.6 1C210.3 80.8 209.6 80.9 208.9 80.9zM208.9 79c.4 0 .8-.1 1.1-.2.3-.2.6-.4.9-.6s.4-.6.6-.9c.1-.4.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.4-.3-.7-.6-.9-.3-.3-.6-.5-.9-.6-.3-.2-.7-.2-1.1-.2s-.8.1-1.1.2c-.3.2-.6.4-.9.6s-.4.6-.6.9c-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.3.3.6.5.9.6C208.1 78.9 208.5 79 208.9 79zM216.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1V71.4L216.8 71.4zM221 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1s-.7-.3-1.2-.3h-2v2.7L221 75.9 221 75.9zM231 71.3h1.9l4 9.4h-2.1l-.9-2.1h-4l-.9 2.1h-2L231 71.3zM233.2 76.8l-1.2-3-1.2 3H233.2zM240.5 73.3h-2.8v-1.9h7.7v1.9h-2.8v7.4h-2.1L240.5 73.3 240.5 73.3zM252.3 80.9c-.7 0-1.4-.1-2-.4s-1.1-.6-1.6-1c-.4-.4-.8-.9-1-1.5s-.4-1.2-.4-1.9l0 0c0-.7.1-1.3.4-1.9s.6-1.1 1-1.5 1-.8 1.6-1c.6-.3 1.3-.4 2-.4s1.4.1 2 .4 1.1.6 1.6 1c.4.4.8.9 1 1.5s.4 1.2.4 1.9l0 0c0 .7-.1 1.3-.4 1.9s-.6 1.1-1 1.5-1 .8-1.6 1C253.7 80.8 253 80.9 252.3 80.9zM252.3 79c.4 0 .8-.1 1.1-.2.3-.2.6-.4.9-.6.2-.3.4-.6.6-.9.1-.4.2-.7.2-1.1l0 0c0-.4-.1-.8-.2-1.1-.1-.4-.3-.7-.6-.9-.3-.3-.6-.5-.9-.6-.3-.2-.7-.2-1.1-.2s-.8.1-1.1.2-.6.4-.9.6c-.2.3-.4.6-.6.9-.1.4-.2.7-.2 1.1l0 0c0 .4.1.8.2 1.1.1.4.3.7.6.9.3.3.6.5.9.6C251.5 78.9 251.9 79 252.3 79zM260.3 71.4h2.1v9.3h-2.1V71.4zM265.8 71.4h4.3c1.2 0 2.1.3 2.7.9.5.5.8 1.2.8 2.1l0 0c0 .8-.2 1.4-.6 1.8-.4.5-.9.8-1.4 1l2.3 3.3h-2.4l-2-3 0 0h-1.6v3h-2.1L265.8 71.4 265.8 71.4zM270 75.9c.5 0 .9-.1 1.2-.4.3-.2.4-.6.4-1l0 0c0-.4-.1-.8-.4-1s-.7-.3-1.2-.3h-2v2.7L270 75.9 270 75.9zM276.7 71.4h7v1.8h-5v1.9h4.4v1.8h-4.4v2h5.1v1.8h-7.1V71.4z\\\" style=\\\"fill:#FFFFFF\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"gift\",\n  \"use\": \"gift-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"gift\\\">\\n<g id=\\\"gift_Gift\\\" clip-path=\\\"url(#gift_clip0_17383_70009)\\\">\\n<path id=\\\"gift_icon\\\" d=\\\"M16.5 3.50028C16.5 2.09787 15.4284 1.16515 14.2342 1.40759C13.355 1.58611 12.7264 2.07163 12.1504 2.76278C11.8592 3.11223 11.5869 3.50784 11.3031 3.93909C11.2258 4.05657 11.1472 4.17738 11.0672 4.30036C10.8908 4.57147 10.7074 4.85347 10.516 5.13306H9.48398C9.29261 4.85347 9.10941 4.57185 8.93305 4.30075C8.85298 4.17767 8.77426 4.05667 8.69689 3.93909C8.41309 3.50784 8.14077 3.11223 7.84957 2.76278C7.27364 2.07163 6.64504 1.58611 5.76576 1.40759C4.57162 1.16515 3.5 2.09787 3.5 3.50028C3.5 4.80722 4.75988 5.9926 6.48323 6.00024H8V7.00024L6.5 7.00028L6.48158 7.00024H2V18.0002H8V9.00024H9V19.0002H1V6.00024H3.69857C2.966 5.37563 2.5 4.50102 2.5 3.50028C2.5 1.58898 4.03564 0.035933 5.96472 0.427586C7.14086 0.666371 7.95335 1.32522 8.61781 2.12261C8.9468 2.51742 9.24449 2.95212 9.53223 3.38936C9.6156 3.51605 9.69774 3.64231 9.77971 3.76831C9.85288 3.88079 9.92634 3.99372 10 4.10591C10.0734 3.99409 10.1462 3.88219 10.2191 3.77009L10.2199 3.76898C10.3018 3.64298 10.3844 3.51605 10.4678 3.38936C10.7555 2.95212 11.0532 2.51742 11.3822 2.12261C12.0467 1.32522 12.8591 0.666371 14.0353 0.427586C15.9644 0.035933 17.5 1.58898 17.5 3.50028C17.5 4.50102 17.034 5.37563 16.3014 6.00024H19V19.0002H11V9.00024H12V18.0002H18V7.00024H13.5184L13.5 7.00028L12 7.00024V6.00024H13.5168C15.2401 5.9926 16.5 4.80722 16.5 3.50028Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"gift_clip0_17383_70009\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useOrigin} from '@salesforce/pwa-kit-react-sdk/ssr/universal/hooks'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport fetch from 'cross-fetch'\nimport {useMemo} from 'react'\nimport {useVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\nimport {getDolChannelHeaders} from '../../utils/dol-channel-headers'\n\nconst DOL_PROXY_PREFIXES = ['/mobify/proxy/dol/', '/mobify/proxy/dev-dol/']\n\nexport const isDolProxyPath = (path) =>\n    typeof path === 'string' && DOL_PROXY_PREFIXES.some((prefix) => path.startsWith(prefix))\n\n// SSR-only: attach `x-api-dol-key` on SSR-originated DOL calls.\n// PWA Kit's Express strips `x-api-key` from req.headers on the loopback\n// (build-remote-server.js ~L746, X_HEADERS_TO_REMOVE_ORIGIN). DOL added\n// `x-api-dol-key` as an accepted alternate key name — it's not on PWA Kit's\n// strip list, so it survives the loopback and reaches DOL upstream intact.\nexport const getSsrDolHeaders = () => {\n    const isServer = typeof window === 'undefined'\n    const key = isServer ? process.env.DOL_API_KEY : undefined\n    return key ? {'x-api-dol-key': key} : {}\n}\n\n// Fetch wrapper that attaches SSR DOL auth headers.\nexport const dolFetch = (url, options = {}) =>\n    fetch(url, {\n        ...options,\n        headers: {...options.headers, ...getSsrDolHeaders()}\n    })\n\n/**\n * Retrieves DOL API configuration from the application configuration.\n * Throws an error if the configuration is missing.\n */\nexport const getDolConfig = () => {\n    const {app: appConfig} = getConfig()\n    const dol = appConfig?.dolAPI\n    if (!dol) throw new Error('DOL configuration not found')\n\n    return {dol, targetAmplienceHub: appConfig?.targetAmplienceHub}\n}\n\n/**\n * Determines the base URL for content retrieval.\n * Uses a VSE if provided, otherwise uses the application origin.\n */\nexport const getBaseUrl = (vse, dol, origin) => {\n    return vse ? `https://${vse}/content` : `${origin}${dol.proxyPath}/content`\n}\n\n/**\n * Returns default query parameters for content requests.\n * Ensures that the locale is included with a fallback to English.\n */\nexport const getDefaultParameters = (locale) => ({\n    depth: 'all',\n    format: 'inlined',\n    locale: locale ? `${locale},en` : 'en'\n})\n\n/**\n * Constructs the hub parameter for API requests.\n *\n * When `enableDolContentChannelMigration` is true, hubName is returned as an HTTP header\n * instead of a query parameter (DOL content channel migration — INS-4952).\n *\n * @param {string} [targetAmplienceHub]\n * @param {boolean} [enableDolContentChannelMigration] - When true, returns hubName as a header.\n *   When false/omitted, returns hubName as a query param (legacy behavior).\n * @returns {{hubName?: string}} Query params (legacy) or an empty object (new path —\n *   hubName is merged into request headers separately).\n */\nexport const getHubParameter = (targetAmplienceHub, enableDolContentChannelMigration = false) => {\n    if (!targetAmplienceHub) return {}\n    // Under content channel migration, hubName moves from query param to request header.\n    if (enableDolContentChannelMigration) return {}\n    return {hubName: targetAmplienceHub}\n}\n\n/**\n * Returns the hubName header for content requests when content channel migration is active.\n *\n * @param {string} [targetAmplienceHub]\n * @param {boolean} [enableDolContentChannelMigration]\n * @returns {{'hubname'?: string}} Header object or empty object.\n */\nexport const getHubHeader = (targetAmplienceHub, enableDolContentChannelMigration = false) => {\n    if (enableDolContentChannelMigration && targetAmplienceHub) {\n        return {hubname: targetAmplienceHub}\n    }\n    return {}\n}\n\n/**\n * Fetches content from a given endpoint with provided parameters.\n *\n * @param {string} baseUrl - The base URL for API requests.\n * @param {string} endpoint - The API endpoint to fetch data from.\n * @param {object} params - Query parameters for the request.\n * @param {object} [opts]\n * @param {boolean} [opts.enabled] - Enable DOL auth header injection.\n * @param {object} [opts.dolChannelHeaders] - DOL Q3 channel headers (channelname, channeltype).\n * @param {object} [opts.hubHeader] - Hub name header for Q3 channel migration.\n * @returns {Promise<object>} - Returns the fetched content as a JSON object.\n */\nexport const fetchContentItem = async (\n    baseUrl,\n    endpoint,\n    params,\n    {enabled = false, dolChannelHeaders = {}, hubHeader = {}} = {}\n) => {\n    const urlParams = new URLSearchParams(params).toString()\n    const url = `${baseUrl}/${endpoint}?${urlParams}`\n    const doFetch = enabled ? dolFetch : fetch\n\n    try {\n        const response = await doFetch(url, {\n            headers: {...dolChannelHeaders, ...hubHeader}\n        })\n        if (!response.ok) {\n            console.error('Error fetching content', response.status, url)\n            return {}\n        }\n        return await response.json()\n    } catch (error) {\n        console.error(`Error fetching content from ${url}`, error)\n        return {}\n    }\n}\n\n/**\n * Fetches multiple content items using a POST request.\n *\n * @param {string} baseUrl - The base URL for API requests.\n * @param {Array<string>} keys - List of content keys to retrieve.\n * @param {object} params - Query parameters for the request.\n * @param {object} [hubParam] - Hub query parameter (only used when Q3 migration is off).\n * @param {object} [opts]\n * @param {boolean} [opts.enabled] - Enable DOL auth header injection.\n * @param {object} [opts.dolChannelHeaders] - DOL Q3 channel headers (channelname, channeltype).\n * @param {object} [opts.hubHeader] - Hub name header for Q3 channel migration.\n * @returns {Promise<object>} - Returns the fetched content as a JSON object.\n */\nexport const fetchContentViaPost = async (\n    baseUrl,\n    keys,\n    params,\n    hubParam = {},\n    {enabled = false, dolChannelHeaders = {}, hubHeader = {}} = {}\n) => {\n    const hubQuery = new URLSearchParams(hubParam).toString()\n    const url = hubQuery ? `${baseUrl}/fetch?${hubQuery}` : `${baseUrl}/fetch`\n\n    const body = {\n        parameters: params,\n        requests: keys.map((key) => ({key}))\n    }\n    const doFetch = enabled ? dolFetch : fetch\n\n    try {\n        const response = await doFetch(url, {\n            method: 'POST',\n            headers: {'Content-Type': 'application/json', ...dolChannelHeaders, ...hubHeader},\n            body: JSON.stringify(body)\n        })\n\n        if (!response.ok) {\n            console.error('Amplience POST failed:', response.status, url)\n            return {}\n        }\n\n        return await response.json()\n    } catch (error) {\n        console.error(`Error fetching content via POST from ${url}`, error)\n        return {}\n    }\n}\n\n/**\n * Function-based API for use outside React Hooks.\n * Works for SSR.\n *\n * @param {string} locale\n * @param {string} [vse]\n * @param {string} origin\n * @param {object} [opts]\n * @param {boolean} [opts.enableDolAuthHeaderInjection]\n * @param {boolean} [opts.enableDolContentChannelMigration] - When true, attaches\n *   channelname/channeltype headers and moves hubName from query param to header\n *   (INS-4952 DOL content channel migration).\n */\nexport const getDolApi = (\n    locale,\n    vse,\n    origin,\n    {enableDolAuthHeaderInjection = false, enableDolContentChannelMigration = false} = {}\n) => {\n    const {dol, targetAmplienceHub} = getDolConfig()\n    const baseUrl = getBaseUrl(vse, dol, origin)\n    const defaultParams = getDefaultParameters(locale)\n    const hubParam = vse\n        ? {}\n        : getHubParameter(targetAmplienceHub, enableDolContentChannelMigration)\n    const hubHeader = vse ? {} : getHubHeader(targetAmplienceHub, enableDolContentChannelMigration)\n    const dolChannelHeaders = enableDolContentChannelMigration\n        ? getDolChannelHeaders('content')\n        : {}\n\n    const fetchItem = (endpoint, params = {}) =>\n        fetchContentItem(\n            baseUrl,\n            endpoint,\n            {...defaultParams, ...hubParam, ...params},\n            {enabled: enableDolAuthHeaderInjection, dolChannelHeaders, hubHeader}\n        )\n\n    const fetchItemById = (id, params = {}) => fetchItem(`id/${id}`, params)\n\n    const fetchItemByKey = (key, params = {}) => fetchItem(`key/${key}`, params)\n\n    const fetchViaPost = async (keys = [], params = {}) => {\n        const result = await fetchContentViaPost(\n            baseUrl,\n            keys,\n            {...defaultParams, ...params},\n            hubParam,\n            {enabled: enableDolAuthHeaderInjection, dolChannelHeaders, hubHeader}\n        )\n        return result || {}\n    }\n\n    return {fetchItem, fetchItemById, fetchViaPost, fetchItemByKey}\n}\n\n/**\n * Hook-based API for React components.\n * Works for Client-Side Rendering (CSR).\n */\nexport const useDolApi = (locale, vse) => {\n    const origin = useOrigin(false)\n    const enableDolAuthHeaderInjection = useVariant(LD_KEYS.enableDolAuthHeaderInjection, false)\n    const enableDolContentChannelMigration = useVariant(\n        LD_KEYS.enableGlobalDolChannelMigrationContent,\n        false\n    )\n\n    return useMemo(\n        () =>\n            getDolApi(locale, vse, origin, {\n                enableDolAuthHeaderInjection,\n                enableDolContentChannelMigration\n            }),\n        [locale, vse, origin, enableDolAuthHeaderInjection, enableDolContentChannelMigration]\n    )\n}\n","import React, {useState, useCallback, useEffect, useMemo, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport SizeOptions from '../size-options'\nimport {ChevronRightIcon, StaticRulerIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {Button, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {SizeSelectorStyles} from './size-selector.styles'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport NotifyMe from '../notify-me'\nimport SizeGuideDrawer from '../size-guide'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {filterSizeTable, getMeasurementOptions, getRegionalSizeOptions} from './utils'\nimport {useProductDetailsLinkAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-product-details-analytics'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {useProducts} from 'pandora-shared-app/overrides/app/hooks/use-products'\nimport {RegionalSize} from './partials/regional-sizes'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useSizePricing} from 'product-details/overrides/app/pages/product-detail/hooks/use-size-pricing'\n\nconst FEATURES_MAP = {\n    NOTIFY_ME: 'notify-me',\n    CLICK_AND_COLLECT: 'click-and-collect'\n}\n\nconst SizeSelectorDrawer = ({\n    productSizes,\n    isNotifyMe,\n    productId,\n    productName,\n    productImg,\n    secondaryProductName,\n    setOpenDrawer,\n    setCloseDrawer,\n    onSizeSelect = () => {},\n    isProductABundleOrSet,\n    variants,\n    selectedSize = {name: '', value: '', orderable: false},\n    sizeTable,\n    sizeTableId,\n    isClickAndCollect,\n    openBuyBoxDrawer,\n    closeBuyBoxDrawer,\n    handleOutOfStockSizeSelection: propHandleOutOfStockSizeSelection,\n    hideFindYourSizeButton = false,\n    resetShowStorePickupFlag,\n    digitalSizeGroup,\n    openedFromAtbFlow,\n    showStorePickupIfNoSizeSelected,\n    placement, // Allow passing placement to control drawer direction\n    disableOOSVariants = false\n}) => {\n    const intl = useIntl()\n    const {locale} = useMultiSite()\n    const isUsOrCaSite = locale?.id === 'en-US' || locale?.id === 'en-CA'\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n\n    // CRITICAL FIX: Force re-mount when opening to reset Chakra's portal\n    const [drawerKey, setDrawerKey] = useState(0)\n    const [isNotifyMeDrawerOpen, setIsNotifyMeDrawerOpen] = useState(false)\n    const [isNotifyMeFormSubmitted, setIsNotifyMeFormSubmitted] = useState(false)\n    const [isSizeGuideDrawerOpen, setIsSizeGuideDrawerOpen] = useState(false)\n    const [featurePiority, setFeaturePriority] = useState(null)\n    const [newProductId, setNewProductId] = useState(null)\n    const [ringSizerCompleted, setRingSizerCompleted] = useState(false)\n    const [autoOpenRingSizer, setAutoOpenRingSizer] = useState(false)\n    const enableNotifyMe = useVariant(LD_KEYS.enablePdpNotifyMe, true)\n    const enableSizeGuide = useVariant(LD_KEYS.enablePdpSizeGuide, true)\n    const enablePdpRingSizer = useVariant(LD_KEYS.enablePdpRingSizer, false)\n    const enablePdpNotifyMeCorrectProductData = useVariant(\n        LD_KEYS.enablePdpNotifyMeCorrectProductData,\n        false\n    )\n    const enablePdpSizeSelectorTracking = useVariant(LD_KEYS.enablePdpSizeSelectorTracking, false)\n    const enableDrawerPlacementFix = useVariant(LD_KEYS.enableDrawerPlacementFix, false)\n    const enablePdpRingSizerUiEnhancements = useVariant(\n        LD_KEYS.enablePdpRingSizerUiEnhancements,\n        false\n    )\n    const enablePdpBrowserTranslationProtection = useVariant(\n        LD_KEYS.enablePdpBrowserTranslationProtection,\n        false\n    )\n    const ringSizeGuideButtonSx =\n        enablePdpRingSizerUiEnhancements && sizeTable?.type === 'ring'\n            ? {textTransform: 'none'}\n            : undefined\n\n    const sizeGuideMessage =\n        enablePdpRingSizerUiEnhancements && sizeTable?.type === 'ring'\n            ? {defaultMessage: 'Need sizing help?', id: 'product_view.button.size_guide_ring'}\n            : {defaultMessage: 'Size guide & tips', id: 'product_view.button.size_guide'}\n\n    const translateAttr = enablePdpBrowserTranslationProtection ? 'no' : undefined\n    const {trackLinkEvent} = useProductDetailsLinkAnalytics()\n    const {link, view} = useTealium()\n    const {product} = useProducts(newProductId || productId, new URLSearchParams(), true)\n\n    // Per-size pricing for size selector\n    const sizeVariants = isDrawerOpen ? variants : []\n    const {\n        shouldShowPrices,\n        sizePriceMap,\n        isLoading: isPricesLoading\n    } = useSizePricing(sizeVariants, product?.currency)\n    // Notify me is based on master product's isNotifyMe value only\n    const getIsNotifyMeForSize = useCallback(() => {\n        if (!enableNotifyMe || isProductABundleOrSet) return false\n        return !!isNotifyMe\n    }, [enableNotifyMe, isProductABundleOrSet, isNotifyMe])\n\n    const regionalSizeOptions = getRegionalSizeOptions(\n        sizeTable?.type,\n        Object.values(sizeTable?.sizes || {})[0]?.names,\n        intl\n    )\n    const sizeTypeOptions = getMeasurementOptions(\n        sizeTable?.type,\n        Object.values(sizeTable?.sizes || {})[0]?.measurements,\n        intl\n    )\n\n    // Temporary flag: remove the legacy path (and this flag) once the derived-state\n    // fix is verified in production.\n    const enableRegionalSizeDerivedState = useVariant(\n        LD_KEYS.enablePdpRegionalSizeDerivedState,\n        false\n    )\n\n    // Legacy behavior: option objects frozen in state at mount, never re-derived\n    // when sizeTable finishes loading.\n    const [legacyRegionalSize, setLegacyRegionalSize] = useState(\n        regionalSizeOptions.find((el) =>\n            isUsOrCaSite ? el.key === 'imperial' : el.key === 'metric'\n        )\n    )\n    const [legacySizeType, setLegacySizeType] = useState(sizeTypeOptions[0])\n\n    // Fixed behavior: sizeTable loads asynchronously, so store only the user's\n    // explicit picks (by key) and re-resolve them against the current options on\n    // every render — a frozen useState initial value computed before sizeTable\n    // arrives would stay undefined.\n    const [userRegionalSizeKey, setUserRegionalSizeKey] = useState(null)\n    const [userSizeTypeKey, setUserSizeTypeKey] = useState(null)\n\n    const selectedRegionalSize = enableRegionalSizeDerivedState\n        ? regionalSizeOptions.find((el) => el.key === userRegionalSizeKey) ??\n          regionalSizeOptions.find((el) =>\n              isUsOrCaSite ? el.key === 'imperial' : el.key === 'metric'\n          )\n        : legacyRegionalSize\n    const selectedSizeType = enableRegionalSizeDerivedState\n        ? sizeTypeOptions.find((el) => el.key === userSizeTypeKey) ?? sizeTypeOptions[0]\n        : legacySizeType\n\n    const findYourSizeButtonRef = useRef(null)\n    const enablePdpHydrationCleanup = useVariant(LD_KEYS.enablePdpHydrationCleanup, false)\n    const setFindYourSizeButtonRef = useCallback((node) => {\n        findYourSizeButtonRef.current = node ? node.querySelector('button') : null\n    }, [])\n\n    useEffect(() => {\n        if (setOpenDrawer) {\n            setOpenDrawer(() => {\n                return (options = {}) => {\n                    if (options.skipClickAndCollect) {\n                        setFeaturePriority(FEATURES_MAP.NOTIFY_ME)\n                    }\n                    // Force re-mount by incrementing key to reset Chakra's portal\n                    setDrawerKey((prev) => prev + 1)\n                    setIsDrawerOpen(true)\n                }\n            })\n        }\n        // Note: setFeaturePriority intentionally excluded to keep callback stable\n    }, [setOpenDrawer, productId, productName])\n\n    useEffect(() => {\n        if (setCloseDrawer) {\n            setCloseDrawer(() => () => setIsDrawerOpen(false))\n        }\n    }, [setCloseDrawer])\n\n    useEffect(() => {\n        if (!isDrawerOpen || !enablePdpSizeSelectorTracking) return\n\n        const {pathname, origin} = window.location\n        const [firstPath = '', secondPath = ''] = pathname.split('/').filter(Boolean)\n        const categoryUrl = `${origin}/${firstPath}/${secondPath}`\n\n        link({estore_event: [TEALIUM_CONSTANTS.ESTORE_EVENT.SIZE_SELECTOR_OPENED]})\n        view({\n            estore_event: [TEALIUM_CONSTANTS.DRAWER.EVENTS.VIEW],\n            virtual_page_name: 'size-selector-pdp',\n            virtual_page_url: categoryUrl\n        })\n    }, [isDrawerOpen, enablePdpSizeSelectorTracking])\n\n    useEffect(() => {\n        if (typeof window === 'undefined') return\n        const params = new URLSearchParams(window.location.search)\n        if (params.get('openDrawer') !== 'ring-sizer') return\n        if (!enableSizeGuide || !sizeTableId || sizeTable?.type !== 'ring') return\n        if (!enablePdpRingSizer) return\n\n        const url = new URL(window.location.href)\n        url.searchParams.delete('openDrawer')\n        window.history.replaceState({}, '', url.toString())\n\n        setIsSizeGuideDrawerOpen(true)\n        setAutoOpenRingSizer(true)\n    }, [])\n\n    const handleSizeChange = useCallback(\n        (selectedName) => {\n            const selected = productSizes[0]?.values.find((size) => size.name === selectedName.name)\n            // sizeGuideApplied is true if user completed the ring sizer flow\n            onSizeSelect({\n                ...selected,\n                sizeGuideApplied: ringSizerCompleted,\n                isNotifyMeForSize: getIsNotifyMeForSize(selected?.value)\n            })\n            setIsDrawerOpen(false)\n        },\n        [productSizes, onSizeSelect, ringSizerCompleted, getIsNotifyMeForSize]\n    )\n\n    const handleDrawerClose = () => {\n        setIsDrawerOpen(false)\n        setIsNotifyMeDrawerOpen(false)\n        setIsNotifyMeFormSubmitted(false)\n        setIsSizeGuideDrawerOpen(false)\n        setAutoOpenRingSizer(false)\n\n        setFeaturePriority(null)\n\n        resetShowStorePickupFlag?.()\n    }\n\n    const handleDrawerBack = (featureDrawer = '') => {\n        setIsDrawerOpen(true)\n        setIsNotifyMeDrawerOpen(false)\n        setIsSizeGuideDrawerOpen(false)\n\n        if (featureDrawer === FEATURES_MAP.NOTIFY_ME) {\n            setFeaturePriority(FEATURES_MAP.NOTIFY_ME)\n        }\n    }\n\n    const hasAnyNotifyMe = useMemo(() => {\n        if (isProductABundleOrSet || !enableNotifyMe) return false\n        return !!isNotifyMe\n    }, [isProductABundleOrSet, enableNotifyMe, isNotifyMe])\n\n    const featureToUse = useMemo(() => {\n        const isBothFeaturesEnabled = hasAnyNotifyMe && isClickAndCollect\n        let feature = (isBothFeaturesEnabled && featurePiority) ?? featurePiority\n\n        if (!feature) {\n            if (isClickAndCollect) {\n                feature = FEATURES_MAP.CLICK_AND_COLLECT\n            } else if (hasAnyNotifyMe) {\n                feature = FEATURES_MAP.NOTIFY_ME\n            }\n        }\n\n        return feature\n    }, [hasAnyNotifyMe, isClickAndCollect, featurePiority])\n\n    const handleOutOfStockSizeSelection = (selectedName) => {\n        // Capture these flags BEFORE any state changes that might reset them\n        // isStoreLookupFlow indicates user clicked \"Select store to see availability\" to open the size selector\n        const isStoreLookupFlow = showStorePickupIfNoSizeSelected?.current\n        const wasFromAtbFlow = openedFromAtbFlow?.current === true\n\n        // Use prop version if provided, otherwise use internal logic\n        if (propHandleOutOfStockSizeSelection) {\n            propHandleOutOfStockSizeSelection(selectedName, {\n                isNotifyMeForSize: getIsNotifyMeForSize(selectedName.value)\n            })\n            if (enableDrawerPlacementFix || isClickAndCollect) {\n                setIsDrawerOpen(false)\n            }\n            return\n        }\n\n        const selected = productSizes[0]?.values.find((size) => size.name === selectedName.name)\n        const product = variants.find((p) => p.variationValues.size === selected.value.toString())\n        setNewProductId(product?.productId)\n        onSizeSelect(selected)\n\n        if (featureToUse === FEATURES_MAP.CLICK_AND_COLLECT) {\n            // Only set ATB flag if user initiated from ATB flow AND not in \"Select a Store\" flow\n            // This ensures auto-ATB only happens when user clicked \"Add to Bag\" first\n            const shouldSetAtbFlag = wasFromAtbFlow && !isStoreLookupFlow\n            openBuyBoxDrawer(shouldSetAtbFlag)\n            setIsDrawerOpen(false)\n            setIsNotifyMeDrawerOpen(false)\n        } else if (featureToUse === FEATURES_MAP.NOTIFY_ME) {\n            closeBuyBoxDrawer()\n            setIsDrawerOpen(false)\n            setIsNotifyMeDrawerOpen(true)\n        } else {\n            closeBuyBoxDrawer()\n            setIsNotifyMeDrawerOpen(false)\n        }\n    }\n\n    const handleChangeRegionalSize = (value) => {\n        if (enableRegionalSizeDerivedState) {\n            setUserRegionalSizeKey(value.key)\n        } else {\n            setLegacyRegionalSize(value)\n        }\n    }\n\n    const handleChangeSelectedTypeSize = (value) => {\n        if (enableRegionalSizeDerivedState) {\n            setUserSizeTypeKey(value.key)\n        } else {\n            setLegacySizeType(value)\n        }\n    }\n\n    // Ring sizer specific logic - only computed when feature flag is enabled\n    const availableSizeNames = useMemo(() => {\n        if (!enablePdpRingSizer) return undefined\n        const values = productSizes?.[0]?.values || []\n        return values.map((v) => v?.name).filter((n) => n != null)\n    }, [productSizes, enablePdpRingSizer])\n\n    const resolveProductSizeFromRingSizer = useCallback(\n        ({sizeName, regionKey, normalizedSize}) => {\n            if (!enablePdpRingSizer) return null\n            const values = productSizes?.[0]?.values || []\n            if (!values.length) return null\n\n            const direct = values.find(\n                (v) => String(v.name).trim().toLowerCase() === String(sizeName).trim().toLowerCase()\n            )\n            if (direct) return direct\n\n            const labels = normalizedSize?.labels || {}\n            const normalize = (s) =>\n                String(s ?? '')\n                    .trim()\n                    .toLowerCase()\n            const candidates = new Set(\n                [labels?.[regionKey], labels?.metric, labels?.imperial, labels?.wheatsheaf]\n                    .filter(Boolean)\n                    .map(normalize)\n            )\n            const byAnyLabel = values.find((v) => candidates.has(normalize(v.name)))\n\n            if (byAnyLabel) return byAnyLabel\n\n            return null\n        },\n        [productSizes, enablePdpRingSizer]\n    )\n\n    const handleRingSizerComplete = useCallback(\n        (result) => {\n            if (!enablePdpRingSizer) return\n            const matched = resolveProductSizeFromRingSizer(result)\n            if (matched) {\n                // Mark ring sizer as completed for Add to Bag tracking\n                setRingSizerCompleted(true)\n                const sizeWithGuideFlag = {\n                    ...matched,\n                    sizeGuideApplied: true\n                }\n                onSizeSelect(sizeWithGuideFlag)\n                setIsSizeGuideDrawerOpen(false)\n                setIsDrawerOpen(true)\n            }\n        },\n        [onSizeSelect, resolveProductSizeFromRingSizer, enablePdpRingSizer]\n    )\n\n    const findYourSizeButton = !hideFindYourSizeButton ? (\n        <Button\n            width=\"full\"\n            key=\"size-button\"\n            onClick={() => {\n                // Reset ATB flow flag when opening drawer directly (not from ATB)\n                // This ensures auto-add only triggers when user clicked \"Add to Bag\" first\n                if (openedFromAtbFlow) {\n                    openedFromAtbFlow.current = false\n                }\n                setIsDrawerOpen(true)\n            }}\n            variant=\"outline\"\n            rightIcon={<ChevronRightIcon w={5} h={5} name=\"chevron-right\" />}\n            data-testid=\"findYourSizeButton\"\n            data-auto=\"findYourSizeButton\"\n            data-cs-override-id=\"PDP_select_size\"\n            {...(!enablePdpHydrationCleanup && {ref: findYourSizeButtonRef})}\n            translate={translateAttr}\n            {...SizeSelectorStyles.sizeSelectorButton}\n        >\n            <Box as=\"span\" translate={translateAttr}>\n                {selectedSize?.name\n                    ? intl.formatMessage({\n                          defaultMessage: 'size',\n                          id: 'product_view.button.selected_size'\n                      }) +\n                      ' ' +\n                      selectedSize?.name\n                    : intl.formatMessage({\n                          defaultMessage: 'Find your size',\n                          id: 'product_view.button.find_size'\n                      })}\n            </Box>\n        </Button>\n    ) : null\n\n    return (\n        <Box translate={translateAttr}>\n            {findYourSizeButton &&\n                (enablePdpHydrationCleanup ? (\n                    <Box ref={setFindYourSizeButtonRef}>{findYourSizeButton}</Box>\n                ) : (\n                    findYourSizeButton\n                ))}\n            <FullDrawerSheet\n                key={\n                    enablePdpRingSizerUiEnhancements\n                        ? `size-drawer-${drawerKey}`\n                        : `size-drawer-${productId}-${drawerKey}`\n                }\n                isOpen={isDrawerOpen}\n                onClose={handleDrawerClose}\n                headerText={intl.formatMessage({\n                    defaultMessage: 'Choose a size',\n                    id: 'product_view.heading.choose_size'\n                })}\n                finalFocusRef={findYourSizeButtonRef}\n                placement={placement}\n                bodyContent={\n                    <Box translate={translateAttr}>\n                        {enableSizeGuide && sizeTableId && sizeTable?.type && (\n                            <Button\n                                width=\"full\"\n                                key=\"size-guide-button\"\n                                onClick={() => {\n                                    trackLinkEvent(\n                                        product,\n                                        TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_SIZE_GUIDE_VIEWED\n                                    )\n                                    setIsSizeGuideDrawerOpen(true)\n                                    setIsDrawerOpen(false)\n                                }}\n                                variant=\"outline\"\n                                rightIcon={<ChevronRightIcon w={5} h={5} name=\"chevron-right\" />}\n                                data-testid=\"sizeGuideButton\"\n                                data-auto=\"sizeGuideButton\"\n                                data-cs-override-id=\"PDP_sizes_overlay_guide\"\n                                {...SizeSelectorStyles.sizeGuideButton}\n                                sx={ringSizeGuideButtonSx}\n                            >\n                                <StaticRulerIcon boxSize={'5'} mr={3} name=\"ruler-icon\" />\n                                {intl.formatMessage(sizeGuideMessage)}\n                            </Button>\n                        )}\n                        {sizeTableId && sizeTable?.type && (\n                            <RegionalSize\n                                selectedRegionalSize={selectedRegionalSize}\n                                handleChangeRegionalSize={handleChangeRegionalSize}\n                                handleChangeSelectedTypeSize={handleChangeSelectedTypeSize}\n                                selectedSizeType={selectedSizeType}\n                                sizeOptions={sizeTypeOptions}\n                                sizeTip={sizeTable?.sizeTip}\n                                regionalSizeOptions={regionalSizeOptions}\n                            />\n                        )}\n                        <SizeOptions\n                            sizes={productSizes[0]?.values}\n                            value={selectedSize}\n                            onChange={handleSizeChange}\n                            isNotifyMe={featureToUse === FEATURES_MAP.NOTIFY_ME}\n                            isClickAndCollect={featureToUse === FEATURES_MAP.CLICK_AND_COLLECT}\n                            getIsNotifyMeForSize={getIsNotifyMeForSize}\n                            handleOutOfStockSizeSelection={handleOutOfStockSizeSelection}\n                            selectedRegionalSize={selectedRegionalSize}\n                            sizeDataMap={sizeTable?.sizes}\n                            productType={sizeTable?.type}\n                            selectedSizeType={selectedSizeType}\n                            disableOOSVariants={disableOOSVariants}\n                            sizePriceMap={shouldShowPrices ? sizePriceMap : undefined}\n                            isPricesLoading={shouldShowPrices && isPricesLoading}\n                            currency={product?.currency}\n                        />\n                    </Box>\n                }\n                sheetType=\"size_selector\"\n            />\n            {isNotifyMeDrawerOpen && (\n                <NotifyMe\n                    isNotifyMeDrawerOpen={isNotifyMeDrawerOpen}\n                    handleDrawerClose={handleDrawerClose}\n                    handleDrawerBack={() => handleDrawerBack(FEATURES_MAP.NOTIFY_ME)}\n                    productName={productName}\n                    productImg={productImg}\n                    secondaryProductName={secondaryProductName}\n                    isNotifyMeFormSubmitted={isNotifyMeFormSubmitted}\n                    setIsNotifyMeFormSubmitted={setIsNotifyMeFormSubmitted}\n                    product={enablePdpNotifyMeCorrectProductData ? product : newProductId}\n                    finalFocusRef={findYourSizeButtonRef}\n                />\n            )}\n            {isSizeGuideDrawerOpen && (\n                <SizeGuideDrawer\n                    isSizeGuideDrawerOpen={isSizeGuideDrawerOpen}\n                    handleDrawerClose={handleDrawerClose}\n                    handleDrawerBack={handleDrawerBack}\n                    type={sizeTable?.type}\n                    sizeTableData={filterSizeTable(sizeTable, variants)}\n                    sizeTableFull={sizeTable}\n                    selectedRegionalSize={selectedRegionalSize}\n                    digitalSizeGroup={digitalSizeGroup}\n                    autoOpenRingSizer={autoOpenRingSizer}\n                    onAutoOpenConsumed={() => setAutoOpenRingSizer(false)}\n                    // Ring sizer props - only passed when feature flag is enabled\n                    {...(enablePdpRingSizer && {\n                        onRingSizerComplete: handleRingSizerComplete,\n                        availableSizeNames: availableSizeNames\n                    })}\n                    finalFocusRef={findYourSizeButtonRef}\n                />\n            )}\n        </Box>\n    )\n}\n\nSizeSelectorDrawer.propTypes = {\n    productSizes: PropTypes.arrayOf(\n        PropTypes.shape({\n            values: PropTypes.arrayOf(\n                PropTypes.shape({\n                    name: PropTypes.string.isRequired,\n                    value: PropTypes.string.isRequired,\n                    orderable: PropTypes.bool.isRequired\n                })\n            ).isRequired\n        })\n    ).isRequired,\n    isNotifyMe: PropTypes.bool,\n    productId: PropTypes.string,\n    productImg: PropTypes.object,\n    productName: PropTypes.string,\n    secondaryProductName: PropTypes.string,\n    setOpenDrawer: PropTypes.func,\n    setCloseDrawer: PropTypes.func,\n    onSizeSelect: PropTypes.func,\n    isProductABundleOrSet: PropTypes.bool,\n    variants: PropTypes.arrayOf(\n        PropTypes.shape({\n            name: PropTypes.string,\n            price: PropTypes.number,\n            productId: PropTypes.string,\n            variationValues: PropTypes.shape({\n                size: PropTypes.string\n            })\n        })\n    ),\n    selectedSize: PropTypes.object,\n    sizeTable: PropTypes.object,\n    sizeTableId: PropTypes.string,\n    isClickAndCollect: PropTypes.bool,\n    openBuyBoxDrawer: PropTypes.func,\n    closeBuyBoxDrawer: PropTypes.func,\n    handleOutOfStockSizeSelection: PropTypes.func,\n    sizeTip: PropTypes.string,\n    hideFindYourSizeButton: PropTypes.bool,\n    resetShowStorePickupFlag: PropTypes.func,\n    digitalSizeGroup: PropTypes.string,\n    openedFromAtbFlow: PropTypes.shape({current: PropTypes.bool}),\n    showStorePickupIfNoSizeSelected: PropTypes.shape({current: PropTypes.bool}),\n    placement: PropTypes.string,\n    disableOOSVariants: PropTypes.bool\n}\n\nexport default React.memo(SizeSelectorDrawer)\n","import {useMemo} from 'react'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {useProductsPrice} from 'pandora-shared-app/overrides/app/hooks/use-products-price'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {buildSizePriceMap, shouldDisplaySizePrices} from '../../../components/size-options/utils'\n\n/** @typedef {import('pandora-shared-app/overrides/app/types/product').SCAPIVariant} SCAPIVariant */\n/** @typedef {import('../../../components/size-options/utils').SizePriceMap} SizePriceMap */\n\n/**\n * @typedef {object} UseSizePricingResult\n * @property {boolean} shouldShowPrices - Whether prices should be displayed on size options\n * @property {SizePriceMap} sizePriceMap - Map of sizeValue → price data\n * @property {boolean} isLoading - Whether promotional pricing data is still loading\n */\n\n/**\n * Orchestrates per-size pricing data for the size selector.\n * Fetches promotional prices for each variant via the DOL API and determines\n * whether prices should be displayed based on price variation across sizes.\n *\n * @param {SCAPIVariant[]} variants - Product variants (from DOLProduct.variants)\n * @param {string} currency - ISO 4217 currency code\n * @returns {UseSizePricingResult}\n */\nexport const useSizePricing = (variants = [], currency = '') => {\n    const isEnabled = useVariant(LD_KEYS.enablePdpSizeSelectorPricing, false)\n\n    const variantIds = useMemo(() => {\n        if (!isEnabled || !Array.isArray(variants)) return []\n        return variants.map((v) => v.productId).filter(Boolean)\n    }, [variants, isEnabled])\n\n    const {pricesData, isPricesDataFetching} = useProductsPrice(variantIds)\n\n    const sizePriceMap = useMemo(() => {\n        if (!isEnabled || !Array.isArray(variants) || variants.length === 0) return {}\n        return buildSizePriceMap(variants, pricesData, currency)\n    }, [variants, pricesData, currency, isEnabled])\n\n    const shouldShowPrices = useMemo(() => {\n        if (!isEnabled) return false\n        return shouldDisplaySizePrices(sizePriceMap)\n    }, [sizePriceMap, isEnabled])\n\n    return {\n        shouldShowPrices,\n        sizePriceMap,\n        isLoading: isPricesDataFetching\n    }\n}\n","import {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport {\n    getLocaleByReference,\n    getParamsFromPath,\n    getDefaultSite,\n    getSiteByReference\n} from '@salesforce/retail-react-app/app/utils/site-utils'\nimport {HOME_HREF, urlPartPositions} from '@salesforce/retail-react-app/app/constants'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\n/**\n * A function that retrieves the application origin from the configuration.\n * The origin is retrieved from the app configuration or fallback to a default PWA Kit origin.\n * This function works both on the client and the server.\n *\n * @example\n * getAppOriginConfig();\n *\n * // => \"http(s)://www.site.com\"\n *\n * @returns {string} The application origin.\n */\nexport const getAppOriginConfig = () => {\n    /* eslint-disable-next-line */\n    let {site: siteConfig} = useMultiSite()\n    /* eslint-disable-next-line */\n    const appOriginConfig = siteConfig?.appOrigin || useAppOrigin(true)\n\n    return appOriginConfig\n}\n\n/**\n * Modifies a given url by adding/updating query parameters.\n *\n * @param {string} url - The base url of the output url set.\n * @param {object} extraParams - A key values pairing used to add static search param values.\n * @returns {string} A URL with additional params\n * @example\n * import {rebuildPathWithParams} from '/path/to/utils/url'\n *\n * rebuildPathWithParams(\n *     '/en-GB/product/25501032M',\n *     {color: 'JJ2SKXX', size: 'MD'}\n * )\n *\n * // Returns\n * // '/en-GB/product/25501032M?color=JJ2SKXX&size=9MD'\n */\nexport const rebuildPathWithParams = (url, extraParams) => {\n    const [pathname, search] = url.split('?')\n    const params = new URLSearchParams(search)\n\n    updateSearchParams(params, extraParams)\n\n    // Clean up any trailing `=` for params without values.\n    const paramStr = params.toString().replace(/=&/g, '&').replace(/=$/, '')\n\n    // Generate the newly updated url.\n    return `${pathname}${Array.from(paramStr).length > 0 ? `?${paramStr}` : ''}`\n}\n\nexport const updateSearchParams = (searchParams, newParams) => {\n    Object.entries(newParams).forEach(([key, value]) => {\n        // 0 is a valid value as for a param\n        if (!value && value !== 0) {\n            searchParams.delete(key)\n        } else {\n            searchParams.set(key, value)\n        }\n    })\n}\n\n/**\n * Builds a list of modified Urls with the provided params key and values,\n * preserving any search params provided in the original url.Optionally\n * you can pass and object used to set static params values.\n * @param {string} url - The base url of the output url set.\n * @param {string} key - The search params for the associated values\n * @param {Array} values - The search param values\n * @param {object} extraParams - A key values pairing used to add static search param values.\n * @returns {string[]} A list of URLs\n * @example\n * import {buildUrlSet} from '/path/to/utils/url'\n *\n * buildUrlSet(\n *     '/womens/clothing',\n *     'sort',\n *     ['price-high-to-low', 'price-low-to-high'],\n *     {offset: 0}\n * )\n *\n * // Returns\n * // ['/womens/clothing?sort=price-high-to-low', '/womens/clothing?sort=price-low-to-high']\n */\nexport const buildUrlSet = (url = '', key = '', values = [], extraParams = {}) =>\n    values.map((value) => rebuildPathWithParams(url, {[key]: value, ...extraParams}))\n\n/**\n * Given a category and the current locale returns an href to the product list page.\n *\n * @param {Object} category\n * @returns {string}\n */\nexport const categoryUrlBuilder = (category) => encodeURI(`/category/${category.id}`)\n\nexport const absoluteCategoryUrlBuilder = (category) => category.c_slugURL\n\nexport const relCategoryUrlBuilder = (category) => category.c_relSlugURL\n\n/**\n * Given a product and the current locale returns an href to the product detail page.\n *\n * @param {Object} product\n * @returns {string}\n */\nexport const productUrlBuilder = (product) => encodeURI(`/product/${product.id}`)\n\n/**\n * Given a search term, constructs a search url.\n *\n * @param {string} searchTerm\n * @returns {string}\n */\nexport const searchUrlBuilder = (searchTerm) => '/search?q=' + encodeURIComponent(searchTerm)\n\n/**\n * Returns a relative URL for a locale short code.\n * Based on your app configuration, this function will replace your current locale shortCode with a new one\n *\n * @param {String} shortCode - The locale short code.\n * @param {function(*, *, *, *=): string} - Generates a site URL from the provided path, site and locale.\n * @param {string[]} opts.disallowParams - URL parameters to remove\n * @param {Object} opts.location - location object to replace the default `window.location`\n * @returns {String} url - The relative URL for the specific locale.\n */\nexport const getPathWithLocale = (shortCode, buildUrl, opts = {}) => {\n    const location = opts.location ? opts.location : window.location\n    let {siteRef, localeRef} = getParamsFromPath(`${location.pathname}${location.search}`)\n    let {pathname, search} = location\n\n    // sanitize the site from current url if existing\n    if (siteRef) {\n        pathname = pathname.replace(`/${siteRef}`, '')\n        search = search.replace(`site=${siteRef}`, '')\n    }\n    // sanitize the locale from current url if existing\n    if (localeRef) {\n        pathname = pathname.replace(`/${localeRef}`, '')\n        search = search.replace(`locale=${localeRef}`, '')\n    }\n    // remove ending any &\n    search = search.replace(/&$/, '')\n\n    const defaultSite = getDefaultSite()\n\n    // Remove query parameters\n    const {disallowParams = []} = opts\n\n    let queryString = new URLSearchParams(`${search}`)\n\n    if (disallowParams.length) {\n        disallowParams.forEach((param) => {\n            queryString.delete(param)\n        })\n    }\n\n    const site = getSiteByReference(siteRef)\n\n    const locale = getLocaleByReference(site, shortCode)\n\n    // rebuild the url with new locale,\n    const newUrl = buildUrl(\n        `${pathname}${Array.from(queryString).length !== 0 ? `?${queryString}` : ''}`,\n        // By default, as for home page, when the values of site and locale belongs to the default site,\n        // they will be not shown in the url just\n        defaultSite.alias || defaultSite.id,\n        locale?.alias || locale?.id\n    )\n    return newUrl\n}\n\n/**\n * Generates the URL Template literal (Template string) used to build URLs in the App according\n * the current selected site/locale and the default App URL configuration.\n *\n * @param appConfig Application default configuration.\n * @param siteRef Current selected Site reference. The value can be the Site id or alias.\n * @param localeRef Current selected Locale reference. The value can be the Locale id or alias.\n * @returns {function(*, *, *): string} function providing: path, site and locale generates a URL.\n */\nexport const createUrlTemplate = (appConfig, siteRef, localeRef) => {\n    const {site: siteConfig, locale: localeConfig, showDefaults: showDefaultsConfig} = appConfig.url\n    const defaultSite = getDefaultSite()\n    const site = getSiteByReference(siteRef)\n    const defaultLocale = getLocaleByReference(site, site.l10n.defaultLocale)\n\n    const isDefaultSite =\n        defaultSite.id === siteRef || (defaultSite.alias && defaultSite.alias === siteRef)\n    const isDefaultLocale =\n        defaultLocale.id === localeRef || (defaultLocale.alias && defaultLocale.alias === localeRef)\n\n    const querySite =\n        (siteConfig === urlPartPositions.QUERY_PARAM && showDefaultsConfig) ||\n        (siteConfig === urlPartPositions.QUERY_PARAM && !showDefaultsConfig && !isDefaultSite)\n    const queryLocale =\n        (localeConfig === urlPartPositions.QUERY_PARAM && showDefaultsConfig) ||\n        (localeConfig === urlPartPositions.QUERY_PARAM && !showDefaultsConfig && !isDefaultLocale)\n\n    const isQuery = querySite || queryLocale\n\n    const pathSite =\n        (siteConfig === urlPartPositions.PATH && showDefaultsConfig) ||\n        (siteConfig === urlPartPositions.PATH && !showDefaultsConfig && !isDefaultSite)\n    const pathLocale =\n        (localeConfig === urlPartPositions.PATH && showDefaultsConfig) ||\n        (localeConfig === urlPartPositions.PATH && !showDefaultsConfig && !isDefaultLocale)\n\n    return (path, site, locale) => {\n        const isHomeWithDefaultSiteAndLocale =\n            path === HOME_HREF &&\n            (defaultSite.id === site || (defaultSite.alias && defaultSite.alias === site)) &&\n            (defaultLocale.id === locale || (defaultLocale.alias && defaultLocale.alias === locale))\n\n        const sitePath = pathSite && site && !isHomeWithDefaultSiteAndLocale ? `/${site}` : ''\n        const localePath =\n            pathLocale && locale && !isHomeWithDefaultSiteAndLocale ? `/${locale}` : ''\n\n        const hasQuery = isQuery && (site || locale) && !isHomeWithDefaultSiteAndLocale\n        let queryString = ''\n        if (hasQuery) {\n            const searchParams = new URLSearchParams()\n            querySite && site && searchParams.append('site', site)\n            queryLocale && locale && searchParams.append('locale', locale)\n            queryString = `?${searchParams.toString()}`\n        }\n        return `${sitePath}${localePath}${path}${queryString}`\n    }\n}\n\n/*\n * Remove query params from a give url path based on a given list of keys\n *\n * @param {string} path - The part of url to have params removed from.\n * @param {array} keys - list of params to be removed\n * @returns {string} - the url after param has been removed\n * @example\n * import {removeQueryParamsFromPath} from /path/to/util/url\n *\n * removeQueryParamsFromPath(\n *   /en-GB/cart?pid=1234&color=black&size=s&abc=12,\n *   ['pid', 'color', 'size']\n * )\n * // returns\n * // '/en-GB/cart?abc=12'\n */\nexport const removeQueryParamsFromPath = (path, keys) => {\n    const [pathname, search] = path.split('?')\n    const params = new URLSearchParams(search)\n    keys.forEach((key) => {\n        if (params.has(key)) {\n            params.delete(key)\n        }\n    })\n\n    // Clean up any trailing `=` for params without values.\n    const paramStr = params.toString().replace(/=&/g, '&').replace(/=$/, '')\n\n    return `${pathname}${paramStr && '?'}${paramStr}`\n}\n\n/*\n * Remove site alias and locale from a given url, to be used for \"navigate\" urls\n *\n * @param {string} pathName - The part of url to have site alias and locale removed from\n * @returns {string} - the path after site alias and locale have been removed\n * @example\n * import {removeSiteLocaleFromPath} from /path/to/util/url\n *\n * removeSiteLocaleFromPath(/RefArch/en-US/account/wishlist)\n * // returns '/account/wishlist'\n */\nexport const removeSiteLocaleFromPath = (pathName = '') => {\n    let {siteRef, localeRef} = getParamsFromPath(pathName)\n\n    // remove the site alias from the current pathName\n    if (siteRef) {\n        pathName = pathName.replace(new RegExp(`/${siteRef}/`), '/')\n    }\n    // remove the locale from the current pathName\n    if (localeRef) {\n        pathName = pathName.replace(new RegExp(`/${localeRef}/`), '/')\n    }\n\n    return pathName\n}\n\n/**\n * Given the controller path, constructs a SFCC controller URL\n * @param {*} site - The site information that is required to construct the URL\n * @param {*} locale - The lcoale inforamtion that is required to construct the URL\n * @param {*} controllerPath - The Pipeline controller that needs to be called\n * @returns 'http://localhost:3030/on/demandware.store/Sites-en_CA-Site/fr_CA/Wishlist-Show'\n */\nexport const getPipelineUrl = (site, locale, controllerPath) => {\n    const siteId = site.id\n    const localeId = locale.id.replace('-', '_')\n\n    // Get the current origin from window.location\n    const origin = window.location.origin\n\n    // Construct the dynamic URL\n    const pipelineUrl = `${origin}/on/demandware.store/Sites-${siteId}-Site/${localeId}/${controllerPath}`\n\n    return pipelineUrl\n}\n\nexport const removeTrailingSlash = (currentPath) => {\n    return currentPath.endsWith('/') ? currentPath.slice(0, -1) : currentPath\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"disney_x_pandora\",\n  \"use\": \"disney_x_pandora-usage\",\n  \"viewBox\": \"0 0 284.77 49.56\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 284.77 49.56\\\" id=\\\"disney_x_pandora\\\"><polygon fill=\\\"#27251F\\\" points=\\\"152.79,18.37 146.02,25.29 139.26,18.37 137.87,19.76 144.63,26.68 137.87,33.61 139.26,35\\t146.02,28.07 152.79,35 154.18,33.61 147.38,26.68 154.18,19.76\\\" /><path fill=\\\"#27251F\\\" d=\\\"M51.37 15.68c1.96.46 4.45.29 6.13-.49 2.14-.98 3.9-2.06 5.25-3.87.58-.68 1.24-2.23 1.36-3.56.1-1.1-.57-1.97-1.41-2.48-.64-.35-1.82-.59-2.55-.66-.98-1.31-2.88-1.37-4.51-1.04-2.12.46-4.07 1.17-5.75 2.58-1.21 1.1-2.15 2.34-2.44 4.04-.44 1.53.3 2.9 1.23 3.92-.1 1.07-.07 2.29.89 2.79C50.44 17.06 51.09 16.06 51.37 15.68zM60.85 7.16l.63.37c.4.34.39.99.28 1.5-.99 2.54-4.1 3.58-6.78 4.03-.78.13-1.91.25-2.31-.18.18-.67.51-1.24.9-1.7C55.18 9.3 57.48 6.61 60.85 7.16zM49.51 10.36c.21-2.47 3.25-4.46 5.53-4.25-1.91 1.12-4.06 3.47-4.94 5.33C49.76 11.32 49.46 10.79 49.51 10.36zM86.4 17.99c-.43-.68-.95-1.71-1.81-2.15-.28-.11-.76-.18-.87.19-.07.41-.02.84.05 1.25.18 1.79.75 3.39 1.24 5.07.41 1.43.72 2.83.96 4.33.17.98.42 2.58.11 2.78-.28.14-.39-.22-.64-.56-1.89-2.67-3.53-5.39-5.5-7.9-.33-.42-1.1-1.68-2.01-1.49-.5.18-.74.48-.97.95-.89 2.08-1.3 4.52-1.66 6.81-.19 1.19-.25 2.47-.37 3.62-.01 1.52-.1 3.27 1.3 3.98.43.17 1.13.2 1.43-.02.4-.48.57-1.16.64-1.9.1-2.49.25-4.81.39-7.38 0-.29.04-.57.11-.76.13-.16.38.08.48.25.86 1.62 1.83 3.42 2.73 4.91.91 1.48 1.8 3.28 3.33 4.13 1.59.61 2.7-.88 3.23-1.88 1.15-2.11.85-4.42.73-6.85C88.91 22.59 87.82 20.27 86.4 17.99zM95.25 36.13c2.67-.3 6.49-2.71 7.12-3.19.26-.2.38-.55.38-.55.05-.81-.63-2.04-.97-2.06-2.63-.2-6.89 1.55-7.22 1.06-.51-.74.11-1.55.3-2.09.25-.5.57-1.1.81-1.52 1.17-.02 2.32.02 3.53-.04.94-.03 2.67-.03 2.83-.64.04-.63-.03-1.66-.3-1.77-1.56-.48-3.34-.13-5.02-.22L96.49 25c-.09-.59.15-1.22.35-1.81.14-.28.18-.66.54-.77l3.5-.11c1.37-.15 3.11.39 4.15-.76.21-.28-.21-.85-.43-1.18l-1.26-1.48c-.39-.39-.72-.46-1.15-.51-1.64-.05-3.2.2-4.74.42-2.33.33-5.6.42-6.5 1.15-.3.72.38 1.39.97 1.66.73.37 1.69.37 2.34.64-.05.25-.22.63-.31.85-.26.66-.39 1.51-.89 1.99 0 0-.53.17-.94.38-.29.15-.14.51-.18.77.06.21.1.43.18.59-.39 1.18-.99 2.18-1.38 3.28-.51 1.45-.22 3.31.71 4.46C92.65 36.11 93.74 36.29 95.25 36.13zM56.9 24.24c.04 1.02 1.22 1.51 1.95 1.78 3.13 1.09 6.54.18 9.74.81 1.34.35 3 1.09 2.78 1.92-.37 1.12-1.66 1.59-2.69 1.9-1.8.56-3.7 1.15-5.75 1.04-1.01-.09-2.45-.15-3.34-1.05-.19-.23-.26-.54-.12-.82.35-.71 1.09-.83 1.79-.88 1.57 0 4.27 2.25 6.69 1.11.55-.28 1.34-.45 1.51-1.11.07-.52-.73-.65-1.35-.78-2.56-.6-5.6-1.61-8.21-.47-.68.35-1.28.84-1.73 1.37-.34.4-.42.88-.31 1.45.43 2.12 2.59 3.36 4.34 3.89 3.56 1.03 7.9.95 10.64-1.67.75-.86 1.08-2.21 1.05-3.48-.28-1.8-1.31-3.66-3.22-4.23-3.46-.8-7.31-.55-10.75-1.41-.1-.06-.29-.2-.22-.33.74-.4 1.56-.62 2.37-.81 3-.46 6.1-.72 9.15-.94.83-.06 1.78-.12 2.51-.58.31-.41.71-.98.55-1.5-.53-.26-.86-.47-1.38-.61-1.9-.52-3.72-.63-5.63-.55-3 .13-5.98.67-8.56 2.18C57.43 21.23 57.04 22.78 56.9 24.24zM54.51 34.54c.24-3.6-.17-7.47-.28-11.12.08-.49-.11-.96-.1-1.49.06-1.52-.52-2.81-1.85-3.38-.51.09-.52.64-.64 1.03-.76 3.88-1.24 7.79-1.07 11.87.09 1.35.05 2.63.81 3.67.68.25 1.42.45 2.2.31C53.98 35.27 54.45 35.03 54.51 34.54zM109.34 37.73c.31-.76.85-1.74 1.14-2.2 2.04.09 3.87-.49 5.46-1.58 1.81-1.43 3.31-2.68 4.48-4.73 1.11-1.92 1.56-4.65.65-6.75-.44-1.08-.89-1.93-1.81-2.72-2.06-1.15-3.9.89-5.12 2.11-2.4 2.39-3.9 4.1-5.68 6.88-.07.15-.62.92-.68 1.04-.54-1.13-.09-2.4.23-3.33.65-1.66 1.51-3.29 2.32-4.95.31-.61.62-1.15.94-1.9.2-.4.29-.89.22-1.48-.05-.17-.25-.39-.41-.32-1.21.64-2 1.89-2.81 2.86-1.75 2.39-3.29 5.78-3.09 8.98.11 1.12.51 2.41 1.01 3.27-1.49 3.36-2.72 6.93-3.44 10.57-.27 1.61.13 3.37.85 4.68.41.55 1.2 1.51 2.37 1.4.27-.06.49-.29.51-.47l.55-3.41C107.33 44.02 108.74 39.19 109.34 37.73zM111.52 31.48c.67-1.05 1.16-1.65 1.72-2.44 1.7-2.39 3.28-4.35 4.96-6.44.12-.19.41-.09.49.05.3.55.48 1.22.52 1.92.04.69-.27 2.17-.84 3.04-1.2 1.84-3.99 3.73-5.5 3.92C111.36 31.72 111.52 31.48 111.52 31.48zM49.46 25.98c.25-1.86-.19-3.34-.64-4.86-1.08-2.53-2.51-4.84-4.32-6.78C40.08 9.55 34.35 5.94 28.25 3.56c-1.93-.8-3.98-1.38-5.99-2.01C15.84-.1 7.97-.95 1.78 1.68 1.03 2.23.3 3.51.02 4.68-.22 5.94 2 5.92 2.85 5.82c.53-.03 1.16-.13 1.51-.56C4.37 5 4.2 4.92 3.92 4.74c-.37-.23-.95-.4-1.09-.79.72-.6 1.64-.67 2.39-.74 3.49-.3 6.62.09 9.87.49 7.46 1.33 14.49 3.68 20.64 8.06 2.97 2.18 5.55 4.84 7.54 7.81.62 1.8 1.85 3.71 1.58 5.69-.13 2.38-1.36 4.21-3.32 5.57-2.87 2-6.29 3.05-9.92 3.41-2.76.01-4.43.21-7.92-.53l-.26-.1c.07-2.1.02-3.85.04-6.34.08-1.24-.04-3.18-.13-4.65.78.02 1.35-.02 2.41.09 2.34.23 4.58.64 6.78 1.17.68.15 2.29.36 2.3.89-.18 1.27-1.19 2-2.32 2.52l0 .22c.73.44 1.93.86 3.04.58 1.18-.41 2.07-1.44 2.58-2.75.42-1.65-.65-2.99-1.78-3.98-2.12-1.57-4.47-1.84-7.17-2.29-1.96-.29-3.8-.36-5.72-.28l-.23-.04c-.11-1.16-.22-2.49-.39-3.87 0 0-.31-2.25-.71-3.24-.32-.65-.86-1.56-1.51-1.33-.44.19-.46.7-.53 1.2-.28 1.85-.69 3.76-.72 5.66-.14.55-.14 1.43-.18 2.11 0 0-.3-.02-.82.07-3.84.63-7.87 1.41-10.6 4.3-.65.72-.61 1.93-.18 2.72 2.8 3.73 6.7 7 11.06 8.99.13 1.15.37 2.41.94 3.45.7 1.08 2.41.82 2.98.57.57-.37.97-1.33.99-2.28.89.36 7.77.86 11.38.39 3.21-.42 5.94-1.28 8.48-2.94C46.63 32.51 48.85 29.66 49.46 25.98zM19.05 24.06c-.16 2.95-.34 5.54-.32 8.26-.35-.02-1.01-.23-1.62-.44-3.14-1.13-6.07-3.11-8.3-5.72-.18-.27-.33-.75-.02-1.09 2.13-1.64 4.66-1.55 7.23-2.1.97.06 2.05-.23 3.01-.04C19.04 22.93 19.09 23.61 19.05 24.06z\\\" /><polygon fill=\\\"#27251F\\\" points=\\\"242.21,15.51 242.68,15.51 242.7,15.48 242.3,11.41 242.28,11.38 242.16,11.38 242.13,11.41 241.71,15.48 241.73,15.51\\\" /><polygon fill=\\\"#27251F\\\" points=\\\"244.5,15.77 244.53,15.74 245.22,12.09 245.19,12.07 245.07,12.05 245.05,12.07 243.53,15.53 243.56,15.55\\\" /><path fill=\\\"#27251F\\\" d=\\\"M243.79 17.33c.28 0 .54-.24.54-.57 0-.31-.26-.55-.54-.55-.31 0-.57.24-.57.55C243.22 17.09 243.49 17.33 243.79 17.33zM242.21 17.16c.28 0 .55-.24.55-.57 0-.31-.26-.55-.55-.55-.31 0-.57.24-.57.55C241.64 16.93 241.9 17.16 242.21 17.16z\\\" /><polygon fill=\\\"#27251F\\\" points=\\\"239.91,15.77 240.85,15.55 240.88,15.53 239.36,12.07 239.34,12.05 239.22,12.07 239.2,12.09 239.88,15.74\\\" /><path fill=\\\"#27251F\\\" d=\\\"M240.05 16.76c0 .33.26.57.57.57.28 0 .55-.24.55-.57 0-.31-.26-.55-.55-.55C240.31 16.22 240.05 16.45 240.05 16.76zM175.38 18.35h-4.83l-.02.02c0 0 .12 1.16.12 3.18v10.19c0 2.01-.12 3.18-.12 3.18l.02.02h3.18l.02-.02c0 0-.12-1.16-.12-3.18v-2.99l.02-.02c.43.05 1.4.09 1.73.09 3.27 0 6.07-1.99 6.07-5.36C181.44 20.2 178.62 18.35 175.38 18.35zM175.23 26.1c-.38 0-1.23-.05-1.61-.12v-4.91h1.85c1.64 0 2.94.66 2.94 2.39C178.41 25.15 177.27 26.1 175.23 26.1zM190.51 19.7c-.36-.83-.47-1.33-.47-1.33l-.02-.02h-2.58l-.02.02c0 0-.09.5-.45 1.33l-5.59 13.46c-.47 1.14-.95 1.75-.95 1.75v.02h3.27l.02-.02c0-.09.07-.5.47-1.49l1.02-2.54h7.2l1.09 2.54c.36.97.57 1.49.57 1.49l.02.02h3.27v-.02c0 0-.43-.62-.95-1.75L190.51 19.7zM186.32 28.16l2.35-5.85h.02l2.54 5.85H186.32zM213.73 18.37l-.02-.02h-2.89l-.02.02c0 0 .12 1.16.12 3.18v8.34h-.02l-8.96-11.54h-3.18l-.02.02c.36.76.55 1.28.55 1.64v11.73c0 2.01-.12 3.18-.12 3.18l.02.02h2.89l.02-.02c0 0-.12-1.16-.12-3.18v-8.51H202l9.01 11.71h2.7l.02-.02c0 0-.12-1.16-.12-3.18V21.55C213.61 19.53 213.73 18.37 213.73 18.37zM222.74 18.35h-5.55l-.02.02c0 0 .12 1.16.12 3.18v10.19c0 2.01-.12 3.18-.12 3.18l.02.02h1.71c1.12 0 2.37.14 3.79.14 5.1 0 8.7-3.6 8.7-8.41C231.39 21.81 227.86 18.35 222.74 18.35zM222.55 32.36c-.81 0-1.54-.02-1.97-.14-.26-.07-.31-.17-.31-.62V21.05h2.2c3.58 0 5.88 2.42 5.88 5.64C228.36 29.89 226.06 32.36 222.55 32.36zM242.21 18.11c-4.79 0-8.51 3.7-8.51 8.51 0 4.83 3.72 8.51 8.51 8.51 4.83 0 8.51-3.67 8.51-8.51C250.71 21.81 247.04 18.11 242.21 18.11zM242.21 32.4c-3.08 0-5.47-2.51-5.47-5.78 0-3.27 2.39-5.78 5.47-5.78 3.1 0 5.5 2.51 5.5 5.78C247.7 29.89 245.31 32.4 242.21 32.4zM262.54 29.3c-.4-.66-1.02-1.18-1.64-1.35v-.02c1.73-.38 3.34-2.39 3.34-4.41 0-2.75-2.11-5.17-5.36-5.17h-5.31l-.02.02c0 0 .12 1.16.12 3.18v10.19c0 2.01-.12 3.18-.12 3.18l.02.02h3.18l.02-.02c0 0-.12-1.16-.12-3.18v-3.18c1.59 0 2.2.31 2.77 1.21l1.35 2.18c1.11 1.8 1.59 2.96 1.59 2.96l.02.02h3.79v-.02c0 0-.95-1.16-2.04-2.96L262.54 29.3zM258.16 25.93c-.38 0-1.04 0-1.49-.09v-4.79h1.82c1.78 0 2.73 1.16 2.73 2.49C261.21 24.8 260.24 25.93 258.16 25.93zM283.82 33.16l-5.9-13.46c-.36-.83-.47-1.33-.47-1.33l-.02-.02h-2.58l-.02.02c0 0-.09.5-.45 1.33l-5.59 13.46c-.47 1.14-.95 1.75-.95 1.75v.02h3.27l.02-.02c0-.09.07-.5.47-1.49l1.02-2.54h7.2l1.09 2.54c.36.97.57 1.49.57 1.49l.02.02h3.27v-.02C284.77 34.91 284.34 34.3 283.82 33.16zM273.73 28.16l2.35-5.85h.02l2.54 5.85H273.73z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"warranty-primary\",\n  \"use\": \"warranty-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 20 20\\\" id=\\\"warranty-primary\\\">\\n    <path fill=\\\"currentColor\\\" d=\\\"m10 1.456 2.136.915-.394.92L10 2.544 3.543 5.311l.464 3.711a9.5 9.5 0 0 0 3.344 6.12L10 17.35l2.648-2.207a9.5 9.5 0 0 0 3.345-6.12l.464-3.71-1.91-.819-4.836 8.32-2.565-2.565.708-.707L9.5 11.187l4.387-7.547.005-.011.24-.402 3.41 1.462-.557 4.457a10.5 10.5 0 0 1-3.696 6.764l-3.29 2.74-3.288-2.74a10.5 10.5 0 0 1-3.697-6.764L2.457 4.69 10 1.456Z\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"info\",\n  \"use\": \"info-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"info\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2 12C2 6.47715 6.47715 2 12 2C14.6522 2 17.1957 3.05357 19.0711 4.92893C20.9464 6.8043 22 9.34784 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM4 12C4 16.4183 7.58172 20 12 20C14.1217 20 16.1566 19.1571 17.6569 17.6569C19.1571 16.1566 20 14.1217 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12ZM13 12.5C13 12.2239 12.7761 12 12.5 12H11.5C11.2239 12 11 12.2239 11 12.5V15.5C11 15.7761 11.2239 16 11.5 16H12.5C12.7761 16 13 15.7761 13 15.5V12.5ZM12.5 8C12.7761 8 13 8.22386 13 8.5V9.5C13 9.77614 12.7761 10 12.5 10H11.5C11.2239 10 11 9.77614 11 9.5V8.5C11 8.22386 11.2239 8 11.5 8H12.5Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_diamonds_black\",\n  \"use\": \"pandora_diamonds_black-usage\",\n  \"viewBox\": \"0 0 283.46 82.45\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 283.46 82.45\\\" id=\\\"pandora_diamonds_black\\\"><defs></defs><g id=\\\"pandora_diamonds_black_Layer_1-2\\\" data-name=\\\"Layer 1\\\"><polygon points=\\\"177.86 10.23 179.04 10.23 179.1 10.17 178.1 .06 178.04 0 177.74 0 177.68 .06 176.63 10.17 176.68 10.23 177.86 10.23\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"183.56 10.88 183.62 10.82 185.33 1.76 185.27 1.71 184.98 1.65 184.92 1.71 181.15 10.29 181.21 10.35 183.56 10.88\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M181.8 14.76c.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35 0 .82.65 1.41 1.41 1.41ZM177.86 14.35c.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35 0 .82.65 1.41 1.41 1.41Z\\\" style=\\\"fill:#27251F\\\" /><polygon points=\\\"172.16 10.88 174.51 10.35 174.57 10.29 170.81 1.71 170.75 1.65 170.45 1.71 170.39 1.76 172.1 10.82 172.16 10.88\\\" style=\\\"fill:#27251F\\\" /><path d=\\\"M172.51 13.35c0 .82.65 1.41 1.41 1.41.71 0 1.35-.59 1.35-1.41 0-.76-.65-1.35-1.35-1.35-.76 0-1.41.59-1.41 1.35ZM12.05 17.29H.06l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h7.88l.06-.06s-.29-2.88-.29-7.88v-7.41l.06-.06c1.06.12 3.47.24 4.29.24 8.11 0 15.05-4.94 15.05-13.29s-7-12.7-15.05-12.7Zm-.35 19.23c-.94 0-3.06-.12-4-.29v-12.17h4.59c4.06 0 7.29 1.65 7.29 5.94s-2.82 6.53-7.88 6.53ZM49.61 20.64c-.88-2.06-1.18-3.29-1.18-3.29l-.06-.06h-6.41l-.06.06s-.24 1.23-1.12 3.29l-13.88 33.4c-1.18 2.82-2.35 4.35-2.35 4.35v.06h8.11l.06-.06c0-.24.18-1.23 1.18-3.7l2.53-6.29h17.87l2.7 6.29c.88 2.41 1.41 3.7 1.41 3.7l.06.06h8.11v-.06s-1.06-1.53-2.35-4.35l-14.64-33.4Zm-10.41 20.99 5.82-14.52h.06l6.29 14.52h-12.17ZM107.22 17.35l-.06-.06h-7.17l-.06.06s.29 2.88.29 7.88v20.7h-.06l-22.23-28.63h-7.88l-.06.06c.88 1.88 1.35 3.18 1.35 4.06v29.11c0 5-.29 7.88-.29 7.88l.06.06h7.17l.06-.06s-.29-2.88-.29-7.88v-21.11h.06l22.34 29.05h6.7l.06-.06s-.29-2.88-.29-7.88v-25.28c0-5 .29-7.88.29-7.88ZM129.56 17.29h-13.76l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h4.23c2.78 0 5.88.35 9.41.35 12.64 0 21.58-8.94 21.58-20.87s-8.76-20.64-21.46-20.64Zm-.47 34.75c-2 0-3.82-.06-4.88-.35-.65-.18-.76-.41-.76-1.53v-26.17h5.47c8.88 0 14.58 6 14.58 13.99s-5.7 14.05-14.41 14.05ZM177.86 16.7c-11.88 0-21.11 9.17-21.11 21.11s9.23 21.11 21.11 21.11 21.11-9.11 21.11-21.11-9.11-21.11-21.11-21.11Zm0 35.46c-7.64 0-13.58-6.23-13.58-14.35s5.94-14.35 13.58-14.35 13.64 6.23 13.64 14.35-5.94 14.35-13.64 14.35ZM228.31 44.45c-1-1.65-2.53-2.94-4.06-3.35v-.06c4.29-.94 8.29-5.94 8.29-10.94 0-6.82-5.23-12.82-13.29-12.82h-13.17l-.06.06s.29 2.88.29 7.88v25.28c0 5-.29 7.88-.29 7.88l.06.06h7.88l.06-.06s-.29-2.88-.29-7.88v-7.88c3.94 0 5.47.76 6.88 3l3.35 5.41c2.76 4.47 3.94 7.35 3.94 7.35l.06.06h9.41v-.06s-2.35-2.88-5.06-7.35l-4-6.59Zm-10.88-8.35c-.94 0-2.59 0-3.7-.24v-11.88h4.53c4.41 0 6.76 2.88 6.76 6.17 0 3.12-2.41 5.94-7.59 5.94ZM281.11 54.04l-14.64-33.4c-.88-2.06-1.18-3.29-1.18-3.29l-.06-.06h-6.41l-.06.06s-.24 1.23-1.12 3.29l-13.88 33.4c-1.18 2.82-2.35 4.35-2.35 4.35v.06h8.11l.06-.06c0-.24.18-1.23 1.18-3.7l2.53-6.29h17.87l2.7 6.29c.88 2.41 1.41 3.7 1.41 3.7l.06.06h8.11v-.06s-1.06-1.53-2.35-4.35Zm-25.05-12.41 5.82-14.52h.06l6.29 14.52h-12.17ZM26.12 71.05h2.46v8.98h5.58v2.22h-8.05v-11.2ZM41.46 70.97h2.27l4.8 11.28h-2.58l-1.02-2.51h-4.74l-1.02 2.51h-2.51l4.8-11.28Zm2.59 6.59-1.49-3.63-1.49 3.63h2.98ZM51.54 71.05h5.19c1.29 0 2.26.33 2.92.99.51.51.77 1.15.77 1.9v.03c0 .32-.04.6-.12.85s-.19.47-.32.66c-.13.2-.29.37-.46.52-.17.15-.36.28-.56.38.65.25 1.16.58 1.53 1 .37.42.56 1.01.56 1.75v.03c0 .51-.1.96-.29 1.34-.2.38-.48.7-.85.96-.37.26-.81.45-1.33.58s-1.09.19-1.72.19h-5.32v-11.2Zm4.67 4.53c.54 0 .98-.09 1.3-.28.32-.19.48-.49.48-.9v-.03c0-.37-.14-.66-.42-.86s-.68-.3-1.2-.3h-2.43v2.37h2.27Zm.66 4.51c.54 0 .97-.1 1.28-.3.31-.2.46-.5.46-.92v-.03c0-.37-.14-.67-.43-.89s-.75-.33-1.39-.33h-2.85v2.46h2.93ZM64.15 76.13h4.93v2.34h-4.93v-2.34ZM78.21 82.45c-.87 0-1.67-.14-2.39-.43s-1.34-.69-1.86-1.2c-.52-.51-.92-1.12-1.21-1.82-.29-.7-.43-1.47-.43-2.3v-.03c0-.8.15-1.55.44-2.25.29-.7.7-1.31 1.22-1.84.52-.53 1.14-.94 1.86-1.25.71-.3 1.5-.46 2.35-.46.5 0 .96.03 1.37.1.41.07.79.17 1.14.3.35.13.68.29.99.48.31.19.61.41.9.66l-1.55 1.87c-.21-.18-.43-.34-.64-.48-.21-.14-.43-.26-.66-.35-.23-.1-.48-.17-.74-.22-.27-.05-.56-.08-.88-.08-.45 0-.87.09-1.26.28-.39.19-.73.44-1.02.75-.29.32-.52.68-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .51.08.99.25 1.42.17.43.4.81.7 1.13.3.32.66.57 1.07.75.41.18.87.26 1.37.26.92 0 1.69-.23 2.32-.68v-1.61h-2.48v-2.13h4.86v4.86c-.58.49-1.26.91-2.06 1.26-.79.35-1.7.52-2.73.52ZM86.97 71.05h5.12c1.42 0 2.51.38 3.26 1.14.64.64.96 1.49.96 2.56v.03c0 .91-.22 1.65-.66 2.22-.44.57-1.02.99-1.74 1.26l2.74 4h-2.88l-2.4-3.58h-1.94v3.58h-2.46v-11.2Zm4.96 5.44c.61 0 1.07-.14 1.4-.43s.49-.67.49-1.15v-.03c0-.53-.17-.93-.51-1.2-.34-.27-.82-.4-1.42-.4h-2.45v3.22h2.5ZM105.57 82.45c-.86 0-1.66-.15-2.38-.46-.73-.3-1.35-.71-1.88-1.23-.53-.52-.94-1.12-1.23-1.82-.29-.7-.44-1.45-.44-2.25v-.03c0-.8.15-1.55.45-2.25.3-.7.71-1.31 1.24-1.84.53-.53 1.16-.94 1.89-1.25.73-.3 1.53-.46 2.39-.46s1.66.15 2.38.46c.73.3 1.35.71 1.88 1.23s.94 1.13 1.23 1.82c.29.7.44 1.45.44 2.25v.03c0 .8-.15 1.55-.45 2.25-.3.7-.71 1.31-1.24 1.84-.53.53-1.16.94-1.89 1.25-.73.3-1.53.46-2.39.46Zm.03-2.27c.49 0 .94-.09 1.36-.27.42-.18.77-.43 1.06-.75.29-.32.52-.69.69-1.11.17-.42.25-.87.25-1.35v-.03c0-.48-.08-.93-.25-1.36-.17-.43-.4-.8-.7-1.12-.3-.32-.66-.57-1.08-.76s-.87-.28-1.36-.28-.96.09-1.37.27c-.41.18-.76.43-1.06.75-.29.32-.52.69-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .48.08.93.25 1.36.17.43.4.8.7 1.12.3.32.66.57 1.07.76.41.19.87.28 1.37.28ZM113.83 71.05h2.64l2.32 7.58 2.51-7.62h2.11l2.51 7.62 2.32-7.58h2.58l-3.82 11.28h-2.14l-2.53-7.33-2.53 7.33h-2.14l-3.82-11.28ZM134.25 71.05h2.27l5.25 6.9v-6.9h2.43v11.2h-2.1l-5.42-7.12v7.12h-2.43v-11.2ZM154.88 71.05h4.37c.87 0 1.68.14 2.41.42.73.28 1.36.67 1.89 1.18.53.5.94 1.09 1.22 1.77.29.68.43 1.41.43 2.2v.03c0 .79-.14 1.53-.43 2.21s-.7 1.27-1.22 1.78c-.53.5-1.16.9-1.89 1.18-.73.29-1.53.43-2.41.43h-4.37v-11.2Zm4.37 8.98c.5 0 .96-.08 1.38-.24s.77-.39 1.06-.69c.29-.3.52-.65.69-1.06.17-.41.25-.86.25-1.36v-.03c0-.49-.08-.94-.25-1.36-.17-.42-.39-.77-.69-1.07-.29-.3-.65-.53-1.06-.7-.42-.17-.88-.25-1.38-.25h-1.9v6.75h1.9ZM169.11 71.05h2.46v11.2h-2.46v-11.2ZM179.81 70.97h2.27l4.8 11.28h-2.58l-1.02-2.51h-4.74l-1.02 2.51h-2.51l4.8-11.28Zm2.59 6.59-1.49-3.63-1.49 3.63h2.98ZM190.21 71.05h2.66l2.94 4.74 2.94-4.74h2.66v11.2h-2.43v-7.31l-3.15 4.78h-.06l-3.12-4.74v7.26h-2.43v-11.2ZM210.82 82.45c-.86 0-1.66-.15-2.38-.46-.73-.3-1.35-.71-1.88-1.23-.53-.52-.94-1.12-1.23-1.82-.29-.7-.44-1.45-.44-2.25v-.03c0-.8.15-1.55.45-2.25.3-.7.71-1.31 1.24-1.84.53-.53 1.16-.94 1.89-1.25.73-.3 1.53-.46 2.39-.46s1.66.15 2.38.46c.73.3 1.35.71 1.88 1.23s.94 1.13 1.23 1.82c.29.7.44 1.45.44 2.25v.03c0 .8-.15 1.55-.45 2.25-.3.7-.71 1.31-1.24 1.84-.53.53-1.16.94-1.89 1.25-.73.3-1.53.46-2.39.46Zm.03-2.27c.49 0 .94-.09 1.36-.27.42-.18.77-.43 1.06-.75.29-.32.52-.69.69-1.11.17-.42.25-.87.25-1.35v-.03c0-.48-.08-.93-.25-1.36-.17-.43-.4-.8-.7-1.12-.3-.32-.66-.57-1.08-.76s-.87-.28-1.36-.28-.96.09-1.37.27c-.41.18-.76.43-1.06.75-.29.32-.52.69-.69 1.11-.17.42-.25.87-.25 1.35v.03c0 .48.08.93.25 1.36.17.43.4.8.7 1.12.3.32.66.57 1.07.76.41.19.87.28 1.37.28ZM219.94 71.05h2.27l5.25 6.9v-6.9h2.43v11.2h-2.1l-5.42-7.12v7.12h-2.43v-11.2ZM234.18 71.05h4.37c.88 0 1.68.14 2.41.42.73.28 1.36.67 1.89 1.18.53.5.94 1.09 1.22 1.77.29.68.43 1.41.43 2.2v.03c0 .79-.14 1.53-.43 2.21s-.7 1.27-1.22 1.78c-.53.5-1.16.9-1.89 1.18s-1.53.43-2.41.43h-4.37v-11.2Zm4.37 8.98c.5 0 .96-.08 1.38-.24s.77-.39 1.06-.69c.29-.3.52-.65.69-1.06.17-.41.25-.86.25-1.36v-.03c0-.49-.08-.94-.25-1.36-.17-.42-.39-.77-.69-1.07-.29-.3-.65-.53-1.06-.7-.42-.17-.87-.25-1.38-.25h-1.9v6.75h1.9ZM252.29 82.41c-.85 0-1.69-.15-2.51-.44-.82-.29-1.57-.74-2.24-1.35l1.46-1.74c.51.42 1.04.75 1.58.99.54.25 1.13.37 1.77.37.51 0 .91-.09 1.19-.28.28-.19.42-.45.42-.78v-.03c0-.16-.03-.3-.09-.42-.06-.12-.17-.24-.34-.34-.17-.11-.4-.21-.69-.32-.29-.11-.68-.22-1.15-.34-.57-.14-1.08-.29-1.54-.46-.46-.17-.85-.38-1.17-.63-.32-.25-.57-.56-.75-.94-.18-.37-.26-.84-.26-1.39v-.03c0-.51.1-.97.29-1.38.19-.41.46-.76.8-1.06s.76-.53 1.23-.69c.48-.16 1-.24 1.58-.24.82 0 1.58.12 2.26.37.69.25 1.32.6 1.9 1.06l-1.28 1.86c-.5-.34-.99-.61-1.47-.81-.48-.2-.96-.3-1.44-.3s-.84.09-1.08.28c-.24.19-.36.42-.36.7v.03c0 .18.03.34.1.47.07.13.2.25.38.36.18.11.43.21.75.3s.71.21 1.2.34c.57.15 1.07.32 1.52.5.44.19.82.41 1.12.67.3.26.54.57.69.92.16.35.23.77.23 1.26v.03c0 .55-.1 1.05-.3 1.48s-.48.79-.84 1.09c-.36.29-.79.52-1.29.67-.5.15-1.05.23-1.66.23Z\\\" style=\\\"fill:#27251F\\\" /></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import PropTypes from 'prop-types'\n\nexport const IMAGE_TYPE = 'image'\nexport const VIDEO_TYPE = 'video'\n\nexport const NO_ASPECT_RATIO = 'none'\n\nexport const StylePropType = PropTypes.oneOfType([\n    PropTypes.object,\n    PropTypes.string,\n    PropTypes.number\n])\n\nexport const CopyrightType = PropTypes.shape({\n    color: PropTypes.string,\n    text: PropTypes.string\n})\n\nexport const AmplienceAssetType = PropTypes.shape({\n    id: PropTypes.string,\n    name: PropTypes.string,\n    endpoint: PropTypes.string,\n    defaultHost: PropTypes.string,\n    mimeType: PropTypes.string\n})\n\nexport const AprimoAssetType = PropTypes.shape({\n    aprimoData: PropTypes.shape({\n        id: PropTypes.string,\n        fileName: PropTypes.string,\n        mimeType: PropTypes.string,\n        cdnUrl: PropTypes.string\n    })\n})\n\nexport const AprimoVideoType = PropTypes.shape({\n    aprimoData: PropTypes.shape({\n        id: PropTypes.string,\n        fileName: PropTypes.string,\n        mimeType: PropTypes.string,\n        cdnUrl: PropTypes.string,\n        cdnMobileUrl: PropTypes.string,\n        cdnDesktopUrl: PropTypes.string,\n        thumbnail: PropTypes.string\n    })\n})\n\nexport const VideoType = AmplienceAssetType\n\nexport const diImageType = PropTypes.shape({\n    diImage: PropTypes.shape({\n        query: PropTypes.string,\n        image: AmplienceAssetType\n    })\n})\n\nexport const ContentMediaType = PropTypes.shape({\n    mediaType: PropTypes.oneOf([IMAGE_TYPE, VIDEO_TYPE]),\n    img: diImageType,\n    video: VideoType,\n    imageAltText: PropTypes.string,\n    copyright: CopyrightType\n})\n\nexport const ChildrenType = PropTypes.node\n\nexport const ContentMetaType = PropTypes.shape({\n    deliveryId: PropTypes.string,\n    name: PropTypes.string,\n    schema: PropTypes.string\n})\n\nexport const LinkType = PropTypes.shape({\n    url: PropTypes.string,\n    text: PropTypes.string,\n    type: PropTypes.oneOf(['url', 'home', 'product', 'category', 'search', 'class']),\n    target: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n    _meta: PropTypes.shape({\n        deliveryId: PropTypes.string,\n        name: PropTypes.string,\n        schema: PropTypes.string\n    })\n})\n\nexport const ImageType = PropTypes.shape({\n    copyright: CopyrightType,\n    img: diImageType,\n    imageAltText: PropTypes.string\n})\n\nexport const ImageCarouselType = PropTypes.shape({\n    description: PropTypes.string,\n    image: ImageType,\n    subHeading: PropTypes.string\n})\n","export const isQueryEnabled = ({enabled}) => {\n    if (enabled === undefined) {\n        return true\n    }\n    return enabled\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cc-visa\",\n  \"use\": \"cc-visa-usage\",\n  \"viewBox\": \"0 0 38 22\",\n  \"content\": \"<symbol viewBox=\\\"0 0 38 22\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cc-visa\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" fill=\\\"white\\\" />\\n<path d=\\\"M19.4788 9.37725C19.4629 10.6309 20.5961 11.3306 21.4497 11.7465C22.3268 12.1733 22.6214 12.447 22.618 12.8286C22.6113 13.4128 21.9184 13.6705 21.2698 13.6806C20.1383 13.6982 19.4805 13.3751 18.9574 13.1307L18.5499 15.038C19.0746 15.2799 20.0463 15.4908 21.0539 15.5C23.4189 15.5 24.9664 14.3325 24.9747 12.5223C24.9839 10.225 21.797 10.0978 21.8188 9.07095C21.8263 8.75962 22.1234 8.42738 22.7745 8.34285C23.0967 8.30017 23.9864 8.26753 24.9948 8.73201L25.3907 6.88665C24.8484 6.68914 24.1512 6.5 23.2834 6.5C21.0572 6.5 19.4914 7.68337 19.4788 9.37725ZM29.1944 6.65901C28.7625 6.65901 28.3985 6.91092 28.2361 7.29756L24.8576 15.3644H27.221L27.6913 14.0647H30.5794L30.8523 15.3644H32.9353L31.1176 6.65901H29.1944ZM29.525 9.01069L30.207 12.2796H28.3391L29.525 9.01069ZM16.6133 6.65901L14.7504 15.3644H17.0025L18.8646 6.65901H16.6133ZM13.2816 6.65901L10.9375 12.5842L9.98925 7.54612C9.87794 6.98373 9.43857 6.65901 8.95066 6.65901H5.1185L5.06494 6.91175C5.85163 7.08248 6.74543 7.35782 7.28691 7.65241C7.61832 7.83234 7.71289 7.98968 7.82168 8.41733L9.61767 15.3644H11.9978L15.6467 6.65901H13.2816Z\\\" fill=\\\"url(#cc-visa_paint0_linear)\\\" />\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" stroke=\\\"#DDDDDD\\\" />\\n<defs>\\n<linearGradient id=\\\"cc-visa_paint0_linear\\\" x1=\\\"17.8781\\\" y1=\\\"15.6806\\\" x2=\\\"18.1386\\\" y2=\\\"6.43741\\\" gradientUnits=\\\"userSpaceOnUse\\\">\\n<stop stop-color=\\\"#222357\\\" />\\n<stop offset=\\\"1\\\" stop-color=\\\"#254AA5\\\" />\\n</linearGradient>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"close\",\n  \"use\": \"close-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"close\\\">\\n    <g clip-path=\\\"url(#close_clip0_8080_395861)\\\">\\n        <line x1=\\\"0.454139\\\" y1=\\\"0.454064\\\" x2=\\\"19.546\\\" y2=\\\"19.5459\\\" stroke=\\\"currentColor\\\" />\\n        <line x1=\\\"19.5459\\\" y1=\\\"0.454139\\\" x2=\\\"0.454052\\\" y2=\\\"19.546\\\" stroke=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"close_clip0_8080_395861\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"currentColor\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"loyalty-pictogram\",\n  \"use\": \"loyalty-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 64 64\\\" id=\\\"loyalty-pictogram\\\">\\n    <path stroke=\\\"currentColor\\\" d=\\\"M29.04 43.945c-4.55-2.294-11.669-7.917-10.703-14.781.526-3.731 3.547-7.086 7.272-7.395 2.17-.18 4.56.603 6.4 3.468m0 0c.577.9 1.1 2.005 1.545 3.35 2.444 7.394-6.77 6.257-3.95 0 .52-.996 1.347-2.214 2.404-3.35Zm0 0c1.334-1.434 3.036-2.737 4.953-3.299 4.601-1.347 9.004 3.542 8.601 8.356-.366 4.375-3.205 9.998-11.445 15.357-3.501 2.14-7.9 4.581-12.387 5.077-7.304.807-12.877-6.423-14.27-13.696C3.374 15.714 27.343.282 45.401 12.091c22.568 14.758 6.206 51.763-22.004 43.8\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// React and PropTypes\nimport React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n// External libraries\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Internal components\nimport {VideoPlayer} from '../../video-player'\nimport {ImageCard} from '../../image-card'\nimport {MediaError, MISSING_IMAGE, MISSING_MEDIA, MISSING_VIDEO} from '../../media-error'\n\n// Utilities\nimport {getImageUrl, parseAspectRatio} from 'pandora-shared-app/overrides/app/utils/media'\n\n// Types\nimport {IMAGE_TYPE, NO_ASPECT_RATIO, VIDEO_TYPE} from 'pandora-shared-app/overrides/app/utils/types'\n\n/**\n * MediaContent component - handles rendering of a single media item (image or video)\n * Extracts and transforms media data, then renders the appropriate component\n */\nexport const MediaContent = ({\n    mediaInput,\n    mediaConfig,\n    isActive,\n    isLazyLoad,\n    isFirstPanel,\n    hasFirstPanelAnimatedOnce,\n    isFMT,\n    componentIndex,\n    setStoryRef,\n    isIntersecting\n}) => {\n    const {container} = useMultiStyleConfig('Media')\n\n    // Extract and normalize media data from input\n    const extractedData = useMemo(() => {\n        if (!mediaInput) return null\n\n        const {video, copyright, img, imageAltText, mediaType: inputMediaType, isVideo} = mediaInput\n\n        // Handle Next Gen Authoring format where isVideo flag determines type\n        let mediaType = inputMediaType\n        if (isVideo !== undefined) {\n            mediaType = isVideo ? VIDEO_TYPE : IMAGE_TYPE\n        }\n\n        return {\n            video,\n            copyright,\n            img,\n            imageAltText,\n            mediaType,\n            isVideo: mediaType === VIDEO_TYPE\n        }\n    }, [mediaInput])\n\n    // Convert aspect ratio from string (e.g., \"16:9\") to number or keep as NO_ASPECT_RATIO\n    const aspectRatio = useMemo(() => {\n        if (!mediaConfig?.aspectRatio) {\n            return NO_ASPECT_RATIO\n        }\n        if (mediaConfig.aspectRatio !== NO_ASPECT_RATIO) {\n            return parseAspectRatio(mediaConfig.aspectRatio)\n        }\n        return NO_ASPECT_RATIO\n    }, [mediaConfig?.aspectRatio])\n\n    // Transform extracted data into format expected by VideoPlayer or ImageCard\n    const mediaData = useMemo(() => {\n        if (!extractedData) return null\n\n        const {mediaType, video, copyright, img, imageAltText} = extractedData\n\n        if (mediaType === VIDEO_TYPE) {\n            if (!video) return null\n\n            // Aprimo path — extract aprimoData fields to top level for VideoPlayer.\n            const aprimoData = video?.aprimoData\n            if (aprimoData?.cdnUrl) {\n                return {\n                    id: aprimoData.id,\n                    cdnUrl: aprimoData.cdnUrl,\n                    thumbnail: aprimoData.thumbnail,\n                    ...(aprimoData.cdnMobileUrl && {cdnMobileUrl: aprimoData.cdnMobileUrl}),\n                    ...(aprimoData.cdnDesktopUrl && {cdnDesktopUrl: aprimoData.cdnDesktopUrl}),\n                    ...(copyright && {copyright})\n                }\n            }\n\n            // Amplience path — spread video fields directly.\n            return {\n                ...video,\n                ...(copyright && {copyright})\n            }\n        }\n        if (mediaType === IMAGE_TYPE) {\n            if (!img) return null\n\n            // Aprimo path — cdnUrl is the fully-qualified asset URL.\n            const aprimoData = img?.aprimoData\n            if (aprimoData?.cdnUrl) {\n                return {\n                    id: aprimoData.id,\n                    cdnUrl: aprimoData.cdnUrl,\n                    ...(copyright && {copyright}),\n                    alt: imageAltText\n                }\n            }\n\n            // Amplience (legacy) path.\n            return {\n                ...img?.diImage?.image,\n                pointOfInterest: img?.diImage?.query,\n                ...(copyright && {copyright}),\n                alt: imageAltText\n            }\n        }\n        return null\n    }, [extractedData])\n\n    // Generate image URL with aspect ratio if configured\n    const imageSrc = useMemo(() => {\n        if (!extractedData || !mediaData) return null\n\n        const {mediaType} = extractedData\n\n        if (mediaType === IMAGE_TYPE && mediaData) {\n            const image = mediaData.cdnUrl\n                ? {cdnUrl: mediaData.cdnUrl, qWidth: mediaConfig?.qWidth}\n                : {\n                      defaultHost: mediaData?.defaultHost,\n                      endpoint: mediaData?.endpoint,\n                      name: mediaData?.name,\n                      pointOfInterest: mediaData?.pointOfInterest\n                  }\n\n            if (mediaConfig?.aspectRatio && mediaConfig.aspectRatio !== NO_ASPECT_RATIO) {\n                image.aspectRatio = mediaConfig.aspectRatio\n            }\n\n            return getImageUrl(image)\n        }\n\n        return null\n    }, [extractedData, mediaData, mediaConfig])\n\n    // Early returns for invalid states\n    if (!mediaInput || !extractedData) return null\n\n    const {mediaType, isVideo} = extractedData\n\n    if (!mediaType) return <MediaError message={MISSING_MEDIA} />\n\n    // Determine if video should be active (controlled by isActive prop or intersection observer)\n    const isVideoActive = isActive ?? (isServer ? true : isIntersecting)\n\n    return (\n        <Box ref={setStoryRef} sx={container}>\n            {mediaType === VIDEO_TYPE &&\n                (mediaData?.id || mediaData?.cdnUrl ? (\n                    <VideoPlayer\n                        video={mediaData}\n                        active={isVideoActive}\n                        controlWrapperPosition={mediaConfig?.controlWrapperPosition}\n                        copyrightTextPosition={mediaConfig?.copyrightTextPosition}\n                        aspectRatio={aspectRatio}\n                        dataAuto={`${mediaConfig?.dataAuto || 'contentMedia'}Video`}\n                        mediaCss={mediaConfig?.mediaCss}\n                        isLazyLoad={isLazyLoad ?? !isFirstPanel}\n                        isFirstPanel={isFirstPanel && !isVideo}\n                        hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                        isFMT={isFMT}\n                        dataCsOverrideId={isFMT ? `home_banner_buttons${componentIndex}` : ''}\n                    />\n                ) : (\n                    <MediaError message={MISSING_VIDEO} aspectRatio={aspectRatio} />\n                ))}\n\n            {mediaType === IMAGE_TYPE &&\n                (imageSrc && (mediaData?.id || mediaData?.cdnUrl) ? (\n                    <ImageCard\n                        src={imageSrc}\n                        alt={mediaData?.alt || ''}\n                        dataAuto={mediaConfig?.dataAuto ?? 'contentMedia'}\n                        aspectRatio={aspectRatio}\n                        copyright={mediaData?.copyright}\n                        lazyLoadHeight=\"full\"\n                        lazyLoadOffset={100}\n                        qWidth={mediaConfig?.qWidth}\n                        isLazyLoad={isLazyLoad ?? !(isFirstPanel || isFMT)}\n                        isFirstPanel={isFirstPanel}\n                        shouldPreload={isFirstPanel && !isVideo}\n                        fetchpriority={isFirstPanel || isFMT ? 'high' : undefined}\n                        loading={isFirstPanel || isFMT ? 'eager' : 'lazy'}\n                    />\n                ) : (\n                    <MediaError message={MISSING_IMAGE} aspectRatio={mediaConfig.aspectRatio} />\n                ))}\n        </Box>\n    )\n}\n\nMediaContent.propTypes = {\n    mediaInput: PropTypes.object,\n    mediaConfig: PropTypes.object,\n    isActive: PropTypes.bool,\n    isLazyLoad: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    hasFirstPanelAnimatedOnce: PropTypes.bool,\n    isFMT: PropTypes.bool,\n    componentIndex: PropTypes.number,\n    setStoryRef: PropTypes.func,\n    isIntersecting: PropTypes.bool\n}\n\nMediaContent.displayName = 'MediaContent'\n","// React and PropTypes\nimport React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\n// External libraries\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Internal components\nimport {MediaContent} from './partials/media-content'\n\n// Utilities\nimport {getMobileMediaData, getDesktopMediaData} from './utils'\n\n// Types\nimport {ContentMediaType} from 'pandora-shared-app/overrides/app/utils/types'\n\n// Hooks\nimport {useIntersectionObserver} from '../../hooks'\nimport {useVariant} from '../../hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\n\n// Constants\nconst showOnlyOnMobile = {base: 'block', xl: 'none'}\nconst showOnlyOnDesktop = {base: 'none', xl: 'block'}\nconst fullScreenStyle = {position: 'absolute', height: '100%', width: '100%'}\n\nexport const Media = (props) => {\n    const {\n        media,\n        mediaConfig,\n        isActive,\n        isLazyLoad,\n        isFirstPanel = false,\n        hasFirstPanelAnimatedOnce,\n        isFMT,\n        componentIndex,\n        intersectionThreshold = 0.5,\n        ...rest\n    } = props\n\n    const {container} = useMultiStyleConfig('Media')\n    const [setStoryRef, isIntersecting] = useIntersectionObserver({\n        threshold: intersectionThreshold\n    })\n\n    // Determine if media has responsive variants (mobile/desktop)\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    // \"Responsive\" means genuinely device-specific variants — separate desktop\n    // and mobile assets. The singular fields (Amplience `img`/`video` and their\n    // Aprimo counterparts `aprimoImg`/`aprimoVideo`) are the SAME asset across\n    // breakpoints and must use the non-responsive path below, which sizes itself\n    // from the media's aspect ratio. Routing them through the responsive path\n    // (absolute-positioned, full-height) collapses aspect-ratio driven layouts\n    // like Stories to zero height (revealing the module's placeholder colour).\n    const hasResponsiveMedia = !!(\n        media?.desktopImg ||\n        media?.mobileImg ||\n        media?.desktopVideo ||\n        media?.mobileVideo ||\n        media?.aprimoDesktopImg?.aprimoData?.cdnUrl ||\n        media?.aprimoMobileImg?.aprimoData?.cdnUrl ||\n        media?.aprimoDesktopVideo?.aprimoData?.cdnUrl ||\n        media?.aprimoMobileVideo?.aprimoData?.cdnUrl\n    )\n\n    // Pre-compute mobile and desktop media data for responsive media\n    const mobileMediaData = useMemo(() => {\n        if (hasResponsiveMedia) {\n            return getMobileMediaData(media, {aprimoPrimary})\n        }\n        return null\n    }, [hasResponsiveMedia, media, aprimoPrimary])\n\n    const desktopMediaData = useMemo(() => {\n        if (hasResponsiveMedia) {\n            return getDesktopMediaData(media, {aprimoPrimary})\n        }\n        return null\n    }, [hasResponsiveMedia, media, aprimoPrimary])\n\n    // For non-responsive media, resolve the single Amplience/Aprimo source in a\n    // flag-aware way so the non-responsive Aprimo fields (aprimoImg/aprimoVideo),\n    // which sit alongside the Amplience img/video, are picked up by MediaContent.\n    const nonResponsiveMediaInput = useMemo(() => {\n        if (hasResponsiveMedia || !media) {\n            return null\n        }\n        return getDesktopMediaData(media, {aprimoPrimary})\n    }, [hasResponsiveMedia, media, aprimoPrimary])\n\n    // Render responsive media with separate mobile and desktop versions\n    if (hasResponsiveMedia) {\n        return (\n            <Box\n                data-testid=\"contentMedia\"\n                data-auto={`${mediaConfig?.dataAuto || 'content'}Media`}\n                {...rest}\n            >\n                {/* Mobile Version */}\n                {mobileMediaData && (mobileMediaData.img || mobileMediaData.video) && (\n                    <Box display={showOnlyOnMobile} sx={fullScreenStyle}>\n                        <MediaContent\n                            mediaInput={mobileMediaData}\n                            mediaConfig={mediaConfig}\n                            isActive={isActive}\n                            isLazyLoad={isLazyLoad}\n                            isFirstPanel={isFirstPanel}\n                            hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                            isFMT={isFMT}\n                            componentIndex={componentIndex}\n                            setStoryRef={setStoryRef}\n                            isIntersecting={isIntersecting}\n                        />\n                    </Box>\n                )}\n\n                {/* Desktop Version */}\n                {desktopMediaData && (desktopMediaData.img || desktopMediaData.video) && (\n                    <Box display={showOnlyOnDesktop} sx={fullScreenStyle}>\n                        <MediaContent\n                            mediaInput={desktopMediaData}\n                            mediaConfig={mediaConfig}\n                            isActive={isActive}\n                            isLazyLoad={isLazyLoad}\n                            isFirstPanel={isFirstPanel}\n                            hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                            isFMT={isFMT}\n                            componentIndex={componentIndex}\n                            setStoryRef={setStoryRef}\n                            isIntersecting={isIntersecting}\n                        />\n                    </Box>\n                )}\n            </Box>\n        )\n    }\n\n    // Render non-responsive media\n    return (\n        <Box\n            ref={setStoryRef}\n            data-testid=\"contentMedia\"\n            data-auto={`${mediaConfig?.dataAuto || 'content'}Media`}\n            sx={container}\n            {...rest}\n        >\n            <MediaContent\n                mediaInput={nonResponsiveMediaInput}\n                mediaConfig={mediaConfig}\n                isActive={isActive}\n                isLazyLoad={isLazyLoad}\n                isFirstPanel={isFirstPanel}\n                hasFirstPanelAnimatedOnce={hasFirstPanelAnimatedOnce}\n                isFMT={isFMT}\n                componentIndex={componentIndex}\n                setStoryRef={setStoryRef}\n                isIntersecting={isIntersecting}\n            />\n        </Box>\n    )\n}\n\nMedia.displayName = 'Media'\n\nMedia.propTypes = {\n    media: ContentMediaType,\n    isActive: PropTypes.bool,\n    intersectionThreshold: PropTypes.number,\n    isLazyLoad: PropTypes.bool,\n    isFMT: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    mediaConfig: PropTypes.shape({\n        aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n        controlWrapperPosition: PropTypes.oneOfType([\n            PropTypes.string,\n            PropTypes.number,\n            PropTypes.object\n        ]),\n        copyrightTextPosition: PropTypes.string,\n        dataAuto: PropTypes.string,\n        qWidth: PropTypes.number,\n        mediaCss: PropTypes.object\n    }),\n    hasFirstPanelAnimatedOnce: PropTypes.bool,\n    componentIndex: PropTypes.number\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_for_unicef_logo_black\",\n  \"use\": \"pandora_for_unicef_logo_black-usage\",\n  \"viewBox\": \"0 0 198.69 19.77\",\n  \"content\": \"<symbol viewBox=\\\"0 0 198.69 19.77\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"pandora_for_unicef_logo_black\\\"><g fill=\\\"#27251f\\\"><path d=\\\"M50.96 3.71h.33l.02-.02-.29-2.9-.01-.02h-.09l-.01.02-.31 2.9.02.02zM52.59 3.89l.02-.02.49-2.59-.02-.02-.08-.01-.02.01-1.08 2.46.02.02zM52.09 5c.2 0 .39-.17.39-.4 0-.22-.19-.39-.39-.39-.22 0-.4.17-.4.39 0 .24.19.4.4.4zM50.96 4.88c.2 0 .39-.17.39-.4 0-.22-.19-.39-.39-.39-.22 0-.4.17-.4.39 0 .24.19.4.4.4zM49.32 3.89l.68-.15.01-.02-1.07-2.46-.02-.01-.09.01-.01.02.49 2.59zM49.42 4.6c0 .24.19.4.4.4.2 0 .39-.17.39-.4 0-.22-.19-.39-.39-.39-.22 0-.4.17-.4.39zM3.45 5.73h-3.43l-.02.02s.08.83.08 2.26v7.24c0 1.43-.08 2.26-.08 2.26l.02.02h2.26l.02-.02s-.08-.83-.08-2.26v-2.12l.02-.02c.3.03.99.07 1.23.07 2.32 0 4.31-1.42 4.31-3.81s-2-3.64-4.31-3.64zm-.1 5.51c-.27 0-.88-.03-1.15-.08v-3.49h1.31c1.16 0 2.09.47 2.09 1.7s-.81 1.87-2.26 1.87zM14.21 6.69c-.25-.59-.34-.94-.34-.94l-.02-.02h-1.84l-.02.02s-.07.35-.32.94l-3.98 9.57c-.34.81-.67 1.25-.67 1.25v.02h2.32l.02-.02c0-.07.05-.35.34-1.06l.72-1.8h5.12l.77 1.8c.25.69.4 1.06.4 1.06l.02.02h2.32v-.02s-.3-.44-.67-1.25l-4.19-9.57zm-2.98 6.01 1.67-4.16h.02l1.8 4.16zM30.72 5.74l-.02-.02h-2.06l-.02.02s.08.83.08 2.26v5.93h-.02l-6.37-8.2h-2.26l-.02.02c.25.54.39.91.39 1.16v8.34c0 1.43-.08 2.26-.08 2.26l.02.02h2.06l.02-.02s-.08-.83-.08-2.26v-6.05h.02l6.4 8.32h1.92l.02-.02s-.08-.83-.08-2.26v-7.24c0-1.43.08-2.26.08-2.26zM37.12 5.73h-3.94l-.02.02s.08.83.08 2.26v7.24c0 1.43-.08 2.26-.08 2.26l.02.02h1.21c.8 0 1.68.1 2.7.1 3.62 0 6.18-2.56 6.18-5.98s-2.51-5.91-6.15-5.91zm-.13 9.96c-.57 0-1.09-.02-1.4-.1-.19-.05-.22-.12-.22-.44v-7.5h1.57c2.54 0 4.18 1.72 4.18 4.01s-1.63 4.03-4.13 4.03zM50.96 5.56c-3.4 0-6.05 2.63-6.05 6.05s2.64 6.05 6.05 6.05 6.05-2.61 6.05-6.05-2.61-6.05-6.05-6.05zm0 10.16c-2.19 0-3.89-1.79-3.89-4.11s1.7-4.11 3.89-4.11 3.91 1.79 3.91 4.11-1.7 4.11-3.91 4.11zM65.41 13.51c-.29-.47-.72-.84-1.16-.96v-.02c1.23-.27 2.38-1.7 2.38-3.13 0-1.95-1.5-3.67-3.81-3.67h-3.77l-.02.02s.08.83.08 2.26v7.24c0 1.43-.08 2.26-.08 2.26l.02.02h2.26l.02-.02s-.08-.83-.08-2.26v-2.26c1.13 0 1.57.22 1.97.86l.96 1.55c.79 1.28 1.13 2.11 1.13 2.11l.02.02h2.7v-.02s-.67-.83-1.45-2.11l-1.15-1.89zm-3.12-2.39c-.27 0-.74 0-1.06-.07v-3.4h1.3c1.26 0 1.94.83 1.94 1.77 0 .89-.69 1.7-2.17 1.7zM80.54 16.26l-4.19-9.57c-.25-.59-.34-.94-.34-.94l-.02-.02h-1.84l-.02.02s-.07.35-.32.94l-3.98 9.57c-.34.81-.67 1.25-.67 1.25v.02h2.32l.02-.02c0-.07.05-.35.34-1.06l.72-1.8h5.12l.77 1.8c.25.69.4 1.06.4 1.06l.02.02h2.32v-.02s-.3-.44-.67-1.25zm-7.18-3.55 1.67-4.16h.02l1.8 4.16zM94.07 16.58v-2.36h-.04c-.27 0-.52.02-.67.03v-.65c.16 0 .38.02.66.02h.05v-.43c0-1.07.54-1.56 1.42-1.56.36 0 .66.1.87.22v.7c-.26-.2-.52-.3-.84-.3-.44 0-.73.3-.73.95v.43h.46c.36 0 .73 0 .93-.02v.65c-.2-.02-.57-.03-.93-.03h-.46v2.36c0 .35.02.71.03.92h-.78c.02-.21.04-.57.04-.92zM96.29 15.56c0-1.13.88-2 2.01-2s2.01.86 2.01 2-.86 2-2.01 2-2.01-.87-2.01-2zm3.3 0c0-.77-.56-1.38-1.29-1.38s-1.29.61-1.29 1.38.56 1.38 1.29 1.38 1.29-.61 1.29-1.38zM101.15 16.58v-2.03c0-.38-.02-.72-.03-.92h.64l.05.44c.21-.32.55-.5.98-.5.24 0 .46.06.56.12v.81h-.02c-.13-.15-.33-.3-.64-.3-.49 0-.83.39-.83 1.01v1.37c0 .35.02.71.03.92h-.78c0-.21.03-.57.03-.92zM187.27.01c-4.29 0-7.77 3.49-7.77 7.77s3.49 7.77 7.77 7.77 7.77-3.49 7.77-7.77-3.49-7.77-7.77-7.77zm6.06 3.43c-.4.27-.82.51-1.25.72-.26-.51-.57-1-.93-1.45.32-.19.62-.41.9-.65.48.4.91.87 1.27 1.38zm-3.27-2.58c.62.25 1.2.59 1.74 1-.27.22-.56.42-.86.6-.38-.44-.81-.83-1.28-1.18.14-.13.27-.27.39-.42zm.6 1.76c-.42.22-.86.41-1.31.55-.19-.43-.41-.86-.65-1.27.25-.11.49-.25.71-.41.46.33.87.71 1.25 1.14zm-.92-1.88c-.11.13-.22.24-.34.35-.41-.28-.85-.52-1.3-.72.57.06 1.12.18 1.65.37zm-.61.56c-.19.13-.39.24-.6.33-.23-.36-.48-.7-.75-1.04.47.19.92.43 1.35.71zm-1.71-.66c.29.35.56.71.8 1.1-.26.08-.53.13-.8.14v-1.23zm0 1.56c.33-.02.66-.08.98-.18.24.4.45.81.64 1.24-.53.14-1.07.21-1.62.22zm-.32-1.55v1.23c-.27-.01-.53-.06-.79-.14.24-.37.5-.74.79-1.09zm-1.1.98c-.21-.09-.41-.2-.6-.33.42-.28.87-.51 1.34-.71-.26.33-.52.68-.74 1.04zm.45-1.26c-.46.2-.9.44-1.31.72-.13-.11-.24-.23-.34-.35.54-.19 1.09-.31 1.66-.37zm5.33 13.34c-1.03-.57-1.05-1.35-1-1.64s.26-.17.39-.17c.68 0 1.39-.2 2.27-1.1.99-1.01 1.3-3.27-.22-4.73-1.64-1.58-3.39-1.31-4.52.12-.23.29-.8.51-1.28.49-.72-.03-.27.54-.27.66s-.11.2-.17.18c-.25-.07-.15.29-.15.4s-.1.17-.16.17c-.3 0-.22.27-.21.35 0 .07-.02.2-.12.26-.1.05-.21.29-.21.48 0 .33.3.56.81.94.5.38.57.73.58.99 0 .26.03.67.15.94.14.33.12.94-.58.96-.85.03-2.37.72-2.49.76-.48.17-1.12.23-1.61.11-.27-.19-.52-.4-.76-.62-.1-.34.07-.71.25-.96.28.28.71.27.94.27.24.01 1.4-.17 1.57-.23s.24-.04.34 0c.44.16 1.05.21 1.3-.64s-.34-.61-.41-.58c-.07.04-.18.03-.14-.05.11-.22-.05-.19-.15-.2-.24-.02-.55.23-.65.32s-.2.08-.24.06c-.32-.16-1.26.07-1.55-.44.03-.14-.24-2.21-.38-2.57-.03-.08-.06-.2.04-.34.24-.36.9.03 1.26.02.43-.01.5-.19.61-.34.11-.14.2-.06.26-.1.08-.05 0-.15.03-.21.03-.05.06-.03.13-.09.07-.07-.01-.2.03-.26.11-.16.39-.03.22-.45-.09-.23.04-.48.16-.64.21-.27 1.01-1.4-.4-2.57-1.35-1.12-2.72-1.03-3.6-.07-.88.95-.44 2.35-.35 2.72s-.17.7-.48.84c-.24.11-.79.48-1.21.84.07-2.99 1.88-5.63 4.67-6.75.12.15.25.29.39.42-.31.23-.99.83-.99.83s.09.01.18.04c.06.01.19.05.19.05s.6-.51.88-.71c.22.17.46.3.71.41-.14.23-.47.87-.47.87s.08.05.15.09c.07.05.12.09.12.09s.37-.7.51-.93c.31.1.64.16.97.18v1.28c-.18 0-.65-.02-.84-.04h-.12s.07.09.07.09c.05.07.09.15.12.21v.03s.04 0 .04 0c.14.01.57.03.73.03v2.33h.32v-.53c.47-.02.87-.06 1.34-.1h.02s.42-.37.42-.37l-.23.02c-.5.07-.95.1-1.35.12 0 0-.14 0-.21.01v-1.48c.58-.01 1.17-.09 1.74-.24.16.38.45 1.32.45 1.32l.3-.1s-.29-.93-.45-1.31c.48-.15.95-.35 1.4-.59.36.44.67.92.92 1.43-.23.11-.65.25-.65.25.33.04.59.12.59.12s.12-.05.19-.08c.03.07.09.2.09.2l.42.19-.05-.12s-.14-.33-.17-.41c.44-.22.88-.47 1.3-.75.79 1.21 1.21 2.62 1.21 4.07 0 2.42-1.16 4.57-2.94 5.93zM178.79 2.08l-.12.11c-.46.4-1.5 1.47-1.34 2.64 0 0 .02.08.02.08s.05.23.05.23l.14-.13c.64-.58 1.12-1.57 1.31-2.71l.06-.32-.12.11zM176.68 4.1l-.05.14c-.07.2-.2.6-.27 1.15-.1.77-.08 1.86.59 2.68 0 0 .07.1.07.1l.08.1.1-.5c.11-.88-.04-2.71-.36-3.53l-.11-.28zM175.91 7.25v.14c-.07.79-.03 2.72 1.54 3.75 0 0 .19.12.19.12v-.22c-.04-.74-.89-2.93-1.54-3.72l-.18-.22v.14zM176.18 10.72l.03.13c.23 1.11 1.29 2.92 2.92 3.44l.22.07-.08-.22c-.3-.83-1.88-2.77-2.89-3.41l-.23-.14zM179.45 3.76l-.13.08c-1.21.74-1.78 1.64-1.74 2.75v.25s.19-.15.19-.15c.66-.54 1.48-1.93 1.72-2.72l.09-.29zM178.74 6.18l-.09.09c-.31.3-1.32 1.37-1.23 2.69.01.2.06.42.14.65l.07.21.13-.18c.48-.68 1.12-2.46 1.08-3.29v-.25s-.1.09-.1.09zM178.79 8.48l-.07.1c-.51.75-.77 1.53-.75 2.24.01.53.18 1.03.5 1.5l.11.16.09-.17c.22-.41.39-1.75.37-2.81 0-.37-.05-.68-.11-.89l-.07-.23zM179.38 10.94l-.03.11c-.15.49-.22.97-.21 1.42.03 1.03.48 1.83 1.35 2.39l.15.09.03-.2s.01-.16.01-.16c-.02-.84-.65-2.94-1.13-3.58l-.13-.18-.03.1zM177.67 14.2l.06.11c.65 1.1 1.76 2.51 3.84 2.15l.17-.03-.1-.15c-.39-.58-2.91-2-3.8-2.14l-.24-.04.06.11zM180.74 16.98l-.33.09.31.13c1.32.54 2.97.7 3.93.38.36-.12.58-.32.85-.58 1.69.17 3.27 1.58 4.19 2.73l.05.06.07-.02c.1-.04.26-.16.33-.23l.06-.07-.06-.08c-.96-1.26-2.47-2.04-2.53-2.07-1.36-.66-3.75-1.18-6.88-.33z\\\" /><path d=\\\"m180.81 13.47.02.11c.2 1.24.7 2.88 2.8 2.69h.13s-.03-.14-.03-.14c-.14-.57-2.07-2.21-2.74-2.67l-.2-.1zM195.65 1.97l.06.32c.2 1.14.67 2.13 1.31 2.71l.15.13s.05-.23.05-.23.02-.08.02-.08c.16-1.17-.88-2.23-1.34-2.64l-.12-.11-.12-.11zM197.84 3.96l-.11.28c-.32.82-.47 2.65-.36 3.53l.1.5.08-.1s.07-.1.07-.1c.67-.82.69-1.91.59-2.68-.07-.55-.2-.95-.27-1.15l-.05-.14zM198.65 7.11l-.18.22c-.64.79-1.5 2.98-1.53 3.72v.22s.18-.12.18-.12c1.57-1.03 1.61-2.97 1.56-3.75v-.14s-.02-.14-.02-.14zM198.42 10.59l-.23.14c-1.01.64-2.58 2.58-2.89 3.41l-.08.22.22-.07c1.63-.52 2.69-2.33 2.92-3.44l.03-.13zM195.05 3.64l.08.29c.23.79 1.02 2.2 1.67 2.76l.18.15v-.25c.08-1.11-.47-2.02-1.67-2.78l-.13-.08-.13-.08zM195.74 6.09v.25c-.04.83.59 2.62 1.07 3.29l.13.18.07-.21c.08-.23.12-.45.14-.65.09-1.32-.92-2.39-1.23-2.69l-.09-.09-.09-.09zM195.71 8.38l-.07.23c-.06.21-.1.52-.11.89-.03 1.06.15 2.39.37 2.81l.09.17.11-.16c.32-.47.48-.97.5-1.5.02-.71-.24-1.49-.75-2.24l-.07-.1zM195.15 10.83l-.13.18c-.49.64-1.11 2.75-1.13 3.58 0 0 .01.15.01.16l.03.2.15-.09c.87-.56 1.32-1.36 1.35-2.39.01-.45-.06-.93-.21-1.42l-.03-.11-.03-.1zM196.96 14.09l-.24.04c-.89.15-3.41 1.57-3.8 2.14l-.1.15.17.03c2.08.36 3.19-1.05 3.84-2.15l.06-.11.06-.11zM186.95 17.3c-.07.03-1.57.81-2.53 2.07l-.06.08.07.07c.07.07.23.2.33.23l.07.02.05-.06c.92-1.15 2.5-2.55 4.19-2.73.27.26.49.46.85.58.96.32 2.61.16 3.93-.38l.31-.13-.33-.09c-3.14-.85-5.53-.34-6.88.33zM193.78 13.36l-.2.1c-.67.46-2.6 2.1-2.74 2.67l-.03.13h.13c2.1.19 2.61-1.44 2.8-2.68l.02-.11zM140.06.56h2.65v2.42h-2.65zm.21 16.96v-11.79h2.23v11.79zM123.42 5.74h2.23v11.79h-2.19v-1.74h-.05c-.89 1.48-2.4 2.09-4.04 2.09-2.47 0-3.88-1.88-3.88-4.25v-7.89h2.23v6.98c0 2.04.47 3.55 2.61 3.55.92 0 2.16-.47 2.63-1.69.42-1.1.45-2.49.45-2.77v-6.06zM130.11 7.48h.05c.75-1.48 2.4-2.09 3.57-2.09.82 0 4.46.21 4.46 3.99v8.15h-2.23v-7.42c0-1.95-.82-3.01-2.7-3.01 0 0-1.22-.07-2.16.87-.33.33-.94.85-.94 3.15v6.41h-2.23v-11.79h2.18zM151.85 9.52c-.12-1.47-.82-2.5-2.4-2.5-2.12 0-2.94 1.84-2.94 4.6s.82 4.6 2.94 4.6c1.47 0 2.38-.95 2.5-2.64h2.22c-.19 2.64-2.15 4.25-4.74 4.25-3.76 0-5.25-2.66-5.25-6.11s1.73-6.3 5.44-6.3c2.47 0 4.34 1.57 4.45 4.11h-2.21zM157.49 12.04c-.16 2.05.68 4.18 2.94 4.18 1.73 0 2.59-.68 2.85-2.38h2.34c-.35 2.66-2.41 3.99-5.2 3.99-3.76 0-5.25-2.66-5.25-6.11s1.73-6.3 5.44-6.3c3.5.07 5.16 2.29 5.16 5.53v1.09h-8.26zm5.93-1.54c.05-1.96-.84-3.48-2.99-3.48-1.85 0-2.94 1.56-2.94 3.48zM168.26 17.48v-10.17h-2.02v-1.54h2.02v-2.52c.07-2.57 2.01-3.24 3.66-3.24.54 0 1.05.14 1.59.23v1.84c-.38-.02-.75-.07-1.12-.07-1.26 0-1.98.33-1.91 1.61v2.15h2.71v1.54h-2.71v10.18h-2.22z\\\" /></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useCallback, useMemo} from 'react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\nimport {useCustomQuery} from './useCustomQuery'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getProductsPricesMap} from './helpers/product-query-utils'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/** @typedef {import('./types/product-price').ProductPricesMap} ProductPricesMap */\n/** @typedef {import('./types/product-price').PromotionsPriceResponse} PromotionsPriceResponse */\n\n/**\n * @typedef {object} UseProductsPriceResult\n * @property {ProductPricesMap | undefined} pricesData\n *   Map of `productId → TransformedPrice`. Undefined while loading or on error.\n * @property {boolean} isPricesDataFetching\n *   `true` while the request is in-flight (including background refetches).\n * @property {boolean} isPricesDataError\n *   `true` when the request failed (HTTP error, network error, etc.).\n * @property {Error | null} pricesError\n *   The error object when `isPricesDataError` is `true`, otherwise `null`.\n */\n\n/**\n * Fetches product promotional prices from the DOL `/prices/promotions` endpoint\n * and returns a productId-keyed map of transformed price data.\n *\n * The query is automatically **disabled** when `productIds` is empty.\n *\n * @param {string[]} productIds - Product IDs to fetch prices for (max 36 per API spec).\n * @returns {UseProductsPriceResult}\n */\nexport const useProductsPrice = (productIds = []) => {\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const organizationId = appConfig?.commerceAPI?.parameters?.organizationId\n    const proxyPath = appConfig?.dolAPI?.proxyPath\n    const pricesUrl = getCustomApiPaths(proxyPath, organizationId).PRODUCT_PROMOTIONS\n\n    // DOL Q3 channel migration — flag ON resolves channelname from route context; OFF keeps legacy 'pwa'.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    const headers = {\n        ...(isDolQ3MigrationEnabled\n            ? dolChannelHeaders\n            : {channeltype: 'online', channelname: 'pwa'}),\n        'x-environment': appConfig?.targetEnvironment\n    }\n\n    const dolParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            productIds: productIds.join()\n        }),\n        [productIds, locale]\n    )\n\n    const queryKey = useMemo(\n        () => ['products', productIds, 'prices', 'promotions', locale?.id],\n        [locale?.id, productIds]\n    )\n\n    /**\n     * Transforms the raw API response into a `ProductPricesMap`.\n     * Handles missing or malformed `prices` array gracefully.\n     * @param {PromotionsPriceResponse} response\n     * @returns {ProductPricesMap}\n     */\n    const select = useCallback(\n        (response = {}) =>\n            getProductsPricesMap(Array.isArray(response.prices) ? response.prices : []),\n        []\n    )\n\n    const {\n        data: pricesData,\n        isFetching: isPricesDataFetching,\n        isError: isPricesDataError,\n        error: pricesError\n    } = useCustomQuery(\n        queryKey,\n        {\n            path: pricesUrl,\n            queryParams: dolParams,\n            headers\n        },\n        {keepPreviousData: false, enabled: productIds.length > 0, select}\n    )\n\n    return {\n        pricesData,\n        isPricesDataFetching,\n        isPricesDataError,\n        pricesError\n    }\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_x_patMcGrath_white\",\n  \"use\": \"pandora_x_patMcGrath_white-usage\",\n  \"viewBox\": \"0 0 584.97 54.43\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 584.97 54.43\\\" id=\\\"pandora_x_patMcGrath_white\\\">\\n  <defs>\\n    <style>\\n      #pandora_x_patMcGrath_white .cls-1 {\\n        fill: #fff;\\n      }\\n    </style>\\n  </defs>\\n  <g>\\n    <g>\\n      <path class=\\\"cls-1\\\" d=\\\"M6.62,34.63h7.63c2.16,0,3.52-.3,4.72-1.03,1.84-1.1,2.94-3.19,2.94-5.57s-1.1-4.47-2.94-5.58c-1.2-.73-2.57-1.03-4.72-1.03h-7.63v13.21ZM0,53.54V15.24h14.47c2.58,0,4.92.41,6.78,1.2,4.62,2.07,7.5,6.51,7.5,11.58s-2.87,9.51-7.5,11.58c-1.85.78-4.19,1.2-6.77,1.2h-7.85v12.74H0Z\\\" />\\n      <path class=\\\"cls-1\\\" d=\\\"M41.46,32.7l-2.61,6.91h12.65l-2.61-6.91c-1.42-3.78-3.64-9.53-3.64-9.53h-.13s-2.22,5.75-3.65,9.53M56.8,53.54l-2.94-7.75h-17.39l-2.94,7.75h-7.13l15.37-38.3h6.99l15.37,38.3h-7.35Z\\\" />\\n    </g>\\n    <polygon class=\\\"cls-1\\\" points=\\\"96.25 53.54 81.59 33.64 75.9 26 75.9 36.22 75.9 53.54 69.28 53.54 69.28 15.24 75.96 15.24 90.62 35.14 96.31 42.78 96.31 32.56 96.31 15.24 102.93 15.24 102.93 53.54 96.25 53.54\\\" />\\n    <g>\\n      <path class=\\\"cls-1\\\" d=\\\"M117.77,47.26h5.78c4.26,0,7.44-.76,9.72-2.31,3.31-2.24,5.14-6.09,5.03-10.56.11-4.46-1.73-8.31-5.03-10.55-2.28-1.56-5.46-2.31-9.72-2.31h-5.78v25.73ZM111.15,53.54V15.24h12.67c5.81,0,10.72,1.38,14.2,4,4.65,3.42,7.22,8.8,7.22,15.15s-2.56,11.73-7.21,15.15c-3.49,2.62-8.4,4-14.21,4h-12.67Z\\\" />\\n      <path class=\\\"cls-1\\\" d=\\\"M170.01,20.64c-7.74,0-13.37,5.78-13.37,13.75s5.62,13.75,13.37,13.75,13.36-5.78,13.36-13.75-5.62-13.75-13.36-13.75M170.01,54.43c-11.58,0-20.31-8.61-20.31-20.04s8.73-20.04,20.31-20.04,20.31,8.61,20.31,20.04-8.73,20.04-20.31,20.04\\\" />\\n      <path class=\\\"cls-1\\\" d=\\\"M202.72,34.63h8.51c2.15,0,3.52-.3,4.72-1.03,1.84-1.1,2.94-3.19,2.94-5.57s-1.1-4.47-2.94-5.58c-1.2-.73-2.56-1.03-4.72-1.03h-8.51v13.21ZM218.91,53.54l-7.31-12.74h-8.87v12.74h-6.62V15.24h15.35c2.58,0,4.93.41,6.78,1.2,4.62,2.07,7.5,6.51,7.5,11.58s-2.66,8.99-7.12,11.14l-.23.11,8.29,14.27h-7.76Z\\\" />\\n      <path class=\\\"cls-1\\\" d=\\\"M244.33,32.7l-2.61,6.91h12.65l-2.61-6.91c-1.42-3.78-3.64-9.53-3.64-9.53h-.13s-2.22,5.75-3.65,9.53M259.67,53.54l-2.94-7.75h-17.39l-2.94,7.75h-7.13l15.37-38.3h6.99l15.37,38.3h-7.35Z\\\" />\\n      <path class=\\\"cls-1\\\" d=\\\"M171.38,11.35c0-.78-.66-1.37-1.37-1.37-.78,0-1.43.6-1.43,1.37,0,.83.66,1.43,1.43,1.43.71,0,1.37-.6,1.37-1.43\\\" />\\n    </g>\\n    <polygon class=\\\"cls-1\\\" points=\\\"169.79 0 168.71 8.41 171.24 8.41 170.23 0 169.79 0\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M175.32,11.35c0-.78-.66-1.37-1.37-1.37-.78,0-1.43.6-1.43,1.37,0,.83.66,1.43,1.43,1.43.71,0,1.37-.6,1.37-1.43\\\" />\\n    <polygon class=\\\"cls-1\\\" points=\\\"176.68 0 173.06 8.41 175.66 8.41 177.12 0 176.68 0\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M164.63,11.35c0,.83.66,1.43,1.37,1.43.78,0,1.43-.6,1.43-1.43,0-.78-.66-1.37-1.43-1.37-.71,0-1.37.6-1.37,1.37\\\" />\\n    <polygon class=\\\"cls-1\\\" points=\\\"162.83 0 164.3 8.41 166.9 8.41 163.28 0 162.83 0\\\" />\\n  </g>\\n  <polygon class=\\\"cls-1\\\" points=\\\"329.25 15.65 314.02 31.23 298.79 15.65 295.66 18.78 310.89 34.36 295.66 49.95 298.79 53.08 314.02 37.49 329.25 53.08 332.38 49.95 317.08 34.36 332.38 18.78 329.25 15.65\\\" />\\n  <g>\\n    <path class=\\\"cls-1\\\" d=\\\"M394.57,17.79c1.12.6,1.95,1.37,2.47,2.3.26.52.37,1.08.34,1.66-.04.58-.28,1.19-.73,1.83-.82,1.2-1.7,2.28-2.61,3.26-.92.97-1.88,1.89-2.89,2.75l-2.13,1.69c-.3.26-.66.53-1.07.81-.41.28-.77.57-1.07.87-.22-.11-.48-.11-.76,0-.28.11-.59.26-.93.45h.06l-.22.11c-2.1,1.31-4.2,2.52-6.29,3.62-2.1,1.1-4.31,1.96-6.63,2.56-.41.11-.8.3-1.15.56-.36.26-.67.66-.93,1.18l-.39.67.06-.06c-.26.41-.51.83-.73,1.26-.22.43-.47.85-.73,1.26-.26.34-.51.73-.73,1.18-.22.45-.45.88-.67,1.29-.19.34-.37.66-.53.96-.17.3-.37.62-.59.96,0,.04-.04.13-.11.28-.19.3-.34.6-.45.9-.11.3-.17.64-.17,1.01.04.19,0,.42-.14.7-.13.28-.25.57-.37.87,0,.07-.05.17-.14.28-.09.11-.14.21-.14.28l-.45-.28c-.3-.19-.61-.31-.93-.37-.32-.06-.68.16-1.1.65-.37-.15-.59-.39-.65-.73-.06-.34-.05-.67.03-1.01.08-.41.16-.81.25-1.21s.22-.8.37-1.21c.04-.15.07-.28.11-.39.04-.11.09-.24.17-.39l.06-.45c.07-.26.16-.51.25-.73.09-.22.29-.43.59-.62.07-.04.13-.11.17-.22.04-.11.07-.21.11-.28l.79-1.97.84-1.97v.06c.6-.6.88-1.14.84-1.63-.04-.49-.19-.96-.45-1.4l.17-.17c.22-.15.43-.26.62-.34.6-.11,1.12-.51,1.57-1.18.07-.07.15-.19.22-.34.07-.07.15-.18.22-.31.07-.13.15-.23.22-.31.19-.26.37-.56.56-.9.19-.34.26-.69.22-1.07.37-.34.66-.7.87-1.1.21-.39.38-.8.53-1.21.15-.3.29-.59.42-.87.13-.28.33-.55.59-.81.07-.19.17-.37.28-.56.11-.19.24-.37.39-.56.22-.34.44-.67.65-1.01.21-.34.35-.71.42-1.12.07-.15.17-.29.28-.42.11-.13.24-.27.39-.42l.51-.56.62-.84c.11-.19.25-.43.42-.73.17-.3.33-.54.48-.73l-3.2,1.01c-.3.11-.54.11-.73,0-.19-.11-.34-.24-.45-.39-.15-.22-.22-.32-.22-.28-.04-.11-.03-.3.03-.56.06-.26.16-.49.31-.67.34-.41.55-.82.65-1.24.09-.41.12-.82.08-1.24.22-.22.43-.41.62-.56.19-.15.43-.22.73-.22.45,0,.92-.09,1.4-.28h-.06l.34-.11c.3-.07.58-.17.84-.28.15-.07.37-.16.65-.25.28-.09.5-.16.65-.2.52-.15.96-.34,1.32-.56.36-.22.7-.54,1.04-.96.67-1.05,1.57-1.31,2.7-.79.3.15.56.22.79.22.56,0,.94.15,1.12.45.07.15.23.25.48.31.24.06.44.03.59-.08v.06c.37-.22.71-.35,1.01-.37.3-.02.62-.03.96-.03h.45c.34-.04.66-.06.98-.06h.93c.86.08,1.68.22,2.44.45.77.22,1.53.51,2.28.84ZM365.35,47.52l.17-.45c-.15.04-.27.05-.37.03-.09-.02-.22-.05-.37-.08-.04,0-.09,0-.17-.03-.08-.02-.13-.03-.17-.03l-.22.45,1.12.11ZM367.99,41.73c-.11-.15-.25-.16-.42-.03-.17.13-.33.32-.48.56-.15.24-.29.49-.42.73-.13.24-.22.42-.25.53l.22.06,1.35-1.85ZM381.53,22.85l-.17.28s-.03.1-.08.2c-.06.09-.08.16-.08.2-.15.22-.29.47-.42.73-.13.26-.31.49-.53.67-.3.26-.57.51-.81.73-.24.22-.46.47-.65.73l-.84.39.17.73.34-.51c-.15.3-.22.64-.22,1.01-.04.04-.07.06-.08.06-.02,0-.05.04-.08.11l-.22.28-2.53,3.71-.62,1.07-.22.28c-.08.15-.15.3-.22.45-.08.15-.11.36-.11.62,0,.04-.07.13-.2.28-.13.15-.25.3-.37.45l-.9,1.01,1.52-.73c.6-.26,1.14-.51,1.63-.76s.97-.5,1.46-.76c1.09-.64,2.15-1.26,3.2-1.88,1.05-.62,2.08-1.26,3.09-1.94.75-.52,1.54-1.07,2.36-1.63.82-.56,1.78-1.25,2.87-2.08.86-.64,1.65-1.33,2.36-2.08.71-.75,1.29-1.52,1.74-2.3.41-.79.28-1.35-.39-1.69-.41-.22-.87-.34-1.38-.34s-1.02.02-1.54.06c-.15,0-.28,0-.39.03-.11.02-.24.03-.39.03-.34.04-.67.07-1.01.08-.34.02-.69.07-1.07.14l-2.02.39c-.75.11-1.34.29-1.77.53-.43.24-.85.67-1.26,1.26l-.62-.28c-.08,0-.18.05-.31.14-.13.09-.22.18-.25.25l.06-.06c-.04.22-.04.39,0,.51,0,.11.06.19.17.22l.84-.62ZM378.38,23.86c.04-.19.11-.34.22-.45s.22-.22.34-.34c.07-.04.12-.07.14-.08.02-.02.08-.23.2-.65l-1.29,1.24-.67.62.17.11.9-.45ZM378.89,26.33l-.45.67c.04-.15.15-.36.34-.62l.11-.06ZM381.64,22.68h.11l-.22.17c.07-.07.11-.13.11-.17Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M409.85,31.22c-.15.11-.3.23-.45.37-.15.13-.24.25-.28.37-.19.49-.47.88-.84,1.18-.37.3-.73.62-1.07.96-.04.15-.08.3-.11.45-.04.15-.09.32-.17.51-.08.41-.24.79-.51,1.12-.15.3-.32.41-.51.34-.19-.07-.36-.07-.51,0-.45.22-.89.46-1.32.7-.43.24-.87.5-1.32.76,0,.11,0,.22.03.34.02.11.03.21.03.28l.96-.51c.3.37.43.62.39.73-.04.11-.3.38-.79.79-.19.08-.31.19-.37.34-.06.15-.12.3-.2.45l.79-.11c-.26.49-.5.97-.7,1.46-.21.49-.46.97-.76,1.46-.3.49-.67.96-1.1,1.43-.43.47-.61.98-.53,1.54-.3.15-.46.29-.48.42-.02.13.05.27.2.42.07.04.07.12-.03.25-.09.13-.16.23-.2.31-.19.41-.4.83-.65,1.26-.24.43-.46.85-.65,1.26-.11.22-.15.42-.11.59.04.17.09.35.17.53.19.41.14.8-.14,1.15-.28.36-.67.5-1.15.42-.37-.04-.64.06-.79.28-.15.22-.36.36-.62.39-.19-.26-.34-.52-.45-.76-.11-.24-.26-.48-.45-.7-.15-.22-.24-.45-.28-.67-.04-.22.09-.51.39-.84.22-.3.22-.64,0-1.01-.08-.15-.09-.36-.06-.62.04-.26.11-.53.22-.81.11-.28.26-.55.45-.81.19-.26.39-.47.62-.62.19-.15.38-.28.59-.39.21-.11.46-.26.76-.45-.3,0-.53,0-.7.03-.17.02-.35.03-.53.03.07-.6.29-1.17.65-1.71.36-.54.68-1.08.98-1.6.07-.15.17-.29.28-.42.11-.13.17-.25.17-.37.22-.79.55-1.54.98-2.25.43-.71.93-1.4,1.49-2.08.19-.19.31-.37.37-.53.06-.17-.05-.33-.31-.48-.71.64-1.34,1.33-1.88,2.08-.54.75-1.32,1.37-2.33,1.85.04-.22.13-.51.28-.84l-.9.62-.45.34c.15.08.24.11.28.11.04.04.06.09.06.17.07.19.1.38.08.59-.02.21-.16.4-.42.59-.64.52-1.28,1.07-1.94,1.63-.66.56-1.3,1.12-1.94,1.69-.3.22-.57.44-.81.65-.24.21-.48.42-.7.65-.41.3-.81.58-1.21.84s-.81.54-1.26.84c-.97.71-1.9,1.11-2.78,1.21-.88.09-1.75,0-2.61-.25-.79-.19-1.34-.59-1.66-1.21-.32-.62-.57-1.3-.76-2.05.22-.3.47-.64.73-1.01.26-.37.6-.79,1.01-1.24.08-.3.13-.63.17-.98.04-.36.3-.7.79-1.04.3-.75.8-1.4,1.49-1.97.69-.56,1.26-1.16,1.71-1.8.67-.86,1.43-1.64,2.28-2.33.84-.69,1.58-1.47,2.22-2.33.41-.49.93-.93,1.54-1.32s1.19-.76,1.71-1.1c.82-.52,1.65-1.02,2.47-1.49.82-.47,1.67-.95,2.53-1.43l.17-.11c.22-.15.46-.25.7-.31.24-.06.5-.09.76-.11.26-.02.52-.07.79-.14.26-.07.52-.22.79-.45.22-.22.46-.37.7-.42.24-.06.49-.07.73-.06.24.02.49.05.73.08.24.04.48.04.7,0,.15,0,.28.03.39.08.11.06.22.12.34.2.19.07.39.17.62.28.22.11.43.24.62.39l1.4-1.18c.52-.07,1.01,0,1.46.22.45.22.94.34,1.46.34.19,0,.37.11.53.34s.29.43.37.62c.07.07.05.21-.08.39-.13.19-.27.32-.42.39-.19.11-.37.19-.56.22-.19.04-.37.09-.56.17.07.22.15.43.22.62.07.19.15.39.22.62-.22.19-.44.38-.65.59s-.38.4-.53.59ZM382.32,46.28c.08,0,.13-.02.17-.06v-.11c-.07,0-.11.02-.11.06l-.06.11ZM404,30.6c.26-.19.51-.38.73-.59.22-.21.34-.48.34-.81-.6-.15-1.21-.2-1.83-.14-.62.06-1.26.29-1.94.7-1.01.64-2.02,1.29-3.03,1.97-1.01.67-2,1.4-2.98,2.19l-.59.59c-.21.21-.35.46-.42.76.04.07.02.15-.06.22-.08.08-.15.13-.22.17-.6.3-1.11.65-1.54,1.04-.43.39-.83.81-1.21,1.26-.37.41-.74.83-1.1,1.26-.36.43-.74.85-1.15,1.26-.9.82-1.7,1.69-2.39,2.58-.69.9-1.23,1.95-1.6,3.15.82-.56,1.6-1.1,2.33-1.63.73-.52,1.47-1.05,2.22-1.57.9-.71,1.81-1.41,2.72-2.11.92-.69,1.81-1.47,2.67-2.33.86-.86,1.77-1.66,2.72-2.39.96-.73,1.86-1.53,2.73-2.39.52-.6,1.1-1.15,1.74-1.66.64-.51,1.25-1.02,1.85-1.54ZM387.2,41.62s-.06.04-.06.11h.11v-.06l-.06-.06ZM393.55,33.53c.04.08.05.17.03.28-.02.11,0,.21.08.28.15-.07.24-.11.28-.11,0-.19-.06-.37-.17-.56l-.22.11ZM394.73,31.73s-.08,0-.14.03c-.06.02-.1.03-.14.03,0,.08.04.15.11.22.04,0,.07,0,.08-.03.02-.02.07-.03.14-.03-.04-.04-.06-.11-.06-.22ZM396.14,31.39c.15.08.22.15.22.22.3-.22.47-.41.51-.56l-.73.34ZM397.04,31l.67-.34c-.08-.07-.09-.15-.06-.22l-.62.56ZM397.09,38.19c.34-.19.6-.34.79-.45.19-.11.34-.22.45-.31s.2-.22.25-.37c.06-.15.12-.34.2-.56l-1.69,1.69ZM399.96,29.65s-.09.06-.17.06c0,.07.02.11.06.11h.11v-.17ZM402.26,39.93c.15-.19.24-.38.28-.59.04-.21.09-.4.17-.59-.19.3-.4.6-.65.9-.24.3-.5.66-.76,1.07.26-.22.47-.38.62-.48.15-.09.26-.2.34-.31ZM401.98,38.86c.04-.07.08-.16.14-.25.06-.09.12-.18.2-.25-.04-.04-.08-.06-.11-.06l-.45.45.22.11Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M415.07,28.41l.06-.11-2.36.06c-.19.04-.37-.03-.53-.2-.17-.17-.27-.35-.31-.53-.19-.34-.22-.66-.11-.96v-.51l.34-.11c.15-.04.29-.07.42-.08.13-.02.23-.07.31-.14l.34-.28v.06c.3-.11.51-.32.62-.62l2.42-.34-.06.06,1.24-.22.17-.28c.11-.22.22-.37.31-.45.09-.07.08-.28-.03-.62,0-.07.04-.21.11-.39.07-.19.13-.34.17-.45l1.29-1.46c.41-.34.62-.75.62-1.24-.08-.37.06-.68.39-.93.34-.24.71-.37,1.12-.37.71-.04,1.26-.05,1.66-.03.39.02.93.03,1.6.03.26.6.26,1.18,0,1.74-.11.41-.28.77-.51,1.07s-.47.6-.73.9c-.34.34-.63.67-.87,1.01-.24.34-.48.69-.7,1.07.49-.11,1.18-.25,2.08-.42.9-.17,1.8-.33,2.7-.48.9-.15,1.71-.27,2.44-.37.73-.09,1.19-.14,1.38-.14l3.15-.45c.3-.04.59-.07.87-.08s.5,0,.65.08l.06-.06c.26-.19.49-.26.67-.22.19.04.37.09.56.17l.62.17c.15.04.26.07.34.08.07.02.22.03.45.03-.11.11-.27.21-.48.28-.21.07-.38.14-.53.2-.15.06-.26.08-.34.08s-.06,0,.06,0c.45-.07.96-.16,1.52-.25.56-.09,1.03-.17,1.4-.22.37-.06.6-.06.67,0,.07.06-.15.2-.67.42.26-.04.49-.05.67-.03.19.02.07.1-.34.25-.19.08-.74.22-1.66.45-.92.22-1.91.48-2.98.76-1.07.28-2.04.53-2.92.76-.88.22-1.38.36-1.49.39l-6.18,1.18c-.41.08-.81.14-1.18.2-.37.06-.67-.16-.9-.65l-.67.62-.22.22c-.64.22-1.29.39-1.97.51l-.34.45c.07,0,.14,0,.2.03.06.02.06.12,0,.31-.06.19-.2.49-.42.9-.22.41-.58.99-1.07,1.74-.19.22-.42.56-.7,1.01s-.51.84-.7,1.18c-.67,1.05-1.24,2.03-1.69,2.95-.45.92-.99,1.9-1.63,2.95-.08.08-.15.14-.22.2-.08.06-.11.1-.11.14.19.53.15.96-.11,1.29-.26.34-.54.66-.84.96-.22.22-.34.41-.34.56-.22,1.05-.66,2.02-1.29,2.92-.64.9-1.12,1.85-1.46,2.87-.08.19-.14.39-.2.62-.06.22-.12.45-.2.67,0,.11-.03.25-.08.42s-.12.29-.2.37c-.3.34-.56.66-.79.98-.22.32-.22.65,0,.98l-1.12,1.07c-.19-.19-.41-.28-.67-.28s-.52.02-.79.06c-.26.04-.52.05-.79.03-.26-.02-.51-.16-.73-.42.04-.34.08-.68.11-1.04.04-.36.21-.7.51-1.04.04-.07.08-.15.11-.22.04-.07.06-.15.06-.22,0-.49.08-.96.25-1.4.17-.45.38-.89.65-1.32.26-.43.51-.86.76-1.29.24-.43.46-.87.65-1.32.19-.64.41-1.26.67-1.88.26-.62.56-1.23.9-1.83.6-.82,1.15-1.79,1.66-2.89.51-1.1.98-2.09,1.43-2.95.07-.19.25-.52.53-1.01s.59-1.02.93-1.6c.34-.58.68-1.16,1.04-1.74.36-.58.65-1.08.87-1.49l.51-.84h-.06ZM410.8,38.75l-.17-.11c-.11.04-.24.13-.39.28.04,0,.07.02.08.06.02.04.05.06.08.06l.39-.28ZM412.26,35.94c-.08,0-.15-.04-.22-.11l-.28.22.11.06.39-.17ZM413.89,34.43c.07-.34,0-.5-.22-.48-.22.02-.41,0-.56-.08.04.37-.09.58-.39.62-.3.04-.54.15-.73.34l.9.67c0-.3.07-.56.2-.79.13-.22.38-.32.76-.28h.06ZM412.94,33.69l.11.11-.11-.11ZM413.05,33.81s.02.06.06.06l-.06-.06ZM413.84,34.76l.06-.28c-.04.07-.08.14-.14.2-.06.06-.07.12-.03.2l.11-.11ZM415.19,31.84c-.53.19-.83.32-.93.39-.09.08-.22.32-.37.73l1.29-1.12ZM414.68,33.08c-.15,0-.41-.04-.79-.11.15.08.25.13.31.17.06.04.14.08.25.11,0-.04.07-.09.22-.17ZM415.07,28.41l-.45.84c.04-.11.11-.27.22-.48.11-.21.19-.33.22-.37ZM421.14,23.41c.07-.34,0-.5-.22-.48-.22.02-.43,0-.62-.08.04.37-.08.58-.37.62-.28.04-.5.15-.65.34l.67.56s.06,0,.08-.03c.02-.02.05-.03.08-.03,0-.26.07-.49.22-.67.15-.19.39-.26.73-.22h.06ZM420.3,22.85l-.06-.11v.06s.02.06.06.06ZM421.14,23.75l-.06-.28c-.08.15-.11.28-.11.39l.17-.11ZM422.43,20.83c-.53.19-.83.32-.93.39-.09.08-.2.32-.31.73l1.24-1.12ZM421.93,22.06c-.19,0-.43-.04-.73-.11.11.07.21.13.28.17.07.04.15.07.22.11l.22-.17Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M470.92,17.96c-.45.37-.62.71-.51,1.01l-.11.28c-.3.45-.58.9-.84,1.35-.26.45-.54.92-.84,1.4-.19.11-.34.26-.45.45.07.15.11.26.11.34-.11.04-.17.08-.17.11-.11.26-.34.58-.67.96l-1.18,1.63c-.34.45-.64.96-.9,1.52l-.73.9c-.08.15-.16.29-.25.42-.09.13-.14.29-.14.48.04.11-.02.22-.17.34-.15.11-.37.34-.65.67-.28.34-.64.85-1.07,1.54-.43.69-.93,1.66-1.49,2.89-.19.22-.34.4-.45.53-.11.13-.21.26-.28.39-.08.13-.14.28-.2.45-.06.17-.14.4-.25.7-.26.3-.44.6-.53.9-.09.3-.23.6-.42.9l-1.01,1.97s-.08.06-.11.06c.04,0-.11.3-.45.9-.34.6-.72,1.3-1.15,2.11-.43.81-.87,1.65-1.32,2.53-.45.88-.77,1.62-.96,2.22.07.26.06.51-.06.73-.11.22-.26.45-.45.67l-.39.51s.04.09,0,.28c-.04.19-.08.42-.14.7-.06.28-.12.58-.2.9-.08.32-.15.59-.22.81-.04.19-.08.38-.14.59-.06.21-.1.4-.14.59-.04.11-.08.19-.11.22-.04.04-.17.09-.39.17.07-.15.15-.37.22-.67l-.67.34c-.04.07-.08.16-.11.25-.04.09-.08.23-.11.42-.08-.11-.13-.19-.17-.22-.04-.04-.06-.09-.06-.17.07-.37.09-.67.06-.9.07-.34.06-.62-.06-.84-.15.11-.25.22-.31.31-.06.09-.12.18-.2.25-.11-.11-.22-.22-.31-.31-.09-.09-.16-.18-.2-.25l-.06.06c-.04-.11-.05-.22-.03-.34.02-.11.03-.22.03-.34.04-.08.05-.15.03-.22-.02-.08,0-.15.03-.22-.08-.07-.11-.17-.11-.28.11-.11.16-.21.14-.28-.02-.08-.05-.15-.08-.22-.19-.22-.06-.39.39-.51-.04-.08-.05-.15-.03-.22.02-.08,0-.15-.08-.22,0-.49.09-1.02.28-1.6.19-.58.4-1.17.65-1.77.24-.6.51-1.18.79-1.74.28-.56.5-1.09.65-1.57.19-.52.42-1.07.7-1.63.28-.56.57-1.1.87-1.63.11-.3.33-.79.65-1.46.32-.67.7-1.2,1.15-1.57.07-.3.18-.59.31-.87.13-.28.35-.53.65-.76l.22-.45c.19-.26.19-.41,0-.45.11-.3.25-.57.42-.81.17-.24.31-.5.42-.76.07-.11.15-.22.22-.31.07-.09.13-.18.17-.25.34-.22.52-.49.56-.79.11-.37.45-.99,1.01-1.85s1.29-1.91,2.19-3.15c.19-.19.3-.34.34-.45.19-.52.44-1.02.76-1.49.32-.47.65-.95.98-1.43l.22-.56c-.3.19-.54.36-.73.51-.19.15-.37.32-.56.51-.3.26-.56.52-.79.76s-.47.5-.73.76l-.62.62c-.26.34-.49.34-.67,0l-.45.56.62-.17c-.15.19-.3.36-.45.51-.15.15-.26.32-.34.51h-.06c-.22.19-.44.37-.65.56-.21.19-.38.39-.53.62-.04-.07-.08-.14-.14-.2-.06-.06-.1-.12-.14-.2-.08.15-.16.28-.25.39-.09.11-.12.21-.08.28.07.19.05.33-.08.42-.13.09-.23.18-.31.25-.15.07-.28.16-.39.25-.11.09-.21.22-.28.37-.11.19-.22.28-.34.28-.22-.04-.38.04-.48.22s-.22.34-.37.45l-.11.11c-.26.52-.5.93-.7,1.21-.21.28-.63.61-1.26.98-.26.15-.45.31-.56.48s-.22.4-.34.7c0,.15-.08.24-.22.28-.22.11-.42.25-.59.42-.17.17-.36.39-.56.67-.21.28-.48.64-.81,1.07-.34.43-.79.96-1.35,1.6-.22.34-.48.67-.76.98-.28.32-.55.63-.81.93-.11.19-.24.28-.39.28-.3.07-.59.15-.87.22-.28.07-.55.07-.81,0-.08-.04-.16-.05-.25-.03-.09.02-.18,0-.25-.03-.26,0-.47-.04-.62-.11-.08-.04-.14-.07-.2-.11-.06-.04-.14-.04-.25,0-.08.04-.14.04-.2,0-.06-.04-.07-.09-.03-.17-.37-.07-.61-.42-.7-1.04-.09-.62.03-1.45.37-2.5,0-.04.03-.09.08-.17.06-.07.08-.15.08-.22.04-.04.11-.21.22-.51.11-.3.22-.64.31-1.01.09-.37.19-.72.28-1.04.09-.32.16-.53.2-.65.19-.41.34-.83.45-1.26.11-.43.26-.85.45-1.26.41-.9.77-1.87,1.07-2.92.04-.07.08-.15.14-.22.06-.07.08-.17.08-.28-.41.22-.75.54-1.01.96-.38.52-.7.96-.98,1.32-.28.36-.57.73-.87,1.12-.3.39-.67.85-1.1,1.38-.43.53-.98,1.22-1.66,2.08-.67.86-1.52,1.95-2.53,3.26-1.01,1.31-2.25,2.96-3.71,4.94-.11.26-.24.51-.39.73-.15.22-.32.45-.51.67l-.34.22s-.08.07-.14.08c-.06.02-.12.07-.2.14-.11.26-.28.49-.51.67-.08.04-.33.47-.76,1.29-.43.82-1.04,1.69-1.83,2.58-.11.08-.24.24-.39.51-.15.26-.33.54-.53.84-.21.3-.42.55-.65.76-.22.21-.47.29-.73.25-.22-.04-.42-.07-.59-.08-.17-.02-.35.06-.53.25l-.62-.51c-.15-.11-.3-.13-.45-.06-.15.07-.32.19-.51.34l-.17-.45c-.07-.22-.06-.39.06-.51.07-.3.19-.57.34-.81.15-.24.32-.5.51-.76-.04-.07-.02-.13.06-.17.07-.04.11-.09.11-.17.07-.15.16-.28.25-.39.09-.11.23-.21.42-.28.15-.07.29-.19.42-.34.13-.15.18-.32.14-.51,0-.19.15-.45.45-.79s.81-.95,1.52-1.83c.71-.88,1.67-2.1,2.87-3.65,1.2-1.55,2.72-3.66,4.55-6.32.26-.22.49-.52.67-.9.07-.07.11-.15.11-.22s.04-.15.11-.22c.34-.19.58-.4.73-.65.15-.24.32-.5.51-.76.07-.11.14-.21.2-.28.06-.07.12-.15.2-.22.11-.07.26-.24.45-.51.19-.26.39-.53.62-.81.22-.28.46-.56.7-.84.24-.28.46-.5.65-.65.15,0,.22-.07.22-.22.22-.22.41-.52.56-.9l.39-.17c.3-.41.61-.82.93-1.24.32-.41.68-.79,1.1-1.12.22-.19.49-.46.79-.81.3-.36.6-.73.9-1.12.3-.39.61-.8.93-1.21.32-.41.61-.79.87-1.12.11-.15.26-.29.45-.42.19-.13.37-.29.56-.48-.08-.19-.08-.34,0-.45.07-.11.21-.24.39-.39.19-.07.34-.18.45-.31.11-.13.26-.16.45-.08.11.08.26.06.45-.06.26-.11.51-.21.73-.28.22-.07.37-.07.45,0,.3.19.62.28.96.28.07,0,.14.02.2.06.06.04.12.08.2.11.07,0,.14-.02.2-.06.06-.04.12-.07.2-.11.15,0,.22.02.22.06.04.15.11.25.22.31s.21.14.28.25c0,.15-.02.32-.06.51-.04.19-.09.37-.17.56-.11.34-.25.68-.42,1.04-.17.36-.31.7-.42,1.04-.3-.07-.51.19-.62.79-.11.6-.41,1.27-.9,2.02l-.06.06c-.19.22-.3.44-.34.65-.04.21-.09.4-.17.59,0,.26-.06.45-.17.56-.11.19-.19.32-.22.39-.04.07-.06.21-.06.39-.04.07-.08.13-.14.17-.06.04-.12.09-.2.17.19.15.25.33.2.53-.06.21-.14.42-.25.65-.08.19-.16.38-.25.59-.09.21-.18.4-.25.59-.37,0-.56.17-.56.51-.08.15-.13.28-.17.39-.04.11-.08.24-.11.39.07.37-.09.66-.51.84-.08.19-.08.34,0,.45.07.11.07.24,0,.39.04.11.02.25-.06.42-.08.17-.15.35-.22.53l.96-.73s.06-.13.06-.28c.07-.15.13-.27.17-.37.04-.09.15-.2.34-.31.15-.07.28-.17.39-.28.11-.11.24-.22.39-.34.3-.37.61-.74.93-1.1.32-.36.66-.7,1.04-1.04,0-.04.09-.09.28-.17.34-.04.52-.17.56-.39-.04-.19.07-.36.34-.51.11-.07.29-.21.53-.39.24-.19.5-.38.76-.59.26-.21.5-.41.7-.62s.35-.4.42-.59c.37-.07.56-.22.56-.45.07-.19.17-.29.28-.31.11-.02.22-.07.34-.14-.08-.19-.08-.32,0-.39.22-.19.46-.37.7-.56.24-.19.44-.43.59-.73,0-.04.06-.1.17-.2.11-.09.31-.27.59-.53.28-.26.66-.63,1.15-1.1.49-.47,1.12-1.1,1.91-1.88.04-.07.21-.24.51-.51.3-.26.64-.58,1.01-.96-.08,0-.09-.02-.06-.06l.28-.17c.41-.37.8-.72,1.15-1.04.36-.32.57-.5.65-.53.04-.04.06-.04.06,0s-.04.09-.11.17l.96-.45c.22-.07.41-.11.56-.11s.32-.02.51-.06c.15-.04.28-.05.39-.03.11.02.24.03.39.03-.04.08-.05.13-.03.17.02.04.03.09.03.17.15,0,.26-.04.34-.11.19-.15.37-.22.56-.22s.37.02.56.06c.41,0,.6.21.56.62,0,.07,0,.16.03.25.02.09.03.18.03.25.11.11.15.22.11.34-.08.19-.09.35-.06.48.04.13.09.27.17.42ZM429.85,45.38c-.08.22.04.39.34.51,0-.26.04-.49.11-.67l-.45.17ZM431.7,43.86v-.06s-.06,0-.06.03c0,.02-.02.03-.06.03l.06.06.06-.06ZM431.87,42.12l.45.22-.11-.51-.34.28ZM436.48,35.72c.04.11.04.21,0,.28-.04.07-.04.15,0,.22.3-.3.54-.6.73-.9l-.73.39ZM437.66,34.65l-.11-.06c-.08.07-.11.13-.11.17s-.02.08-.06.11c-.08.07-.1.15-.08.22.02.08,0,.15-.08.22l.45-.67ZM439.79,32.12c.3-.15.48-.25.53-.31.06-.06.1-.18.14-.37-.19.11-.35.21-.48.28-.13.07-.2.21-.2.39ZM441.93,30.16c-.15-.04-.25-.05-.31-.03-.06.02-.08.12-.08.31l.39-.28ZM442.43,29.26v.06l.06-.06h-.06ZM446.99,29.76s.06.11.06.22c.07-.11.09-.19.06-.22h-.11ZM447.72,32.29c.11-.11.18-.2.2-.25.02-.06,0-.18-.08-.37,0,.19-.04.39-.11.62ZM448.05,30.32v-.11h-.06s-.04.08,0,.11h.06ZM448.95,27.85h-.06l-.11.06.17-.06ZM450.86,23.19l-.06.06.06.06v-.11ZM451.09,53.25s.04-.08.11-.11h-.06s-.08.02-.11.06l.06.06ZM451.09,52.52c.26-.15.47-.3.62-.45l.17-.9c-.19.3-.31.46-.37.48-.06.02-.14-.03-.25-.14-.11.19-.17.37-.17.53v.48ZM451.59,50.38l.06-.06v-.06l-.11.06.06.06ZM451.76,49.37c0,.15.02.26.06.34h.06s.05-.08.03-.11c-.02-.04,0-.07.03-.11l-.11-.11h-.06ZM451.82,48.81s-.04.02,0,.06v.06s.07,0,.08-.03c.02-.02.05-.03.08-.03-.04-.04-.04-.07,0-.11-.04,0-.06,0-.06.03s-.02.03-.06.03h-.06ZM452.32,51.06c-.11.07-.17.21-.17.39,0-.08.02-.14.06-.2.04-.06.07-.12.11-.2ZM452.32,47.35c-.04.22.09.36.39.39-.04-.19-.04-.41,0-.67l-.39.28ZM452.83,30.04s.07-.02.11-.06l-.06-.06s-.04.07-.11.11h.06ZM453.11,48.08v-.17h-.06v.11l.06.06ZM453.62,44.48v.06s.06-.02.06-.06h-.06ZM453.73,43.86l.51.11-.22-.45-.28.34ZM454.4,42.96s.02.06.06.06l.11-.06s-.08-.06-.11-.06l-.06.06ZM454.96,28.3h-.22l-.06.11h.22l.06-.11ZM454.91,42.23l.06-.28h-.06l-.06.28h.06ZM455.19,29.09s-.07,0-.08.03c-.02.02-.05.03-.08.03v.11s.07-.06.11-.06l.06-.11ZM455.19,27.91c.07-.07.11-.12.11-.14,0-.02-.04,0-.11.08.04,0,.04,0,0,.03-.04.02-.04.03,0,.03ZM455.69,40.55c.07-.07.11-.13.11-.17h-.06s-.06.08-.06.11v.06ZM457.72,25.55c-.15.11-.29.22-.42.31-.13.09-.25.2-.37.31l-.28.28s.06,0,.06.03c0,.02.02.03.06.03l.96-.96ZM456.65,37.96c.07-.04.14-.07.2-.11.06-.04.12-.07.2-.11-.04,0-.06,0-.06-.03,0-.02-.02-.03-.06-.03l-.28.22s.04.02,0,.06ZM457.49,34.03c-.07.11-.13.22-.17.34-.04.11-.09.21-.17.28.04,0,.06,0,.06.03s.02.03.06.03l.34-.62-.11-.06ZM457.16,37.01c.07.07.1.15.08.22-.02.07,0,.15.03.22.11-.19.2-.36.25-.51.06-.15.12-.3.2-.45l-.56.51ZM457.6,33.69v.06l.06-.06v-.06l-.06.06ZM458.11,35.77l-.06-.06c-.08.08-.13.14-.17.2-.04.06-.09.1-.17.14v.45l.39-.73ZM458.22,37.23s.06,0,.06-.03.02-.03.06-.03h.06s-.02-.07-.06-.08c-.04-.02-.04-.05,0-.08-.08.04-.1.07-.08.08.02.02,0,.07-.03.14ZM458.5,32.18s-.08.06-.11.06-.06.02-.06.06v.06l.17-.17ZM458.78,35.72l-.17.17.06.11.11-.11v-.17ZM459.18,31.17c-.19.08-.28.14-.28.2s.02.12.06.2c.07-.07.12-.14.14-.2.02-.06.05-.12.08-.2ZM459.63,23.64l.06-.06-.11.06h.06ZM459.85,32.96c.3-.19.47-.32.51-.39.04-.07.06-.21.06-.39-.15.15-.3.27-.45.37-.15.09-.19.23-.11.42ZM463.11,25.66s-.03.05.03.03c.06-.02.08-.05.08-.08l-.11-.11-.11.06.11.11ZM464.57,22.57s-.06,0-.06-.03-.02-.03-.06-.03c-.08.11-.17.23-.28.37s-.21.25-.28.37c.04,0,.07.02.11.06l.56-.73ZM465.25,16.89s-.06-.07-.06-.11c-.11.07-.21.17-.28.28l.34-.17ZM465.7,20.43c.07-.07.11-.13.11-.17l-.06-.06s0,.07-.03.08c-.02.02-.03.05-.03.08v.06Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M476.09,42.8c-.22.19-.45.37-.67.53-.22.17-.45.35-.67.53h1.46c-.41.52-.85.93-1.32,1.21-.47.28-.93.57-1.38.87-.11.08-.22.11-.34.11s-.22.04-.34.11c-.64.75-1.39,1.35-2.25,1.8-.86.45-1.71.88-2.53,1.29-.71.34-1.41.59-2.11.76-.69.17-1.4.33-2.11.48-.53.11-1.02.18-1.49.2-.47.02-.93,0-1.38-.08-1.95-.19-2.98-1.16-3.09-2.92-.15-1.87.43-3.73,1.74-5.56.41-.49.81-.96,1.21-1.4.39-.45.74-.94,1.04-1.46.22-.37.6-.82,1.12-1.35.52-.52,1.09-1.07,1.69-1.63.6-.56,1.18-1.1,1.74-1.63s.97-.97,1.24-1.35c.3-.19.61-.37.93-.56.32-.19.65-.39.98-.62.26-.15.51-.3.76-.45.24-.15.48-.37.7-.67.19-.22.42-.44.7-.65.28-.21.55-.4.81-.59.71-.41,1.41-.81,2.11-1.21.69-.39,1.38-.8,2.05-1.21.64-.34,1.22-.51,1.74-.51s.99.09,1.4.28c.52.19,1.01.42,1.46.7.45.28.92.57,1.4.87.19.08.37.28.56.62-1.5.97-3.05,1.74-4.66,2.3-.19-.07-.23-.18-.14-.31.09-.13.23-.28.42-.45.19-.17.37-.33.53-.48.17-.15.25-.26.25-.34-.08,0-.26.08-.56.25-.3.17-.47.25-.51.25-.56.37-1.12.74-1.69,1.1-.56.36-1.14.7-1.74,1.04-.15.11-.3.22-.45.31-.15.09-.26.2-.34.31-.49.56-1.02,1.01-1.6,1.35-.58.34-1.13.69-1.66,1.07-.3.19-.59.38-.87.59-.28.21-.46.52-.53.93,0,.15-.09.3-.28.45-.19.15-.34.28-.45.39-.75.52-1.5,1.11-2.25,1.74-.75.64-1.37,1.33-1.85,2.08-.11.19-.26.39-.45.62-.19.22-.37.39-.56.51-.3.19-.48.41-.53.67-.06.26-.2.49-.42.67-.41.22-.62.47-.62.73s-.04.54-.11.84c-.04.15-.11.3-.22.45-.11.15-.24.36-.39.62.15.04.29.08.42.14.13.06.29.05.48-.03,1.12-.19,2.33-.47,3.62-.84,1.29-.37,2.5-.82,3.62-1.35.97-.45,1.94-.89,2.89-1.32.96-.43,1.94-.87,2.95-1.32.07.07.16.15.25.22.09.07.18.17.25.28ZM458.45,46.62c0,.11.04.19.11.22.15-.04.32-.19.51-.45l-.17-.34c-.3.22-.45.39-.45.51v.06ZM460.98,42.68c-.04.07-.08.13-.11.17-.04.04-.06.09-.06.17-.07.19-.04.28.11.28.19,0,.36-.11.51-.34l-.28-.28h-.17ZM461.65,43.75l-.06.06c-.15.15-.22.26-.22.34,0,.11.04.19.11.22,0,.04,0,.07.03.08.02.02,0,.1-.03.25l.67-.45-.17-.34-.17-.22-.17.06ZM462.49,42.12l-.11.11h.11v-.11ZM465.02,48.64v.17c.11,0,.32-.06.62-.17l.06-.28c-.37.11-.58.21-.62.28h-.06ZM469.4,46.95c-.22.07-.36.15-.39.22-.15.07-.17.13-.06.17.15.04.34.02.56-.06l-.06-.28-.06-.06ZM472.77,31.34s-.06.02-.06.06c0,.11.02.19.06.22.11-.04.34-.19.67-.45l-.06-.34c-.37.26-.58.43-.62.51ZM475.08,31.5c-.11,0-.21.02-.28.06-.08.04-.13.06-.17.06-.07.04-.11.13-.11.28-.04.07-.07.14-.08.2-.02.06-.05.12-.08.2-.04.07-.06.15-.06.22.56-.34.9-.56,1.01-.67,0-.04,0-.11-.03-.22-.02-.11-.08-.17-.2-.17v.06ZM476.93,27.46c-.08.08-.14.13-.2.17s-.1.09-.14.17c-.11.19-.11.28,0,.28.22,0,.45-.11.67-.34l-.17-.28h-.17ZM477.16,28.53l-.06.06c-.22.15-.36.26-.39.34-.08.07-.06.15.06.22-.04.04-.06.07-.06.08,0,.02-.06.1-.17.25l.9-.45v-.34l-.11-.22-.17.06Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M488.67,32.46c.41-.34.62-.63.62-.87s-.09-.51-.28-.81c-.19.08-.33.13-.42.17-.09.04-.18.09-.25.17.22-.3.46-.58.7-.84.24-.26.5-.54.76-.84l.17-.22c.19-.26.38-.49.59-.67.21-.19.51-.22.93-.11l-.06-.06s.17,0,.39-.14.37-.29.45-.48v-.06s.02-.07.06-.11v.06c.26,0,.43-.02.51-.06.07,0,.13-.02.17-.06l-.06.06c.07-.07.12-.17.14-.28.02-.11.05-.21.08-.28,0-.15-.04-.26-.11-.34.41-.45.77-.94,1.07-1.46l.22-.51.96.45s.07,0,.08.03c.02.02.05.03.08.03l.17-.11c.15-.52.39-.98.73-1.38.34-.39.69-.74,1.07-1.04.3-.3.6-.58.9-.84.3-.26.56-.54.79-.84l-.56.22.06-.06s-.06.02-.06.06l.11-.11c.19-.22.4-.46.65-.7.24-.24.51-.46.81-.65-.19.15-.29.3-.31.45-.02.15-.03.32-.03.51v.34l.17.11c.52-.19.81-.41.84-.67.04-.26.02-.64-.06-1.12l.79-.39.22.39.51-.28.96-.73c0-.07-.02-.13-.06-.17.22-.15.36-.28.39-.39.19-.34.37-.58.53-.73.17-.15.35-.28.53-.39l.51-.34v.06c1.42-.71,2.83-1.07,4.21-1.07,1.24,0,2.49.26,3.76.79.07.04.17.05.28.03.11-.02.21-.03.28-.03h.28c.37.11.65.27.81.48.17.21.27.42.31.65.04.22.03.45-.03.67-.06.22-.14.39-.25.51.04.26,0,.52-.14.79-.13.26-.29.54-.48.84-.15.15-.3.37-.45.67-.34.07-.55.04-.65-.11-.09-.15-.16-.32-.2-.51-.08-.26-.21-.49-.39-.67-.41-.11-.91-.15-1.49-.11-.58.04-1.19.12-1.83.25-.64.13-1.25.31-1.83.53s-1.08.51-1.49.84c-1.72,1.35-3.43,2.78-5.11,4.3-1.69,1.52-3.26,2.97-4.72,4.35h.06c-.79.67-1.42,1.32-1.91,1.94-.49.62-.97,1.25-1.46,1.88-.3.41-.61.83-.93,1.26-.32.43-.67.85-1.04,1.26-.37.45-.74.95-1.1,1.49-.36.54-.7,1.08-1.04,1.6l-1.63,2.36c-.08.26-.21.51-.39.73,0,.07-.03.14-.08.2-.06.06-.08.12-.08.2v-.06c-.41.52-.71,1.08-.9,1.66-.19.58-.36,1.17-.51,1.77-.08.3-.14.6-.2.9-.06.3-.1.6-.14.9l-.06.28c-.08.3-.06.57.06.81s.26.46.45.65c.19.19.41.31.67.37.26.06.52.03.79-.08,2.06-.71,4.07-1.61,6.04-2.7s4.09-2.6,6.38-4.55c.6-.49,1.05-.94,1.35-1.35l.84-.9h-.06c.52-.41.96-.84,1.32-1.29.36-.45.74-.9,1.15-1.35.11-.19.25-.37.42-.56.17-.19.35-.39.53-.62-.15,0-.34,0-.56.03-.22.02-.41.03-.56.03-.3.04-.6.06-.9.06h-.9c-.75,0-1.46-.1-2.14-.31-.67-.21-1.22-.59-1.63-1.15v-.06s.07-.09.11-.17c.04-.07.09-.15.17-.22.34-1.01.76-1.69,1.26-2.02.51-.34,1.26-.39,2.28-.17.3.04.58.04.84,0,.26-.04.56-.21.9-.51v.06c.19-.11.42-.19.7-.22s.51-.04.7,0c.41.19.89.3,1.43.34.54.04,1.1.04,1.66,0,.15,0,.35,0,.59-.03.24-.02.44-.03.59-.03.34.04.79.06,1.35.06s1.09-.02,1.57-.06c.15,0,.32,0,.51-.03.19-.02.34-.06.45-.14.11-.04.22-.07.34-.11s.22-.06.34-.06.32-.04.62-.11c.26-.07.53-.1.81-.08.28.02.5.07.65.14.3.26.62.44.96.53.34.09.71.18,1.12.25l.84.11c-.11,0-.13.04-.06.11-.52.75-1.19,1.26-1.99,1.54-.81.28-1.64.5-2.5.65-.19.04-.39.09-.62.17-.22.07-.45.21-.67.39v-.06c-.19.04-.45.11-.79.22-.34.11-.68.23-1.04.37-.36.13-.68.25-.98.37-.3.11-.52.21-.67.28l-1.07,2.02c-1.05,1.69-1.93,3.16-2.64,4.44-.71,1.27-1.24,2.47-1.57,3.6,0,.07-.02.14-.06.2-.04.06-.08.12-.11.2-.08.11-.15.22-.22.34-.08.11-.09.22-.06.34-.04.15-.1.32-.2.51-.09.19-.27.37-.53.56v.39c-.04.22-.08.44-.11.65-.04.21-.13.38-.28.53-.19.41-.29.74-.31.98-.02.24.2.42.65.53h-.06c.22.19.34.37.34.56s-.06.39-.17.62v-.06c-.15.19-.37.37-.67.56-.3.19-.62.34-.96.45s-.65.19-.93.22c-.28.04-.48,0-.59-.11-.3-.19-.56-.37-.79-.56-.22-.19-.47-.37-.73-.56v.06c-.19-.22-.28-.56-.28-1.01s.04-.88.11-1.29c0-.19.09-.54.28-1.07.19-.52.37-1.1.56-1.74.15-.41.32-.88.51-1.4.19-.52.34-.99.45-1.4-.94.97-1.85,1.85-2.72,2.64-.88.79-1.56,1.39-2.05,1.8l-.62.56v-.06l-.34.22c-.75.49-1.48.93-2.19,1.32-.71.39-1.48.65-2.3.76-.53.07-1,.14-1.43.2-.43.06-.85.08-1.26.08-1.31,0-2.51-.26-3.6-.79-1.09-.52-2.08-1.39-2.98-2.58-.08-.15-.11-.41-.11-.79-.04-.49-.05-.96-.03-1.4.02-.45.08-.92.2-1.4.19-.9.56-1.87,1.12-2.92.3-.41.58-.86.84-1.35.26-.49.43-.99.51-1.52-.04-.52.09-1.01.39-1.46.3-.45.6-.86.9-1.24.11-.07.22-.19.34-.34s.21-.28.28-.39h.06s.06,0,.06-.03.02-.03.06-.03l-.34.67.62.11c-.08-.26-.02-.54.17-.84h.22l.06-.39c.22-.26.49-.51.79-.76.3-.24.54-.51.73-.81l.39-.73h.17l.28-.17v-.22h-.11l.17-.84c-.67.56-1.22,1.05-1.63,1.46.26-.45.53-.89.81-1.32.28-.43.57-.85.87-1.26-.15.19-.11.43.11.73l.22.45h.11ZM486.2,34.54c-.11.11-.17.24-.17.39l-.28,1.01-.28.39h-.45c.11-.26.23-.5.37-.7.13-.21.27-.46.42-.76.15-.34.39-.67.73-1.01l-.34.67ZM489.35,29.99l.34.56.67-.79.51-.62-.28-.45-1.24,1.29ZM492.61,26.39c.07.15.21.22.39.22l-.34.56-.22-.06.17-.73ZM494.35,24.7s.04-.09.11-.17l-.11.17ZM495.75,23.58l-.51.28h.06c-.34.22-.62.45-.84.67l.67-.79.06-.06c.41-.45.9-.89,1.46-1.32.56-.43,1.2-.81,1.91-1.15l-.11.06.11-.06c-.49.56-.9.97-1.24,1.24-.34.26-.69.54-1.07.84l-.51.28ZM500.14,19.76c.07-.07.16-.14.25-.2.09-.06.21-.12.37-.2l-.62.39ZM503.23,17.85l-.22.45c-.08.08-.14.13-.2.17-.06.04-.18.09-.37.17l-.9.34-.06-.06.84-.45v-.06l.9-.56ZM505.19,17.34c.15,0,.24.02.28.06.22-.07.37-.15.45-.22.07-.07.13-.15.17-.22.04-.11-.08-.34-.34-.67l-.56,1.07Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M535.36,29.93c-.82.41-1.6.76-2.33,1.04-.73.28-1.49.57-2.28.87-.94.3-1.8.7-2.58,1.21-.79.51-1.61,1-2.47,1.49-1.39.75-2.77,1.63-4.16,2.64-1.01.75-1.81,1.35-2.39,1.8-.58.45-1.1.89-1.54,1.32-.45.43-.89.94-1.32,1.52-.43.58-1,1.38-1.71,2.39-.37.52-.68,1.07-.93,1.63-.24.56-.68,1.35-1.32,2.36-.3.64-.59,1.17-.87,1.6-.28.43-.74.76-1.38.98-.15-.07-.23-.19-.25-.34-.02-.15-.05-.26-.08-.34-.04-.08-.1-.08-.2-.03-.09.06-.31.23-.65.53l-.84-.56c-.6-.45-.88-.9-.84-1.35-.04.04-.05.05-.03.03.02-.02.07-.1.14-.25.04-.26.21-.6.51-1.01.04,0,.06-.02.06-.06.37-.67.86-1.58,1.46-2.72.6-1.14,1.22-2.29,1.85-3.46.64-1.16,1.23-2.23,1.77-3.2.54-.97.96-1.65,1.26-2.02.11-.15.19-.29.22-.42.04-.13.09-.25.17-.37.34-.34.51-.68.53-1.04.02-.36.22-.7.59-1.04.3-.26.53-.56.7-.9.17-.34.38-.67.65-1.01h.06c-.04-.07-.07-.17-.08-.28-.02-.11,0-.21.08-.28.45-.49.67-1.03.67-1.63-.08-.45.03-.85.31-1.21s.63-.68,1.04-.98c.37-.26.74-.37,1.1-.34.36.04.68.15.98.34.26.15.52.24.79.28,1.46.3,1.61,1.14.45,2.53l-.45.67c-.22.41-.48.81-.76,1.21s-.55.8-.81,1.21l-.56,1.12-1.07,1.8c.75-.67,1.56-1.35,2.44-2.02.88-.67,1.66-1.2,2.33-1.57.67-.37,1.27-.75,1.8-1.12.52-.37,1.16-.73,1.91-1.07.94-.49,1.88-.96,2.84-1.4.96-.45,1.96-.81,3.01-1.07.19-.04.4-.05.65-.03.24.02.4.08.48.2.15.34.25.51.31.51s.25-.09.59-.28c.11.19.23.34.37.45.13.11.23.26.31.45.15.19.16.41.03.67-.13.26-.31.45-.53.56ZM511.43,47.07s.06-.07.06-.11l-.06-.06s-.02.08-.06.11c0,.04.02.06.06.06ZM514.41,38.75c-.08-.04-.11-.07-.11-.11s-.04-.04-.11,0c-.11.04-.24.13-.39.28.04,0,.07.02.11.06.04.04.07.06.11.06l.39-.28ZM515.92,35.94s-.09-.04-.17-.11l-.28.22.11.06.34-.17ZM517.61,34.43c.11-.34.06-.5-.14-.48-.21.02-.38,0-.53-.08,0,.19-.04.32-.11.39-.08.07-.18.14-.31.2-.13.06-.26.1-.39.14-.13.04-.23.11-.31.22l.79.67c.07-.3.17-.56.28-.79.11-.22.34-.32.67-.28h.06ZM516.77,33.69l.11.11-.11-.11ZM516.88,33.81s.02.06.06.06l-.06-.06ZM517.67,34.76l-.06-.28c0,.07-.02.14-.06.2-.04.06-.04.12,0,.2l.11-.11ZM519.07,31.84c-.53.19-.83.32-.93.39-.09.08-.23.32-.42.73l1.35-1.12ZM518.51,33.08c-.15,0-.41-.04-.79-.11.15.08.26.13.34.17.07.04.17.08.28.11,0-.04.06-.09.17-.17ZM519.63,30.55s.06-.02.06-.06h-.39v.06h.34ZM520.7,28.98c0,.07.02.11.06.11l.11-.06-.06-.06h-.11ZM523.28,35.77c.04-.07.07-.15.11-.22.04-.07.06-.15.06-.22l-.22-.11s0,.07-.03.08c-.02.02-.03.05-.03.08l-.06.06.17.34Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M552.89,31.22c-.15.11-.3.23-.45.37-.15.13-.24.25-.28.37-.19.49-.47.88-.84,1.18-.37.3-.73.62-1.07.96-.04.15-.08.3-.11.45-.04.15-.09.32-.17.51-.08.41-.24.79-.51,1.12-.15.3-.32.41-.51.34-.19-.07-.36-.07-.51,0-.45.22-.89.46-1.32.7-.43.24-.87.5-1.32.76,0,.11,0,.22.03.34.02.11.03.21.03.28l.96-.51c.3.37.43.62.39.73-.04.11-.3.38-.79.79-.19.08-.31.19-.37.34-.06.15-.12.3-.2.45l.79-.11c-.26.49-.5.97-.7,1.46-.21.49-.46.97-.76,1.46-.3.49-.67.96-1.1,1.43-.43.47-.61.98-.53,1.54-.3.15-.46.29-.48.42-.02.13.05.27.2.42.07.04.07.12-.03.25-.09.13-.16.23-.2.31-.19.41-.4.83-.65,1.26-.24.43-.46.85-.65,1.26-.11.22-.15.42-.11.59.04.17.09.35.17.53.19.41.14.8-.14,1.15-.28.36-.67.5-1.15.42-.37-.04-.64.06-.79.28-.15.22-.36.36-.62.39-.19-.26-.34-.52-.45-.76-.11-.24-.26-.48-.45-.7-.15-.22-.24-.45-.28-.67-.04-.22.09-.51.39-.84.22-.3.22-.64,0-1.01-.08-.15-.09-.36-.06-.62.04-.26.11-.53.22-.81.11-.28.26-.55.45-.81.19-.26.39-.47.62-.62.19-.15.38-.28.59-.39.21-.11.46-.26.76-.45-.3,0-.53,0-.7.03-.17.02-.35.03-.53.03.07-.6.29-1.17.65-1.71.36-.54.68-1.08.98-1.6.07-.15.17-.29.28-.42.11-.13.17-.25.17-.37.22-.79.55-1.54.98-2.25.43-.71.93-1.4,1.49-2.08.19-.19.31-.37.37-.53.06-.17-.05-.33-.31-.48-.71.64-1.34,1.33-1.88,2.08-.54.75-1.32,1.37-2.33,1.85.04-.22.13-.51.28-.84l-.9.62-.45.34c.15.08.24.11.28.11.04.04.06.09.06.17.07.19.1.38.08.59-.02.21-.16.4-.42.59-.64.52-1.28,1.07-1.94,1.63-.66.56-1.3,1.12-1.94,1.69-.3.22-.57.44-.81.65-.24.21-.48.42-.7.65-.41.3-.81.58-1.21.84s-.81.54-1.26.84c-.97.71-1.9,1.11-2.78,1.21-.88.09-1.75,0-2.61-.25-.79-.19-1.34-.59-1.66-1.21-.32-.62-.57-1.3-.76-2.05.22-.3.47-.64.73-1.01.26-.37.6-.79,1.01-1.24.08-.3.13-.63.17-.98.04-.36.3-.7.79-1.04.3-.75.8-1.4,1.49-1.97.69-.56,1.26-1.16,1.71-1.8.67-.86,1.43-1.64,2.28-2.33.84-.69,1.58-1.47,2.22-2.33.41-.49.93-.93,1.54-1.32s1.19-.76,1.71-1.1c.82-.52,1.65-1.02,2.47-1.49.82-.47,1.67-.95,2.53-1.43l.17-.11c.22-.15.46-.25.7-.31.24-.06.5-.09.76-.11.26-.02.52-.07.79-.14.26-.07.52-.22.79-.45.22-.22.46-.37.7-.42.24-.06.49-.07.73-.06.24.02.49.05.73.08.24.04.48.04.7,0,.15,0,.28.03.39.08.11.06.22.12.34.2.19.07.39.17.62.28.22.11.43.24.62.39l1.4-1.18c.52-.07,1.01,0,1.46.22.45.22.94.34,1.46.34.19,0,.37.11.53.34s.29.43.37.62c.07.07.05.21-.08.39-.13.19-.27.32-.42.39-.19.11-.37.19-.56.22-.19.04-.37.09-.56.17.07.22.15.43.22.62.07.19.15.39.22.62-.22.19-.44.38-.65.59s-.38.4-.53.59ZM525.36,46.28c.08,0,.13-.02.17-.06v-.11c-.07,0-.11.02-.11.06l-.06.11ZM547.05,30.6c.26-.19.51-.38.73-.59.22-.21.34-.48.34-.81-.6-.15-1.21-.2-1.83-.14-.62.06-1.26.29-1.94.7-1.01.64-2.02,1.29-3.03,1.97-1.01.67-2,1.4-2.98,2.19l-.59.59c-.21.21-.35.46-.42.76.04.07.02.15-.06.22-.08.08-.15.13-.22.17-.6.3-1.11.65-1.54,1.04-.43.39-.83.81-1.21,1.26-.37.41-.74.83-1.1,1.26-.36.43-.74.85-1.15,1.26-.9.82-1.7,1.69-2.39,2.58-.69.9-1.23,1.95-1.6,3.15.82-.56,1.6-1.1,2.33-1.63.73-.52,1.47-1.05,2.22-1.57.9-.71,1.81-1.41,2.72-2.11.92-.69,1.81-1.47,2.67-2.33.86-.86,1.77-1.66,2.72-2.39.96-.73,1.86-1.53,2.73-2.39.52-.6,1.1-1.15,1.74-1.66.64-.51,1.25-1.02,1.85-1.54ZM530.25,41.62s-.06.04-.06.11h.11v-.06l-.06-.06ZM536.6,33.53c.04.08.05.17.03.28-.02.11,0,.21.08.28.15-.07.24-.11.28-.11,0-.19-.06-.37-.17-.56l-.22.11ZM537.78,31.73s-.08,0-.14.03c-.06.02-.1.03-.14.03,0,.08.04.15.11.22.04,0,.07,0,.08-.03.02-.02.07-.03.14-.03-.04-.04-.06-.11-.06-.22ZM539.18,31.39c.15.08.22.15.22.22.3-.22.47-.41.51-.56l-.73.34ZM540.08,31l.67-.34c-.08-.07-.09-.15-.06-.22l-.62.56ZM540.14,38.19c.34-.19.6-.34.79-.45.19-.11.34-.22.45-.31s.2-.22.25-.37c.06-.15.12-.34.2-.56l-1.69,1.69ZM543.01,29.65s-.09.06-.17.06c0,.07.02.11.06.11h.11v-.17ZM545.31,39.93c.15-.19.24-.38.28-.59.04-.21.09-.4.17-.59-.19.3-.4.6-.65.9-.24.3-.5.66-.76,1.07.26-.22.47-.38.62-.48.15-.09.26-.2.34-.31ZM545.03,38.86c.04-.07.08-.16.14-.25.06-.09.12-.18.2-.25-.04-.04-.08-.06-.11-.06l-.45.45.22.11Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M558.12,28.41l.06-.11-2.36.06c-.19.04-.37-.03-.53-.2-.17-.17-.27-.35-.31-.53-.19-.34-.22-.66-.11-.96v-.51l.34-.11c.15-.04.29-.07.42-.08.13-.02.23-.07.31-.14l.34-.28v.06c.3-.11.51-.32.62-.62l2.42-.34-.06.06,1.24-.22.17-.28c.11-.22.22-.37.31-.45.09-.07.08-.28-.03-.62,0-.07.04-.21.11-.39.07-.19.13-.34.17-.45l1.29-1.46c.41-.34.62-.75.62-1.24-.08-.37.06-.68.39-.93.34-.24.71-.37,1.12-.37.71-.04,1.26-.05,1.66-.03.39.02.93.03,1.6.03.26.6.26,1.18,0,1.74-.11.41-.28.77-.51,1.07s-.47.6-.73.9c-.34.34-.63.67-.87,1.01-.24.34-.48.69-.7,1.07.49-.11,1.18-.25,2.08-.42.9-.17,1.8-.33,2.7-.48.9-.15,1.71-.27,2.44-.37.73-.09,1.19-.14,1.38-.14l3.15-.45c.3-.04.59-.07.87-.08s.5,0,.65.08l.06-.06c.26-.19.49-.26.67-.22.19.04.37.09.56.17l.62.17c.15.04.26.07.34.08.07.02.22.03.45.03-.11.11-.27.21-.48.28-.21.07-.38.14-.53.2-.15.06-.26.08-.34.08s-.06,0,.06,0c.45-.07.96-.16,1.52-.25.56-.09,1.03-.17,1.4-.22.37-.06.6-.06.67,0,.07.06-.15.2-.67.42.26-.04.49-.05.67-.03.19.02.07.1-.34.25-.19.08-.74.22-1.66.45-.92.22-1.91.48-2.98.76-1.07.28-2.04.53-2.92.76-.88.22-1.38.36-1.49.39l-6.18,1.18c-.41.08-.81.14-1.18.2-.37.06-.67-.16-.9-.65l-.67.62-.22.22c-.64.22-1.29.39-1.97.51l-.34.45c.07,0,.14,0,.2.03.06.02.06.12,0,.31-.06.19-.2.49-.42.9-.22.41-.58.99-1.07,1.74-.19.22-.42.56-.7,1.01s-.51.84-.7,1.18c-.67,1.05-1.24,2.03-1.69,2.95-.45.92-.99,1.9-1.63,2.95-.08.08-.15.14-.22.2-.08.06-.11.1-.11.14.19.53.15.96-.11,1.29-.26.34-.54.66-.84.96-.22.22-.34.41-.34.56-.22,1.05-.66,2.02-1.29,2.92-.64.9-1.12,1.85-1.46,2.87-.08.19-.14.39-.2.62-.06.22-.12.45-.2.67,0,.11-.03.25-.08.42s-.12.29-.2.37c-.3.34-.56.66-.79.98-.22.32-.22.65,0,.98l-1.12,1.07c-.19-.19-.41-.28-.67-.28s-.52.02-.79.06c-.26.04-.52.05-.79.03-.26-.02-.51-.16-.73-.42.04-.34.08-.68.11-1.04.04-.36.21-.7.51-1.04.04-.07.08-.15.11-.22.04-.07.06-.15.06-.22,0-.49.08-.96.25-1.4.17-.45.38-.89.65-1.32.26-.43.51-.86.76-1.29.24-.43.46-.87.65-1.32.19-.64.41-1.26.67-1.88.26-.62.56-1.23.9-1.83.6-.82,1.15-1.79,1.66-2.89.51-1.1.98-2.09,1.43-2.95.07-.19.25-.52.53-1.01s.59-1.02.93-1.6c.34-.58.68-1.16,1.04-1.74.36-.58.65-1.08.87-1.49l.51-.84h-.06ZM553.85,38.75l-.17-.11c-.11.04-.24.13-.39.28.04,0,.07.02.08.06.02.04.05.06.08.06l.39-.28ZM555.31,35.94c-.08,0-.15-.04-.22-.11l-.28.22.11.06.39-.17ZM556.94,34.43c.07-.34,0-.5-.22-.48-.22.02-.41,0-.56-.08.04.37-.09.58-.39.62-.3.04-.54.15-.73.34l.9.67c0-.3.07-.56.2-.79.13-.22.38-.32.76-.28h.06ZM555.98,33.69l.11.11-.11-.11ZM556.1,33.81s.02.06.06.06l-.06-.06ZM556.88,34.76l.06-.28c-.04.07-.08.14-.14.2-.06.06-.07.12-.03.2l.11-.11ZM558.23,31.84c-.53.19-.83.32-.93.39-.09.08-.22.32-.37.73l1.29-1.12ZM557.73,33.08c-.15,0-.41-.04-.79-.11.15.08.25.13.31.17.06.04.14.08.25.11,0-.04.07-.09.22-.17ZM558.12,28.41l-.45.84c.04-.11.11-.27.22-.48.11-.21.19-.33.22-.37ZM564.19,23.41c.07-.34,0-.5-.22-.48-.22.02-.43,0-.62-.08.04.37-.08.58-.37.62-.28.04-.5.15-.65.34l.67.56s.06,0,.08-.03c.02-.02.05-.03.08-.03,0-.26.07-.49.22-.67.15-.19.39-.26.73-.22h.06ZM563.34,22.85l-.06-.11v.06s.02.06.06.06ZM564.19,23.75l-.06-.28c-.08.15-.11.28-.11.39l.17-.11ZM565.48,20.83c-.53.19-.83.32-.93.39-.09.08-.2.32-.31.73l1.24-1.12ZM564.97,22.06c-.19,0-.43-.04-.73-.11.11.07.21.13.28.17.07.04.15.07.22.11l.22-.17Z\\\" />\\n    <path class=\\\"cls-1\\\" d=\\\"M581.04,29.54c.79.11,1.54.27,2.25.48.71.21,1.27.68,1.69,1.43-.34.45-.67.88-.98,1.29-.32.41-.59.82-.81,1.24-.37.64-.79,1.26-1.24,1.85-.45.6-.82,1.24-1.12,1.91-.15.3-.36.59-.62.87-.26.28-.51.57-.73.87-.26.37-.51.84-.73,1.4-.26.6-.55,1.19-.87,1.77-.32.58-.63,1.15-.93,1.71-.08.11-.3.24-.67.39.07.41.08.68.03.81-.06.13-.31.38-.76.76.11.26.2.52.25.79.06.26-.1.54-.48.84-.15.15-.22.34-.22.56.15.64-.06,1.27-.62,1.91-.3.3-.4.57-.31.81.09.24.18.5.25.76-.22.37-.42.66-.59.87-.17.21-.33.36-.48.45-.15.09-.33.15-.53.17-.21.02-.46,0-.76-.03-.45-.04-.84-.32-1.18-.84-.34-.52-.47-1.03-.39-1.52.19-.86.37-1.71.56-2.56.19-.84.39-1.69.62-2.56.04-.22.11-.45.22-.67.11-.22.22-.45.34-.67.34-.71.66-1.4.98-2.08.32-.67.66-1.37,1.04-2.08.11-.26.25-.52.42-.79s.33-.52.48-.79c.22-.34.41-.66.56-.98.15-.32.22-.66.22-1.04l-3.65,2.53c-.41.3-.81.57-1.21.81-.39.24-.83.51-1.32.81.11.22.07.45-.14.67-.21.22-.44.43-.7.62-.71.56-1.38,1.17-1.99,1.83-.62.66-1.23,1.32-1.83,1.99-.56.64-1.17,1.24-1.83,1.8-.66.56-1.3,1.1-1.94,1.63-.64.52-1.24.82-1.8.9-.56.07-1.14-.04-1.74-.34-.07-.08-.15-.11-.22-.11s-.15-.02-.22-.06c-1.12-.34-1.52-1.05-1.18-2.13l.34-1.57c.04-.19.08-.37.11-.53.04-.17.09-.33.17-.48l1.35-1.97c.19-.3.39-.61.62-.93.22-.32.43-.66.62-1.04v-.62c0-.15.04-.31.11-.48.07-.17.18-.36.31-.56.13-.21.31-.51.53-.93.19-.3.35-.61.48-.93.13-.32.29-.63.48-.93l3.48-5.95c.41-.71.79-1.42,1.12-2.13.34-.71.73-1.42,1.18-2.14.52-.86,1.08-1.69,1.66-2.5.58-.81,1.15-1.64,1.71-2.5.41-.67.85-1.34,1.32-1.99.47-.66.85-1.36,1.15-2.11.3-.9.86-1.59,1.69-2.08.41-.26.85-.45,1.32-.56.47-.11.93-.22,1.38-.34.04.19.05.36.03.51-.02.15,0,.32.03.51.22-.07.45-.15.67-.22.22-.07.43-.15.62-.22.41.08.63.25.65.53.02.28-.03.59-.14.93-.11.3-.23.58-.37.84-.13.26-.29.53-.48.79-.52.79-1.07,1.56-1.63,2.33s-1.11,1.54-1.63,2.33c-.6.86-1.21,1.7-1.83,2.53s-1.13,1.7-1.54,2.64c0,.15-.11.34-.34.56-.52.53-.94,1.09-1.24,1.69-.3.6-.66,1.2-1.07,1.8-.53.75-1.02,1.51-1.49,2.28-.47.77-.96,1.53-1.49,2.28-.37.53-.72,1.04-1.04,1.54-.32.51-.46,1.04-.42,1.6l-1.29.84c0,.26.07.49.2.67.13.19.05.41-.25.67-.22.19-.42.37-.59.53-.17.17-.35.35-.53.53.04.04.09.11.17.22l.96-.73c.3-.19.53-.44.7-.76.17-.32.48-.55.93-.7.34-.07.66-.26.98-.56.32-.3.63-.6.93-.9.3-.22.54-.47.73-.73.19-.15.33-.29.42-.42.09-.13.2-.23.31-.31.52-.3,1.03-.63,1.52-.98.49-.36.99-.74,1.52-1.15.52-.41,1.07-.8,1.63-1.15.56-.36,1.1-.8,1.63-1.32.19-.19.43-.35.73-.48.3-.13.6-.27.9-.42.19-.11.38-.23.59-.37.21-.13.4-.27.59-.42l2.75-1.97c.15-.11.31-.22.48-.31.17-.09.33-.12.48-.08ZM569.75,25.21l.22.73.73-1.18-.96.45ZM573.34,21.11l-.73-.28c-.08,0-.18.05-.31.14-.13.09-.2.18-.2.25l.06-.06c-.04.22-.04.39,0,.51,0,.11.06.19.17.22l1.01-.79ZM573.85,36.95c.04.07.11.06.22-.06-.04-.04-.05-.07-.03-.11s0-.06-.03-.06c-.08-.04-.15-.02-.22.06,0,.07.02.13.06.17ZM576.32,36.45c-.08.07-.13.14-.17.2-.04.06-.09.12-.17.2l.45-.22-.11-.17ZM578.01,40.16c-.11-.15-.25-.16-.42-.03-.17.13-.33.32-.48.56-.15.24-.28.49-.39.73-.11.24-.19.42-.22.53l.22.06,1.29-1.85ZM579.64,37.46c0-.19.06-.34.17-.45.11-.11.24-.22.39-.34.04-.04.07-.06.11-.08.04-.02.09-.23.17-.65l-1.85,1.85.11.11.9-.45Z\\\" />\\n  </g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport {useVariants} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from '../../api_keys/ld-keys'\n\n/**\n * @typedef {Object} ProductTileFlags\n * @property {boolean} isBloomreachEnabled Derived: `pwa-search-engine` variant === 'bloomreach' (product-tile)\n * @property {boolean} enableNewEarlyAccessJourney New early-access journey (product-tile)\n * @property {boolean} isContextEnabled Global A/B test segmentation context (product-tile)\n * @property {boolean} enableOptimisticNavigation Optimistic PLP→PDP navigation (product-tile, product-tile-content)\n * @property {boolean} enableStandardPriceTest PLP standard price test (product-tile)\n * @property {boolean} enablePlpPriceRangeDisplay PLP price range display (product-tile)\n * @property {boolean} enableMemberPricing Member pricing display (product-tile)\n * @property {boolean} enablePdpPricingAndMemberDisplay PDP pricing and member display (product-tile, price)\n * @property {boolean} enablePlpFindingMethod PLP finding-method tracking (product-tile)\n * @property {boolean} enableCarouselLowestPriceFallback Carousel lowest-price fallback (product-tile)\n * @property {boolean} enableCarouselPromotionalPricing Product-carousel promotional pricing (product-tile)\n * @property {boolean} isEUPricingEnabled EU pricing display (product-tile-content)\n * @property {boolean} enablePlpPdpImageSync PLP/PDP image URL sync (product-tile-content)\n * @property {boolean} enablePlpOosMessaging PLP out-of-stock messaging — always `false`, see note below\n * @property {boolean} enableOmnibusPercentageDisplay Omnibus percentage display (price)\n * @property {boolean} enableOriginalPercentageDisplayWithOmnibus Original percentage with omnibus (price)\n * @property {boolean} isBreadcrumbFixEnabled Breadcrumb fixes / cgid derivation (product-tile-wrapper)\n * @property {boolean} enableGlobalExcludeSetsFromWishlist Hide the wishlist affordance on Sets (image-tile, image-tile-carousel)\n * @property {boolean} enableLocalizedCurrencyLabel CA price display shows \"C$\" (price) — FIND-5112\n */\n\n/**\n * Every LD id the ProductTile subtree reads, with the fallback that applies when\n * the flag is absent from the evaluation set.\n *\n * Hoisted to module scope: the list is static, so there is no reason to rebuild\n * it per render.\n */\nconst PRODUCT_TILE_FLAGS = [\n    // product-tile.jsx\n    {id: LD_KEYS.defaultSearchSourceFlag, fallbackValue: 'salesforce'},\n    {id: LD_KEYS.enableNewEarlyAccessJourney, fallbackValue: false},\n    {id: LD_KEYS.isSegContextEnabled, fallbackValue: false},\n    {id: LD_KEYS.enableOptimisticNavigation, fallbackValue: false},\n    {id: LD_KEYS.enablePlpStandardPriceTest, fallbackValue: false},\n    {id: LD_KEYS.enablePlpPriceRangeDisplay, fallbackValue: true},\n    {id: LD_KEYS.enableMemberPricing, fallbackValue: false},\n    {id: LD_KEYS.enablePdpPricingAndMemberDisplay, fallbackValue: false},\n    {id: LD_KEYS.enablePlpFindingMethod, fallbackValue: false},\n    {id: LD_KEYS.enableCarouselLowestPriceFallback, fallbackValue: false},\n    {id: LD_KEYS.enableProductCarouselPromotionalPricing, fallbackValue: false},\n    // partials/product-tile-content.jsx\n    {id: LD_KEYS.enableEUPricing, fallbackValue: false},\n    {id: LD_KEYS.enablePlpPdpImageSync, fallbackValue: false},\n    // partials/price.jsx\n    {id: LD_KEYS.enableOmnibusPercentageDisplay, fallbackValue: false},\n    {id: LD_KEYS.enableOriginalPercentageDisplayWithOmnibus, fallbackValue: false},\n    {id: LD_KEYS.enableLocalizedCurrencyLabel, fallbackValue: false},\n    // product-grid/product-tile-wrapper.jsx\n    {id: LD_KEYS.enableBreadcrumbFixes, fallbackValue: false}\n]\n\n/**\n * Reads every LaunchDarkly flag used by the ProductTile subtree ONCE.\n *\n * Call this once per grid/carousel container and pass the result to each\n * `<ProductTile flags={flags} />`. ProductTile and its partials read flags\n * exclusively from this prop instead of calling `useVariant` per tile, which\n * collapses ~18 LD context reads × N tiles into a single read per container.\n *\n * The returned object is memoized: its identity only changes when the LD\n * flags context changes (e.g. a flag is toggled at runtime), so it is safe\n * to use as a dependency in downstream memos and callbacks.\n *\n * Reads go through `useVariants` (one `client.variation()` per id) rather than\n * `useFlags()`. `useFlags` re-keys the whole flag map through\n * `client.shouldUseCamelCaseFlagKeys()`, and the SSR stub client that\n * `LDIsomorphicClientProvider` builds from `bootstrap` hardcodes that to `true`\n * — it never sees the `useCamelCaseFlagKeys: false` we pass in `ldOptions`.\n * During SSR that camel-cased every key in the map, so the kebab-case ids below\n * all missed and every flag silently fell back to its default before correcting\n * itself on hydration. `client.variation()` looks each id up verbatim on both\n * the SSR stub and the real browser client. See use-variant.js.\n *\n * @returns {ProductTileFlags}\n */\nexport const useProductTileFlags = () => {\n    const ldFlags = useVariants(PRODUCT_TILE_FLAGS)\n\n    // Read every flag into a primitive BEFORE memoizing: `useVariants` returns a\n    // fresh object per render, so keying the memo on it rebuilds the object every\n    // render and churns the `flags` prop of every tile (FIND-6633). Primitive deps\n    // keep the object identity stable until a flag VALUE actually changes.\n\n    // product-tile.jsx\n    const isBloomreachEnabled = ldFlags[LD_KEYS.defaultSearchSourceFlag] === 'bloomreach'\n    const enableNewEarlyAccessJourney = ldFlags[LD_KEYS.enableNewEarlyAccessJourney]\n    const isContextEnabled = ldFlags[LD_KEYS.isSegContextEnabled]\n    const enableOptimisticNavigation = ldFlags[LD_KEYS.enableOptimisticNavigation]\n    const enableStandardPriceTest = ldFlags[LD_KEYS.enablePlpStandardPriceTest]\n    const enablePlpPriceRangeDisplay = ldFlags[LD_KEYS.enablePlpPriceRangeDisplay]\n    const enableMemberPricing = ldFlags[LD_KEYS.enableMemberPricing]\n    const enablePdpPricingAndMemberDisplay = ldFlags[LD_KEYS.enablePdpPricingAndMemberDisplay]\n    const enablePlpFindingMethod = ldFlags[LD_KEYS.enablePlpFindingMethod]\n    const enableCarouselLowestPriceFallback = ldFlags[LD_KEYS.enableCarouselLowestPriceFallback]\n    const enableCarouselPromotionalPricing =\n        ldFlags[LD_KEYS.enableProductCarouselPromotionalPricing]\n    // partials/product-tile-content.jsx\n    const isEUPricingEnabled = ldFlags[LD_KEYS.enableEUPricing]\n    const enablePlpPdpImageSync = ldFlags[LD_KEYS.enablePlpPdpImageSync]\n    // partials/price.jsx\n    const enableOmnibusPercentageDisplay = ldFlags[LD_KEYS.enableOmnibusPercentageDisplay]\n    const enableOriginalPercentageDisplayWithOmnibus =\n        ldFlags[LD_KEYS.enableOriginalPercentageDisplayWithOmnibus]\n    const enableGlobalExcludeSetsFromWishlist = ldFlags[LD_KEYS.enableGlobalExcludeSetsFromWishlist]\n    const enableLocalizedCurrencyLabel = ldFlags[LD_KEYS.enableLocalizedCurrencyLabel]\n\n    // product-grid/product-tile-wrapper.jsx\n    const isBreadcrumbFixEnabled = ldFlags[LD_KEYS.enableBreadcrumbFixes]\n\n    return useMemo(\n        () => ({\n            isBloomreachEnabled,\n            enableNewEarlyAccessJourney,\n            isContextEnabled,\n            enableOptimisticNavigation,\n            enableStandardPriceTest,\n            enablePlpPriceRangeDisplay,\n            enableMemberPricing,\n            enablePdpPricingAndMemberDisplay,\n            enablePlpFindingMethod,\n            enableCarouselLowestPriceFallback,\n            enableCarouselPromotionalPricing,\n            isEUPricingEnabled,\n            enablePlpPdpImageSync,\n            // There is no `enablePlpOosMessaging` entry in LD_KEYS, so the previous\n            // `ldFlags[LD_KEYS.enablePlpOosMessaging]` was an `ldFlags[undefined]`\n            // lookup that always missed — this has been `false` on client and server\n            // alike since it was introduced. No consumer reads it; kept only to hold\n            // the object shape until the real flag id is confirmed or the field is\n            // dropped.\n            enablePlpOosMessaging: false,\n            enableOmnibusPercentageDisplay,\n            enableOriginalPercentageDisplayWithOmnibus,\n            isBreadcrumbFixEnabled,\n            enableGlobalExcludeSetsFromWishlist,\n            enableLocalizedCurrencyLabel\n        }),\n        [\n            isBloomreachEnabled,\n            enableNewEarlyAccessJourney,\n            isContextEnabled,\n            enableOptimisticNavigation,\n            enableStandardPriceTest,\n            enablePlpPriceRangeDisplay,\n            enableMemberPricing,\n            enablePdpPricingAndMemberDisplay,\n            enablePlpFindingMethod,\n            enableCarouselLowestPriceFallback,\n            enableCarouselPromotionalPricing,\n            isEUPricingEnabled,\n            enablePlpPdpImageSync,\n            enableOmnibusPercentageDisplay,\n            enableOriginalPercentageDisplayWithOmnibus,\n            isBreadcrumbFixEnabled,\n            enableGlobalExcludeSetsFromWishlist,\n            enableLocalizedCurrencyLabel\n        ]\n    )\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {Controller} from 'react-hook-form'\nimport {\n    FormControl,\n    FormLabel,\n    FormErrorMessage,\n    IconButton,\n    Input,\n    InputGroup,\n    InputRightElement,\n    Select,\n    Checkbox\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {\n    VisibilityIcon,\n    VisibilityOffIcon,\n    AlertIcon\n} from '@salesforce/retail-react-app/app/components/icons'\nimport {useIntl} from 'react-intl'\n\nconst Field = ({\n    name,\n    label,\n    formLabel,\n    type = 'text',\n    options = [],\n    rules = {},\n    error,\n    placeholder,\n    inputProps,\n    control,\n    autoComplete,\n    defaultValue,\n    helpText,\n    children,\n    inputRef\n}) => {\n    const intl = useIntl()\n    const [hidePassword, setHidePassword] = useState(true)\n    const PasswordIcon = hidePassword ? VisibilityIcon : VisibilityOffIcon\n    const passwordIconLabel = hidePassword\n        ? intl.formatMessage({\n              id: 'field.password.assistive_msg.show_password',\n              defaultMessage: 'Show password'\n          })\n        : intl.formatMessage({\n              id: 'field.password.assistive_msg.hide_password',\n              defaultMessage: 'Hide password'\n          })\n    const inputType =\n        type === 'password' && hidePassword ? 'password' : type === 'password' ? 'text' : type\n\n    return (\n        <Controller\n            name={name}\n            control={control}\n            rules={rules}\n            defaultValue={defaultValue}\n            render={({field: {onChange, value, ref}}) => {\n                const _inputProps =\n                    typeof inputProps === 'function' ? inputProps({value, onChange}) : inputProps\n\n                return (\n                    <FormControl id={name} isInvalid={error}>\n                        {!['checkbox', 'radio', 'hidden'].includes(type) &&\n                            (formLabel || <FormLabel>{label}</FormLabel>)}\n\n                        <InputGroup>\n                            {['text', 'password', 'email', 'phone', 'tel', 'number'].includes(\n                                type\n                            ) && (\n                                <Input\n                                    ref={(node) => {\n                                        ref(node)\n                                        if (inputRef) inputRef.current = node\n                                    }}\n                                    onChange={onChange}\n                                    value={value}\n                                    type={inputType}\n                                    placeholder={placeholder}\n                                    autoComplete={autoComplete}\n                                    {..._inputProps}\n                                />\n                            )}\n\n                            {type === 'hidden' && (\n                                <input\n                                    ref={ref}\n                                    onChange={onChange}\n                                    value={value}\n                                    type=\"hidden\"\n                                    {..._inputProps}\n                                />\n                            )}\n\n                            {type === 'password' && (\n                                <InputRightElement>\n                                    <IconButton\n                                        variant=\"ghosted\"\n                                        aria-label={passwordIconLabel}\n                                        icon={<PasswordIcon color=\"gray.500\" boxSize={6} />}\n                                        onClick={() => setHidePassword(!hidePassword)}\n                                    />\n                                </InputRightElement>\n                            )}\n\n                            {type === 'select' && (\n                                <Select\n                                    ref={ref}\n                                    onChange={onChange}\n                                    value={value}\n                                    placeholder={placeholder}\n                                    {..._inputProps}\n                                >\n                                    {options.map((opt) => (\n                                        <option key={`${opt.label}-${opt.value}`} value={opt.value}>\n                                            {opt.label}\n                                        </option>\n                                    ))}\n                                </Select>\n                            )}\n\n                            {type === 'checkbox' && (\n                                <Checkbox\n                                    ref={ref}\n                                    onChange={(e) => onChange(e.target.checked)}\n                                    isChecked={value}\n                                    {..._inputProps}\n                                >\n                                    {formLabel || label}\n                                </Checkbox>\n                            )}\n\n                            {children}\n                        </InputGroup>\n\n                        {error && type !== 'hidden' && (\n                            <FormErrorMessage color=\"red.600\">\n                                <AlertIcon aria-hidden=\"true\" mr={2} />\n                                {error.message}\n                            </FormErrorMessage>\n                        )}\n\n                        {helpText}\n                    </FormControl>\n                )\n            }}\n        />\n    )\n}\n\nField.propTypes = {\n    name: PropTypes.string,\n    label: PropTypes.string,\n    autoComplete: PropTypes.string,\n    formLabel: PropTypes.any,\n    type: PropTypes.oneOf([\n        'text',\n        'number',\n        'password',\n        'email',\n        'phone',\n        'tel',\n        'select',\n        'checkbox',\n        'hidden'\n    ]),\n    options: PropTypes.arrayOf(PropTypes.shape({label: PropTypes.string, value: PropTypes.any})),\n    rules: PropTypes.object,\n    error: PropTypes.shape({message: PropTypes.string}),\n    placeholder: PropTypes.string,\n    inputProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n    control: PropTypes.object,\n    defaultValue: PropTypes.any,\n    helpText: PropTypes.any,\n    children: PropTypes.any,\n    inputRef: PropTypes.object\n}\n\nexport default Field\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {defineMessage, useIntl} from 'react-intl'\nimport {Button} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport logger from '@salesforce/retail-react-app/app/utils/logger-instance'\nimport {useAuthHelper, AuthHelpers} from '@salesforce/commerce-sdk-react'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport {setSessionJSONItem, buildRedirectURI} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Icons\nimport {AppleIcon, GoogleIcon} from '@salesforce/retail-react-app/app/components/icons'\n\nimport {\n    API_ERROR_MESSAGE,\n    FEATURE_UNAVAILABLE_ERROR_MESSAGE\n} from '@salesforce/retail-react-app/app/constants'\n\nconst IDP_CONFIG = {\n    apple: {\n        icon: AppleIcon,\n        message: defineMessage({\n            id: 'login_form.button.apple',\n            defaultMessage: 'Apple'\n        })\n    },\n    google: {\n        icon: GoogleIcon,\n        message: defineMessage({\n            id: 'login_form.button.google',\n            defaultMessage: 'Google'\n        })\n    }\n}\n\n/**\n * Create a stack of button for social login links\n * @param {array} idps - array of known IDPs to show buttons for\n * @returns\n */\nconst SocialLogin = ({form, idps = []}) => {\n    const {formatMessage} = useIntl()\n    const authorizeIDP = useAuthHelper(AuthHelpers.AuthorizeIDP)\n\n    // Build redirectURI from config values\n    const appOrigin = useAppOrigin()\n    const redirectPath = getConfig()?.app?.login?.social?.redirectURI || ''\n    const redirectURI = buildRedirectURI(appOrigin, redirectPath)\n\n    const isIdpValid = (name) => {\n        const idp = name.toLowerCase()\n        return idp in IDP_CONFIG && IDP_CONFIG[idp]\n    }\n\n    useEffect(() => {\n        idps.map((name) => {\n            if (!isIdpValid(name)) {\n                logger.error(\n                    `IDP \"${name}\" is missing or has an invalid configuration in IDP_CONFIG. Valid IDPs are [${Object.keys(\n                        IDP_CONFIG\n                    ).join(', ')}].`\n                )\n            }\n        })\n    }, [idps])\n\n    const onSocialLoginClick = async (name) => {\n        try {\n            // Save the path where the user logged in\n            setSessionJSONItem('returnToPage', window.location.pathname)\n            await authorizeIDP.mutateAsync({\n                hint: name,\n                redirectURI: redirectURI\n            })\n        } catch (error) {\n            const message = /redirect_uri doesn't match/.test(error.message)\n                ? formatMessage(FEATURE_UNAVAILABLE_ERROR_MESSAGE)\n                : formatMessage(API_ERROR_MESSAGE)\n            form.setError('global', {type: 'manual', message})\n        }\n    }\n\n    return (\n        idps && (\n            <>\n                {idps\n                    .filter((name) => isIdpValid(name))\n                    .map((name) => {\n                        const config = IDP_CONFIG[name.toLowerCase()]\n                        const Icon = config?.icon\n                        const message = formatMessage(config?.message)\n                        return (\n                            config && (\n                                <Button\n                                    key={name}\n                                    onClick={() => {\n                                        onSocialLoginClick(name)\n                                    }}\n                                    borderColor=\"gray.500\"\n                                    color=\"blue.600\"\n                                    variant=\"outline\"\n                                >\n                                    <Icon sx={{marginRight: 2}} />\n                                    {message}\n                                </Button>\n                            )\n                        )\n                    })}\n            </>\n        )\n    )\n}\n\nSocialLogin.propTypes = {\n    form: PropTypes.object,\n    idps: PropTypes.arrayOf(PropTypes.string)\n}\n\nexport default SocialLogin\n","import React from 'react'\nimport {\n    Box,\n    Skeleton as ChakraSkeleton,\n    Stack\n} from '@salesforce/retail-react-app/app/components/shared/ui'\n\nexport const Skeleton = () => {\n    // SSR-SAFE FIX: Use manual padding-bottom technique for aspect ratio\n    // This bypasses Chakra's AspectRatio component which may add classes like \"lazyload-placeholder\"\n    // that interfere with SSR rendering\n    // Ratio 0.75 = 3:4 aspect = height/width = 0.75\n    // padding-bottom: (1 / 0.75) * 100% = 133.333%\n    return (\n        <Stack\n            data-testid=\"sf-product-tile-skeleton\"\n            data-auto=\"divSkeletonTile\"\n            data-skeleton-version=\"v4-manual-ratio\"\n            spacing={2.5}\n        >\n            {/* Image skeleton with manual aspect ratio to prevent SSR/client mismatch */}\n            <Box\n                position=\"relative\"\n                width=\"100%\"\n                backgroundColor=\"#F7F7F7\"\n                marginBottom={0}\n                sx={{\n                    // Manual aspect ratio technique - SSR safe\n                    '&::before': {\n                        content: '\"\"',\n                        display: 'block',\n                        paddingBottom: '133.333%' // 1/0.75 * 100% = 133.333%\n                    }\n                }}\n            >\n                <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n                    <ChakraSkeleton width=\"100%\" height=\"100%\" />\n                </Box>\n            </Box>\n\n            {/* Product name skeleton - matches actual Text component with fontSize: 'xs' (12px × 1.5 line-height = 18px) */}\n            <ChakraSkeleton height=\"18px\" width=\"90%\" />\n\n            {/* Price skeleton - matches actual Price component height\n                Price can be 1-3 lines (regular/sale/discount), account for typical 2-line height\n                fontSize: 'xs' (12px) with default line-height ~1.5 = 18px per line */}\n            <Stack spacing={1}>\n                <ChakraSkeleton height=\"18px\" width=\"80px\" />\n                <ChakraSkeleton height=\"16px\" width=\"120px\" />\n            </Stack>\n        </Stack>\n    )\n}\n\nSkeleton.displayName = 'Skeleton'\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"got-x-pandora-white\",\n  \"use\": \"got-x-pandora-white-usage\",\n  \"viewBox\": \"0 0 770.7 147.35\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 770.7 147.35\\\" id=\\\"got-x-pandora-white\\\"><defs></defs><polygon points=\\\"416.89 60.89 399.34 78.85 381.79 60.89 378.18 64.5 395.73 82.46 378.18 100.42 381.79 104.03 399.34 86.07 416.89 104.03 420.5 100.42 402.87 82.46 420.5 64.5 416.89 60.89\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"658.83 53.24 660.08 53.24 660.14 53.17 659.08 42.46 659.02 42.4 658.71 42.4 658.65 42.46 657.53 53.17 657.59 53.24 658.83 53.24\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"664.88 53.92 664.94 53.86 666.75 44.27 666.68 44.2 666.37 44.14 666.31 44.2 662.32 53.3 662.39 53.36 664.88 53.92\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M663.01 58.03c.75 0 1.43-.62 1.43-1.49 0-.81-.68-1.43-1.43-1.43-.81 0-1.5.62-1.5 1.43 0 .87.69 1.49 1.5 1.49ZM658.83 57.6c.75 0 1.43-.62 1.43-1.49 0-.81-.69-1.43-1.43-1.43-.81 0-1.49.62-1.49 1.43 0 .87.69 1.49 1.49 1.49Z\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"652.79 53.92 655.28 53.36 655.35 53.3 651.36 44.2 651.3 44.14 650.99 44.2 650.92 44.27 652.73 53.86 652.79 53.92\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M653.17 56.54c0 .87.69 1.49 1.49 1.49.75 0 1.43-.62 1.43-1.49 0-.81-.69-1.43-1.43-1.43-.81 0-1.49.62-1.49 1.43ZM483.19 60.71h-12.71l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h8.35l.06-.06s-.31-3.05-.31-8.35v-7.85l.06-.06c1.12.12 3.67.25 4.55.25 8.6 0 15.95-5.23 15.95-14.08s-7.41-13.45-15.95-13.45Zm-.37 20.37c-1 0-3.24-.12-4.24-.31v-12.89h4.86c4.3 0 7.72 1.74 7.72 6.29s-2.99 6.91-8.35 6.91ZM522.98 64.26c-.93-2.18-1.25-3.49-1.25-3.49l-.06-.06h-6.79l-.06.06s-.25 1.31-1.18 3.49l-14.7 35.38c-1.25 2.99-2.49 4.61-2.49 4.61v.06h8.6l.06-.06c0-.25.19-1.31 1.25-3.92l2.68-6.66h18.93l2.87 6.66c.93 2.55 1.49 3.92 1.49 3.92l.06.06h8.6v-.06s-1.12-1.62-2.49-4.61l-15.51-35.38Zm-11.02 22.24 6.17-15.38h.06l6.66 15.38h-12.89ZM584 60.77l-.06-.06h-7.6l-.06.06s.31 3.05.31 8.35v21.92h-.06l-23.54-30.33h-8.35l-.06.06c.93 1.99 1.43 3.36 1.43 4.3v30.83c0 5.29-.31 8.35-.31 8.35l.06.06h7.6l.06-.06s-.31-3.05-.31-8.35v-22.36h.06l23.67 30.77h7.1l.06-.06s-.31-3.05-.31-8.35v-26.78c0-5.29.31-8.35.31-8.35ZM607.67 60.71h-14.57l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h4.48c2.95 0 6.23.37 9.97.37 13.39 0 22.86-9.47 22.86-22.11s-9.28-21.86-22.73-21.86Zm-.5 36.81c-2.12 0-4.05-.06-5.17-.37-.69-.19-.81-.44-.81-1.62v-27.72h5.79c9.41 0 15.45 6.35 15.45 14.82s-6.04 14.89-15.26 14.89ZM658.83 60.09c-12.58 0-22.36 9.72-22.36 22.36s9.78 22.36 22.36 22.36 22.36-9.65 22.36-22.36-9.65-22.36-22.36-22.36Zm0 37.56c-8.1 0-14.39-6.6-14.39-15.2s6.29-15.2 14.39-15.2 14.45 6.6 14.45 15.2-6.29 15.2-14.45 15.2ZM712.28 89.49c-1.06-1.74-2.68-3.11-4.3-3.55v-.06c4.55-1 8.78-6.29 8.78-11.59 0-7.23-5.54-13.58-14.08-13.58h-13.95l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h8.35l.06-.06s-.31-3.05-.31-8.35v-8.35c4.17 0 5.79.81 7.29 3.18l3.55 5.73c2.93 4.73 4.17 7.79 4.17 7.79l.06.06h9.97v-.06s-2.49-3.05-5.36-7.79l-4.24-6.98Zm-11.52-8.84c-1 0-2.74 0-3.92-.25v-12.58h4.8c4.67 0 7.16 3.05 7.16 6.54 0 3.3-2.55 6.29-8.03 6.29ZM768.21 99.64l-15.51-35.38c-.93-2.18-1.25-3.49-1.25-3.49l-.06-.06h-6.79l-.06.06s-.25 1.31-1.18 3.49l-14.7 35.38c-1.25 2.99-2.49 4.61-2.49 4.61v.06h8.6l.06-.06c0-.25.19-1.31 1.25-3.92l2.68-6.66h18.93l2.87 6.66c.93 2.55 1.49 3.92 1.49 3.92l.06.06h8.6v-.06s-1.12-1.62-2.49-4.61Zm-26.53-13.14 6.17-15.38h.06l6.66 15.38h-12.89ZM102.43 37.35c0-1.04-1.21-1.04-1.8-1.04-1.99 0-5.5.14-7.59.22-.83.03-1.42.06-1.55.06-.12 0-.57-.02-1.24-.04-1.99-.08-6.14-.23-9.3-.23-.58 0-1.8 0-1.8 1.04 0 .49.44.85 1.05.85.84 0 2.39.09 3.09.27 3.42.93 3.97 1.63 3.97 9.17v15.63c0 1.4-.54 2.33-1.71 2.95-2.29 1.3-7.04 1.89-10.48 1.89-9.34 0-17.49-3.28-24.22-9.75-3.39-3.24-9.79-12.69-9.79-25.24 0-10.01 3.41-18.65 9.11-23.11 6.78-5.28 13.51-6 19.77-6 11.59 0 19.23 3.67 21.66 7.3 1.59 2.52 1.87 5.38 1.91 5.94.09.77.19 1.65.95 1.65 1.06 0 1.14-1.01 1.14-2.23 0-6.67.35-9.86.53-11.57.07-.67.12-1.11.12-1.48 0-.66-.47-1.04-1.41-1.13-2.47-.1-5.69-.49-7.5-.91-.31-.06-7.63-1.57-14.33-1.57-7.19 0-16.53.66-24.97 5.84-9.84 6.11-15.72 17.51-15.72 30.5s6.04 22 11.2 26.43c7.63 6.57 18.02 9.91 30.88 9.91 5.78 0 14.04-1.1 19.92-4.18 1.28-.73 1.36-1.07 1.36-5.23v-10.3c0-3.84 0-6.61.19-9.54.19-3.31 1-4.56 3.23-4.96 1.08-.18 1.62-.27 2.25-.27s1.05-.36 1.05-.85ZM146.03 62.12c-.6 0-1.49-.06-2.38-.36-1.35-.39-3.01-1.48-5.1-6.66-2.68-6.68-8.36-21.51-11.75-30.37-1.36-3.55-2.34-6.13-2.61-6.8-.72-1.87-1.03-2.41-1.64-2.41s-.9.56-1.64 2.6l-13.99 38.28c-1.18 3.29-2.37 5.26-4.93 5.6-.5.06-1.35.12-1.75.12-.51 0-.86.27-.86.67 0 .8 1 .8 1.47.8 1.96 0 4.13-.08 5.56-.14.68-.03 1.19-.05 1.4-.05.27 0 .86.03 1.56.06 1.05.05 2.36.12 3.25.12 1.01 0 1.23-.43 1.23-.8 0-.25-.12-.67-.92-.67h-.62c-.79 0-2.04-.4-2.04-1.48s.3-2.51.85-4.03l3.69-10.89c.11-.28.23-.3.33-.3h13.25c.15 0 .19.02.27.17l5.73 15.16c.16.42.18.78.06 1.03-.08.17-.19.22-.22.23-.58.14-.66.52-.66.73 0 .63.7.66 1.85.72h.29c2.75.09 6.19.14 9.69.14 1.02 0 1.54-.27 1.54-.8 0-.45-.31-.67-.92-.67Zm-18.47-19.54h-11.65s0-.02.01-.03l5.42-16.64c.07-.22.13-.34.18-.41.04.07.1.2.18.42l5.85 16.62s0 .04.01.05ZM211.28 62.12c-.59 0-2.17 0-3.91-.54-2.51-.82-2.89-4.24-3.12-6.28l-4.13-37.85c-.1-.98-.27-1.94-1.04-1.94-.69 0-1.01.73-1.2 1.16l-17.85 38.13-18.58-38.19c-.3-.66-.62-1.1-1.2-1.1-.73 0-.9.95-.98 1.38l-4.44 40.19-.02.22c-.23 2.22-.45 4.31-2.2 4.63-.89.18-1.31.18-1.79.18s-.92.21-.92.61c0 .57.46.86 1.35.86 1.06 0 2.64-.07 3.8-.13.66-.03 1.18-.05 1.38-.05.16 0 .55.02 1.1.04 1.22.06 3.07.14 4.63.14.42 0 1.41 0 1.41-.86 0-.35-.34-.61-.8-.61-.37 0-1.27-.06-2.28-.3-.79-.16-1.36-.83-1.36-1.61 0-1.06 0-2.15.06-3.12l2.4-27.88c1.46 3.3 7.33 15.88 7.87 16.95l.1.2c1.68 3.38 5.75 11.53 7.11 14.11l.14.26c1.17 2.21 1.45 2.74 2.04 2.74.68 0 .91-.49 1.89-2.55l15.21-32.27 2.89 31.03c.12 1.05.04 1.73-.06 1.9-.41.1-.62.34-.62.72 0 .63.68.8 2.01.92 2.35.19 9.03.37 10.32.37 1.44 0 1.6-.6 1.6-.86 0-.28-.14-.61-.8-.61ZM243.92 54.51c-.65 0-.77.69-.86 1.2-.43 2.49-1.14 3.65-2.64 4.28-1.57.67-4.28.67-5.9.67-6.17 0-6.79-.86-6.97-4.85-.04-.94-.02-4.99 0-7.94 0-1.16.01-2.16.01-2.76v-5.52c0-.11.02-.13.13-.13 1.05 0 7.24.13 8.93.31 2.21.23 2.76 1.13 3 1.98.24.77.24 1.36.24 1.98 0 .53.29.87.74.87.74 0 .74-.94.74-1.5 0-.41.12-2.71.25-3.98.12-1.28.28-2.16.39-2.75.07-.37.11-.62.11-.79 0-.73-.43-.81-.62-.81-.37 0-.63.3-1.06.79l-.11.13c-.5.55-1.37.66-2.75.78-1.05.09-5.83.13-9.98.14 0-.01-.03-.08-.03-.34v-17.3c0-.26.05-.32.07-.32h0c.78 0 7.51.06 8.56.19 3.26.36 3.82 1.07 4.2 1.95.28.67.35 1.66.35 2.14 0 .93.44 1.12.81 1.12s.61-.31.74-.94c.08-.5.17-1.83.23-2.89.03-.57.06-1.05.08-1.27.11-1.02.26-1.69.37-2.17.08-.35.13-.59.13-.81 0-.76-.35-.87-.55-.87-.25 0-.45.1-.63.19-.11.05-.21.11-.32.13-.52.13-1.55.25-2.63.3-1.42.06-13.82.06-14.34.06-.08 0-.38-.01-.83-.03-1.34-.05-4.13-.16-6.25-.16-.39 0-1.31 0-1.31.81 0 .39.34.68.8.68.57 0 1.6.06 2.07.18 1.78.38 2.33 1.11 2.46 3.29.13 2 .13 3.76.13 13.52v11.03c0 5.88 0 10.95-.31 13.56-.27 1.96-.59 2.99-1.58 3.19-.33.07-1.18.24-1.81.24-.56 0-.81.34-.81.68 0 .81.92.81 1.31.81 1.34 0 3.7-.09 5.1-.15.56-.02.95-.04 1.04-.04.55 0 1.32.03 2.39.08 2.43.11 6.5.29 13.09.29 2.44 0 3.18 0 3.68-1.86.31-1.3.82-5.58.82-6.15 0-.47 0-1.25-.68-1.25ZM303.84 36.14c-.27 0-.43.21-.57.4l-.08.1c-.23.34-.55.45-1.45.52-.5.04-.99.04-1.62.04l-5.69.04v-11.15c0-.09.01-.12.02-.1l5.6.11c1.29.03 2.04.62 2.21.99.19.42.3 1 .3 1.26 0 .7.47.74.56.74.21 0 .48-.11.59-.65.05-.29.09-1.02.13-1.67.02-.34.04-.62.05-.75.06-.59.15-.97.21-1.25.05-.21.08-.36.08-.5 0-.37-.22-.63-.52-.63-.16 0-.29.07-.41.14-.06.03-.12.07-.2.1-.22.07-.63.09-1.11.11l-.41.02c-.79.03-7.59.04-8.94.04-.04 0-.22 0-.48-.02-.78-.03-2.4-.09-3.64-.09-.22 0-.89 0-.89.59 0 .3.26.52.59.52.31 0 .91.04 1.17.1.98.21 1.25.58 1.33 1.8.07 1.15.07 3.27.07 8.93v6.41c0 3.39 0 8.52-.18 10.03-.15 1.08-.32 1.64-.82 1.75-.19.04-.67.14-1.03.14-.41 0-.6.27-.6.52 0 .6.67.6.89.6.78 0 2.15-.05 2.97-.09.32-.01.54-.02.6-.02.04 0 .19 0 .42.01.81.03 2.51.1 4.05.1.8 0 .89-.42.89-.6 0-.25-.19-.52-.59-.52-.3 0-1.08-.07-1.6-.14-.84-.11-1.05-.65-1.16-1.74-.18-1.51-.18-6.64-.18-10.03v-3.09s0-.02 0-.02c1.38 0 5.68 0 6.49.11.97.12 1.48.65 1.64 1.1.12.36.16.78.19 1.13v.09c.01.38.23.63.57.63.56 0 .56-.65.56-1 0-.25.07-1.71.14-2.41.07-.74.16-1.25.22-1.59.04-.23.07-.39.07-.48 0-.54-.34-.59-.49-.59ZM271.95 25.34c-10.67 0-14.65 8.92-14.65 14.54 0 7.04 4.51 14.61 14.43 14.61 8.59 0 14.83-6.39 14.83-15.19 0-8.35-5.87-13.96-14.61-13.96Zm-3.75 26.18c-4.17-1.93-6.83-6.61-6.83-12.67s2.54-9.78 6.83-11.15v23.81Zm.97-24.07c.72-.16 1.48-.24 2.28-.26v25.23c-.8-.09-1.56-.26-2.28-.51v-24.46Zm3.25-.23c.84.06 1.69.23 2.51.52v24.48c-.99.24-1.8.27-2.21.27-.1 0-.2-.01-.3-.02v-25.26Zm3.48 24.71v-23.81c3.61 1.67 6.56 5.62 6.56 12.19 0 7.79-3.67 10.61-6.56 11.62ZM329.7 82.49c-.54-2.18-1.27-5.18-1.27-6.78 0-.54 0-1.36-.74-1.36-.21 0-.52.06-.98.15-1.25.25-3.59.72-7.72.72H13.92c-1.08 0-4.45-.18-6.92-.44-1.47-.11-2.32-.49-2.95-.77-.37-.16-.66-.29-.94-.29-.51 0-.8.77-1.13 1.77l-.04.13c-.1.42-1.94 8.25-1.94 9.21 0 1.01.57 1.09.74 1.09.53 0 .88-.32 1.16-1.06.27-.62.52-1.21 1.47-2.67 1.33-1.99 3.28-2.59 8.72-2.68l12.7-.17v36.86c0 8.25 0 20.71-.43 24.38-.39 2.81-.85 4.29-2.32 4.58-.97.21-1.93.34-2.57.34-.74 0-1 .45-1 .83 0 1 1.15 1 1.7 1 1.88 0 5.18-.13 7.15-.21.78-.03 1.33-.05 1.46-.05.1 0 .47.01 1.04.03 1.96.07 6.04.23 9.76.23 1.41 0 1.71-.55 1.71-1 0-.38-.26-.83-1-.83s-2.66-.17-3.91-.35c-2.3-.31-2.88-1.84-3.17-4.57-.44-3.67-.44-16.14-.44-24.38v-36.86l282.89.18c7.56.16 12.29 1.87 12.65 4.56l.09.96c.07 1 .19 1.77 1 1.77.21 0 .92-.1.92-1.44 0-.38-.22-1.3-.61-2.88Z\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M93.32 137.86c-.53 0-1.91-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-11.2c0-9.91 0-11.7.13-13.73.13-2.26.64-3.08 2.1-3.35.74-.13 1.11-.19 1.54-.19.47 0 .81-.29.81-.68 0-.81-.93-.81-1.32-.81-1.36 0-3.75.1-5.18.15-.57.02-.97.04-1.06.04-.08 0-.38-.01-.84-.03-1.36-.05-4.19-.16-6.35-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.81.38 2.37 1.13 2.5 3.35.13 2.03.13 3.81.13 13.72v1.34s0 .07 0 .07c0 0-.03 0-.08 0h-26.98s-.06 0-.07 0c0 0 0-.03 0-.08v-1.34c0-9.91 0-11.7.13-13.73.13-2.26.64-3.08 2.1-3.35.74-.13 1.12-.19 1.54-.19.47 0 .81-.29.81-.68 0-.81-.93-.81-1.32-.81-1.36 0-3.75.1-5.18.15-.57.02-.96.04-1.05.04-.08 0-.38-.01-.84-.03-1.36-.05-4.2-.16-6.35-.16-.4 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.81.38 2.37 1.13 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.32 13.77-.27 1.95-.6 3.05-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.36 0 3.75-.1 5.18-.15.57-.02.96-.04 1.05-.04.07 0 .34 0 .75.02 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68c-.53 0-1.9-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-6.68s0-.07 0-.07c0 0 .03 0 .08 0h26.98c.08 0 .08.05.08.08v6.68c0 5.97 0 11.12-.32 13.77-.28 2-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.92.81 1.32.81 1.36 0 3.76-.1 5.18-.15.56-.02.96-.04 1.05-.04.07 0 .34 0 .76.02 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68ZM146.96 137.86c-.37 0-1.25 0-2.43-.19-1.69-.27-4.31-1.03-7.59-4.49-3.23-3.45-6.99-8.28-11.34-13.87l-1.71-2.19c5.18-4.84 7.59-9.53 7.59-14.73 0-4.46-2.84-7.69-4.52-8.9-3.51-2.52-7.94-2.86-11.82-2.86-1.24 0-3.63.07-5.37.13-1.04.03-1.88.06-2.14.06-.08 0-.38-.01-.84-.03-1.36-.05-4.19-.16-6.35-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.58 0 1.62.06 2.1.18 1.99.42 2.38 1.38 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.31 13.77-.28 1.99-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.62 0 4.7-.14 5.71-.18h.27c.07-.01.34 0 .76.01 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68c-.53 0-1.9-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-1.53c0-.21.05-.21.14-.21l7.84.13c.27 0 .39.07.59.26.54.7 1.4 1.88 2.39 3.25 1.34 1.85 3.01 4.15 4.55 6.16l.81 1.07c3.19 4.21 5.3 6.99 7.88 8.37 1.75.94 3.44 1.25 6.95 1.25h4.52c.77 0 1.83 0 1.83-.81 0-.37-.4-.68-.87-.68Zm-36.61-43.74c0-.24.1-.4.29-.47.6-.18 2.27-.37 4.18-.37 6.7 0 10.71 4.64 10.71 12.43 0 4.37-1.4 7.94-3.75 9.55-1.49 1.04-3.34 1.16-4.6 1.16-2.7 0-5.63-.44-6.53-.97-.21-.13-.3-.28-.3-.51v-20.81ZM246.13 90.64c-1.73 0-3.25.08-4.25.14-.52.03-.92.05-1.15.05s-.71-.02-1.36-.05c-1.33-.06-3.33-.14-5.26-.14-.59 0-1.58 0-1.58.75 0 .49.27.75.81.75.46 0 1.91.06 3.04.31 1.73.45 2.19 1.63 2.26 5.76l.68 31.55c-1.08-1.15-2.88-3.12-5.05-5.51-2.83-3.11-6.36-6.98-9.68-10.54-9.85-10.55-19.29-20.75-20.24-21.83-.16-.16-.36-.38-.56-.61-.82-.92-1.4-1.52-1.87-1.52-.86 0-1 1.07-1 3.48l-.06 36.47c0 5.81-.35 7.42-1.7 7.8-.81.27-1.86.37-2.51.37-.6 0-.81.35-.81.68 0 .81.86.81 1.32.81 1.99 0 3.9-.1 5.05-.15.51-.03.89-.04 1.06-.04.16 0 .48.02.93.04 1.2.06 3.21.16 5.81.16.43 0 1.45 0 1.45-.81 0-.33-.21-.68-.81-.68-.17 0-1.73-.01-3.09-.37-1.4-.41-2.13-1.63-2.27-7.1l-.8-29.66c1.93 2.16 8.69 9.71 16.06 17.65 6.76 7.27 15.93 16.63 16.62 17.25 3.53 3.53 4.21 4.16 4.86 4.16.78 0 .87-.54.87-4.82l.13-37.29c0-3.87.26-4.98 2.13-5.37.73-.18 1.15-.18 1.45-.18.69 0 1-.38 1-.75 0-.75-.9-.75-1.45-.75ZM282.57 130.16c-.65 0-.78.69-.87 1.21-.43 2.53-1.16 3.71-2.68 4.35-1.6.68-4.35.68-5.99.68-6.28 0-6.91-.87-7.08-4.93-.05-.95-.02-5.07 0-8.07 0-1.18.01-2.19.01-2.8v-5.6c0-.13.03-.15.14-.15 1.07 0 7.36.13 9.07.32 2.25.23 2.8 1.15 3.05 2.02.24.78.24 1.38.24 2.01 0 .53.29.87.74.87.75 0 .75-.95.75-1.51 0-.41.12-2.74.25-4.05.12-1.3.28-2.2.39-2.8.07-.38.12-.62.12-.79 0-.73-.43-.81-.62-.81-.37 0-.63.3-1.07.8l-.11.13c-.47.52-1.21.66-2.8.79-1.07.1-5.91.13-10.13.14 0-.01-.04-.08-.04-.35v-17.56c0-.28.06-.33.08-.34.76 0 7.62.07 8.69.19 3.32.37 3.88 1.09 4.27 1.98.28.68.36 1.69.36 2.18 0 .93.44 1.13.81 1.13s.62-.32.74-.95c.09-.51.17-1.84.23-2.91.04-.59.07-1.09.09-1.31.11-1.04.26-1.72.38-2.21.08-.35.13-.6.13-.81 0-.76-.35-.88-.56-.88-.25 0-.46.1-.64.2-.11.06-.22.11-.33.13-.52.13-1.57.25-2.68.31-1.44.06-14.02.06-14.56.06-.08 0-.39-.01-.85-.03-1.36-.05-4.19-.16-6.34-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.99.42 2.38 1.38 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.32 13.77-.28 1.99-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.36 0 3.75-.1 5.18-.15.57-.02.97-.04 1.06-.04.55 0 1.34.03 2.43.08 2.47.11 6.6.3 13.29.3 2.47 0 3.22 0 3.73-1.89.33-1.39.84-5.74.84-6.24 0-.47 0-1.26-.68-1.26ZM307.34 111.51l-1.78-1.4c-6.15-5.04-7.66-7.09-7.66-10.46 0-4.24 3.03-7.08 7.53-7.08 5.36 0 7.16 2.25 7.69 3.22.35.63.73 2.3.79 3.07.06.46.14 1.09.81 1.09.75 0 .75-1.1.75-1.77 0-3.39.16-5.41.22-6.27.02-.25.03-.4.03-.48 0-.66-.5-.74-.94-.74s-.91-.05-2.16-.31c-1.83-.44-3.74-.64-5.99-.64-8.19 0-13.48 4.61-13.48 11.75 0 4.3 1.43 8.33 8.38 14.04l2.87 2.35c5.66 4.67 7.21 7.09 7.21 11.22s-3.02 8.16-8.8 8.16c-2.36 0-7.98-.61-9.13-6.25-.18-.86-.18-1.72-.18-2.29 0-.38 0-1-.75-1-.69 0-.77.84-.81 1.3-.01.19-.03.44-.05.74-.1 1.28-.27 3.44-.27 6.02 0 1.68.04 2.15 1.12 2.69 2.41 1.18 5.25 1.75 8.66 1.75 3.84 0 7.22-.94 9.78-2.73 4.08-2.9 5.54-7.48 5.54-10.81 0-4.93-1.54-8.99-9.41-15.19ZM168.49 89.75c-18.49 0-25.37 15.45-25.37 25.18 0 12.19 7.82 25.31 24.99 25.31 14.89 0 25.69-11.07 25.69-26.33 0-14.45-10.17-24.16-25.31-24.16Zm18.6 25.95c0 14.62-7.32 19.33-12.56 20.83v-42.76c6.8 2.68 12.56 9.77 12.56 21.93Zm-14.2-22.18v43.4c-1.36.25-2.46.3-3.06.3-.35 0-.69-.04-1.04-.05v-44.62c1.69.07 3.39.39 5.05.97h-.95Zm-11.78 41.61c-6.95-3.61-11.34-11.65-11.34-21.98s4.21-16.8 11.34-19.44v41.42Zm1.64-41.94c1.38-.36 2.84-.57 4.4-.63v44.47c-1.55-.21-3.01-.6-4.4-1.15v-42.69ZM322.47 91.12v.56h-1.59v4.16h-.64v-4.16h-1.59v-.56h3.83ZM323.04 91.12h.91l1.36 3.99 1.35-3.99h.91v4.72h-.61v-2.79c0-.1 0-.26 0-.48 0-.22 0-.46 0-.71l-1.35 3.98h-.63l-1.36-3.98v.14c0 .12 0 .29 0 .53 0 .24 0 .41 0 .52v2.79h-.61v-4.72Z\\\" style=\\\"fill:#fff\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Stack, Box, Button} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport Field from '@salesforce/retail-react-app/app/components/field'\nimport useLoginFields from '@salesforce/retail-react-app/app/components/forms/useLoginFields'\n\nconst LoginFields = ({\n    form,\n    handleForgotPasswordClick,\n    prefix = '',\n    hideEmail = false,\n    hidePassword = false\n}) => {\n    const fields = useLoginFields({form, prefix})\n    return (\n        <Stack spacing={5}>\n            {!hideEmail && <Field {...fields.email} />}\n            {!hidePassword && (\n                <Stack>\n                    <Field {...fields.password} />\n                    {handleForgotPasswordClick && (\n                        <Box>\n                            <Button variant=\"link\" size=\"sm\" onClick={handleForgotPasswordClick}>\n                                <FormattedMessage\n                                    defaultMessage=\"Forgot password?\"\n                                    id=\"login_form.link.forgot_password\"\n                                />\n                            </Button>\n                        </Box>\n                    )}\n                </Stack>\n            )}\n        </Stack>\n    )\n}\n\nLoginFields.propTypes = {\n    handleForgotPasswordClick: PropTypes.func,\n\n    /** Object returned from `useForm` */\n    form: PropTypes.object.isRequired,\n\n    /** Optional prefix for field names */\n    prefix: PropTypes.string,\n\n    /** Optional configurations */\n    hideEmail: PropTypes.bool,\n    hidePassword: PropTypes.bool\n}\n\nexport default LoginFields\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Button, Divider, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport LoginFields from '@salesforce/retail-react-app/app/components/forms/login-fields'\nimport SocialLogin from '@salesforce/retail-react-app/app/components/social-login'\n\nconst StandardLogin = ({\n    form,\n    handleForgotPasswordClick,\n    hideEmail = false,\n    isSocialEnabled = false,\n    setShowPasswordView,\n    idps = []\n}) => {\n    return (\n        <Stack spacing={8} paddingLeft={4} paddingRight={4}>\n            <Stack>\n                <LoginFields\n                    form={form}\n                    hideEmail={hideEmail}\n                    handleForgotPasswordClick={handleForgotPasswordClick}\n                />\n            </Stack>\n            <Stack spacing={4}>\n                <Button\n                    type=\"submit\"\n                    onClick={() => {\n                        form.clearErrors('global')\n                    }}\n                    isLoading={form.formState.isSubmitting}\n                >\n                    <FormattedMessage defaultMessage=\"Sign In\" id=\"login_form.button.sign_in\" />\n                </Button>\n                {isSocialEnabled && idps.length > 0 && (\n                    <>\n                        <Stack spacing={6} paddingTop={2} paddingBottom={2}>\n                            <Divider />\n                            <Text align=\"center\" fontSize=\"sm\">\n                                <FormattedMessage\n                                    defaultMessage=\"Or Login With\"\n                                    id=\"login_form.message.or_login_with\"\n                                />\n                            </Text>\n                        </Stack>\n                        <SocialLogin form={form} idps={idps} />\n                    </>\n                )}\n                {hideEmail && (\n                    <Button\n                        onClick={() => {\n                            form.resetField('password')\n                            setShowPasswordView(false)\n                        }}\n                        borderColor=\"gray.500\"\n                        color=\"blue.600\"\n                        variant=\"outline\"\n                    >\n                        <FormattedMessage\n                            defaultMessage=\"Back to Sign In Options\"\n                            id=\"login_form.button.back\"\n                        />\n                    </Button>\n                )}\n            </Stack>\n        </Stack>\n    )\n}\n\nStandardLogin.propTypes = {\n    form: PropTypes.object,\n    handleForgotPasswordClick: PropTypes.func,\n    hideEmail: PropTypes.bool,\n    isSocialEnabled: PropTypes.bool,\n    setShowPasswordView: PropTypes.func,\n    idps: PropTypes.arrayOf(PropTypes.string)\n}\n\nexport default StandardLogin\n","/*\n * Copyright (c) 2024, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Button, Divider, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport LoginFields from '@salesforce/retail-react-app/app/components/forms/login-fields'\nimport StandardLogin from '@salesforce/retail-react-app/app/components/standard-login'\nimport SocialLogin from '@salesforce/retail-react-app/app/components/social-login'\n\nconst noop = () => {}\nconst PasswordlessLogin = ({\n    form,\n    handleForgotPasswordClick,\n    handlePasswordlessLoginClick,\n    isSocialEnabled = false,\n    idps = [],\n    setLoginType: _setLoginType = noop\n}) => {\n    const [showPasswordView, setShowPasswordView] = useState(false)\n\n    const handlePasswordButton = async (e) => {\n        const isValid = await form.trigger()\n        // Manually trigger the browser native form validations\n        const domForm = e.target.closest('form')\n        if (isValid && domForm.checkValidity()) {\n            setShowPasswordView(true)\n        } else {\n            domForm.reportValidity()\n        }\n    }\n\n    return (\n        <>\n            {(!showPasswordView || form.formState.errors.email) && (\n                <Stack spacing={6} paddingLeft={4} paddingRight={4}>\n                    <LoginFields\n                        form={form}\n                        hidePassword={true}\n                        handleForgotPasswordClick={handleForgotPasswordClick}\n                    />\n                    <Button\n                        type=\"submit\"\n                        onClick={(e) => {\n                            handlePasswordlessLoginClick(e)\n                            form.clearErrors('global')\n                        }}\n                        isLoading={form.formState.isSubmitting}\n                    >\n                        <FormattedMessage\n                            defaultMessage=\"Continue\"\n                            id=\"login_form.button.continue_securely\"\n                        />\n                    </Button>\n                    <Divider />\n                    <Text align=\"center\" fontSize=\"sm\">\n                        <FormattedMessage\n                            defaultMessage=\"Or Login With\"\n                            id=\"login_form.message.or_login_with\"\n                        />\n                    </Text>\n                    <Stack spacing={4}>\n                        <Button\n                            onClick={handlePasswordButton}\n                            borderColor=\"gray.500\"\n                            color=\"blue.600\"\n                            variant=\"outline\"\n                        >\n                            <FormattedMessage\n                                defaultMessage=\"Password\"\n                                id=\"login_form.button.password\"\n                            />\n                        </Button>\n                        {isSocialEnabled && <SocialLogin form={form} idps={idps} />}\n                    </Stack>\n                </Stack>\n            )}\n            {showPasswordView && !form.formState.errors.email && (\n                <StandardLogin\n                    form={form}\n                    handleForgotPasswordClick={handleForgotPasswordClick}\n                    setShowPasswordView={setShowPasswordView}\n                    hideEmail={true}\n                />\n            )}\n        </>\n    )\n}\n\nPasswordlessLogin.propTypes = {\n    form: PropTypes.object,\n    handleForgotPasswordClick: PropTypes.func,\n    handlePasswordlessLoginClick: PropTypes.func,\n    isSocialEnabled: PropTypes.bool,\n    idps: PropTypes.arrayOf(PropTypes.string),\n    hideEmail: PropTypes.bool,\n    setLoginType: PropTypes.func\n}\n\nexport default PasswordlessLogin\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport React, {Fragment} from 'react'\nimport PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Alert, Button, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {AlertIcon, BrandLogo} from '@salesforce/retail-react-app/app/components/icons'\nimport StandardLogin from '@salesforce/retail-react-app/app/components/standard-login'\nimport PasswordlessLogin from '@salesforce/retail-react-app/app/components/passwordless-login'\nimport {noop} from '@salesforce/retail-react-app/app/utils/utils'\n\nconst LoginForm = ({\n    submitForm,\n    handleForgotPasswordClick,\n    handlePasswordlessLoginClick,\n    clickCreateAccount = noop,\n    form,\n    isPasswordlessEnabled = false,\n    isSocialEnabled = false,\n    idps = [],\n    setLoginType\n}) => {\n    return (\n        <Fragment>\n            <Stack justify=\"center\" align=\"center\" spacing={8} marginBottom={8}>\n                <BrandLogo width=\"60px\" height=\"auto\" />\n                <Text align=\"center\" fontSize=\"xl\" fontWeight=\"semibold\">\n                    <FormattedMessage\n                        defaultMessage=\"Welcome Back\"\n                        id=\"login_form.message.welcome_back\"\n                    />\n                </Text>\n            </Stack>\n            <form\n                id=\"login-form\"\n                onSubmit={form.handleSubmit(submitForm)}\n                data-testid=\"sf-auth-modal-form\"\n            >\n                {form.formState.errors?.global && (\n                    <Alert status=\"error\" marginBottom={8}>\n                        <AlertIcon color=\"red.500\" boxSize={4} />\n                        <Text fontSize=\"sm\" ml={3}>\n                            {form.formState.errors.global.message}\n                        </Text>\n                    </Alert>\n                )}\n                <Stack spacing={6}>\n                    {isPasswordlessEnabled ? (\n                        <PasswordlessLogin\n                            form={form}\n                            handleForgotPasswordClick={handleForgotPasswordClick}\n                            handlePasswordlessLoginClick={handlePasswordlessLoginClick}\n                            isSocialEnabled={isSocialEnabled}\n                            idps={idps}\n                            setLoginType={setLoginType}\n                        />\n                    ) : (\n                        <StandardLogin\n                            form={form}\n                            handleForgotPasswordClick={handleForgotPasswordClick}\n                            isSocialEnabled={isSocialEnabled}\n                            idps={idps}\n                        />\n                    )}\n\n                    <Stack direction=\"row\" spacing={1} justify=\"center\">\n                        <Text fontSize=\"sm\">\n                            <FormattedMessage\n                                defaultMessage=\"Don't have an account?\"\n                                id=\"login_form.message.dont_have_account\"\n                            />\n                        </Text>\n                        <Button variant=\"link\" size=\"sm\" onClick={clickCreateAccount}>\n                            <FormattedMessage\n                                defaultMessage=\"Create account\"\n                                id=\"login_form.action.create_account\"\n                            />\n                        </Button>\n                    </Stack>\n                </Stack>\n            </form>\n        </Fragment>\n    )\n}\n\nLoginForm.propTypes = {\n    submitForm: PropTypes.func,\n    handleForgotPasswordClick: PropTypes.func,\n    clickCreateAccount: PropTypes.func,\n    handlePasswordlessLoginClick: PropTypes.func,\n    form: PropTypes.object,\n    isPasswordlessEnabled: PropTypes.bool,\n    isSocialEnabled: PropTypes.bool,\n    idps: PropTypes.arrayOf(PropTypes.string),\n    setLoginType: PropTypes.func\n}\n\nexport default LoginForm\n","import {useEffect, useRef} from 'react'\nimport isEqual from 'lodash/isEqual'\n\n/**\n * Custom hook that performs a deep comparison of dependencies and triggers the effect only when they actually change.\n *\n * @param {Function} callback - The effect callback function.\n * @param {Array} dependencies - The list of dependencies to watch for changes.\n */\nexport const useDeepCompareEffect = (callback, dependencies) => {\n    const currentDependenciesRef = useRef()\n\n    if (!isEqual(currentDependenciesRef.current, dependencies)) {\n        currentDependenciesRef.current = dependencies\n    }\n\n    useEffect(callback, [currentDependenciesRef.current])\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-gb\",\n  \"use\": \"flag-gb-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" id=\\\"flag-gb\\\">\\n    <g clip-path=\\\"url(#flag-gb_clip0)\\\">\\n        <path d=\\\"M29.5 4h-34v17h34V4z\\\" fill=\\\"#006\\\" />\\n        <path d=\\\"M-4.5 4v1.9L25.699 21h3.8v-1.9L-.698 4H-4.5zm34 0v1.9L-.7 21H-4.5v-1.9L25.699 4h3.8z\\\" fill=\\\"#fff\\\" />\\n        <path d=\\\"M9.667 4v17h5.666V4H9.667zM-4.5 9.667v5.666h34V9.667h-34z\\\" fill=\\\"#fff\\\" />\\n        <path d=\\\"M-4.5 10.8v3.4h34v-3.4h-34zM10.8 4v17h3.4V4h-3.4zM-4.5 21l11.333-5.667h2.534L-1.966 21H-4.5zm0-17L6.833 9.667H4.3l-8.799-4.4V4zm20.133 5.667L26.965 4H29.5L18.167 9.667h-2.535zM29.5 21l-11.333-5.667H20.7l8.799 4.4V21z\\\" fill=\\\"#C00\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M24 0H0v24h24V0zM12.5 21a8.5 8.5 0 100-17 8.5 8.5 0 000 17z\\\" fill=\\\"#fff\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"flag-gb_clip0\\\">\\n            <path fill=\\\"#fff\\\" d=\\\"M0 0h24v24H0z\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from '@salesforce/retail-react-app/app/constants'\n\nexport const PARTIAL_HYDRATION_ENABLED = true\n","import {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport fetch from 'cross-fetch'\n/**\n * fetchOAuthTokenFromSSR\n *\n * Makes a client-side request to fetch a new OAuth access token.\n * This is the actual network call to your authentication or identity provider.\n *\n * Typically used by useB2CPrefetch and useOAuthMutation on client(React) to obtain a fresh token when none exists or the current one is expired.\n * The response is expected to include `access_token` and `expires_in`.\n *\n * @returns {Promise<{access_token: string, expires_in: number}>} The token response from the auth server\n *\n * @throws {Error} If the request fails or returns an invalid response\n *\n */\nexport const fetchOAuthTokenFromSSR = async () => {\n    const {app: appConfig} = getConfig()\n    const tokenUrl = `${appConfig?.customAPI?.proxyPath}?app=${process.env.TARGET_APP}`\n\n    try {\n        const response = await fetch(tokenUrl, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application/json'\n            }\n        })\n\n        if (!response.ok) {\n            console.error('Error fetching token', response.status, tokenUrl)\n            return {}\n        }\n        return await response.json()\n    } catch (error) {\n        console.error(`Error fetching token from ${tokenUrl}`, error)\n        return {}\n    }\n}\n","import {useCallback, useState, useRef, useEffect} from 'react'\nimport fetch from 'cross-fetch'\nimport queryString from 'query-string'\nimport {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'\nimport {useAuthorizationHeader} from '@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader'\nimport {useAppOrigin} from '@salesforce/retail-react-app/app/hooks/use-app-origin'\nimport {fetchOAuthTokenFromSSR} from '../apis/oauth'\nimport {dolFetch, isDolProxyPath} from '../apis/dol'\nimport {TOKEN_STALE_TIME_MS} from '../token-constants'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n/**\n * Fetches API data using the provided base URL, API options, and headers.\n *\n * @param {string} baseUrl - The base URL for the API request.\n * @param {Object} apiOptions - An object containing the path, and query parameters for the API request.\n * @param {Object} headers - The headers for the API request.\n * @returns {Promise<Object>} - A promise that resolves to the JSON response from the API.\n * @throws {Error} - If the request fails or there is an error fetching the data.\n */\nexport const getApiData = async ({\n    baseUrl,\n    apiOptions,\n    headers,\n    body,\n    method = 'GET',\n    enableEmptyResponseHandling = false,\n    enableDolAuthHeaderInjection = false,\n    signal\n}) => {\n    const {path, queryParams, skipCredentials = true} = apiOptions\n    const url = baseUrl.concat(path)\n    const queryStringified = queryString.stringify(queryParams, {skipEmptyString: true})\n\n    const doFetch = isDolProxyPath(path) && enableDolAuthHeaderInjection ? dolFetch : fetch\n\n    const response = await doFetch(`${url}?${queryStringified}`, {\n        method,\n        headers: {\n            ...headers,\n            ...(body && {'Content-Type': 'application/json'})\n        },\n        ...(body && {body: body}),\n        credentials: skipCredentials ? 'omit' : 'include',\n        ...(signal && {signal})\n    })\n    const contentType = response?.headers?.get('Content-Type')\n\n    if (!response.ok) {\n        let errorDetails = {}\n        if (\n            contentType &&\n            (contentType.includes('application/json') ||\n                contentType.includes('application/problem+json'))\n        ) {\n            try {\n                errorDetails = await response.json()\n            } catch {\n                errorDetails = {}\n            }\n        } else {\n            errorDetails = {message: `${response.status} ${response.statusText}`}\n        }\n\n        const errorMessage = errorDetails?.message || `${response.status} ${response.statusText}`\n        const error = new Error(errorMessage)\n\n        error.status = response.status\n        error.statusText = response.statusText\n        error.details = errorDetails\n\n        throw error\n    }\n\n    if (contentType?.includes('text/html')) {\n        return response.text()\n    }\n\n    // Feature flag: Handle empty responses (e.g., 201 No Content)\n    if (enableEmptyResponseHandling) {\n        const text = await response.text()\n        if (!text) {\n            return null\n        }\n\n        try {\n            return JSON.parse(text)\n        } catch (e) {\n            console.error('Failed to parse JSON response:', e)\n            return text\n        }\n    }\n\n    return response.json()\n}\n\n/**\n * Custom hook to fetch data from external APIs using a query.\n *\n * @param {string} [key] - The name of the query to be used as a key for caching.\n * @param {object} apiOptions - The options to configure the API call, such as query parameters.\n * @param {number} [cacheTime=600] - The time in milliseconds for which the query result will be cached.\n *\n * @returns {object} - The query object containing the status of the query, the data fetched, and any error encountered.\n *\n * This hook utilizes the useQuery hook from react-query to fetch data from the API.\n * It first retrieves the base URL of the API and the access token using other custom hooks.\n * If either the base URL or the token is not available, it throws an error.\n * Otherwise, it proceeds to make the API call using the provided options and returns the result.\n *\n * @example\n * // To fetch products with a specific category (tbc after changes from DOL)\n * const { data, error, isLoading } = useCustomQuery('getProductsData',{ queryParams: { category: 'electronics' } });\n *\n * @throws {Error} - If the base URL or token is not available.\n */\n\nexport const useCustomQuery = (key, apiOptions, {...rest} = {}) => {\n    const baseUrl = useAppOrigin(true)\n    const {headers, body, method, ...restApiOptions} = apiOptions\n    const enableSearchSuggestionsDebounce = useVariant(\n        LD_KEYS.enableSearchSuggestionsDebounce,\n        false\n    )\n    const enableDolAuthHeaderInjection = useVariant(LD_KEYS.enableDolAuthHeaderInjection, false)\n\n    if (!baseUrl) {\n        throw new Error('Base URL is not available')\n    }\n    const authenticatedMethod = useAuthorizationHeader(getApiData)\n\n    return useQuery(\n        Array.isArray(key) ? key : [key],\n        ({signal}) =>\n            authenticatedMethod({\n                baseUrl,\n                apiOptions: restApiOptions,\n                headers,\n                body,\n                method,\n                enableDolAuthHeaderInjection,\n                // Forward React Query's AbortSignal so superseded/unmounted\n                // queries are aborted in flight. Gated to limit blast radius\n                // while validating with the suggestions endpoint.\n                ...(enableSearchSuggestionsDebounce && {signal})\n            }),\n        {\n            ...rest,\n            enabled: rest.enabled !== false\n        }\n    )\n}\n\nexport const useCustomMutation = (key, apiOptions, {...rest} = {}) => {\n    const baseUrl = useAppOrigin(true)\n    const {headers, body: staticBody, method, ...restApiOptions} = apiOptions\n    const enableEmptyResponseHandling = useVariant(LD_KEYS.enableEmptyResponseHandling, false)\n    const enableDolAuthHeaderInjection = useVariant(LD_KEYS.enableDolAuthHeaderInjection, false)\n\n    if (!baseUrl) {\n        throw new Error('Base URL is not available')\n    }\n    const apiOptionsUpdated = {\n        skipCredentials: true,\n        ...restApiOptions\n    }\n\n    const authenticatedMethod = useAuthorizationHeader(getApiData)\n\n    return useMutation({\n        mutationKey: [key],\n        mutationFn: (variables = {}) => {\n            const {body: dynamicBody} = variables\n\n            return authenticatedMethod({\n                baseUrl,\n                apiOptions: apiOptionsUpdated,\n                headers,\n                body: dynamicBody ?? staticBody,\n                method,\n                enableEmptyResponseHandling,\n                enableDolAuthHeaderInjection\n            })\n        },\n        ...rest\n    })\n}\n/**\n * A custom React hook for lazy querying ext api data.\n *\n * @param {string} key - The unique identifier for the query cache.\n * @param {object} options - Additional options for the query.\n * @returns {array} An array containing a trigger function and the query result.\n *   - trigger: A function to trigger the query when called.\n *   - query: The result of the query which can be used to access data and loading state.\n *\n * @example\n * // Usage example:\n * const [trigger, {data, error, isLoading }] = useCustomQueryLazyQuery('products', { filters: {...} });\n *\n * // Call trigger function to initiate the query\n * trigger();\n *\n * // Access query result\n * if (isLoading) {\n *   return <div>Loading...</div>;\n * }\n *\n * if (error) {\n *   return <div>Error: {error.message}</div>;\n * }\n *\n * return (\n *   <div>\n *     {data.map(product => (\n *       <div key={product.id}>{product.name}</div>\n *     ))}\n *   </div>\n * );\n */\nexport const useCustomLazyQuery = (key, initialOptions) => {\n    const [queryParams, setQueryParams] = useState(initialOptions.queryParams)\n    const refetchRef = useRef(null)\n\n    const mergedOptions = {\n        ...initialOptions,\n        queryParams\n    }\n\n    const query = useCustomQuery(\n        key,\n        {...mergedOptions},\n        {\n            enabled: false,\n            meta: {\n                displayName: 'useCustomLazyQuery'\n            }\n        }\n    )\n\n    useEffect(() => {\n        if (refetchRef.current) {\n            query.refetch()\n            refetchRef.current = null\n        }\n    }, [queryParams, query])\n\n    const trigger = useCallback((values) => {\n        setQueryParams((prev) => ({\n            ...prev,\n            ...values\n        }))\n        refetchRef.current = true\n    }, [])\n\n    return [trigger, query]\n}\n\n/**\n * React Query mutation hook for APIs that require an OAuth token (not Commerce SDK auth).\n *\n * Replaces `useCustomMutation` by using `OAuthTokenService` instead of `useAuthorizationHeader`.\n *\n */\nexport const useOAuthMutation = (key, apiOptions, {...rest} = {}) => {\n    const queryClient = useQueryClient()\n    const baseUrl = useAppOrigin(true)\n    const {headers = {}, body: staticBody, method = 'POST', path} = apiOptions\n\n    if (!baseUrl) {\n        throw new Error('Base URL is not available')\n    }\n\n    return useMutation({\n        mutationKey: [key],\n        mutationFn: async (variables = {}) => {\n            let token = queryClient.getQueryData(['b2c-intranet-token'])\n\n            if (!token) {\n                // No cached token? Fetch it now\n                token = await fetchOAuthTokenFromSSR()\n                queryClient.setQueryData(['b2c-intranet-token'], token)\n            }\n\n            const {body: dynamicBody} = variables\n\n            const finalBody = dynamicBody ?? staticBody\n\n            const response = await fetch(`${baseUrl}${path}`, {\n                method,\n                headers: {\n                    Authorization: `Bearer ${token?.access_token}`,\n                    ...headers\n                },\n                body: finalBody\n            })\n\n            const data = await response.json()\n\n            if (!response.ok) {\n                throw data\n            }\n\n            return data\n        },\n        ...rest\n    })\n}\n\n/**\n * Custom hook to prefetch OAuth token from a custom SSR route.\n * This hook is typically used in SPAs to ensure authentication tokens are available before user interactions.\n *\n */\nexport const useB2CTokenPrefetch = () => {\n    const queryClient = useQueryClient()\n\n    const prefetchToken = () => {\n        queryClient.prefetchQuery({\n            queryKey: ['b2c-intranet-token'],\n            queryFn: fetchOAuthTokenFromSSR,\n            staleTime: TOKEN_STALE_TIME_MS\n        })\n    }\n\n    return prefetchToken\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {getEnvBasePath} from '@salesforce/pwa-kit-runtime/utils/ssr-namespace-paths'\n\n/**\n * Call requestIdleCallback in supported browsers.\n *\n * https://developers.google.com/web/updates/2015/08/using-requestidlecallback\n * http://caniuse.com/#feat=requestidlecallback\n */\nexport const requestIdleCallback = (fn) => {\n    if ('requestIdleCallback' in window) {\n        return window.requestIdleCallback(fn)\n    } else {\n        return setTimeout(() => fn(), 1)\n    }\n}\n\nexport const watchOnlineStatus = (callback, win = window) => {\n    const off = () => callback(false)\n    const on = () => callback(true)\n    win.addEventListener('offline', off)\n    win.addEventListener('online', on)\n    const unsubscribe = () => {\n        win.removeEventListener('offline', off)\n        win.removeEventListener('online', on)\n    }\n    return unsubscribe\n}\n\n/**\n * Performs a shallow comparison on two objects\n * @param {Object} a\n * @param {Object} b\n * @returns {boolean}\n */\nexport const shallowEquals = (a, b) => {\n    for (let key in a) {\n        if (!(key in b) || a[key] !== b[key]) {\n            return false\n        }\n    }\n    for (let key in b) {\n        if (!(key in a) || a[key] !== b[key]) {\n            return false\n        }\n    }\n    return true\n}\n\n/**\n * No operation function. You can use this\n * empty function when you wish to pass\n * around a function that will do nothing.\n * Usually used as default for event handlers.\n */\nexport const noop = () => {}\n\n/**\n * Flattens a tree data structure into an array.\n * @param {*} node\n * @returns\n */\nexport const flatten = (node, key = 'children') => {\n    const children = (node[key] || []).reduce((a, b) => {\n        return Array.isArray(b[key]) && !!b[key].length\n            ? {...a, ...flatten(b, key)}\n            : {...a, [b.id]: b}\n    }, {})\n\n    return {\n        [node.id]: node,\n        ...children\n    }\n}\n\n/**\n * Check the current execution environment\n * is client side or server side\n * @returns Boolean\n */\nexport const isServer = typeof window === 'undefined'\n\n/**\n * retrieves an item from session storage\n * @param {string} key\n * @returns JSON | undefined\n */\nexport const getSessionJSONItem = (key) => {\n    if (isServer) {\n        return undefined\n    }\n    const item = window.sessionStorage.getItem(key)\n    if (item) {\n        return JSON.parse(item)\n    } else {\n        return undefined\n    }\n}\n/**\n * sets an item in session storage\n * @param {string} key\n * @param {string} value\n */\nexport const setSessionJSONItem = (key, value) => {\n    window.sessionStorage.setItem(key, JSON.stringify(value))\n}\n\n/**\n * clears an item in session storage\n * @param {string} key\n */\nexport const clearSessionJSONItem = (key) => {\n    window.sessionStorage.removeItem(key)\n}\n\n/**\n * escapes special regex characters\n * @param {string} str\n * @returns escaped string\n */\nexport const escapeRegexChars = (str) => str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n/**\n * bolds a substring of a string by adding <b> tags\n * @param {string} str\n * @param {string} substr\n * @returns stringified HTML Node\n */\nexport const boldString = (str, substr) => {\n    return str?.replace(RegExp(escapeRegexChars(substr.trim()), 'gi'), '<b>$&</b>')\n}\n\n/**\n * Capitalizes the words in a string\n * @param {string} text\n * @returns capitalized text\n */\nexport const capitalize = (text) => {\n    return text\n        .toLowerCase()\n        .split(' ')\n        .map((s) => s.charAt(0).toUpperCase() + s.substring(1))\n        .join(' ')\n}\n\nconst safeToCamel = (str) => {\n    if (str.startsWith('_') || str.startsWith('c_')) {\n        return str\n    }\n    return str.replace(/([-_][a-z])/gi, ($1) => {\n        return $1[1].toUpperCase()\n    })\n}\n\nconst isPlainObject = (obj) => {\n    return obj === Object(obj) && !Array.isArray(obj) && typeof obj !== 'function'\n}\n\nexport const keysToCamel = (obj) => {\n    if (isPlainObject(obj)) {\n        const n = {}\n\n        Object.keys(obj).forEach((k) => {\n            n[safeToCamel(k)] = keysToCamel(obj[k])\n        })\n\n        return n\n    } else if (Array.isArray(obj)) {\n        return obj.map(keysToCamel)\n    }\n\n    return obj\n}\n\n/**\n * Merge two arrays (arr1 and arr2) into one array\n * and merge the matched items (objects with the same id)\n * into one object. There is an assumption where arr2 is\n * always a subset of arr1.\n *\n * @param arr1 - array of objects\n * @param arr2\n * @return {Array}\n */\nexport const mergeMatchedItems = (arr1 = [], arr2 = []) => {\n    const merged = arr1.map((item) => {\n        const match = arr2.find((item2) => item2.id === item.id)\n        return match ? {...item, ...match} : item\n    })\n    return merged\n}\n\n/**\n * This util func determines if the app is finished hydration\n * @return {boolean}\n */\nexport const isHydrated = () => typeof window !== 'undefined' && !window.__HYDRATING__\n\n/**\n * Constructs a redirectURI by combining `appOrigin` with `redirectPath`.\n * Ensures that `redirectPath` starts with a '/'.\n * Returns an empty string if `redirectPath` is falsy.\n *\n * This will insert an envBasePath in between the 'appOrigin' and the 'redirectPath'\n * if one has been defined in the PWA config.\n *\n * @param {*} appOrigin\n * @param {*} redirectPath - relative redirect path\n * @returns redirectURI to be passed into the social login flow\n */\nexport const buildRedirectURI = (appOrigin = '', redirectPath = '') => {\n    if (redirectPath) {\n        const path = redirectPath.startsWith('/') ? redirectPath : `/${redirectPath}`\n        return `${appOrigin}${getEnvBasePath()}${path}`\n    } else {\n        return ''\n    }\n}\n","export const CONTROLLER_PATH = {\n    CHECKOUT_BEGIN: 'Checkout-Begin?stage=shipping&',\n    CART_SHOW: 'Cart-Show',\n    ACCOUNT_SHOW: 'Account-Show',\n    WISHLIST_SHOW: 'Wishlist-Show',\n    LOGIN: 'Login-Show',\n    CREATE_ACCOUNT: 'Login-Show?join=true',\n    LOGOUT: 'Login-Logout',\n    RURL_PDP: '11'\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"calendar-primary\",\n  \"use\": \"calendar-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"calendar-primary\\\">\\n    <path d=\\\"M1.5 2C1.5 1.72386 1.72386 1.5 2 1.5H18C18.2761 1.5 18.5 1.72386 18.5 2V18C18.5 18.2761 18.2761 18.5 18 18.5H2C1.72386 18.5 1.5 18.2761 1.5 18V6H16.5V5H0.5V18C0.5 18.8284 1.17157 19.5 2 19.5H18C18.8284 19.5 19.5 18.8284 19.5 18V2C19.5 1.17157 18.8284 0.5 18 0.5H2C1.17157 0.5 0.5 1.17157 0.5 2V3H1.5V2Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M4.5 9H3.5V11H6V10H4.5V9Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M9.5 9H8.5V11H11V10H9.5V9Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M14.5 9H13.5V11H16V10H14.5V9Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M4.5 14H3.5V16H6V15H4.5V14Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M9.5 14H8.5V16H11V15H9.5V14Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M14.5 14H13.5V16H16V15H14.5V14Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"ruler\",\n  \"use\": \"ruler-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"ruler\\\">\\n<g id=\\\"ruler_Ruler\\\" clip-path=\\\"url(#ruler_clip0_3110_10550)\\\">\\n<path id=\\\"ruler_icon\\\" d=\\\"M7.00452 8.7117L4.71162 11.0046L6.82835 13.1213L6.12124 13.8284L4.00452 11.7117L1.41421 14.302L5.69629 18.5841L18.581 5.69934L14.299 1.41727L14.2982 1.41804L13.5911 0.710938L14.299 0.00305176L19.9952 5.69934L5.69629 19.9983L0 14.302L10.0065 4.29553L10.7136 5.00264L10.7116 5.00459L12.8284 7.12132L12.1212 7.82843L10.0045 5.7117L7.71162 8.00459L9.82835 10.1213L9.12124 10.8284L7.00452 8.7117Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"ruler_clip0_3110_10550\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const refineKeyMapper = {\n    dynamicKeys: ['prefn', 'prefv'], // For prefn1, prefv1, etc.\n    attributes: {\n        price: ['pmin', 'pmax'],\n        pmid: ['pmid']\n    },\n    sort: ['srule']\n}\n\n/** Map of sfcc refinement attribute IDs to BR compatible ones */\nexport const refineIdMapperBR = {\n    color: 'colors',\n    size: 'Size'\n}\n\nexport const canonicalRefinementsMapper = (parametersArray, refinements, isBloomreachEnabled) => {\n    if (isBloomreachEnabled) {\n        return canonicalBRRefinementsMapper(parametersArray, refinements)\n    }\n    for (const [key, value] of Object.entries(refinements)) {\n        const decodedValue = decodeURIComponent(value.replace(/\\+/g, ' '))\n        const refinedString = `c_${key}=${decodedValue}`\n        const existingEntryIndex = parametersArray.refine.findIndex((entry) =>\n            entry.startsWith(`c_${key}=`)\n        )\n\n        if (existingEntryIndex === -1) {\n            parametersArray.refine.push(refinedString)\n        } else {\n            const existingValue = parametersArray.refine[existingEntryIndex].split('=')[1]\n\n            const existingValuesArray = existingValue.split('|')\n            const newValuesArray = decodedValue.split('|')\n\n            const mergedValues = [...new Set([...existingValuesArray, ...newValuesArray])]\n\n            parametersArray.refine[existingEntryIndex] = `c_${key}=${mergedValues.join('|')}`\n        }\n    }\n\n    return parametersArray\n}\n\nexport const canonicalBRRefinementsMapper = (\n    parametersArray,\n    refinements,\n    disableKeyMapping = false\n) => {\n    for (const [key, value] of Object.entries(refinements)) {\n        const decodedValue = decodeURIComponent(value.replace(/\\+/g, ' '))\n        const mappedKey = disableKeyMapping ? key : refineIdMapperBR[key] || key\n        const refinedString = `${mappedKey}=${decodedValue}`\n        const existingEntryIndex = parametersArray.refine.findIndex((entry) =>\n            entry.startsWith(`${mappedKey}=`)\n        )\n\n        if (existingEntryIndex === -1) {\n            parametersArray.refine.push(refinedString)\n        } else {\n            const existingValue = parametersArray.refine[existingEntryIndex].split('=')[1]\n\n            const existingValuesArray = existingValue.split('|')\n            const newValuesArray = decodedValue.split('|')\n\n            const mergedValues = [...new Set([...existingValuesArray, ...newValuesArray])]\n\n            parametersArray.refine[existingEntryIndex] = `${mappedKey}=${mergedValues.join('|')}`\n        }\n    }\n\n    return parametersArray\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const parseFormattedPrice = (price, currency, locale) => {\n    if (typeof price !== 'string' && typeof price !== 'number') {\n        return NaN\n    }\n\n    const priceString = price.toString()\n\n    // Check if the price has a comma in the last 3 characters (likely a decimal separator)\n    const hasCommaDecimal = typeof price === 'string' && /,\\d{1,2}$/.test(priceString)\n\n    if (hasCommaDecimal) {\n        // Handle comma as decimal separator (European style)\n        return parseFloat(\n            priceString.replace(/[,.]/g, function (x) {\n                return x === ',' ? '.' : ''\n            })\n        )\n    } else {\n        // Handle comma as thousands separator (US/UK style)\n        if (typeof price === 'string') {\n            return parseFloat(priceString.replace(/,/g, ''))\n        }\n        return parseFloat(price)\n    }\n}\n\nexport const formatPriceRange = (params, currency, locale) => {\n    const {pmin, pmax} = params\n    const formattedMin = parseFormattedPrice(pmin, currency, locale)\n    const formattedMax = parseFormattedPrice(pmax, currency, locale)\n    return `(${formattedMin}..${formattedMax})`\n}\n\nexport const prefRefinementsMapper = (\n    params,\n    currency,\n    locale,\n    isBloomreachEnabled,\n    enableNewDolContract\n) => {\n    const refineQueries = []\n    const refineObj = {}\n    Object.keys(params).forEach((key) => {\n        const prefKey = refineKeyMapper.dynamicKeys[0]\n        const valueKey = refineKeyMapper.dynamicKeys[1]\n\n        if (key.startsWith(prefKey)) {\n            const index = key.slice(5) // Get the index from 'prefn'\n            const prefn = params[`${prefKey}${index}`]\n            const prefv = params[`${valueKey}${index}`]\n\n            if (prefn && prefv) {\n                if (isBloomreachEnabled || enableNewDolContract) {\n                    const prefnKey = refineIdMapperBR[prefn] || prefn\n                    refineQueries.push(`${prefnKey}=${prefv}`)\n                } else if (prefn === 'cgid') {\n                    refineQueries.push(`${prefn}=${prefv}`)\n                } else {\n                    refineQueries.push(`c_${prefn}=${prefv}`)\n                }\n\n                refineObj[prefn] = prefv\n            }\n        }\n    })\n\n    for (const [attribute, keys] of Object.entries(refineKeyMapper.attributes)) {\n        if (keys.every((key) => params[key] !== undefined)) {\n            if (attribute === 'price') {\n                const priceRange = formatPriceRange(params, currency, locale)\n                const priceSegment = 'price'\n                refineQueries.push(\n                    isBloomreachEnabled ? `${priceSegment}=${priceRange}` : `price=${priceRange}`\n                )\n                refineObj.price = priceRange\n            } else {\n                refineQueries.push(`${attribute}=${params[keys[0]]}`)\n                refineObj[attribute] = params[keys[0]]\n            }\n        }\n    }\n\n    return refineQueries\n}\n\nexport const sortRefinementsMapper = (params) => {\n    if (params.srule) {\n        return {sort: params.srule}\n    } else return {}\n}\n\nexport const sortBRRefinementsMapper = (\n    sortingOptions = [],\n    params = {},\n    enableNewDolContract = false\n) => {\n    const customerSegment = 'price' // Always use 'price' as default since userSegment is removed\n    if (!sortingOptions.length || !params?.srule) return {}\n\n    const brSelectedOption = sortingOptions.find((item) => item.id === params.srule)\n    if (!brSelectedOption) return {}\n\n    if (enableNewDolContract) {\n        return {sort: brSelectedOption.id}\n    }\n\n    const sortValue = brSelectedOption.value\n    if (!sortValue) return {}\n\n    return sortValue.includes('${price}')\n        ? {sort: sortValue.replace('${price}', customerSegment)}\n        : {sort: sortValue}\n}\n\nexport const addMissingMinMaxParam = (apiParams, url) => {\n    const urlObj = new URL(url)\n    if (apiParams?.pmin !== undefined && !apiParams?.pmax) {\n        urlObj.search = ''\n        urlObj.searchParams.append('pmin', parseInt(apiParams?.pmin))\n        urlObj.searchParams.append('pmax', 10000)\n        return urlObj.toString()\n    } else if (apiParams?.pmax && apiParams?.pmin === undefined) {\n        urlObj.search = ''\n        urlObj.searchParams.append('pmax', parseInt(apiParams?.pmax))\n        urlObj.searchParams.append('pmin', 0)\n        return urlObj.toString()\n    }\n\n    return null\n}\n\nconst removeQueryStringPrefix = (currentPath) =>\n    currentPath.startsWith('?') ? currentPath.substring(1) : currentPath\n\nexport const extractRelevantParams = (queryString) => {\n    // Flatten `refineKeyMapper` to create a set of prefixes for easy filtering\n    const prefixes = [\n        ...refineKeyMapper.dynamicKeys,\n        ...Object.values(refineKeyMapper.attributes).flat(),\n        ...refineKeyMapper.sort\n    ]\n\n    return removeQueryStringPrefix(queryString) // Remove the \"?\" at the start\n        .split('&') // Split into individual key-value pairs\n        .filter((param) => prefixes.some((prefix) => param.startsWith(prefix))) // Keep only relevant parameters\n        .sort() // Sort them to ensure order consistency\n        .join('&') // Join them back into a string\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"store-pictogram\",\n  \"use\": \"store-pictogram-usage\",\n  \"viewBox\": \"0 0 64 64\",\n  \"content\": \"<symbol viewBox=\\\"0 0 64 64\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"store-pictogram\\\">\\n    <path d=\\\"M7.99597 15.6748H55.996V14.6748H7.99597V15.6748Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M7.99988 30.999H10.9999V29.999H7.99988V30.999Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M13.9397 30.0049H42.0118L41.9999 55.9087L40.9999 55.9082L41.0114 31.0049H14.9393L14.9278 55.9087L13.9278 55.9082L13.9397 30.0049Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M44.9999 30.999H55.9999V29.999H44.9999V30.999Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M45.7183 39.2578L47.826 37.1501L47.1189 36.443L45.0112 38.5507L45.7183 39.2578Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M8.67413 21.0117L10.7818 18.904L10.0747 18.1969L7.96703 20.3046L8.67413 21.0117Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M45.7183 42.7197L51.0441 37.394L50.337 36.6869L45.0112 42.0126L45.7183 42.7197Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M8.70929 24.4736L14.0351 19.1479L13.3279 18.4408L8.00218 23.7665L8.70929 24.4736Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M30.3174 33.6532H30.1551L30.1516 33.649L30.2238 32.9407L30.228 32.9365H30.2486L30.2527 32.9407L30.3209 33.649L30.3174 33.6532Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M30.6283 33.6984L30.6325 33.6942L30.7501 33.0602L30.746 33.056L30.7253 33.0518L30.7219 33.056L30.4625 33.6571L30.4667 33.6613L30.6283 33.6984Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M30.6002 33.8719C30.6002 33.9294 30.5561 33.9707 30.5073 33.9707C30.4543 33.9707 30.4103 33.9294 30.4103 33.8719C30.4103 33.8187 30.455 33.7773 30.5073 33.7773C30.5554 33.7773 30.6002 33.8187 30.6002 33.8719Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M30.2362 33.9414C30.2851 33.9414 30.3291 33.9001 30.3291 33.8426C30.3291 33.7894 30.2844 33.748 30.2362 33.748C30.1839 33.748 30.1392 33.7894 30.1392 33.8426C30.1392 33.9001 30.1839 33.9414 30.2362 33.9414Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M30.0057 33.6613L29.8441 33.6984L29.8399 33.6942L29.7223 33.0602L29.7264 33.056L29.7471 33.0518L29.7505 33.056L30.0099 33.6571L30.0057 33.6613Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M29.8682 33.8719C29.8682 33.9294 29.9129 33.9707 29.9652 33.9707C30.014 33.9707 30.058 33.9294 30.058 33.8719C30.058 33.8187 30.0133 33.7773 29.9652 33.7773C29.9129 33.7773 29.8682 33.8187 29.8682 33.8719Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.004 34.1475H18.8289C19.3834 34.1475 19.8643 34.469 19.865 35.0372C19.865 35.6222 19.3875 35.9683 18.8296 35.9683C18.7732 35.9683 18.6074 35.9599 18.5344 35.9515L18.5303 35.9557V36.4748C18.5303 36.8251 18.5503 37.0269 18.5503 37.0269L18.5461 37.0311H18.004L17.9999 37.0269C17.9999 37.0269 18.0198 36.8251 18.0198 36.4748V34.7037C18.0198 34.3534 17.9999 34.1517 17.9999 34.1517L18.004 34.1475ZM18.5296 35.4744C18.5943 35.4863 18.7401 35.4947 18.8048 35.4947C19.1529 35.4947 19.3469 35.3293 19.3469 35.0379C19.3469 34.7374 19.1247 34.6218 18.8454 34.6218H18.5296V35.4744Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M21.4129 34.3822C21.3524 34.2378 21.3317 34.1517 21.3317 34.1517L21.3276 34.1475H20.8866L20.8825 34.1517C20.8825 34.1517 20.866 34.2378 20.8054 34.3822L19.8505 36.7221C19.7693 36.9197 19.6888 37.0269 19.6888 37.0269V37.0311H20.2468L20.2509 37.0269C20.2509 37.0101 20.2633 36.9407 20.3321 36.7677L20.5062 36.327H21.7356L21.9213 36.7677C21.9819 36.9365 22.0183 37.0269 22.0183 37.0269L22.0225 37.0311H22.5804V37.0269C22.5804 37.0269 22.5075 36.9197 22.4187 36.7221L21.4129 34.3822ZM20.6967 35.8527L21.0971 34.8354H21.1013L21.534 35.8527H20.6967Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M25.3722 34.1475L25.3763 34.1517C25.3763 34.1517 25.3557 34.3534 25.3557 34.7051V36.4762C25.3557 36.8265 25.3756 37.0283 25.3756 37.0283L25.3715 37.0325H24.9106L23.3736 34.9973H23.3695V36.4762C23.3695 36.8265 23.3895 37.0283 23.3895 37.0283L23.3853 37.0325H22.8921L22.8879 37.0283C22.8879 37.0283 22.9079 36.8265 22.9079 36.4762V34.4368C22.9079 34.3752 22.8755 34.2841 22.815 34.1524L22.8191 34.1482H23.3613L24.8906 36.1539H24.8948V34.7037C24.8948 34.3534 24.8748 34.1517 24.8748 34.1517L24.8789 34.1475H25.3722Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M26.9133 34.1475H25.9667L25.9625 34.1517C25.9625 34.1517 25.9825 34.3534 25.9825 34.7037V36.4748C25.9825 36.8251 25.9625 37.0269 25.9625 37.0269L25.9667 37.0311H26.2577C26.3476 37.0311 26.4424 37.0365 26.5428 37.0422C26.6559 37.0487 26.7765 37.0556 26.9051 37.0556C27.7747 37.0556 28.3897 36.4293 28.3897 35.5935C28.3897 34.7486 27.787 34.1475 26.9133 34.1475ZM26.881 36.582C26.7434 36.582 26.6182 36.5778 26.5452 36.5575C26.5005 36.5449 26.493 36.5288 26.493 36.4503V34.6169H26.8693C27.4802 34.6169 27.8723 35.0372 27.8723 35.597C27.8723 36.1532 27.4795 36.582 26.881 36.582Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M28.7839 35.5854C28.7839 34.7489 29.4189 34.1064 30.2362 34.1064C31.0611 34.1064 31.6885 34.7489 31.6885 35.5854C31.6885 36.4261 31.0611 37.0643 30.2362 37.0643C29.4189 37.0643 28.7839 36.4254 28.7839 35.5854ZM29.3019 35.5854C29.3019 36.1543 29.7106 36.5907 30.2362 36.5907C30.7659 36.5907 31.1746 36.1536 31.1746 35.5854C31.1746 35.0165 30.7659 34.58 30.2362 34.58C29.7106 34.58 29.3019 35.0172 29.3019 35.5854Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M33.707 36.051C33.6382 35.9354 33.533 35.845 33.4277 35.8163V35.8121C33.7228 35.7462 33.998 35.3959 33.998 35.0456C33.998 34.5678 33.6382 34.1475 33.0837 34.1475H32.1777L32.1735 34.1517C32.1735 34.1517 32.1935 34.3534 32.1935 34.7037V36.4748C32.1935 36.8251 32.1735 37.0269 32.1735 37.0269L32.1777 37.0311H32.7198L32.7239 37.0269C32.7239 37.0269 32.704 36.8251 32.704 36.4748V35.9227C32.975 35.9227 33.0803 35.976 33.1773 36.1329L33.4078 36.5119C33.5976 36.8251 33.6788 37.0269 33.6788 37.0269L33.6829 37.0311H34.3303V37.0269C34.3303 37.0269 34.1687 36.8251 33.9822 36.5119L33.707 36.051ZM32.9585 35.466C32.8938 35.466 32.7803 35.466 32.704 35.4492V34.6169H33.0156C33.319 34.6169 33.4807 34.8186 33.4807 35.0491C33.4807 35.2684 33.3149 35.466 32.9585 35.466Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M36.3323 34.3822L37.3395 36.7221C37.4135 36.8855 37.4757 36.9871 37.4942 37.0174C37.4981 37.0237 37.4998 37.0269 37.4998 37.0269V37.0311H36.9419L36.9378 37.0269C36.9378 37.0269 36.9013 36.9365 36.8408 36.7677L36.655 36.327H35.4256L35.2515 36.7677C35.1827 36.9407 35.1704 37.0101 35.1704 37.0269L35.1662 37.0311H34.6083V37.0269C34.6083 37.0269 34.6888 36.9197 34.77 36.7221L35.7249 34.3822C35.7854 34.2378 35.8019 34.1517 35.8019 34.1517L35.806 34.1475H36.247L36.2512 34.1517C36.2512 34.1517 36.2718 34.2378 36.3323 34.3822ZM36.0166 34.8354L35.6162 35.8527H36.4534L36.0207 34.8354H36.0166Z\\\" fill=\\\"currentColor\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M59.9951 3.00586H3.99512V60.0017H18.996V39.998H37.0674V60.0017H59.9951V3.00586ZM4.99512 59.0017V4.00586H58.9951V59.0017H38.0674V38.998H17.996V59.0017H4.99512Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M25.9999 59.002H21.2202V60.002H26.9999V42.001H25.9999V59.002Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M29.9999 59.002H34.7202V60.002H28.9999V42.001H29.9999V59.002Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {Link} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ChevronLeftIcon} from '@salesforce/retail-react-app/app/components/icons'\n\nexport const BackButton = ({onClick, ...restProps}) => {\n    const intl = useIntl()\n    return (\n        <Link\n            onClick={onClick}\n            as=\"button\"\n            display=\"flex\"\n            alignItems=\"center\"\n            gap={3}\n            textStyle={'label'}\n            {...restProps}\n        >\n            <ChevronLeftIcon w={5} h={5} name=\"chevron-left\" />\n            {intl.formatMessage({\n                id: 'drawer_menu.back',\n                defaultMessage: 'Back'\n            })}\n        </Link>\n    )\n}\n\nBackButton.propTypes = {\n    onClick: PropTypes.func.isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Drawer,\n    DrawerOverlay,\n    DrawerContent,\n    DrawerBody,\n    DrawerHeader,\n    DrawerFooter,\n    Text,\n    Flex\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {PinkOverlay} from './partials/pink-overlay'\nimport {CloseButton} from './partials/close-button'\nimport {BackButton} from './partials/back-button'\nimport {useDelayedOnClose} from './hooks/use-delayed-on-close'\nimport {useDrawerTracking} from './hooks/use-drawer-tracking'\nimport {useResponsivePlacement} from './hooks/use-responsive-placement'\nimport {animationDuration} from './drawer-utils/constants'\nimport {useBreakpointValue} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {ScrollAreaProvider} from 'pandora-shared-app/overrides/app/contexts/scroll-area'\n\nexport const FullDrawerSheet = ({\n    bodyContent,\n    footerContent,\n    footerHeight,\n    headerText,\n    isOpen,\n    onClose,\n    handleOnBack,\n    bodyPadding = 8,\n    backgroundColor,\n    sheetType,\n    virtualPagePath,\n    products = [],\n    content = null,\n    contentMeta = null,\n    isNestedDrawer = false,\n    wrapWithScrollArea = false,\n    headerStyles,\n    headerTextStyles,\n    bodyStyles,\n    footerStyles,\n    finalFocusRef,\n    useFullUrl = false,\n    placement, // Allow passing placement to override responsive default\n    skipTracking = false,\n    retainTracking = false\n}) => {\n    const enableDrawerOpenDirectionFix = useVariant(LD_KEYS.enableDrawerOpenDirectionFix, false)\n    const responsivePlacement = useBreakpointValue({base: 'bottom', xl: 'right'})\n    const syncPlacement = useResponsivePlacement(enableDrawerOpenDirectionFix)\n    const defaultPlacement =\n        placement || (enableDrawerOpenDirectionFix ? syncPlacement : responsivePlacement)\n    const {shouldAnimateExit, handleOnClose} = useDelayedOnClose(onClose, animationDuration, isOpen)\n    const {shouldAnimateExit: shouldAnimateBackExit, handleOnClose: handleBackWithAnimation} =\n        useDelayedOnClose(handleOnBack ?? (() => {}), animationDuration, isOpen)\n    const animateExit = shouldAnimateExit || (enableDrawerOpenDirectionFix && shouldAnimateBackExit)\n    const handleBack = enableDrawerOpenDirectionFix ? handleBackWithAnimation : handleOnBack\n    const {handleCloseWithTracking} = useDrawerTracking({\n        isOpen,\n        sheetType,\n        virtualPagePath,\n        products,\n        content,\n        contentMeta,\n        useFullUrl,\n        skipTracking,\n        retainTracking\n    })\n\n    const handleClose = () => {\n        handleCloseWithTracking()\n        handleOnClose()\n    }\n\n    const renderWithoutBackButton = () => {\n        return (\n            <DrawerHeader sx={headerStyles}>\n                <Text\n                    casing=\"uppercase\"\n                    fontSize=\"xl\"\n                    fontWeight=\"medium\"\n                    data-auto=\"drawerHeaderTitle\"\n                    {...headerTextStyles}\n                >\n                    {headerText}\n                </Text>\n                <CloseButton\n                    onClick={handleClose}\n                    data-testid=\"closeDrawer\"\n                    data-auto=\"closeDrawer\"\n                />\n            </DrawerHeader>\n        )\n    }\n\n    const renderWithBackButton = () => {\n        return (\n            <DrawerHeader flexDirection={'column'} alignItems={'flex-start'} sx={headerStyles}>\n                <Flex w={'full'} justifyContent={'space-between'} alignItems={'center'}>\n                    <BackButton onClick={handleBack} data-testid=\"drawerBack\" />\n                    <CloseButton\n                        onClick={handleClose}\n                        data-testid=\"closeDrawer\"\n                        data-auto=\"closeDrawer\"\n                    />\n                </Flex>\n                {headerText && (\n                    <Text\n                        casing=\"uppercase\"\n                        fontSize=\"xl\"\n                        fontWeight=\"medium\"\n                        mt={'6'}\n                        data-auto=\"drawerHeaderTitle\"\n                    >\n                        {headerText}\n                    </Text>\n                )}\n            </DrawerHeader>\n        )\n    }\n\n    const renderDrawerBody = () => {\n        const conditionalStyles =\n            bodyPadding === 0\n                ? {\n                      px: '0 !important',\n                      paddingLeft: '0 !important',\n                      paddingRight: '0 !important'\n                  }\n                : {}\n\n        if (wrapWithScrollArea) {\n            return (\n                <ScrollAreaProvider scrollAreaSelector=\"[data-autoid=full-drawer-sheet-id]\">\n                    <DrawerBody\n                        sx={{...conditionalStyles, ...bodyStyles}}\n                        data-autoid=\"full-drawer-sheet-id\"\n                    >\n                        {bodyContent}\n                    </DrawerBody>\n                </ScrollAreaProvider>\n            )\n        }\n\n        return <DrawerBody sx={{...conditionalStyles, ...bodyStyles}}>{bodyContent}</DrawerBody>\n    }\n\n    const mobileHeightStyles = useBreakpointValue({\n        base: {\n            height: '100vh !important',\n            '@supports (height: 100dvh)': {\n                height: '100dvh !important'\n            }\n        }\n    })\n\n    return (\n        <Drawer\n            finalFocusRef={finalFocusRef}\n            isOpen={isOpen}\n            onClose={handleClose}\n            variant=\"full\"\n            placement={defaultPlacement}\n            returnFocusOnClose={false}\n        >\n            <DrawerOverlay />\n            {!animateExit && <PinkOverlay variant=\"full\" />}\n            <DrawerContent\n                data-testid={'drawer-content'}\n                shouldAnimateExit={animateExit}\n                bg={backgroundColor}\n                sx={mobileHeightStyles}\n            >\n                {isNestedDrawer ? renderWithBackButton() : renderWithoutBackButton()}\n                {bodyContent && renderDrawerBody()}\n                {footerContent && (\n                    <DrawerFooter height={footerHeight ? footerHeight : 16} sx={footerStyles}>\n                        {footerContent}\n                    </DrawerFooter>\n                )}\n            </DrawerContent>\n        </Drawer>\n    )\n}\n\nFullDrawerSheet.propTypes = {\n    bodyContent: PropTypes.node,\n    footerContent: PropTypes.node,\n    footerHeight: PropTypes.string,\n    headerText: PropTypes.string,\n    isOpen: PropTypes.bool,\n    onClose: PropTypes.func,\n    handleOnBack: PropTypes.func,\n    bodyPadding: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    backgroundColor: PropTypes.string,\n    sheetType: PropTypes.string,\n    virtualPagePath: PropTypes.string,\n    products: PropTypes.array,\n    content: PropTypes.object,\n    contentMeta: PropTypes.object,\n    isNestedDrawer: PropTypes.bool,\n    wrapWithScrollArea: PropTypes.bool,\n    headerStyles: PropTypes.object,\n    bodyStyles: PropTypes.object,\n    footerStyles: PropTypes.object,\n    headerTextStyles: PropTypes.object,\n    finalFocusRef: PropTypes.shape({\n        current: PropTypes.any\n    }),\n    useFullUrl: PropTypes.bool,\n    placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n    skipTracking: PropTypes.bool,\n    retainTracking: PropTypes.bool\n}\n\nFullDrawerSheet.displayName = 'FullDrawerSheet'\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useMemo} from 'react'\nimport {useLocation} from 'react-router-dom'\n\n// Constants\nimport {DEFAULT_LIMIT_VALUES} from '@salesforce/retail-react-app/app/constants'\n\n// Utils\nimport {buildUrlSet} from '@salesforce/retail-react-app/app/utils/url'\n\n/*\n * Generate a memoized list of page size urls. Chaning the page size will reset\n * the offset to zero to simplify things.\n */\nexport const useLimitUrls = () => {\n    const location = useLocation()\n\n    return useMemo(\n        () =>\n            buildUrlSet(`${location.pathname}${location.search}`, 'limit', DEFAULT_LIMIT_VALUES, {\n                offset: 0\n            }),\n        [location.search, location.pathname]\n    )\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_for_unicef_logo_white_blue\",\n  \"use\": \"pandora_for_unicef_logo_white_blue-usage\",\n  \"viewBox\": \"0 0 206 35\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 206 35\\\" id=\\\"pandora_for_unicef_logo_white_blue\\\"><polygon points=\\\"54.4,11.3 54.7,11.3 54.7,11.3 54.4,8.4 54.4,8.3 54.3,8.3 54.3,8.4 54,11.3 54,11.3\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"56,11.5 56,11.5 56.5,8.9 56.5,8.8 56.4,8.8 56.4,8.8 55.3,11.3 55.3,11.3\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M55.5 12.6c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C55.1 12.4 55.3 12.6 55.5 12.6zM54.4 12.5c.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4-.2 0-.4.2-.4.4C54 12.3 54.2 12.5 54.4 12.5z\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"52.7,11.5 53.4,11.3 53.4,11.3 52.3,8.8 52.3,8.8 52.2,8.8 52.2,8.9 52.7,11.5\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M52.8 12.2c0 .2.2.4.4.4.2 0 .4-.2.4-.4 0-.2-.2-.4-.4-.4C53 11.8 52.8 12 52.8 12.2zM6.6 13.3H3.2l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h2.3l0 0c0 0-.1-.8-.1-2.3v-2.1l0 0c.3 0 1 .1 1.2.1C9 20.8 11 19.4 11 17 11 14.6 9 13.3 6.6 13.3zM6.5 18.9c-.3 0-.9 0-1.2-.1v-3.5h1.3c1.2 0 2.1.5 2.1 1.7C8.8 18.2 8 18.9 6.5 18.9zM17.5 14.3c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.3-.7 1.3v0h2.3l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0c0 0-.3-.4-.7-1.3L17.5 14.3zM14.5 20.3l1.7-4.2h0l1.8 4.2H14.5zM34 13.3 34 13.3l-2.1 0 0 0c0 0 .1.8.1 2.3v6h0l-6.4-8.2h-2.3l0 0c.3.5.4.9.4 1.2v8.4c0 1.4-.1 2.3-.1 2.3l0 0h2.1l0 0c0 0-.1-.8-.1-2.3v-6.1h0l6.4 8.4H34l0 0c0 0-.1-.8-.1-2.3v-7.3C34 14.2 34 13.3 34 13.3zM40.5 13.3h-4l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h1.2c.8 0 1.7.1 2.7.1 3.6 0 6.2-2.6 6.2-6C46.7 15.8 44.1 13.3 40.5 13.3zM40.3 23.3c-.6 0-1.1 0-1.4-.1-.2-.1-.2-.1-.2-.4v-7.5h1.6c2.6 0 4.2 1.7 4.2 4C44.5 21.6 42.8 23.3 40.3 23.3zM54.4 13.2c-3.4 0-6.1 2.6-6.1 6.1 0 3.5 2.7 6.1 6.1 6.1 3.5 0 6.1-2.6 6.1-6.1C60.5 15.8 57.8 13.2 54.4 13.2zM54.4 23.4c-2.2 0-3.9-1.8-3.9-4.1 0-2.3 1.7-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1C58.3 21.6 56.6 23.4 54.4 23.4zM68.9 21.1c-.3-.5-.7-.8-1.2-1v0c1.2-.3 2.4-1.7 2.4-3.1 0-2-1.5-3.7-3.8-3.7h-3.8l0 0c0 0 .1.8.1 2.3v7.3c0 1.4-.1 2.3-.1 2.3l0 0h2.3l0 0c0 0-.1-.8-.1-2.3v-2.3c1.1 0 1.6.2 2 .9l1 1.6c.8 1.3 1.1 2.1 1.1 2.1l0 0h2.7v0c0 0-.7-.8-1.5-2.1L68.9 21.1zM65.8 18.7c-.3 0-.7 0-1.1-.1v-3.4H66c1.3 0 1.9.8 1.9 1.8C68 17.9 67.3 18.7 65.8 18.7zM84.1 23.9l-4.2-9.6c-.3-.6-.3-.9-.3-.9l0 0h-1.8l0 0c0 0-.1.4-.3.9l-4 9.6c-.3.8-.7 1.3-.7 1.3v0H75l0 0c0-.1.1-.4.3-1.1l.7-1.8h5.1l.8 1.8c.3.7.4 1.1.4 1.1l0 0h2.3v0C84.8 25.2 84.5 24.7 84.1 23.9zM76.9 20.3l1.7-4.2h0l1.8 4.2H76.9zM97.7 24.2v-2.4h0c-.3 0-.5 0-.7 0v-.7c.2 0 .4 0 .7 0h.1v-.4c0-1.1.5-1.6 1.4-1.6.4 0 .7.1.9.2v.7h0c-.3-.2-.5-.3-.8-.3-.4 0-.7.3-.7 1v.4h.5c.4 0 .7 0 .9 0v.7c-.2 0-.6 0-.9 0h-.5v2.4c0 .4 0 .7 0 .9h-.8C97.7 24.9 97.7 24.6 97.7 24.2zM99.9 23.2c0-1.1.9-2 2-2 1.1 0 2 .9 2 2 0 1.1-.9 2-2 2C100.8 25.2 99.9 24.3 99.9 23.2zM103.3 23.2c0-.8-.6-1.4-1.3-1.4-.7 0-1.3.6-1.3 1.4 0 .8.6 1.4 1.3 1.4C102.7 24.6 103.3 24 103.3 23.2zM104.8 24.2v-2c0-.4 0-.7 0-.9h.6l0 .4h0c.2-.3.6-.5 1-.5.2 0 .5.1.6.1v.8h0c-.1-.1-.3-.3-.6-.3-.5 0-.8.4-.8 1v1.4c0 .4 0 .7 0 .9h-.8C104.8 24.9 104.8 24.6 104.8 24.2z\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M191.4 7.6c-4.3 0-7.8 3.5-7.8 7.8 0 4.3 3.5 7.8 7.8 7.8 4.3 0 7.8-3.5 7.8-7.8C199.2 11.1 195.7 7.6 191.4 7.6zM197.4 11c-.4.3-.8.5-1.3.7-.3-.5-.6-1-.9-1.5.3-.2.6-.4.9-.7C196.7 10.1 197.1 10.5 197.4 11zM194.2 8.4c.6.3 1.2.6 1.8 1-.3.2-.6.4-.9.6-.4-.4-.8-.8-1.3-1.2C193.9 8.7 194 8.6 194.2 8.4zM194.8 10.2c-.4.2-.9.4-1.3.5-.2-.4-.4-.9-.7-1.3.3-.1.5-.2.7-.4C194 9.4 194.4 9.8 194.8 10.2zM193.8 8.3c-.1.1-.2.2-.3.4-.4-.3-.9-.5-1.3-.7C192.8 8 193.3 8.1 193.8 8.3zM193.2 8.9c-.2.1-.4.2-.6.3-.2-.4-.5-.7-.8-1C192.4 8.4 192.8 8.6 193.2 8.9zM191.5 8.2c.3.3.6.7.8 1.1-.3.1-.5.1-.8.1C191.5 9.4 191.5 8.5 191.5 8.2zM191.5 9.8c.3 0 .7-.1 1-.2.2.4.5.8.6 1.2-.5.1-1.1.2-1.6.2C191.5 11 191.5 9.9 191.5 9.8zM191.2 8.2c0 .2 0 1.1 0 1.2-.3 0-.5-.1-.8-.1C190.6 8.9 190.9 8.6 191.2 8.2zM190.1 9.2c-.2-.1-.4-.2-.6-.3.4-.3.9-.5 1.3-.7C190.6 8.5 190.3 8.8 190.1 9.2zM190.5 7.9c-.5.2-.9.4-1.3.7-.1-.1-.2-.2-.3-.4C189.4 8.1 190 8 190.5 7.9zM195.9 21.3c-1-.6-1.1-1.4-1-1.7.1-.3.3-.2.4-.2.7 0 1.4-.2 2.3-1.1 1-1 1.3-3.3-.2-4.8-1.7-1.6-3.4-1.3-4.5.1-.2.3-.8.5-1.3.5-.7 0-.3.5-.3.7 0 .1-.1.2-.2.2-.2-.1-.1.3-.1.4 0 .1-.1.2-.2.2-.3 0-.2.3-.2.4 0 .1 0 .2-.1.3-.1.1-.2.3-.2.5 0 .3.3.6.8.9.5.4.6.7.6 1 0 .3 0 .7.1.9.1.3.1.9-.6 1-.9 0-2.4.7-2.5.8-.5.2-1.1.2-1.6.1-.3-.2-.5-.4-.8-.6-.1-.3.1-.7.2-1 .3.3.7.3.9.3.2 0 1.4-.2 1.6-.2.2-.1.2 0 .3 0 .4.2 1.1.2 1.3-.6.2-.9-.3-.6-.4-.6-.1 0-.2 0-.1 0 .1-.2-.1-.2-.1-.2-.2 0-.6.2-.7.3-.1.1-.2.1-.2.1-.3-.2-1.3.1-1.6-.4 0-.1-.2-2.2-.4-2.6 0-.1-.1-.2 0-.3.2-.4.9 0 1.3 0 .4 0 .5-.2.6-.3.1-.1.2-.1.3-.1.1-.1 0-.2 0-.2 0-.1.1 0 .1-.1.1-.1 0-.2 0-.3.1-.2.4 0 .2-.5-.1-.2 0-.5.2-.6.2-.3 1-1.4-.4-2.6-1.4-1.1-2.7-1-3.6-.1-.9 1-.4 2.4-.4 2.7.1.4-.2.7-.5.8-.2.1-.8.5-1.2.8.1-3 1.9-5.7 4.7-6.8.1.1.3.3.4.4-.3.2-1 .8-1 .8s.1 0 .2 0c.1 0 .2.1.2.1s.6-.5.9-.7c.2.2.5.3.7.4-.1.2-.5.9-.5.9s.1 0 .1.1c.1 0 .1.1.1.1s.4-.7.5-.9c.3.1.6.2 1 .2 0 .1 0 1.2 0 1.3-.2 0-.7 0-.8 0l-.1 0 .1.1c.1.1.1.1.1.2l0 0 0 0c.1 0 .6 0 .7 0 0 .1 0 2.3 0 2.3h.3c0 0 0-.4 0-.5.5 0 .9-.1 1.4-.1l0 0 .4-.4-.2 0c-.5.1-1 .1-1.4.1 0 0-.1 0-.2 0 0-.1 0-1.4 0-1.5.6 0 1.2-.1 1.8-.2.2.4.5 1.3.5 1.3l.3-.1c0 0-.3-.9-.5-1.3.5-.2 1-.4 1.4-.6.4.4.7.9.9 1.4-.2.1-.7.3-.6.3.3 0 .6.1.6.1s.1-.1.2-.1c0 .1.1.2.1.2l.4.2 0-.1c0 0-.1-.3-.2-.4.4-.2.9-.5 1.3-.8.8 1.2 1.2 2.6 1.2 4.1C198.8 17.8 197.7 20 195.9 21.3zM182.8 9.7l-.1.1c-.5.4-1.5 1.5-1.3 2.7 0 0 0 .1 0 .1 0 0 .1.2.1.2l.1-.1c.6-.6 1.1-1.6 1.3-2.7l.1-.3L182.8 9.7zM180.7 11.7l-.1.1c-.1.2-.2.6-.3 1.2-.1.8-.1 1.9.6 2.7 0 0 .1.1.1.1l.1.1.1-.5c.1-.9 0-2.7-.4-3.5l-.1-.3L180.7 11.7zM179.9 14.9l0 .1c-.1.8 0 2.7 1.6 3.8 0 0 .2.1.2.1l0-.2c0-.7-.9-2.9-1.5-3.7l-.2-.2L179.9 14.9zM180.2 18.3l0 .1c.2 1.1 1.3 2.9 2.9 3.5l.2.1-.1-.2c-.3-.8-1.9-2.8-2.9-3.4l-.2-.1L180.2 18.3zM183.5 11.3l-.1.1c-1.2.7-1.8 1.6-1.7 2.8l0 .3.2-.1c.7-.5 1.5-1.9 1.7-2.7l.1-.3L183.5 11.3zM182.8 13.8 182.8 13.8c-.4.4-1.4 1.5-1.3 2.8 0 .2.1.4.1.7l.1.2.1-.2c.5-.7 1.1-2.5 1.1-3.3L182.8 13.8 182.8 13.8zM182.8 16.1l-.1.1c-.5.8-.8 1.5-.8 2.3 0 .5.2 1 .5 1.5l.1.2.1-.2c.2-.4.4-1.8.4-2.8 0-.4 0-.7-.1-.9l-.1-.2L182.8 16.1zM183.4 18.6l0 .1c-.2.5-.2 1-.2 1.4 0 1 .5 1.8 1.4 2.4l.1.1 0-.2c0 0 0-.2 0-.2 0-.8-.6-3-1.1-3.6l-.1-.2L183.4 18.6zM181.7 21.8l.1.1c.7 1.1 1.8 2.5 3.9 2.2l.2 0-.1-.1c-.4-.6-2.9-2-3.8-2.2l-.2 0L181.7 21.8zM181.9 21.8 181.9 21.8 181.9 21.8zM184.8 24.6 184.8 24.6l-.3.1.3.1c1.3.5 3 .7 4 .4.4-.1.6-.3.9-.6 1.7.2 3.3 1.6 4.2 2.7l.1.1.1 0c.1 0 .3-.2.3-.2l.1-.1-.1-.1c-1-1.3-2.5-2-2.5-2.1C190.3 24.3 187.9 23.8 184.8 24.6z\\\" style=\\\"fill:#61ACEC\\\" /><path d=\\\"m184.9 21.1 0 .1c.2 1.2.7 2.9 2.8 2.7l.1 0 0-.1c-.1-.6-2.1-2.2-2.8-2.7l-.2-.1L184.9 21.1zM199.8 9.5l.1.3c.2 1.1.7 2.1 1.3 2.7l.1.1c0 0 .1-.2.1-.2 0 0 0-.1 0-.1.2-1.2-.9-2.2-1.3-2.7l-.1-.1L199.8 9.5zM202 11.5l-.1.3c-.3.8-.5 2.7-.4 3.5l.1.5.1-.1c0 0 .1-.1.1-.1.7-.8.7-1.9.6-2.7-.1-.5-.2-1-.3-1.2l-.1-.1L202 11.5zM202.8 14.7l-.2.2c-.6.8-1.5 3-1.5 3.7l0 .2c0 0 .2-.1.2-.1 1.6-1 1.6-3 1.6-3.8l0-.1L202.8 14.7zM202.6 18.2l-.2.1c-1 .6-2.6 2.6-2.9 3.4l-.1.2.2-.1c1.6-.5 2.7-2.3 2.9-3.5l0-.1L202.6 18.2zM199.2 11.2l.1.3c.2.8 1 2.2 1.7 2.8l.2.2 0-.3c.1-1.1-.5-2-1.7-2.8l-.1-.1L199.2 11.2zM199.9 13.7l0 .3c0 .8.6 2.6 1.1 3.3l.1.2.1-.2c.1-.2.1-.4.1-.7.1-1.3-.9-2.4-1.2-2.7L199.9 13.7 199.9 13.7zM199.8 16l-.1.2c-.1.2-.1.5-.1.9 0 1.1.1 2.4.4 2.8l.1.2.1-.2c.3-.5.5-1 .5-1.5 0-.7-.2-1.5-.8-2.3l-.1-.1L199.8 16zM199.3 18.5l-.1.2c-.5.6-1.1 2.8-1.1 3.6 0 0 0 .2 0 .2l0 .2.1-.1c.9-.6 1.3-1.4 1.4-2.4 0-.5-.1-.9-.2-1.4l0-.1L199.3 18.5zM201.1 21.7l-.2 0c-.9.1-3.4 1.6-3.8 2.2l-.1.1.2 0c2.1.4 3.2-1.1 3.9-2.2l.1-.1L201.1 21.7zM200.9 21.8 200.9 21.8 200.9 21.8zM191 25c-.1 0-1.6.8-2.5 2.1l-.1.1.1.1c.1.1.2.2.3.2l.1 0 0-.1c.9-1.2 2.5-2.6 4.2-2.7.3.3.5.5.9.6 1 .3 2.6.2 4-.4l.3-.1-.3-.1 0 0C194.8 23.8 192.4 24.3 191 25zM197.9 21l-.2.1c-.7.5-2.6 2.1-2.8 2.7l0 .1.1 0c2.1.2 2.6-1.5 2.8-2.7l0-.1L197.9 21zM143.9 8.1h2.7v2.4h-2.7V8.1zM144.1 25.2V13.3h2.2v11.8H144.1zM127.2 13.3h2.2v11.8h-2.2v-1.7h0c-.9 1.5-2.4 2.1-4.1 2.1-2.5 0-3.9-1.9-3.9-4.3v-7.9h2.2v7c0 2.1.5 3.6 2.6 3.6.9 0 2.2-.5 2.6-1.7.4-1.1.4-2.5.4-2.8V13.3zM133.9 15.1 133.9 15.1c.8-1.5 2.5-2.1 3.6-2.1.8 0 4.5.2 4.5 4v8.2h-2.2v-7.5c0-2-.8-3-2.7-3 0 0-1.2-.1-2.2.9-.3.3-.9.8-.9 3.2v6.4h-2.2V13.3h2.2V15.1zM155.8 17.1c-.1-1.5-.8-2.5-2.4-2.5-2.1 0-3 1.8-3 4.6 0 2.8.8 4.6 3 4.6 1.5 0 2.4-1 2.5-2.7h2.2c-.2 2.7-2.2 4.3-4.8 4.3-3.8 0-5.3-2.7-5.3-6.1 0-3.5 1.7-6.3 5.5-6.3 2.5 0 4.4 1.6 4.5 4.1H155.8zM161.4 19.7c-.2 2.1.7 4.2 3 4.2 1.7 0 2.6-.7 2.9-2.4h2.3c-.4 2.7-2.4 4-5.2 4-3.8 0-5.3-2.7-5.3-6.1 0-3.5 1.7-6.3 5.5-6.3 3.5.1 5.2 2.3 5.2 5.6v1.1H161.4zM167.4 18.1c0-2-.8-3.5-3-3.5-1.9 0-3 1.6-3 3.5H167.4zM172.3 25.1V14.9h-2v-1.6h2v-2.5c.1-2.6 2-3.3 3.7-3.3.5 0 1.1.1 1.6.2v1.9c-.4 0-.8-.1-1.1-.1-1.3 0-2 .3-1.9 1.6v2.2h2.7v1.6h-2.7v10.2H172.3z\\\" style=\\\"fill:#61ACEC\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useEffect, useReducer} from 'react'\nimport {\n    useBoolVariation,\n    useStringVariation,\n    useNumberVariation,\n    useJsonVariation,\n    useLDClient\n} from '@launchdarkly/react-sdk'\n\n/**\n * Read a boolean feature flag. Thin wrapper over the LaunchDarkly SDK's\n * `useBoolVariation`; returns `fallbackValue` when the flag is missing or is\n * not a boolean.\n * @param {string} key LaunchDarkly flag key (kebab-case)\n * @param {boolean} fallbackValue\n * @returns {boolean}\n */\nexport const useVariant = (key, fallbackValue) => useBoolVariation(key, fallbackValue)\n\n/**\n * Read a string feature flag. Wrapper over `useStringVariation`; returns\n * `fallbackValue` when the flag is missing or is not a string.\n * @param {string} key LaunchDarkly flag key (kebab-case)\n * @param {string} fallbackValue\n * @returns {string}\n */\nexport const useStringVariant = (key, fallbackValue) => useStringVariation(key, fallbackValue)\n\n/**\n * Read a numeric feature flag. Wrapper over `useNumberVariation`; returns\n * `fallbackValue` when the flag is missing or is not a number.\n * @param {string} key LaunchDarkly flag key (kebab-case)\n * @param {number} fallbackValue\n * @returns {number}\n */\nexport const useNumberVariant = (key, fallbackValue) => useNumberVariation(key, fallbackValue)\n\n/**\n * Read a JSON feature flag. Wrapper over `useJsonVariation`; returns\n * `fallbackValue` when the flag is missing or is not valid JSON.\n * @param {string} key LaunchDarkly flag key (kebab-case)\n * @param {object} fallbackValue\n * @returns {object}\n */\nexport const useJsonVariant = (key, fallbackValue) => useJsonVariation(key, fallbackValue)\n\n/**\n * Use this hook when you need to get a couple of keys for an one component.\n *\n * Reads each key straight off the client rather than through `useFlags`, so that a\n * variable number of keys can be resolved without calling a hook per key inside the\n * reduce (which would violate the rules of hooks).\n *\n * `useFlags` is deliberately not used: it re-keys the flag map through\n * `client.shouldUseCamelCaseFlagKeys()`, and the SSR stub client hardcodes that to\n * `true` regardless of the `useCamelCaseFlagKeys: false` we pass. During SSR that\n * turned every kebab-case id below into a miss, so the flags silently fell back to\n * their defaults. `client.variation()` looks the key up verbatim on both the SSR stub\n * and the real browser client.\n *\n * With no LD provider above the caller `useLDClient()` yields no client; every key then\n * resolves to its declared `fallbackValue` so the subtree still renders. Reading flags\n * must not be the thing that takes a page down.\n * @param {object[]} keys\n * @param {string} keys.id\n * @param {any} keys.fallbackValue\n * @returns {Object<string, any>}\n */\nexport const useVariants = (keys) => {\n    const client = useLDClient()\n    const [, onFlagChange] = useReducer((count) => count + 1, 0)\n\n    // Match the re-render behaviour of the per-key variation hooks, which each subscribe\n    // to `change:<key>`. No-op during SSR: the stub client's `on`/`off` are no-ops and\n    // effects never run on the server.\n    useEffect(() => {\n        if (!client) {\n            return undefined\n        }\n        client.on('change', onFlagChange)\n        return () => client.off('change', onFlagChange)\n    }, [client])\n\n    return keys.reduce((result, item) => {\n        result[item.id] = client\n            ? client.variation(item.id, item.fallbackValue)\n            : item.fallbackValue\n        return result\n    }, {})\n}\n","export const buildFAQSchema = (questions = []) => {\n    if (!questions.length) return null\n\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'FAQPage',\n        mainEntity: questions.map(({question, answer}) => ({\n            '@type': 'Question',\n            name: question,\n            acceptedAnswer: {\n                '@type': 'Answer',\n                text: answer\n            }\n        }))\n    }\n}\n","const AVAILABILITY = {\n    IN_STOCK: 'https://schema.org/InStock',\n    OUT_OF_STOCK: 'https://schema.org/OutOfStock',\n    PREORDER: 'https://schema.org/PreOrder'\n}\n\nconst getAvailability = (hit) => {\n    if (hit?.c_extend?.inventory?.preorderable) return AVAILABILITY.PREORDER\n\n    const productInStock = hit?.c_extend?.productInStock ?? hit?.productInStock\n    if (productInStock === true) return AVAILABILITY.IN_STOCK\n    if (productInStock === false) return AVAILABILITY.OUT_OF_STOCK\n\n    if (hit?.c_extend?.inventory?.orderable) return AVAILABILITY.IN_STOCK\n    return AVAILABILITY.OUT_OF_STOCK\n}\n\nconst formatPrice = (price) => {\n    const numeric = Number(price)\n    if (!Number.isFinite(numeric)) return undefined\n    return numeric.toFixed(2)\n}\n\nconst buildAbsoluteUrl = (appOrigin, path) => {\n    if (!path) return undefined\n    if (/^https?:\\/\\//.test(path)) return path\n    return `${appOrigin || ''}${path}`\n}\n\n// Canonical URL drops any anchor (e.g. the category slug's `#shop`), matching the\n// canonicalUrl logic in apps/product-list/.../get-page-meta-tags.js.\nconst toCanonicalUrl = (url) => (url ? url.split('#')[0] : url)\n\nexport const buildItemListSchema = (hits = [], category = {}, seo = {}, appOrigin = '') => {\n    if (!hits?.length) return null\n\n    const itemListElement = hits.map((hit, index) => {\n        const productUrl = buildAbsoluteUrl(appOrigin, hit?.c_extend?.productUrl)\n        const offers = {\n            '@type': 'Offer',\n            price: formatPrice(hit?.price),\n            priceCurrency: hit?.currency,\n            availability: getAvailability(hit)\n        }\n\n        return {\n            '@type': 'ListItem',\n            position: index + 1,\n            item: {\n                '@type': 'Product',\n                '@id': productUrl,\n                name: hit?.productName,\n                url: productUrl,\n                image: hit?.image?.disBaseLink,\n                offers\n            }\n        }\n    })\n\n    const categoryUrl = toCanonicalUrl(buildAbsoluteUrl(appOrigin, category?.c_slugURL))\n\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'ItemList',\n        '@id': categoryUrl ? `${categoryUrl}#itemlist` : undefined,\n        name: category?.name,\n        description: category?.pageDescription || seo?.metaDescription,\n        url: categoryUrl,\n        numberOfItems: itemListElement.length,\n        itemListElement\n    }\n}\n","import {buildItemListSchema} from './item-list-schema'\n\n/**\n * Wraps the PLP ItemList in a CollectionPage (FIND-6367). Emits a single nested graph —\n * CollectionPage as the page-level node with the ItemList under `mainEntity` — rather than\n * a standalone ItemList. Reuses buildItemListSchema as the single source of the list logic\n * (hits, offers, availability, absolute URLs); this builder only reshapes the result.\n */\nexport const buildCollectionPageSchema = (hits = [], category = {}, seo = {}, appOrigin = '') => {\n    const itemList = buildItemListSchema(hits, category, seo, appOrigin)\n    if (!itemList) return null\n\n    // Page-level metadata (name/description/url) lives on the CollectionPage root. The nested\n    // ItemList keeps only its list fields — @context is root-only, so it is not repeated.\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'CollectionPage',\n        '@id': itemList.url ? `${itemList.url}#collectionpage` : undefined,\n        name: itemList.name,\n        description: itemList.description,\n        url: itemList.url,\n        mainEntity: {\n            '@type': 'ItemList',\n            '@id': itemList['@id'],\n            name: itemList.name,\n            numberOfItems: itemList.numberOfItems,\n            itemListElement: itemList.itemListElement\n        }\n    }\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_me_festival_black\",\n  \"use\": \"pandora_me_festival_black-usage\",\n  \"viewBox\": \"0 0 1750.8 414.9\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1750.8 414.9\\\" id=\\\"pandora_me_festival_black\\\"><defs></defs><polygon points=\\\"830.3 47.8 835.8 47.8 836.1 47.5 831.4 0.3 831.2 0 829.8 0 829.5 0.3 824.6 47.5 824.9 47.8 830.3 47.8\\\" /><polygon points=\\\"857 50.8 857.3 50.5 865.2 8.2 864.9 8 863.6 7.7 863.3 8 845.7 48 846 48.3 857 50.8\\\" /><path d=\\\"M934.6 118.5a6.5 6.5 0 0 0 6.3-6.6 6.3 6.3 0 0 0-6.3-6.3 6.5 6.5 0 0 0-6.6 6.3A6.6 6.6 0 0 0 934.6 118.5ZM916.2 116.5a6.5 6.5 0 0 0 0-12.9 6.5 6.5 0 1 0 0 12.9Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" /><polygon points=\\\"803.7 50.8 814.7 48.3 815 48 797.4 8 797.1 7.7 795.8 8 795.5 8.2 803.4 50.5 803.7 50.8\\\" /><path d=\\\"M891.3 111.9a6.5 6.5 0 1 0 12.9 0 6.5 6.5 0 0 0-12.9 0ZM142.2 130.3h-56l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h36.7l.3-.3s-1.4-13.4-1.4-36.7V250.8l.3-.3c5 .5 16.2 1.1 20.1 1.1 37.8 0 70.2-23.1 70.2-62S179.8 130.3 142.2 130.3ZM140.5 220a146.9 146.9 0 0 1-18.7-1.3V161.8h21.5c18.9 0 34 7.7 34 27.8S164.1 220 140.5 220ZM317.5 145.9a109 109 0 0 1-5.5-15.4l-.3-.2H281.8l-.3.2a83.6 83.6 0 0 1-5.2 15.4L211.5 301.8c-5.5 13.2-10.9 20.3-10.9 20.3v.3h37.8l.3-.3c0-1.1.8-5.7 5.5-17.3L256 275.5h83.5l12.6 29.3c4.1 11.3 6.6 17.3 6.6 17.3l.2.3h37.9v-.3a149.6 149.6 0 0 1-11-20.3Zm-48.6 98 27.2-67.8h.3l29.3 67.8ZM586.4 130.5l-.2-.2H552.7l-.3.2s1.4 13.5 1.4 36.8v96.6h-.3L449.7 130.3H413l-.3.2c4.1 8.8 6.3 14.9 6.3 19V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h33.5l.3-.3s-1.4-13.4-1.4-36.7V186.8h.3L554.9 322.4h31.3l.2-.3s-1.3-13.4-1.3-36.7V167.3C585.1 144 586.4 130.5 586.4 130.5ZM690.8 130.3H626.5l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h19.8c13 0 27.4 1.7 43.9 1.7 59 0 100.7-41.8 100.7-97.5S750 130.3 690.8 130.3Zm-2.2 162.2c-9.4 0-17.9-.3-22.8-1.7-3-.8-3.6-1.9-3.6-7.1V161.6h25.5c41.5 0 68.1 28 68.1 65.3S729.2 292.5 688.6 292.5ZM916.2 127.5c-55.4 0-98.5 42.8-98.5 98.6s43.1 98.5 98.5 98.5 98.6-42.5 98.6-98.5S972.2 127.5 916.2 127.5Zm0 165.5c-35.7 0-63.4-29.1-63.4-66.9s27.7-67 63.4-67 63.7 29.1 63.7 67S952.2 293 916.2 293ZM1151.8 257.1c-4.7-7.7-11.8-13.7-19-15.7v-.2c20.1-4.4 38.7-27.8 38.7-51.1 0-31.8-24.4-59.8-62-59.8H1048l-.3.2s1.4 13.5 1.4 36.8V285.4c0 23.3-1.4 36.7-1.4 36.7l.3.3h36.8l.3-.3s-1.4-13.4-1.4-36.7V248.6c18.4 0 25.5 3.5 32.1 14l15.7 25.2c12.9 20.9 18.3 34.3 18.3 34.3l.3.3H1194v-.3a337.1 337.1 0 0 1-23.6-34.3Zm-50.8-39c-4.4 0-12.1 0-17.3-1.1V161.6h21.1c20.6 0 31.6 13.4 31.6 28.8S1125.1 218.1 1101 218.1ZM1398.3 301.8l-68.4-155.9a109 109 0 0 1-5.5-15.4l-.2-.2h-30l-.2.2s-1.1 5.8-5.3 15.4L1224 301.8c-5.5 13.2-11 20.3-11 20.3v.3h37.9l.2-.3c0-1.1.9-5.7 5.5-17.3l11.8-29.3h83.5l12.6 29.3c4.1 11.3 6.6 17.3 6.6 17.3l.3.3h37.8v-.3A144 144 0 0 1 1398.3 301.8Zm-117-57.9 27.2-67.8h.3l29.4 67.8Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" /><path d=\\\"M790.9 460.5c.6-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.4-8.2h63.7L871 386.2l-8.7-.5-8.8-.2H827.1a13.6 13.6 0 0 0-.4 1.7c-.1.5-.3.9-.4 1.4l-3.9 18.1h20.7l8.9-.3 9.2-.5L857.1 425l-8.9-.6c-3-.2-5.9-.2-8.8-.2H818.7l-3.5 17c-.8 3.6-1.5 7.3-2.2 10.9s-1 6.4-1.3 8.4ZM869 460.5c.5-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2-11.1s1.1-6.2 1.4-8.2h62.6l-3.4 18.3-8.8-.5-8.7-.2H905.1c-.1.6-.3 1.1-.3 1.4a3.6 3.6 0 0 1-.2 1l-3.7 17.3h28.3l9-.5-4 18.8c-2.2-.3-4.4-.5-6.7-.6H897.2l-3.7 17.2a9.3 9.3 0 0 0-.5 2.9h34.6l9-.5-4.3 18.3ZM981.1 461.6a54.3 54.3 0 0 1-18.9-3 56.5 56.5 0 0 1-13.3-6.8l4.8-22.3h.3A41.6 41.6 0 0 0 966.6 440a29.9 29.9 0 0 0 14.6 3.9 21.1 21.1 0 0 0 11-2.6c2.8-1.7 4.2-4.4 4.2-8a6.9 6.9 0 0 0-2.5-5.4 60.3 60.3 0 0 0-8.2-5.2l-11.1-6a32.9 32.9 0 0 1-10.7-8.9c-2.9-3.6-4.4-8.3-4.4-13.8a24.3 24.3 0 0 1 2.4-10.7 25.1 25.1 0 0 1 6.8-8.7 36.4 36.4 0 0 1 10.7-5.8 44.2 44.2 0 0 1 14-2.1 59.5 59.5 0 0 1 17.1 2.3 41.9 41.9 0 0 1 12 5.8l-4.9 22.8h-.3a38.7 38.7 0 0 0-11.1-9.5 28 28 0 0 0-13.9-3.6c-3.9 0-7 .7-9.4 2.2a6.8 6.8 0 0 0-3.7 6.1 6.5 6.5 0 0 0 2.3 5.4 48.8 48.8 0 0 0 7 4.4l11.1 5.9c5.5 3 9.6 6.3 12.4 10s4.1 8.5 4.1 14.3a28.5 28.5 0 0 1-2.2 11.3 24.8 24.8 0 0 1-6.7 9.1 31.6 31.6 0 0 1-11 6.2A46.2 46.2 0 0 1 981.1 461.6ZM1044.1 460.5c.5-2 1.2-4.7 2.1-8s1.7-6.8 2.5-10.5l11.9-56.3h-10.1c-3 0-6 0-9.1.2l-9.4.4 4-18.4h76.1l-4 18.4-9.2-.4c-3-.2-6.1-.2-9.1-.2h-9.9L1068 442c-.8 3.7-1.4 7.2-2 10.5l-1.2 8ZM1103.5 460.5c.5-2 1.2-4.8 2.2-8.4s1.7-7.3 2.5-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.4-8.2H1144c-.7 2-1.4 4.7-2.3 8.2s-1.7 7.2-2.5 11.1l-11.5 54c-.8 3.6-1.5 7.3-2.1 10.9s-1.1 6.4-1.4 8.4ZM1170.7 460.5c-.1-.7-.2-1.7-.4-3.1s-.4-2.9-.7-4.8l-12.8-73.8a30.4 30.4 0 0 0-1.9-7.6 25.4 25.4 0 0 0-1.8-3.3h23.3V371c.1 1.4.3 3.3.6 5.8l8.1 60.3h.1l33.7-60.3c1.1-2 2.1-3.8 2.9-5.4s1.3-2.8 1.7-3.5h24.3a39 39 0 0 0-3.4 3.5 60.7 60.7 0 0 0-5 7.4l-44.1 73.8-2.6 4.4c-.8 1.4-1.5 2.6-1.9 3.5ZM1215.8 460.4a37.3 37.3 0 0 0 2.9-3.3c1.2-1.4 2.8-3.9 5.1-7.4l46.4-73.8c1.4-2.2 2.4-3.9 3-5l1.5-3h16.9a17.6 17.6 0 0 0 .2 1.9l.3 2.4c.1.9.3 1.6.4 2.3a10.6 10.6 0 0 0 .3 1.4l17 73.8a56.1 56.1 0 0 0 1.9 6.7 23.5 23.5 0 0 0 1.8 4h-21.2a14.1 14.1 0 0 1-.5-2.9c-.2-1.2-.6-3.2-1.2-5.9l-2.9-12.7H1251l-7.8 12.7c-3 5-4.6 8-4.8 8.8h-22.6Zm62.2-65.5h-.1l-16.4 26.3h22.7ZM1321.9 460.5c.6-2 1.3-4.8 2.2-8.4s1.8-7.3 2.6-10.9l11.5-54c.8-3.9 1.5-7.7 2.1-11.1s1-6.2 1.3-8.2h20.8c-.6 2-1.3 4.7-2.2 8.2s-1.7 7.2-2.5 11.1l-11.3 52.4a6.7 6.7 0 0 0-.3 1.7 6.6 6.6 0 0 0-.1 1.5h28.3c4 0 7.3 0 9.9-.2l5.5-.4-4.4 18.3ZM1530 463.4h-26.9l.9-3.6c.6-2 1.3-4.8 2.3-8.5s1.8-7.1 2.6-10.7l5.7-26.6-26.9 49.4h-24.1l-6.8-49.9-6 28.3q-1.2 5.6-2.1 10.8c-.6 3.5-1 6.3-1.3 8.3l-.3 2.5h-26.7l1-3.6c.6-2.5 1.4-5.6 2.2-9.2s1.6-7 2.4-10l11.5-54 .9-5c.3-1.8.7-3.6 1-5.3s.7-3.3.9-4.8.5-2.9.7-4l.4-2.4h32.1l8.4 61.4 33.8-61.4h35.4l-1.1 3.7c-.6 1.9-1.4 4.6-2.2 8s-1.7 7.1-2.5 11l-11.5 54c-.8 3.6-1.5 7.3-2.1 10.8s-1.1 6.3-1.3 8.3Zm-19.5-5.7h14.6c.3-1.7.6-3.7 1-6.1s1.3-7.3 2.1-11l11.5-54c.8-3.9 1.7-7.7 2.6-11.2.4-1.7.8-3.3 1.2-4.6H1519L1482 438h-4.2l-.4-2.5-8.8-64.7h-22.4l-.3 1.6c-.2 1.6-.6 3.3-.9 5s-.7 3.4-1 5.2-.6 3.5-1 5.2l-11.5 54c-.7 3.1-1.5 6.4-2.3 10.1-.5 2.1-1 4-1.4 5.8h14.3c.3-1.7.6-3.7 1-6.1s1.4-7.3 2.2-11l9.7-46.1h4.8l.4 2.4 8.3 60.8h15.8l35.2-64.6h5.2l-.6 3.5-9.7 45.2c-.8 3.7-1.7 7.4-2.6 11C1511.3 454.7 1510.8 456.3 1510.5 457.7ZM1596.1 464.4a49.6 49.6 0 0 1-19.1-3.5 47.6 47.6 0 0 1-15-9.6 43.3 43.3 0 0 1-9.7-14.7 47.7 47.7 0 0 1-3.5-18.3 55 55 0 0 1 4.3-21.5 54.2 54.2 0 0 1 11.8-17.3 52.4 52.4 0 0 1 17.3-11.5 54.5 54.5 0 0 1 21.2-4.2 49.4 49.4 0 0 1 19 3.5 45.4 45.4 0 0 1 15 9.6 43.6 43.6 0 0 1 9.8 14.7 48.1 48.1 0 0 1 3.5 18.3 55 55 0 0 1-4.2 21.5 52 52 0 0 1-28.7 28.8A55.9 55.9 0 0 1 1596.1 464.4Zm7.3-95a49.6 49.6 0 0 0-34.6 14.1 51.1 51.1 0 0 0-10.5 15.5 49.2 49.2 0 0 0-3.8 19.3 43.2 43.2 0 0 0 3 16.2 37.3 37.3 0 0 0 8.5 12.7 40 40 0 0 0 13.2 8.5 46.2 46.2 0 0 0 16.9 3.1 50.2 50.2 0 0 0 19.5-3.8 48.3 48.3 0 0 0 15.5-10.3 46 46 0 0 0 10.2-15.5 49.2 49.2 0 0 0 3.7-19.3 43.2 43.2 0 0 0-3-16.2 37.3 37.3 0 0 0-8.5-12.7 41.1 41.1 0 0 0-13.2-8.5A46.2 46.2 0 0 0 1603.4 369.4Zm-6.2 77.3a27.7 27.7 0 0 1-11.6-2.4 28.8 28.8 0 0 1-15-15.9 32 32 0 0 1-2.1-11.7 39.3 39.3 0 0 1 2.5-13.8 35.5 35.5 0 0 1 7.1-11.3 34 34 0 0 1 10.8-7.4 33.1 33.1 0 0 1 13.4-2.7 27.7 27.7 0 0 1 11.6 2.4 27.4 27.4 0 0 1 9 6.4 31.4 31.4 0 0 1 8.1 21.2 37.2 37.2 0 0 1-2.6 13.8 33 33 0 0 1-31.2 21.4Zm5.1-59.5a27.5 27.5 0 0 0-20.1 8.3 29.4 29.4 0 0 0-5.9 9.4 32.9 32.9 0 0 0-2.1 11.8 27.8 27.8 0 0 0 1.7 9.7 26.3 26.3 0 0 0 4.8 7.7 24.7 24.7 0 0 0 7.2 5.1 23.4 23.4 0 0 0 9.3 1.8 27.2 27.2 0 0 0 11.1-2.2 25.6 25.6 0 0 0 9-6.1 29.4 29.4 0 0 0 5.9-9.4 32.9 32.9 0 0 0 2.1-11.8 26.9 26.9 0 0 0-1.7-9.6 26.3 26.3 0 0 0-4.8-7.7 23.7 23.7 0 0 0-7.3-5.2A22.5 22.5 0 0 0 1602.3 387.2ZM1689 464.2l-5.9-.2-4.9-.2-4.5-.3h-25l.9-3.6c.5-2 1.2-4.8 2.2-8.4s1.7-7.2 2.5-10.8l11.5-54c.8-3.8 1.5-7.6 2.1-11s1-6.2 1.4-8.2l.4-2.3h27.8a64 64 0 0 1 20.2 3 43 43 0 0 1 15.7 8.8 38.2 38.2 0 0 1 10 14 46.6 46.6 0 0 1 3.5 18.3 56.1 56.1 0 0 1-4.3 21.8 52 52 0 0 1-12 17.5 55.3 55.3 0 0 1-18.3 11.5A62.7 62.7 0 0 1 1689 464.2Zm-33-6.5h13.1l5 .2 4.5.2 4.8.3h5.6a57.6 57.6 0 0 0 21.2-3.8 48.6 48.6 0 0 0 16.5-10.3 44.8 44.8 0 0 0 10.7-15.6 50.7 50.7 0 0 0 3.8-19.6 41.6 41.6 0 0 0-3-16.1 33.5 33.5 0 0 0-8.6-12 37.5 37.5 0 0 0-13.6-7.6 59.4 59.4 0 0 0-18.5-2.7h-23.1q-.5 2.4-.9 5.7c-.6 3.5-1.3 7.3-2.1 11.3l-11.5 54c-.8 3.7-1.7 7.4-2.6 11C1656.8 454.6 1656.4 456.3 1656 457.7Zm32.7-11.3h-6.5a16.5 16.5 0 0 1-5.6-1 4.3 4.3 0 0 1-2.8-4.3c0-.4.1-.8.1-1.3l.3-1.2 10.6-49.8a7.6 7.6 0 0 1 .5-2.1q.3-1.2.6-2.1l.7-1.9h11.2a32.4 32.4 0 0 1 12.5 2.2 25.1 25.1 0 0 1 9.3 6.1 24 24 0 0 1 5.6 9 30.9 30.9 0 0 1 1.8 10.5 39 39 0 0 1-2.9 15.3 30.4 30.4 0 0 1-8.1 11.4 36.5 36.5 0 0 1-12.2 6.9A46 46 0 0 1 1688.7 446.4Zm-9.1-6a9.4 9.4 0 0 0 2.8.3h6.3a40.3 40.3 0 0 0 13.3-2.1 29 29 0 0 0 10.3-5.8 25.4 25.4 0 0 0 6.6-9.3 33.6 33.6 0 0 0 2.4-13.1 27.2 27.2 0 0 0-1.4-8.6 20 20 0 0 0-11.7-11.8 29.4 29.4 0 0 0-10.4-1.7h-7.1c-.2.6-.3 1.1-.4 1.5l-10.6 49.8C1679.7 440 1679.6 440.2 1679.6 440.4Zm-.9-.2h0ZM1813.9 463.4h-69.2l1-3.6 2.1-8.4c.9-3.6 1.8-7.2 2.6-10.8l11.5-54c.8-3.8 1.5-7.6 2-11s1.1-6.2 1.4-8.2l.4-2.3h68.4l-4.5 24.1-2.5-.2-8.7-.4c-2.9-.2-5.8-.2-8.6-.2h-23a.3.3 0 0 1-.1.2l-2.9 13.8h24.7l8.8-.5 3.9-.4-5.3 25.1-2.6-.3c-2.1-.3-4.3-.4-6.5-.5l-6.8-.2h-21.1l-3.1 14.5h31.1l8.9-.6 3.9-.3Zm-61.8-5.7h57.3l3-12.4-5.4.2h-37.7l.2-3a12.8 12.8 0 0 1 .7-3.5l4.1-19.2H1807l4.4.3 2.6-12.6-5.3.2-9.1.2h-22.8l4.4-20.8a3.1 3.1 0 0 0 .2-.8 10.1 10.1 0 0 1 .4-1.8l.6-2h27.4l8.9.2 6.2.3 2.4-12.4h-56.8c-.3 1.6-.6 3.5-1 5.7s-1.3 7.3-2.1 11.3l-11.5 54c-.8 3.7-1.6 7.3-2.6 11C1752.8 454.6 1752.4 456.3 1752.1 457.7Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:#e7369d\\\" /><path d=\\\"M1462 319.7c.4-5.1.6-11.4.8-18.8s.3-14 .3-20.1V172.2c0-3.3-.1-6.8-.1-10.3l-.3-10.6c-.1-3.4-.2-6.7-.3-9.8s-.2-5.8-.4-8.1h57l47.1 135.2h.3l45.7-135.2h58.1c-.4 3.9-.7 9.3-1 16.4s-.4 14.5-.4 22.4V280.8c0 7.3.2 14.6.4 21.9s.6 12.9 1 17h-41.8c.1-4.1.5-9.8.9-17s.7-14.6.7-21.9V190.9h-.3l-43.1 128.8h-40.2L1502.2 193h-.3v87.8c0 7.3.2 14.6.4 21.9s.6 12.9 1 17ZM1705.8 319.7c.2-4.1.5-9.8.8-17s.6-14.6.6-21.9V172.2c0-7.9-.2-15.4-.4-22.4s-.6-12.5-1-16.4h125.9l1.1 36.7c-5.9-.3-11.8-.7-17.8-.9s-11.9-.4-17.6-.4h-50.9a24.6 24.6 0 0 0-.2 2.6v37h38.8c6.1 0 12.1 0 18.1-.2s12-.6 17.9-1.1v37.8c-4.6-.5-9.3-.9-13.9-1.1l-13.8-.2h-47.1V281c0 .9.1 2 .2 3h51.7l17.8-.2c6-.2 12.1-.6 18.1-1.1l-1 37Z\\\" transform=\\\"translate(-85.9 -49.6)\\\" style=\\\"fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:5px\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// Amplience's time machine encodes the selected preview date as a 13-digit\n// epoch-milliseconds suffix on the VSE subdomain, e.g.\n//   {account}-{vseId}-1783770126483.staging.bigcontent.io\n// Present-time VSEs have no numeric suffix ({account}.staging.bigcontent.io).\n// Amplience shifts CMS content off this domain but exposes no visualization\n// URL token for the timestamp, so we recover it here to drive SFCC/DOL\n// commerce time-travel (effectiveDateTime) from the same date.\nexport const getTimestampFromVse = (vse) => {\n    if (!vse || typeof vse !== 'string') return undefined\n\n    const [host] = vse.split('.')\n    const match = host.match(/-(\\d{13})$/)\n\n    return match ? match[1] : undefined\n}\n\nexport const getCookie = (name) => {\n    const value = `; ${document.cookie}`\n    const parts = value.split(`; ${name}=`)\n\n    if (parts.length === 2) return parts.pop().split(';').shift()\n\n    return null\n}\n\n// Inside the Amplience preview iframe the storefront is a third-party browsing\n// context. Cookies written with SameSite=Lax are rejected or partitioned away\n// by modern browsers, so preview state (vse, global) is lost on the next\n// iframe navigation. When framed, switch to SameSite=None; Secure; Partitioned\n// (CHIPS) so the cookie survives. Outside an iframe keep SameSite=Lax.\nconst isInIframe = () => {\n    if (typeof window === 'undefined') return false\n    try {\n        return window.top !== window.self\n    } catch {\n        return true\n    }\n}\n\nconst getCookieAttributes = () =>\n    isInIframe() ? 'path=/; SameSite=None; Secure; Partitioned' : 'path=/; SameSite=Lax'\n\nexport const setCookie = (name, value) => {\n    if (value) {\n        document.cookie = `${name}=${value}; ${getCookieAttributes()}`\n    }\n}\n\nexport const deleteCookie = (name) => {\n    document.cookie = `${name}=; ${getCookieAttributes()}; expires=Thu, 01 Jan 1970 00:00:00 UTC;`\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"cc-mastercard\",\n  \"use\": \"cc-mastercard-usage\",\n  \"viewBox\": \"0 0 38 22\",\n  \"content\": \"<symbol viewBox=\\\"0 0 38 22\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"cc-mastercard\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" fill=\\\"white\\\" />\\n<path d=\\\"M15.5242 5.10352H22.7436V16.895H15.5242V5.10352Z\\\" fill=\\\"#FF5F00\\\" />\\n<path d=\\\"M16.2679 11.0009C16.267 9.8655 16.5244 8.74476 17.0206 7.72351C17.5168 6.70226 18.2388 5.80726 19.1319 5.10624C18.0257 4.23687 16.6972 3.69626 15.2983 3.5462C13.8994 3.39613 12.4864 3.64267 11.221 4.25763C9.95557 4.87259 8.88867 5.83116 8.14225 7.02379C7.39583 8.21642 7 9.59499 7 11.0019C7 12.4089 7.39583 13.7875 8.14225 14.9801C8.88867 16.1727 9.95557 17.1313 11.221 17.7462C12.4864 18.3612 13.8994 18.6077 15.2983 18.4577C16.6972 18.3076 18.0257 17.767 19.1319 16.8976C18.2385 16.1964 17.5163 15.3011 17.0201 14.2794C16.5239 13.2578 16.2667 12.1366 16.2679 11.0009V11.0009Z\\\" fill=\\\"#EB001B\\\" />\\n<path d=\\\"M30.5485 15.6476V15.406H30.6526V15.356H30.4048V15.406H30.5027V15.6476L30.5485 15.6476ZM31.0296 15.6476V15.356H30.9547L30.8672 15.5643L30.7797 15.356H30.7047V15.6476H30.7589V15.4268L30.8401 15.6164H30.8963L30.9776 15.4268V15.6476H31.0296Z\\\" fill=\\\"#F79E1B\\\" />\\n<path d=\\\"M31.2649 11.0005C31.2648 12.4075 30.8689 13.7862 30.1224 14.9789C29.3758 16.1715 28.3087 17.1301 27.0431 17.7449C25.7775 18.3598 24.3645 18.6062 22.9655 18.4559C21.5665 18.3056 20.238 17.7647 19.1318 16.8951C20.0246 16.1935 20.7464 15.2982 21.2427 14.2769C21.7391 13.2556 21.9969 12.1349 21.9969 10.9994C21.9969 9.86389 21.7391 8.7432 21.2427 7.7219C20.7464 6.70059 20.0246 5.80535 19.1318 5.1037C20.238 4.23406 21.5665 3.69318 22.9655 3.5429C24.3645 3.39261 25.7776 3.63899 27.0432 4.25387C28.3088 4.86874 29.3758 5.8273 30.1224 7.01998C30.8689 8.21266 31.2648 9.59132 31.2649 10.9984V11.0005Z\\\" fill=\\\"#F79E1B\\\" />\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"37\\\" height=\\\"21\\\" rx=\\\"3.5\\\" stroke=\\\"#DDDDDD\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport {useCategory} from 'pandora-shared-app/overrides/app/hooks/index'\nimport {CAT_MENU_DEFAULT_ROOT_CATEGORY} from '@salesforce/retail-react-app/app/constants'\nimport {flatten} from '@salesforce/retail-react-app/app/utils/utils'\n\nconst parseJsonField = (value) => {\n    try {\n        return JSON.parse(value)\n    } catch {\n        return []\n    }\n}\n\nconst resolveFromTree = (id, rootCategoryData) => {\n    if (!id || !rootCategoryData) return null\n\n    const flat = flatten(rootCategoryData, 'categories')\n    // Common CMS authoring mistake: singular slug for a plural category id\n    // (e.g. `charm` → `charms`, `necklace` → `necklaces`). Try one pluralized\n    // retry against the same tree before letting the fallback API call run.\n    const resolvedId = id.trim().toLowerCase().replaceAll('/', '')\n    const resolvedPluralId = resolvedId.endsWith('s') ? resolvedId : `${resolvedId}s`\n    const hit = flat[resolvedId] ?? flat[resolvedPluralId]\n    if (!hit) return null\n\n    return {\n        ...hit,\n        c_visualNavigation: parseJsonField(hit.c_visualNavigation),\n        c_visualNavigationRecirculation: parseJsonField(hit.c_visualNavigationRecirculation)\n    }\n}\n\n/**\n * ## Data parity with `useCategory`\n *\n * **What is NOT available from the cache path** — call sites that need any of\n * the following must use `useCategory` directly instead of this hook:\n * - `c_metadata` — synthesized server-side on the per-id endpoint and not\n *   present in the root tree (typically needed for SEO / `<Helmet>`).\n * - `parentCategoryTree` entries — stripped to `{id, name}` in the root tree;\n *   the per-id endpoint adds `c_slugURL`, `c_relSlugURL`, `c_hideFromBreadcrumb`,\n *   `c_isDiscoverTabDefault` to each entry (typically needed for breadcrumbs).\n *\n * @param {string} [id] - The category id to look up.\n * @param {{enabled?: boolean, withApiFallback?: boolean}} [options]\n *   `enabled` — gates the cache lookup.\n *   `withApiFallback` — when true, fall back to a per-id `useCategory` call on\n *   cache miss (or when `enabled` is false but an id is present), so the\n *   caller doesn't have to wire one up themselves.\n * @returns {{category: object|null, isSettled: boolean, isLoading: boolean}}\n *   `category` — resolved category from the cache, the API fallback, or null.\n *   `isSettled` — true once the root tree query has finished (or the cache\n *   path is inactive). Useful for callers that compose their own fallback.\n *   `isLoading` — true while either the root tree or the API fallback is in flight.\n */\nexport const useCategoryFromCache = (id, {enabled = true, withApiFallback = false} = {}) => {\n    const shouldLookup = enabled && !!id\n\n    const rootCategoryQuery = useCategory(\n        {parameters: {id: CAT_MENU_DEFAULT_ROOT_CATEGORY, levels: 3}},\n        {enabled: shouldLookup}\n    )\n\n    const categoryFromCache = useMemo(\n        () => (shouldLookup ? resolveFromTree(id, rootCategoryQuery.data) : null),\n        [shouldLookup, id, rootCategoryQuery.data]\n    )\n    const isCacheLoading = shouldLookup && rootCategoryQuery.isLoading\n    const isSettled = !shouldLookup || !rootCategoryQuery.isLoading\n\n    // Defer the per-id API call until the cache path has settled — otherwise\n    // we'd fire it eagerly and waste the request the cache lookup is about to\n    // satisfy. When `enabled` is false, isSettled is immediately true so the\n    // fallback runs straight away.\n    const shouldFallback = withApiFallback && !!id && isSettled && !categoryFromCache\n    const fallbackQuery = useCategory({parameters: {id, levels: 0}}, {enabled: shouldFallback})\n\n    return {\n        category: categoryFromCache || fallbackQuery.data || null,\n        isSettled,\n        isLoading: isCacheLoading || (shouldFallback && fallbackQuery.isLoading)\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"returns\",\n  \"use\": \"returns-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"returns\\\">\\n<g id=\\\"returns_Arrows rotate\\\">\\n<g id=\\\"returns_icon\\\">\\n<path d=\\\"M15.4933 12.4174C14.5635 14.5272 12.4538 16 10.0001 16C7.02956 16 4.56318 13.8412 4.08427 11.0069L6.50767 12.7038L7.08124 11.8846L3.39506 9.30352L0.813965 12.9897L1.63312 13.5633L3.14191 11.4085C3.79377 14.5994 6.61661 17 10.0001 17C12.7923 17 15.2026 15.3652 16.3262 13.0006L15.4933 12.4174Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M16.8584 8.59149L18.3672 6.43672L19.1863 7.01029L16.6052 10.6965L12.9191 8.11538L13.4926 7.29623L15.916 8.99311C15.4371 6.15879 12.9707 4 10.0001 4C7.5465 4 5.43684 5.47282 4.50703 7.58262L3.67407 6.99938C4.79766 4.63477 7.208 3 10.0001 3C13.3837 3 16.2065 5.4006 16.8584 8.59149Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Skeleton as ProductTileSkeleton} from '../product-tile/partials'\nimport {GridItem} from '../shared/ui'\nimport {v4 as uuidv4} from 'uuid'\n\nexport const ProductListSkeleton = ({limit, isShopTheLook = false, isInGrid = false}) => {\n    const inGridColSpan = isShopTheLook ? {base: 3, xl: 2} : 3\n    if (isInGrid) {\n        return (\n            <>\n                {Array.from({length: limit}).map(() => (\n                    <GridItem key={uuidv4()} colSpan={inGridColSpan}>\n                        <ProductTileSkeleton />\n                    </GridItem>\n                ))}\n            </>\n        )\n    }\n    return (\n        <>\n            {new Array(limit).fill(0).map(() => (\n                <ProductTileSkeleton key={uuidv4()} />\n            ))}\n        </>\n    )\n}\n\nProductListSkeleton.propTypes = {\n    isShopTheLook: PropTypes.bool,\n    isInGrid: PropTypes.bool,\n    limit: PropTypes.number.isRequired\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"paypal-icon\",\n  \"use\": \"paypal-icon-usage\",\n  \"viewBox\": \"0 0 80 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 80 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"paypal-icon\\\">\\n<g clip-path=\\\"url(#paypal-icon_clip0)\\\">\\n<path d=\\\"M79.0022 6.42684C78.6097 7.14639 78.6587 7.96405 78.5279 8.73265C78.1027 11.3001 77.6939 13.8676 77.3014 16.435C77.2197 17.0074 76.9417 17.22 76.402 17.2036C75.9932 17.1873 75.5843 17.1873 75.1755 17.2036C74.6359 17.22 74.505 16.9747 74.5868 16.4841C74.9793 14.0638 75.3554 11.6272 75.7479 9.20689C75.9278 8.09487 76.124 6.98285 76.2712 5.87083C76.3366 5.4293 76.5328 5.26576 76.958 5.29847C77.6448 5.36388 78.348 5.15129 79.0185 5.44565C79.0022 5.77271 79.0022 6.09978 79.0022 6.42684Z\\\" fill=\\\"#029DDF\\\" />\\n<path d=\\\"M4.33463 17.776C3.15719 17.776 1.99611 17.776 0.818682 17.776C0.0991397 17.776 -0.0807458 17.5634 0.0337268 16.8929C0.687856 12.7228 1.35834 8.55274 2.01247 4.38267C2.19235 3.20523 2.38859 2.04415 2.58483 0.866721C2.6666 0.310711 2.9446 0 3.51696 0C5.9536 0 8.37387 0 10.7942 0.0327065C11.6445 0.0490597 12.4622 0.245298 13.2308 0.605069C14.9315 1.40638 15.6184 2.87817 15.3076 5.00409L15.2749 4.98773C14.4736 4.72608 13.6887 4.46443 12.822 4.46443C11.0067 4.46443 9.20789 4.46443 7.39268 4.46443C6.70584 4.46443 6.39513 4.74244 6.29701 5.42927C6.05172 6.98283 5.77371 8.52003 5.57747 10.0736C5.52841 10.4824 5.2177 10.924 5.54477 11.3655C5.15229 12.0033 5.18499 12.7392 5.05417 13.4424C4.79252 14.8814 4.66169 16.3369 4.33463 17.776Z\\\" fill=\\\"#013187\\\" />\\n<path d=\\\"M4.33366 17.7765C4.66073 16.3374 4.79155 14.882 5.06956 13.4429C5.20038 12.7397 5.15132 12.0038 5.56015 11.3661C5.80545 11.1535 6.09981 11.1044 6.41052 11.1044C7.45713 11.1044 8.50373 11.1371 9.53399 10.9899C11.9706 10.6465 13.7695 9.46909 14.7343 7.13058C15.0123 6.4601 15.1104 5.77326 15.323 5.08643C16.5986 5.75691 16.9911 6.90163 16.9584 8.22624C16.942 8.78225 16.8602 9.33826 16.7294 9.86157C16.0426 12.7234 14.1129 14.2769 11.0712 14.3914C9.48493 14.4568 9.3541 14.1788 9.09245 16.1249C8.96162 17.106 8.78174 18.0709 8.63456 19.0357C8.52009 19.7389 8.29114 19.9515 7.5716 19.9679C6.63947 19.9679 5.72369 19.9679 4.79155 19.9679C4.26825 19.9679 4.0393 19.7716 4.13742 19.2156C4.23554 18.7577 4.26825 18.2671 4.33366 17.7765Z\\\" fill=\\\"#029DDF\\\" />\\n<path d=\\\"M25.1514 17.2032C23.5815 17.1869 23.6469 17.3995 23.9085 15.7478C24.4318 12.5589 24.9224 9.3537 25.4294 6.16482C25.5439 5.41257 25.6583 5.31445 26.4269 5.31445C27.7352 5.31445 29.0598 5.31445 30.3681 5.31445C30.7115 5.31445 31.0713 5.31445 31.4147 5.37987C33.5079 5.72328 34.4073 6.99883 34.0639 9.17381C33.6551 11.7903 32.0688 13.1804 29.4196 13.2458C28.9453 13.2621 28.4711 13.2621 27.9968 13.2458C27.4899 13.2294 27.2446 13.4747 27.1792 13.9653C27.0647 14.7176 26.9339 15.4698 26.8194 16.2057C26.6722 17.1705 26.6232 17.2196 25.6583 17.2196C25.4784 17.2032 25.3149 17.2032 25.1514 17.2032ZM28.5202 10.8582C28.9944 10.8582 29.4686 10.8255 29.9102 10.662C30.6134 10.384 31.0058 9.56629 30.875 8.66686C30.7933 8.06179 30.3681 7.76744 29.5177 7.70202C29.256 7.68567 28.978 7.70202 28.7164 7.68567C28.2912 7.63661 28.1277 7.86556 28.0786 8.24168C27.9805 8.97758 27.8824 9.69712 27.7352 10.4167C27.6698 10.7764 27.7188 10.9073 28.095 10.8745C28.2258 10.8418 28.373 10.8582 28.5202 10.8582Z\\\" fill=\\\"#023288\\\" />\\n<path d=\\\"M59.477 5.29907C60.3764 5.34813 61.4557 5.20095 62.5023 5.44625C64.0395 5.82238 64.8408 6.85263 64.7918 8.42254C64.71 11.4315 62.9275 13.1813 59.9185 13.214C59.5424 13.214 59.1826 13.2467 58.8065 13.214C58.1524 13.1486 57.8744 13.4757 57.7926 14.0808C57.6781 14.9148 57.5146 15.7324 57.4165 16.5664C57.3674 17.0407 57.1385 17.2042 56.6806 17.1879C56.1736 17.1715 55.6503 17.1879 55.1434 17.1879C54.4238 17.1879 54.3421 17.1061 54.4565 16.4029C54.7018 14.7839 54.9635 13.165 55.2251 11.546C55.5031 9.77986 55.7811 8.03006 56.0591 6.26391C56.19 5.38084 56.2881 5.29907 57.2039 5.29907C57.9071 5.29907 58.6103 5.29907 59.477 5.29907ZM59.1499 10.8755C59.4933 10.8428 59.8531 10.8265 60.1802 10.7447C61.1123 10.5648 61.6356 9.77986 61.5538 8.78231C61.4884 8.03006 61.0305 7.703 60.0003 7.65394C59.7877 7.65394 59.5914 7.65394 59.3789 7.63758C58.9864 7.60488 58.7738 7.75206 58.7247 8.17724C58.6593 8.78231 58.5448 9.38738 58.4304 9.99245C58.2995 10.8592 58.2995 10.8592 59.1499 10.8755Z\\\" fill=\\\"#029DDF\\\" />\\n<path d=\\\"M40.7191 10.09C40.7191 9.30502 41.1279 9.2069 41.6839 9.25596C42.1418 9.28867 42.5834 9.27232 43.0412 9.25596C43.4501 9.25596 43.5972 9.43585 43.5482 9.82833C43.1884 12.0687 42.8287 14.3255 42.4689 16.5659C42.4035 16.9747 42.1745 17.1873 41.7657 17.1873C41.3569 17.1873 40.948 17.1709 40.5392 17.1873C39.9995 17.22 39.5089 17.1873 39.6561 16.3533C38.8221 16.991 37.9881 17.3672 37.0233 17.3835C34.881 17.4326 33.491 16.0753 33.4746 13.933C33.4746 10.8913 36.0094 8.6836 39.0184 9.12514C39.6725 9.22326 40.2448 9.48491 40.7191 10.09ZM38.0208 15.2085C39.3291 15.2085 40.343 14.2273 40.3593 12.9518C40.3757 11.9215 39.6888 11.2511 38.5932 11.2674C37.3176 11.2838 36.3037 12.2977 36.2874 13.5896C36.2874 14.5871 36.9251 15.2085 38.0208 15.2085Z\\\" fill=\\\"#033389\\\" />\\n<path d=\\\"M70.3515 16.3205C69.2558 17.2199 68.0948 17.5797 66.7865 17.3344C65.3474 17.0727 64.4153 16.0916 64.2027 14.6525C63.7121 11.3818 66.394 8.68354 69.6647 9.14143C70.3515 9.23955 70.6459 9.38673 71.3654 10.0082C71.3654 9.23955 71.8724 9.2232 72.4284 9.2559C72.7718 9.28861 73.1316 9.2559 73.475 9.2559C74.1945 9.2559 74.2763 9.33767 74.1782 10.0409C73.9165 11.7089 73.6549 13.3606 73.3932 15.0122C73.3114 15.4701 73.246 15.9444 73.1806 16.4186C73.1152 16.9583 72.8535 17.2363 72.2975 17.2036C71.9214 17.1872 71.5616 17.2036 71.1855 17.2036C70.3515 17.2036 70.3352 17.1872 70.3515 16.3205ZM68.6671 15.2085C69.9917 15.2248 70.9893 14.26 71.022 12.9681C71.0383 11.9215 70.3679 11.251 69.2885 11.251C67.9966 11.251 66.9337 12.314 66.95 13.6059C66.95 14.5871 67.6042 15.1921 68.6671 15.2085Z\\\" fill=\\\"#029DDF\\\" />\\n<path d=\\\"M15.3394 5.10165C15.1268 5.77213 15.0123 6.47532 14.7507 7.1458C13.7858 9.48431 11.987 10.6617 9.55034 11.0052C8.50373 11.1523 7.45712 11.1196 6.42687 11.1196C6.09981 11.1196 5.8218 11.1687 5.5765 11.3813C5.24944 10.9397 5.56015 10.4982 5.60921 10.0894C5.80545 8.53583 6.08345 6.99862 6.32875 5.44507C6.44322 4.75823 6.73758 4.48022 7.42442 4.48022C9.23963 4.48022 11.0385 4.48022 12.8537 4.48022C13.7041 4.48022 14.5054 4.75823 15.3067 5.00353C15.3067 5.03623 15.323 5.05259 15.3394 5.05259C15.323 5.05259 15.3394 5.08529 15.3394 5.10165Z\\\" fill=\\\"#012169\\\" />\\n<path d=\\\"M48.7655 13.7037C49.6485 12.4118 50.4826 11.2671 51.2184 10.0733C51.6109 9.43555 52.0852 9.14119 52.8211 9.25567C53.1645 9.30473 53.5242 9.25567 53.8677 9.27202C54.0803 9.27202 54.3256 9.20661 54.4727 9.46826C54.6199 9.72991 54.4237 9.89344 54.2928 10.0733C53.4261 11.3162 52.5594 12.5754 51.6927 13.8182C50.4008 15.6825 49.0762 17.5468 47.8006 19.4437C47.5063 19.8689 47.1956 20.0652 46.6722 20.0161C46.2471 19.9834 45.8055 20.0161 45.3803 19.9997C45.135 19.9997 44.857 20.0815 44.7099 19.8035C44.5463 19.5255 44.7916 19.3456 44.9225 19.1494C45.4621 18.3808 45.9854 17.5958 46.5741 16.8436C46.8194 16.5165 46.8194 16.2549 46.705 15.8951C46.0345 13.9654 45.3803 12.0194 44.7099 10.0733C44.4809 9.40285 44.5627 9.27202 45.2659 9.25567C45.7238 9.25567 46.1653 9.28837 46.6232 9.25567C47.1956 9.20661 47.4899 9.45191 47.6371 9.99156C47.9969 11.1853 48.373 12.3791 48.7655 13.7037Z\\\" fill=\\\"#033389\\\" />\\n<path d=\\\"M15.3089 5.04008C15.2744 5.04008 15.2744 5.02282 15.2744 4.98828L15.3089 5.00555C15.3089 5.02282 15.3089 5.04008 15.3089 5.04008Z\\\" fill=\\\"#029DDF\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"paypal-icon_clip0\\\">\\n<rect width=\\\"79.0025\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useCallback, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {\n    Box,\n    useBreakpointValue,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Custom Shared Component(s)\nimport {\n    ProductTile,\n    useProductTileFlags\n} from 'pandora-shared-app/overrides/app/components/product-tile'\n\n// Carousel Related UI Component(s)\nimport {Controller, Autoplay} from 'swiper/modules'\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\n\n// Utils\nimport {processProductIDs, mergeCarouselConfig, duplicateOnceIfNeeded} from './utils/'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\n// Hook(s)\nimport {UseProductCarouselData} from 'pandora-shared-app/overrides/app/components/product-carousel/hooks/use-product-carousel-data'\nimport {useWishList} from 'pandora-shared-app/overrides/app/contexts/wish-list'\nimport {\n    useAddItemToWishlist,\n    useRemoveItemFromWishlist\n} from 'pandora-shared-app/overrides/app/hooks/use-wishlist-items'\n\n// Partials\nimport {ProductCarouselSkeleton} from './partials'\n\n// Constants\nimport {defaultCarouselConfig, MAXIMUM_PRODUCTS} from './constants'\nimport ErrorBoundary from 'pandora-shared-app/overrides/app/components/error-boundary'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useProductCapabilities} from 'pandora-shared-app/overrides/app/hooks/use-product-capabilities'\n\nconst carouselModules = [Controller, Autoplay]\n\nexport const ProductCarousel = ({\n    productConfig,\n    carouselConfig = {},\n    renderSlide = null,\n    onProductsLoad = () => {},\n    onProductClick,\n    onAddToCart,\n    wishlist: wishlistProp,\n    addItemToWishlist: addItemToWishlistProp,\n    removeItemFromWishlist: removeItemFromWishlistProp,\n    enableFavourite = true,\n    enablePrefetchedProducts = false,\n    prefetchedProductData,\n    disableInfiniteScroll = false,\n    hideSwatches,\n    showBuyFromTile = false,\n    productFindingMethod = null,\n    section = 'recommendation',\n    instanceId,\n    isShopTheLook = false,\n    directImageUrl,\n    skipBloomreachAddToCartPixel = false,\n    layout,\n    suppressClickAfterDrag = false,\n    ...props\n}) => {\n    const {data: wishlistData} = useWishList()\n    const addItem = useAddItemToWishlist()\n    const removeItem = useRemoveItemFromWishlist()\n    const wishlist = wishlistProp ?? wishlistData\n    const addItemToWishlist = addItemToWishlistProp ?? addItem\n    const removeItemFromWishlist = removeItemFromWishlistProp ?? removeItem\n\n    const enablePdpRecImageOptimization = useVariant(LD_KEYS.enablePdpRecImageOptimization, true)\n    // Read all tile flags ONCE per carousel instead of ~18 reads per tile (FIND-6629)\n    const productTileFlags = useProductTileFlags()\n    // Capability computed ONCE per carousel instead of 12 flag reads per tile (FIND-6629)\n    const {isBuyFromTileAvailable} = useProductCapabilities()\n    const initialLoading = true\n    const urlParams = new URLSearchParams(!isServer ? window.location.search : '')\n    let searchQuery = urlParams.get('q')\n    const processedIDs = processProductIDs(productConfig?.productIDs)\n    let limit = processedIDs ? processedIDs.length : productConfig?.limit ?? MAXIMUM_PRODUCTS\n\n    if (processedIDs.length > 0) {\n        limit = processedIDs.length\n        productConfig.limit = limit\n    }\n    const {variant} = props\n    const fetchedData = UseProductCarouselData(productConfig, {enabled: !enablePrefetchedProducts})\n    const hookResult = enablePrefetchedProducts ? prefetchedProductData : fetchedData\n\n    const {products: rawProducts, isLoading, promotionalPricing, error} = hookResult\n    // Ensure products is always an array to prevent errors when API returns unavailable products (controlled by feature flag)\n    let products = rawProducts\n    if (!Array.isArray(rawProducts)) {\n        products = []\n    }\n\n    // Notify parent when products are loaded\n    useEffect(() => {\n        if (!isLoading && products) {\n            onProductsLoad?.(products)\n        }\n    }, [products, isLoading, onProductsLoad])\n\n    const {container} = useMultiStyleConfig('ProductCarousel', {variant: layout ?? variant})\n\n    const isMobile = useBreakpointValue({base: true, xl: false})\n\n    const handleProductClick = useCallback(\n        (product) => {\n            if (onProductClick) {\n                onProductClick(product, searchQuery)\n            }\n        },\n        [onProductClick, searchQuery]\n    )\n\n    const handleFavouriteToggle = useCallback(\n        (productId, isFavourite) => {\n            const action = isFavourite ? addItemToWishlist : removeItemFromWishlist\n            return action(productId)\n        },\n        [addItemToWishlist, removeItemFromWishlist]\n    )\n\n    const renderProductTile = useCallback(\n        (product, index) => (\n            <ErrorBoundary>\n                <ProductTile\n                    flags={productTileFlags}\n                    product={product}\n                    enableFavourite={enableFavourite}\n                    onClick={handleProductClick}\n                    index={index}\n                    key={product?.productId}\n                    wishlist={wishlist}\n                    onFavouriteToggle={handleFavouriteToggle}\n                    promotionalPricing={promotionalPricing}\n                    directImageUrl={enablePdpRecImageOptimization ? directImageUrl ?? false : true}\n                    hideSwatches={hideSwatches}\n                    showBuyFromTile={showBuyFromTile}\n                    isBuyFromTileAvailable={isBuyFromTileAvailable}\n                    productFindingMethod={productFindingMethod}\n                    section={section}\n                    instanceId={instanceId}\n                    isShopTheLook={isShopTheLook}\n                    onAddToCart={onAddToCart}\n                    skipBloomreachAddToCartPixel={skipBloomreachAddToCartPixel}\n                />\n            </ErrorBoundary>\n        ),\n        [\n            handleProductClick,\n            handleFavouriteToggle,\n            products,\n            productTileFlags,\n            isBuyFromTileAvailable,\n            promotionalPricing,\n            hideSwatches,\n            showBuyFromTile,\n            productFindingMethod,\n            section,\n            instanceId,\n            isShopTheLook,\n            wishlist,\n            enableFavourite,\n            addItemToWishlist,\n            removeItemFromWishlist,\n            onAddToCart,\n            skipBloomreachAddToCartPixel\n        ]\n    )\n\n    const carouselArgs = {\n        ...mergeCarouselConfig(carouselConfig, defaultCarouselConfig),\n        showControls: !isMobile,\n        theme: variant || 'light',\n        renderSlide: renderSlide || renderProductTile,\n        slides: products,\n        suppressClickAfterDrag\n    }\n\n    const currentBreakpoint = useBreakpointValue({base: 0, md: 768, xl: 1440})\n\n    // Short-circuit if no products - avoid unnecessary processing\n    let finalProducts = []\n    if (products.length > 0) {\n        if (disableInfiniteScroll) {\n            finalProducts = products.map((product) => ({\n                ...product,\n                key: `${product.productId}`\n            }))\n        } else if (isMobile) {\n            // Mobile forces a single duplication pass (based on slidesPerView) to\n            // guarantee enough slides for the loop. Running the slidesPerGroup-based\n            // pass below on top of this one would re-stamp `key` from the already\n            // duplicated array, producing duplicate SwiperSlide keys.\n            finalProducts = duplicateOnceIfNeeded(\n                products,\n                carouselArgs.breakpoints[currentBreakpoint]?.slidesPerView,\n                true\n            )\n        } else {\n            const slidesPerGroup = carouselArgs.breakpoints[currentBreakpoint]?.slidesPerGroup || 1\n            finalProducts = duplicateOnceIfNeeded(products, slidesPerGroup)\n        }\n    }\n\n    carouselArgs.slides = finalProducts\n\n    // Don't render if there's an error or no products when not loading (controlled by feature flag)\n    if (error || (!isLoading && products.length === 0)) {\n        return null\n    }\n\n    return (\n        !error && (\n            <Box\n                sx={container}\n                data-testid=\"product-carousel\"\n                data-auto=\"product-carousel\"\n                className=\"product-carousel\"\n            >\n                {isLoading ?? initialLoading ? (\n                    <ProductCarouselSkeleton carouselConfig={carouselArgs} limit={limit} />\n                ) : (\n                    <Carousel modules={carouselModules} {...carouselArgs} />\n                )}\n            </Box>\n        )\n    )\n}\n\nProductCarousel.propTypes = {\n    productConfig: PropTypes.shape({\n        productIDs: PropTypes.string,\n        categoryID: PropTypes.string,\n        limit: PropTypes.number\n    }).isRequired,\n    carouselConfig: PropTypes.object,\n    renderSlide: PropTypes.func,\n    onProductsLoad: PropTypes.func,\n    onProductClick: PropTypes.func,\n    onAddToCart: PropTypes.func,\n    wishlist: PropTypes.object,\n    addItemToWishlist: PropTypes.func,\n    removeItemFromWishlist: PropTypes.func,\n    enableFavourite: PropTypes.bool,\n    variant: PropTypes.string,\n    enablePrefetchedProducts: PropTypes.bool,\n    prefetchedProductData: PropTypes.arrayOf(PropTypes.object),\n    disableInfiniteScroll: PropTypes.bool,\n    suppressClickAfterDrag: PropTypes.bool,\n    hideSwatches: PropTypes.bool,\n    showBuyFromTile: PropTypes.bool,\n    productFindingMethod: PropTypes.string,\n    section: PropTypes.string,\n    instanceId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    isShopTheLook: PropTypes.bool,\n    directImageUrl: PropTypes.string,\n    skipBloomreachAddToCartPixel: PropTypes.bool,\n    layout: PropTypes.oneOf(['inGrid'])\n}\n\nProductCarousel.displayName = 'ProductCarousel'\n","import React from 'react'\nimport {IconButton, useStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {DragHandleIcon} from 'pandora-shared-app/overrides/app/components/icons-temp'\n\nexport const DragButton = ({...rest}) => {\n    const styles = useStyleConfig('DragButton')\n\n    return (\n        <IconButton\n            variant=\"unstyled\"\n            sx={styles}\n            icon={<DragHandleIcon boxSize={11} />}\n            {...rest}\n        />\n    )\n}\n","import React, {useRef, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Drawer,\n    DrawerOverlay,\n    DrawerContent,\n    DrawerBody,\n    DrawerHeader,\n    useBreakpointValue\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {PinkOverlay} from './partials/pink-overlay'\nimport {CloseButton} from './partials/close-button'\nimport {DragButton} from './partials/drag-button'\nimport {useDrawerTracking} from './hooks/use-drawer-tracking'\nimport {useDragControls, useMotionValue, animate} from 'framer-motion'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {DRAWER_VARIANT} from '../trade-banner/partials/learn-more-drawer.styles'\n\nconst motionProps = {\n    drag: 'y',\n    dragTransition: {bounceStiffness: 600, bounceDamping: 20},\n    dragElastic: {top: 0, bottom: 0.3},\n    dragConstraints: {\n        top: 0,\n        bottom: 300\n    }\n}\n\nexport const PartialDrawerSheet = ({\n    bodyContent,\n    isOpen,\n    onClose,\n    customStyle,\n    overlayStyle,\n    headerOverlap = false,\n    sheetType,\n    virtualPagePath,\n    products = [],\n    contentMeta = null,\n    placement = 'bottom',\n    hidePinkOverlay = false,\n    variant = 'partial',\n    onDismiss = () => {},\n    useFullUrl = false\n}) => {\n    const isDesktop = useBreakpointValue({base: false, xl: true})\n    const enableDrawerPinkOverlay = useVariant(LD_KEYS.enableDrawerPinkOverlay, true)\n\n    const {handleCloseWithTracking} = useDrawerTracking({\n        isOpen,\n        sheetType,\n        virtualPagePath,\n        products,\n        contentMeta,\n        useFullUrl\n    })\n    const [showOverlayOnDrag, setShowOverlayOnDrag] = useState(true)\n    const pendingDismissMethodRef = useRef(null)\n\n    const handleClose = (dismissMethod) => {\n        const resolvedDismissMethod = dismissMethod ?? pendingDismissMethodRef.current\n        if (resolvedDismissMethod) {\n            onDismiss(resolvedDismissMethod)\n        }\n        handleCloseWithTracking(resolvedDismissMethod)\n        pendingDismissMethodRef.current = null\n        onClose()\n    }\n\n    const y = useMotionValue(0)\n    const dragControls = useDragControls()\n\n    const dragMotionProps = {\n        ...motionProps,\n        dragControls: dragControls,\n        dragListener: false,\n        onDragStart: () => {\n            setShowOverlayOnDrag(false)\n        },\n        onDragEnd: (event, info) => {\n            // If the user drags the drawer more than 70px, show the overlay and close the drawer\n            // Otherwise, animate the drawer back to the top\n            if (info.offset.y > 70) {\n                setShowOverlayOnDrag(true)\n                handleClose('swipe')\n            } else {\n                animate(y, 0, {\n                    type: 'tween',\n                    duration: 0.4,\n                    ease: 'easeOut'\n                })\n            }\n        }\n    }\n\n    return (\n        <Drawer\n            size=\"full\"\n            placement={placement}\n            isOpen={isOpen}\n            onClose={handleClose}\n            variant={variant}\n            closeOnOverlayClick={true}\n        >\n            <DrawerOverlay\n                onClick={() => {\n                    pendingDismissMethodRef.current = 'overlay'\n                }}\n                {...(overlayStyle ? {sx: overlayStyle} : {})}\n            />\n\n            {!hidePinkOverlay &&\n                showOverlayOnDrag &&\n                (variant !== DRAWER_VARIANT.LEARN_MORE || enableDrawerPinkOverlay) && (\n                    <PinkOverlay variant={variant} drawerY={y} />\n                )}\n\n            <DrawerContent\n                data-testid={'drawer-content'}\n                data-auto={`${variant}-drawer-content`}\n                style={{y}}\n                sx={{\n                    ...customStyle,\n                    // Hide scrollbar\n                    '&::-webkit-scrollbar': {\n                        display: 'none'\n                    },\n                    msOverflowStyle: 'none',\n                    scrollbarWidth: 'none'\n                }}\n                {...(!isDesktop ? dragMotionProps : {})}\n            >\n                <DrawerHeader\n                    className={headerOverlap && isDesktop && 'header-absolute'}\n                    onPointerDown={!isDesktop ? (event) => dragControls.start(event) : undefined}\n                >\n                    {isDesktop ? (\n                        <CloseButton\n                            onClick={() => handleClose('close-button')}\n                            data-testid=\"closeDrawer\"\n                            data-auto=\"close-drawer-btn\"\n                            className=\"close-btn\"\n                        />\n                    ) : (\n                        <DragButton data-testid=\"closeDrawer\" />\n                    )}\n                </DrawerHeader>\n\n                {bodyContent && (\n                    <DrawerBody\n                        className=\"partial-body-content\"\n                        onPointerDown={!isDesktop ? (event) => event.stopPropagation() : undefined}\n                        sx={{\n                            // Hide scrollbar\n                            '&::-webkit-scrollbar': {\n                                display: 'none'\n                            },\n                            msOverflowStyle: 'none',\n                            scrollbarWidth: 'none'\n                        }}\n                    >\n                        {bodyContent}\n                    </DrawerBody>\n                )}\n            </DrawerContent>\n        </Drawer>\n    )\n}\n\nPartialDrawerSheet.propTypes = {\n    bodyContent: PropTypes.node.isRequired,\n    isOpen: PropTypes.bool.isRequired,\n    onClose: PropTypes.func.isRequired,\n    customStyle: PropTypes.object,\n    overlayStyle: PropTypes.object,\n    headerOverlap: PropTypes.bool,\n    sheetType: PropTypes.string,\n    virtualPagePath: PropTypes.string,\n    products: PropTypes.array,\n    contentMeta: PropTypes.shape({\n        schema: PropTypes.string,\n        name: PropTypes.string,\n        deliveryId: PropTypes.string\n    }),\n    placement: PropTypes.string,\n    hidePinkOverlay: PropTypes.bool,\n    variant: PropTypes.string,\n    onDismiss: PropTypes.func,\n    useFullUrl: PropTypes.bool\n}\n\nPartialDrawerSheet.displayName = 'PartialDrawerSheet'\n","import {\n    generateConsistentImageUrl,\n    DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION,\n    MEDIA_QUERIES\n} from 'pandora-shared-app/overrides/app/utils/media'\n\n/**\n * Single source of truth for the PLP page-cover hero image across the responsive\n * `<picture>`/`<img>` (apps/content page-cover) and the SSR `<link rel=\"preload\">`\n * (page-cover-preload rendered at PLP layout level).\n *\n * Because both consumers derive their URLs from this one function, the preloaded\n * URL and the rendered image URL are guaranteed to match per breakpoint — so the\n * browser reuses the preload and fetches exactly one hero image (no double download).\n */\nexport const BREAKPOINT_VALUES = {\n    sm: {\n        screenSize: 'mobile',\n        aspectRatio: 3 / 4,\n        aspectRatioString: '3:4',\n        imageKey: 'mobile',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE,\n        media: MEDIA_QUERIES.MOBILE\n    },\n    md: {\n        screenSize: 'tablet',\n        aspectRatio: 4 / 5,\n        aspectRatioString: '4:5',\n        imageKey: 'mobile',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET,\n        media: MEDIA_QUERIES.TABLET\n    },\n    xl: {\n        screenSize: 'desktop',\n        aspectRatio: 5 / 2,\n        aspectRatioString: '5:2',\n        imageKey: 'desktop',\n        width: DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP,\n        media: MEDIA_QUERIES.DESKTOP\n    }\n}\n\n// Ordered mobile → tablet → desktop so <picture> evaluates the narrowest media first.\nconst BREAKPOINT_ORDER = ['sm', 'md', 'xl']\n\n/**\n * Resolves the per-breakpoint hero image URLs from a page-cover `image` node.\n *\n * @param {object|null|undefined} image - the page-cover `image` node (`{mobile, desktop, imageAltText, copyright}`)\n * @param {{aprimoPrimary?: boolean}} [opts] - forwarded to generateConsistentImageUrl\n * @returns {Array<{screenSize: string, imageUrl: string|null, media: string, aspectRatioString: string, width: number}>}\n *          One entry per breakpoint in mobile → tablet → desktop order. `imageUrl` is null\n *          when generation fails for that breakpoint; callers filter those out.\n */\nexport const getPageCoverImageUrls = (image, {aprimoPrimary} = {}) => {\n    if (!image) return []\n\n    return BREAKPOINT_ORDER.map((key) => {\n        const breakpoint = BREAKPOINT_VALUES[key]\n        let imageUrl = null\n\n        try {\n            const result = generateConsistentImageUrl(\n                image,\n                breakpoint.imageKey,\n                breakpoint.aspectRatioString,\n                breakpoint.width,\n                {aprimoPrimary}\n            )\n            imageUrl = result?.imageUrl || null\n        } catch (error) {\n            // Non-fatal: a single breakpoint failing must not break the others or crash SSR.\n            console.warn(\n                `Failed to generate ${breakpoint.screenSize} page-cover image URL:`,\n                error.message\n            )\n        }\n\n        return {\n            screenSize: breakpoint.screenSize,\n            imageUrl,\n            media: breakpoint.media,\n            aspectRatioString: breakpoint.aspectRatioString,\n            width: breakpoint.width\n        }\n    })\n}\n\n/**\n * Locates the page-cover module's `image` node inside a PLP top-slot Amplience payload,\n * so the layout-level preload can use the same image data the rendered hero uses.\n *\n * Mirrors category-slots' slot-content resolution: accepts an array of modules, or an\n * object exposing `content.slotContent` / `slotContent`. Returns the first page-cover\n * module's `image`, or null when there is no page-cover (e.g. search PLPs).\n *\n * @param {object|Array|null|undefined} amplienceContent\n * @returns {object|null} the page-cover `image` node, or null\n */\nexport const findPageCoverImage = (amplienceContent) => {\n    if (!amplienceContent) return null\n\n    const slotContent = Array.isArray(amplienceContent)\n        ? amplienceContent\n        : amplienceContent?.content?.slotContent || amplienceContent?.slotContent\n\n    let modules = []\n    if (Array.isArray(slotContent)) {\n        modules = slotContent\n    } else if (slotContent) {\n        modules = [slotContent]\n    }\n\n    const pageCover = modules.find((module) => module?._meta?.schema?.includes('page-cover'))\n\n    return pageCover?.image || null\n}\n","import {useMemo, useRef} from 'react'\nimport {useLocation} from 'react-router-dom'\n\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {useDeepCompareEffect, useSiteSectionLevels} from 'pandora-shared-app/overrides/app/hooks'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {formatContentItems} from 'pandora-shared-app/overrides/app/utils/content-tracking-helpers'\nimport {\n    getProductCustomization,\n    isFlexibleSet\n} from 'pandora-shared-app/overrides/app/utils/product-type-utils'\nimport {useProductCapabilities} from 'pandora-shared-app/overrides/app/hooks/use-product-capabilities'\nimport {getCncAbtestSegment} from 'pandora-shared-app/overrides/app/utils/cnc-abtest-segment'\nimport {setCookie} from 'pandora-shared-app/overrides/app/utils/amplience'\nimport {useCartState} from './use-cart-state-analytics'\nimport {useCurrentBasket} from './use-current-basket'\n\n/** @typedef {import('../types/product').SCAPIProduct} SCAPIProduct */\n/** @typedef {import('../types/product').DOLProduct} DOLProduct */\n\n/**\n * Removes Bloomreach-specific suffixes from product IDs.\n * SFCC adds \"__generated\" suffix for Bloomreach tracking, but this should not appear in dataLayer.\n *\n * @param {string} productId - The product ID potentially containing suffix\n * @param {boolean} shouldClean - Whether to clean the suffix (controlled by feature flag)\n * @returns {string} The cleaned product ID without Bloomreach suffixes\n */\nconst cleanProductId = (productId, shouldClean = true) => {\n    if (!shouldClean || !productId || typeof productId !== 'string') {\n        return productId\n    }\n    // Remove \"__generated\" suffix added by SFCC for Bloomreach\n    return productId.replace(/__generated$/i, '')\n}\n\n/**\n * Extracts product details from a child product object (bundle or set child).\n *\n * @param {SCAPIProduct} childProduct - The child product object.\n * @param {string} parentProductId - The parent product ID (bundle or set)\n * @param {Object} options - Configuration options for extraction\n * @param {boolean} [options.shouldCleanBloomreachSuffix=false] - Whether to clean Bloomreach suffixes (controlled by LD flag)\n * @param {boolean} [options.enableEarlyAccessTracking=false] - Whether to include early access tracking (controlled by LD flag)\n * @param {boolean} [options.enablePdpSetProductTracking=false] - Whether to include set/bundle tracking fields (controlled by LD flag)\n * @param {boolean} [options.isChildOfSet=false] - Whether the child product belongs to a set\n * @param {boolean} [options.isChildOfBundle=false] - Whether the child product belongs to a bundle\n * @returns {Object} The extracted product details for tracking.\n */\nexport const extractChildProductDetails = (\n    childProduct,\n    parentProductId,\n    {\n        shouldCleanBloomreachSuffix = false,\n        enableEarlyAccessTracking = false,\n        enablePdpSetProductTracking = false,\n        isChildOfSet = false,\n        isChildOfBundle = false\n    } = {}\n) => {\n    const product = childProduct\n    const quantity = childProduct.quantity || 1\n\n    const {id: productId, name, primaryCategoryId} = product\n    const promotionIds = product?.c_price?.appliedPromotions?.map((promotion) => promotion.id) || []\n    const targetPrice = product?.c_price?.sales || product?.c_price?.min?.sales || product?.price\n    const pricebookId = targetPrice?.pricebook\n    const discount = 0 // Child products typically don't have discounts\n    const urlParams = new URLSearchParams(window.location.search)\n    const findingMethod = urlParams.get('product_finding_method')\n\n    // Get the main image from imageGroups\n    const mainImageGroup = product?.imageGroups?.find((group) => group.viewType === 'main')\n    const mainImage = mainImageGroup?.images?.[0]?.disBaseLink || ''\n\n    // Clean product IDs to remove Bloomreach-specific suffixes before sending to dataLayer\n    const cleanedProductId = cleanProductId(productId, shouldCleanBloomreachSuffix)\n    const cleanedMasterId = cleanProductId(\n        product?.master?.masterId || productId,\n        shouldCleanBloomreachSuffix\n    )\n    const cleanedParentId = cleanProductId(parentProductId, shouldCleanBloomreachSuffix)\n\n    return {\n        product_bonus: ['No'],\n        product_bundle_id: [enablePdpSetProductTracking && isChildOfBundle ? cleanedParentId : ''],\n        product_carat_weight: product?.c_stoneGroup?.[0] || '',\n        product_category: primaryCategoryId,\n        product_collection: product?.c_Collection?.[0] || '',\n        product_discount: [discount.toFixed(2)],\n        ...(enableEarlyAccessTracking && {\n            product_early_access: product?.custom?.isEarlyAccessProduct\n        }),\n        product_gift_status: ['No'],\n        product_giftset_id: [enablePdpSetProductTracking && isChildOfSet ? cleanedParentId : ''],\n        product_id: [cleanedProductId],\n        product_image_url: [mainImage],\n        product_isBundled: [enablePdpSetProductTracking && isChildOfBundle ? 'yes' : 'No'],\n        product_master_id: [cleanedMasterId],\n        product_material: [product?.c_materialGroup?.[0]?.toLowerCase() ?? ''],\n        product_metal: [product?.c_metalGroup?.[0]?.toLowerCase() ?? ''],\n        product_name: [name],\n        product_price: [targetPrice?.value?.toFixed(2) || product?.price?.toFixed(2) || '0.00'],\n        product_price_number: [targetPrice?.value || product?.price || 0],\n        product_pricebook_id: pricebookId ? [pricebookId] : [],\n        product_promotion_id: promotionIds,\n        product_quantity: [quantity],\n        product_size: [\n            product?.c_size ||\n                product?.variationAttributes?.find((attr) => attr.id === 'size')?.values?.[0]\n                    ?.value ||\n                ''\n        ],\n        product_subCategory: [product?.c_primaryCategory || ''],\n        product_url: [product?.c_slugUrl || ''],\n        finding_method: [findingMethod || 'pdp']\n    }\n}\n\n/**\n * Extracts product details from a product object.\n *\n * @param {DOLProduct} product - The product object.\n * @param {boolean} shouldConvert - Whether to convert the product data\n * @param {boolean} isEmphasized - Flag for emphasized products\n * @param {string} customFindingMethod - Custom finding method\n * @param {boolean} shouldCleanBloomreachSuffix - Whether to clean Bloomreach suffixes (controlled by LD flag)\n * @param {boolean} enableEarlyAccessTracking - Whether to include early access tracking (controlled by LD flag)\n * @returns {Object} The extracted product details for tracking.\n */\nexport const extractProductDetails = (\n    product,\n    shouldConvert = false,\n    isEmphasized = false,\n    customFindingMethod = null,\n    shouldCleanBloomreachSuffix = false,\n    enableEarlyAccessTracking = false\n) => {\n    const {productId, name} = product\n    const promotionIds = product?.price?.appliedPromotions?.map((promotion) => promotion.id) || []\n    const targetPrice =\n        product?.price?.type === 'default' ? product?.price?.sales : product?.price?.min?.sales\n    const promoWithPriceBook = product?.price?.appliedPromotions?.find(\n        (promotion) => !!promotion.pricebook\n    )\n    const pricebookId = promoWithPriceBook?.pricebook ?? targetPrice?.pricebook\n    const discount =\n        product?.price?.list && product?.price?.sales\n            ? product?.price?.list?.value - product?.price?.sales.value\n            : 0\n    const urlParams =\n        typeof window !== 'undefined'\n            ? new URLSearchParams(window.location?.search)\n            : new URLSearchParams()\n    const findingMethod = customFindingMethod || urlParams.get('product_finding_method')\n\n    // Clean product IDs to remove Bloomreach-specific suffixes before sending to dataLayer\n    const cleanedProductId = cleanProductId(productId, shouldCleanBloomreachSuffix)\n    const cleanedMasterId = cleanProductId(product?.master?.masterId, shouldCleanBloomreachSuffix)\n\n    const isSet = !!product?.productType?.set\n\n    const productData = {\n        product_bonus: ['No'],\n        product_bundle_id: [''],\n        product_carat_weight: product?.custom?.diamondCaratWeight,\n        product_category: product?.custom?.category,\n        product_collection: product?.custom?.Collection,\n        product_discount: [discount.toFixed(2)],\n        ...(enableEarlyAccessTracking && {\n            product_early_access: product?.custom?.isEarlyAccessProduct\n        }),\n        product_gift_status: ['No'],\n        product_giftset_id: [isSet ? cleanedProductId : ''],\n        product_id: [cleanedProductId],\n        product_image_url: [product?.imageSequence?.[0]?.disBaseLink],\n        product_isBundled: ['No'],\n        product_master_id: [cleanedMasterId],\n        product_material: [product.custom?.materialGroupDefault?.toLowerCase() ?? ''],\n        product_metal: [product.custom?.metalGroupDefault?.toLowerCase() ?? ''],\n        product_name: [name],\n        product_price: [targetPrice?.value?.toFixed(2)],\n        product_price_number: [targetPrice?.value],\n        product_pricebook_id: pricebookId ? [pricebookId] : [],\n        product_promotion_id: promotionIds,\n        product_quantity: [1],\n        product_size: [getProductSize(product)],\n        product_subCategory: [product?.custom?.subCategory ?? ''],\n        product_url: [product.slugUrl],\n        finding_method: findingMethod || 'pdp',\n        spin_360: 'no',\n        isPartofset: product?.custom?.isPartOfSet ? 'Yes' : 'No'\n    }\n\n    if (isEmphasized) {\n        productData.emphasized_tile = true\n    }\n\n    return shouldConvert ? convertProductData(productData) : productData\n}\n\nfunction getProductSize(product) {\n    // Check custom.size first (for full product objects)\n    if (product?.custom?.size) {\n        return product.custom.size === 'one size'\n            ? 'one size'\n            : (product.custom.size / 100).toString()\n    }\n\n    // Fallback to variationValues.size (for variant objects from product.variants array)\n    if (product?.variationValues?.size) {\n        const size = product.variationValues.size\n        return size === 'one size' ? 'one size' : (Number(size) / 100).toString()\n    }\n\n    return ''\n}\n\nexport const processPageContentData = (product, enablePdpSetProductTracking = false) => {\n    if (!product || Object.keys(product).length === 0) {\n        return {\n            error_type: TEALIUM_CONSTANTS.ERROR_TYPE['404_PAGE'],\n            estore_event: [TEALIUM_CONSTANTS.ESTORE_EVENT.ERROR],\n            page_content: TEALIUM_CONSTANTS.PAGE_CONTENT.MARKETING,\n            page_content_group: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR,\n            page_content_id: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR,\n            page_content_name: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR,\n            page_content_type: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR,\n            page_name: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR,\n            page_type: TEALIUM_CONSTANTS.PAGE_CONTENT.ERROR\n        }\n    } else {\n        return {\n            estore_event: getPageContentEvents(product, enablePdpSetProductTracking),\n            page_content: TEALIUM_CONSTANTS.CONTENT.COMMERCIAL,\n            page_content_group: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT_DETAILS,\n            page_content_id: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT,\n            page_content_name: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT,\n            page_content_type: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT,\n            page_content_theme: '',\n            page_content_collection: '',\n            page_content_collaboration: '',\n            page_content_occasion: '',\n            page_content_geo: TEALIUM_CONSTANTS.OTHER.GEO,\n            page_name: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT_VIEW,\n            page_type: TEALIUM_CONSTANTS.PAGENAMES.PRODUCT,\n            menu_item: ''\n        }\n    }\n}\n\nconst getPageContentEvents = (product, enablePdpSetProductTracking = false) => {\n    const result = [TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_DETAIL_VIEW]\n\n    // set product\n    if (enablePdpSetProductTracking && product?.productType?.set) {\n        const setProducts = product?.setProducts || []\n        // If any child is OOS\n        const anyChildOutOfStock = setProducts.some((setChildProduct) => {\n            return !setChildProduct?.inventory?.orderable\n        })\n\n        if (anyChildOutOfStock) {\n            result.push(TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_OUT_OF_STOCK)\n        }\n    } else if (!product?.inventory?.orderable) {\n        // Regular product\n        result.push(TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_OUT_OF_STOCK)\n    }\n\n    return result\n}\n\n/**\n * @param {Object} source\n * @returns {Object}\n */\nexport const convertProductData = (source) => {\n    const arrayFields = ['product_promotion_id']\n    const numberFields = ['discount', 'price']\n\n    return Object.entries(source).reduce((result, [key, value]) => {\n        let internalProductKey = key.replace('product_', '')\n        if (arrayFields.includes(key)) {\n            result[internalProductKey] = value\n        } else {\n            result[internalProductKey] = Array.isArray(value) ? value[0] ?? '' : value\n        }\n\n        if (numberFields.includes(internalProductKey)) {\n            result[internalProductKey] = parseFloat(result[internalProductKey])\n        }\n\n        return result\n    }, {})\n}\n\n/**\n * Builds an array of converted products for tracking.\n * Handles bundle and set products by extracting child product details.\n *\n * @param {DOLProduct} product - The main product object\n * @param {Object} productData - The extracted product details\n * @param {Object} options - Configuration options\n * @param {boolean} options.shouldCleanBloomreachSuffix - Whether to clean Bloomreach suffixes\n * @param {boolean} options.enableEarlyAccessTracking - Whether to include early access tracking\n * @param {boolean} options.enablePdpSetProductTracking - Whether to include set/bundle tracking fields\n * @returns {Array} Array of converted product data for tracking\n */\nexport const buildProductsArray = (\n    product,\n    productData,\n    {shouldCleanBloomreachSuffix, enableEarlyAccessTracking, enablePdpSetProductTracking}\n) => {\n    if (product?.productType?.bundle || product?.productType?.set) {\n        const childItems = product?.bundledProducts || product?.setProducts || []\n        const isChildOfBundle = !!product?.productType?.bundle\n        const isChildOfSet = !!product?.productType?.set\n        return childItems.map((childItem) => {\n            // Extract product from wrapper (bundles) or use directly (sets), include quantity\n            const childProduct = isChildOfBundle\n                ? {...childItem.product, quantity: childItem.quantity}\n                : childItem\n            const childProductDetails = extractChildProductDetails(\n                childProduct,\n                product.productId,\n                {\n                    shouldCleanBloomreachSuffix,\n                    enableEarlyAccessTracking,\n                    enablePdpSetProductTracking,\n                    isChildOfSet,\n                    isChildOfBundle\n                }\n            )\n            return convertProductData(childProductDetails)\n        })\n    }\n    return [convertProductData(productData)]\n}\n\n/**\n * Extracts promotion data from the product for the Tealium data layer.\n *\n * @param {Object} product - The product object.\n * @returns {Array} An array containing promotion info for Tealium.\n */\nexport const extractPromoData = (product) => {\n    const promotionIds = product?.price?.appliedPromotions?.map((promotion) => promotion.id) || []\n    const promoWithPriceBook = product?.price?.appliedPromotions?.find(\n        (promotion) => !!promotion.pricebook\n    )\n    const targetPrice =\n        product?.price?.type === 'default' ? product?.price?.sales : product?.price?.min?.sales\n    const pricebookId = promoWithPriceBook?.pricebook ?? targetPrice?.pricebook\n\n    return promotionIds.length\n        ? [\n              {\n                  promotion_id: promotionIds,\n                  pricebook_id: pricebookId || ''\n              }\n          ]\n        : []\n}\n\n/**\n * Extracts bundle data from the product for the Tealium data layer.\n *\n * @param {Object} product - The product object.\n * @returns {Array} An array containing bundle info for Tealium.\n */\nexport const extractBundleData = (product) => {\n    if (product?.productType?.bundle) {\n        return [\n            {\n                id: product.productId,\n                name: product.name,\n                quantity: 1,\n                price: product?.price?.sales?.value\n            }\n        ]\n    }\n    return []\n}\n\n/**\n * Custom hook to handle analytics and tracking on the Product Detail Page (PDP).\n *\n * @param {Object} product - The product object containing product data.\n * @param {Array} amplienceContent - The Amplience content array for content_loaded tracking.\n */\nexport const useProductDetailsAnalytics = (product, amplienceContent = []) => {\n    const {view, initialDataObject} = useTealium()\n    const site_section_levels = useSiteSectionLevels(product?.primaryCategoryId)\n    const {search} = useLocation()\n    const enablePdpFindingMethodTracking = useVariant(LD_KEYS.enablePdpFindingMethodTracking, false)\n    const productFindingMethodParam = useMemo(\n        () =>\n            enablePdpFindingMethodTracking\n                ? new URLSearchParams(search).get('product_finding_method')\n                : null,\n        [search, enablePdpFindingMethodTracking]\n    )\n    const enablePdpEstimatedDeliveryCallout = useVariant(\n        LD_KEYS.enablePdpEstimatedDeliveryCallout,\n        false\n    )\n\n    const enablePdpSetProductTracking = useVariant(LD_KEYS.enablePdpSetProductTracking, false)\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n    const enableEarlyAccessTracking = useVariant(LD_KEYS.enablePdpNewEarlyAccessTracking, false)\n    const enableCustomizationTracking = useVariant(LD_KEYS.enablePdpCustomizationTracking, false)\n    const enableFlexibleSetAnalytics = useVariant(LD_KEYS.enablePdpFlexibleSetAnalytics, false)\n    const enableCartStateTracking = useVariant(LD_KEYS.enableCartStateTracking, false)\n    const enableGlobalCartStateEnrichment = useVariant(\n        LD_KEYS.enableGlobalCartStateEnrichment,\n        false\n    )\n    const enablePdpDatalayerNoCategoryFix = useVariant(\n        LD_KEYS.enablePdpDatalayerNoCategoryFix,\n        false\n    )\n    // C&C ZIP-vs-city A/B variant flag; true = Loqate (city search) arm.\n    const loqateEnabled = useVariant(LD_KEYS.enablePdpCncLoqateStoreSearch, false)\n    const aprimoPrimary = useVariant(LD_KEYS.selectGlobalAprimoDamPrimary, false)\n\n    const cartState = useCartState(product)\n    // Keep the latest cart_state in a ref so the debounced setTimeout below\n    // reads the current value instead of the fallback closed over at the time\n    // the effect was scheduled — the enrichment fetch usually resolves inside\n    // the 1000ms debounce window. Only consulted when the enrichment flag is\n    // ON; with the flag OFF the emit falls back to the closure-captured value,\n    // keeping the OG-7665 code path byte-identical.\n    const cartStateRef = useRef(cartState)\n    cartStateRef.current = cartState\n    const {isLoading: isBasketLoading} = useCurrentBasket()\n\n    // Mirror the visible customization buttons (engraving, styling studio) into\n    // the analytics `customization` field so tracked value matches what the user\n    // can actually see & use on the PDP (LD flags, sneak-peek, OOS, set/bundle rules).\n    const {isEngravingAvailable, isStylingStudioAvailable} = useProductCapabilities(product)\n\n    // Timeout reference for debouncing\n    const debounceTimeoutRef = useRef(null)\n    const {setIsUpdatedUtagDataSet, isTealiumInitialized} = useTealium() || {}\n\n    // Prices may be fetched asynchronously (when enableNewProductsPricingAPI is on),\n    // so we track readiness to re-trigger the analytics event once prices arrive.\n    const isSetProduct = enablePdpSetProductTracking && product?.productType?.set\n    const setProducts = product?.setProducts || []\n\n    const areProductPricesReady = useMemo(() => {\n        if (!product) return false\n\n        if (isSetProduct) {\n            return setProducts.every((child) => {\n                const hasPrice = child?.c_price?.sales || child?.c_price?.min?.sales || child?.price\n                return !!hasPrice\n            })\n        }\n\n        return !!product?.price\n    }, [product, isSetProduct, setProducts])\n\n    useDeepCompareEffect(() => {\n        // Clear the previous timeout if this effect runs again before it completes\n        if (debounceTimeoutRef.current) {\n            clearTimeout(debounceTimeoutRef.current)\n        }\n\n        // Debounce the fireEvent call by 1000ms\n        debounceTimeoutRef.current = setTimeout(() => {\n            if (enablePdpSetProductTracking && product?.productType?.set) {\n                const setProducts = product?.setProducts || []\n\n                // Check if any child is missing inventory or price\n                const anyChildMissingData = setProducts.some((setChildProduct) => {\n                    const childInventory = setChildProduct?.inventory\n                    const childPrice =\n                        setChildProduct?.c_price?.sales ||\n                        setChildProduct?.c_price?.min?.sales ||\n                        setChildProduct?.price\n                    return !childInventory || !childPrice\n                })\n\n                if (anyChildMissingData) return\n            } else if (!product?.inventory || !product?.price) {\n                return\n            }\n\n            // don't track if site_section_levels aren't ready\n            if (enablePdpDatalayerNoCategoryFix) {\n                if (product?.primaryCategoryId && !site_section_levels?.length) return\n            } else if (!site_section_levels?.length) {\n                return\n            }\n\n            // wait for basket to load before sending cart_state\n            if (enableCartStateTracking && isBasketLoading) return\n\n            fireEvent()\n        }, 1000)\n\n        // Cleanup function to clear timeout on component unmount or if effect re-runs\n        return () => {\n            if (debounceTimeoutRef.current) {\n                clearTimeout(debounceTimeoutRef.current)\n            }\n        }\n\n        // we should fire an event only when master changes, not just a variant\n        // productFindingMethodParam ensures the event re-fires when the URL param changes\n        // (e.g. user navigates to the same PDP from PLP after having visited it directly)\n    }, [\n        product?.master?.masterId,\n        site_section_levels,\n        areProductPricesReady,\n        productFindingMethodParam,\n        isBasketLoading\n    ])\n\n    const fireEvent = () => {\n        const urlParams =\n            typeof window !== 'undefined'\n                ? new URLSearchParams(window.location?.search)\n                : new URLSearchParams()\n        const isEmphasized = urlParams.get('emphasized') === 'true'\n\n        const productData =\n            extractProductDetails(\n                product,\n                false,\n                isEmphasized,\n                null,\n                shouldCleanBloomreachSuffix,\n                enableEarlyAccessTracking\n            ) || []\n        const pageContentData = processPageContentData(product, enablePdpSetProductTracking)\n        const promotionData = extractPromoData(product) || []\n        const bundleData = extractBundleData(product) || []\n\n        const products = buildProductsArray(product, productData, {\n            shouldCleanBloomreachSuffix,\n            enableEarlyAccessTracking,\n            enablePdpSetProductTracking\n        })\n\n        const isFlexible = enableFlexibleSetAnalytics && isFlexibleSet(product)\n        // Per-child customization stays scoped to engraving/studio only — flexible is a\n        // parent-set attribute (see top-level product_customization stamp below), so\n        // children of a flexible set do not carry 'flexible' individually. Omit the\n        // field when no service applies so the datalayer stays clean.\n        const productsPayload = enableCustomizationTracking\n            ? products.map((p) => {\n                  const customization = getProductCustomization({\n                      isEngravingAvailable,\n                      isStylingStudioAvailable\n                  })\n                  return customization.length ? {...p, customization} : p\n              })\n            : products\n\n        const content_loaded = formatContentItems(amplienceContent, {aprimoPrimary})\n\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const {finding_method: _finding_method, ...productDataWithoutFindingMethod} = productData\n\n        // C&C A/B arm on every PDP view (direct or navigated); deduped vs initialDataObject.\n        const cncAbtestSegment = getCncAbtestSegment(initialDataObject?.country_code, loqateEnabled)\n        // Handshake the arm to the SFRA cart/checkout repo via a shared cookie (US/CA only).\n        if (cncAbtestSegment) setCookie('loqateEnabled', String(loqateEnabled))\n        const baseAbtestSegments = initialDataObject?.abtest_segments || []\n        const abtestSegments =\n            cncAbtestSegment &&\n            !baseAbtestSegments.some((segment) => segment.abtest_id === cncAbtestSegment.abtest_id)\n                ? [...baseAbtestSegments, cncAbtestSegment]\n                : baseAbtestSegments\n\n        // For flexible sets, the parent (set/bundle) sits at utag_data top level while\n        // `products` carries child variants. 'flexible' is a set-level customization,\n        // so stamp product_customization at the top level for the parent-scoped view.\n        // finding_method stays child-scoped (child items describe the specific product;\n        // the set relation is already covered by giftset_id) per analytics guidance.\n        const flexibleParentFields = isFlexible\n            ? {\n                  product_customization: [\n                      getProductCustomization({\n                          isEngravingAvailable,\n                          isStylingStudioAvailable,\n                          isFlexibleSet: true\n                      })\n                  ]\n              }\n            : null\n\n        // Combine all gathered data into a single object for Tealium tracking.\n        const updatedUtagData = {\n            ...productDataWithoutFindingMethod,\n            ...flexibleParentFields,\n            promos: promotionData,\n            bundles: bundleData,\n            products: productsPayload,\n            ...pageContentData,\n            site_section_levels_id: site_section_levels,\n            [TEALIUM_CONSTANTS.ESTORE_EVENT.PROMISE_ENGINE_MESSAGE_SHOWN]:\n                enablePdpEstimatedDeliveryCallout,\n            ...(content_loaded.length > 0 && {content_loaded}),\n            ...(enableCartStateTracking && {\n                cart_state: enableGlobalCartStateEnrichment ? cartStateRef.current : cartState\n            }),\n            ...(cncAbtestSegment && {abtest_segments: abtestSegments})\n        }\n\n        // Update utag_data before the view so a navigated-to PDP carries the arm (no re-seed on nav).\n        window.utag_data = {...window.utag_data, ...updatedUtagData}\n\n        // Fire VIEW event with the updated utag_data\n        view(updatedUtagData)\n\n        if (!isTealiumInitialized) {\n            // If tealium is not initialized, then set the udpatedUtagDataSet state variable to true\n            setIsUpdatedUtagDataSet(true)\n        }\n    }\n}\n\nexport const useProductDetailsLinkAnalytics = () => {\n    const INCLUDE_PRODUCTS_DATA_EVENTS = [TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_SIZE_GUIDE_VIEWED]\n    const {link} = useTealium()\n\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n    const enableEarlyAccessTracking = useVariant(LD_KEYS.enablePdpNewEarlyAccessTracking, false)\n    const enablePdpSetProductTracking = useVariant(LD_KEYS.enablePdpSetProductTracking, false)\n\n    const trackLinkEvent = (product, estore_event) => {\n        const productData =\n            extractProductDetails(\n                product,\n                false,\n                false,\n                null,\n                shouldCleanBloomreachSuffix,\n                enableEarlyAccessTracking\n            ) || []\n\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const {finding_method: _finding_method, ...productDataWithoutFindingMethod} = productData\n\n        const updatedUtagData = {\n            ...productDataWithoutFindingMethod,\n            estore_event: [estore_event]\n        }\n\n        if (INCLUDE_PRODUCTS_DATA_EVENTS.includes(estore_event)) {\n            updatedUtagData.products = buildProductsArray(product, productData, {\n                shouldCleanBloomreachSuffix,\n                enableEarlyAccessTracking,\n                enablePdpSetProductTracking\n            })\n        }\n\n        link(updatedUtagData)\n    }\n\n    return {trackLinkEvent}\n}\n\nexport const useRecommendationsAnalytics = () => {\n    const {link} = useTealium()\n\n    /**\n     * Tracks recommendation event to Tealium.\n     *\n     * @param {TEALIUM_CONSTANTS.ESTORE_EVENT.RECOMMENDATION_VIEWED|TEALIUM_CONSTANTS.ESTORE_EVENT.RECOMMENDATION_CLICKED} estoreEvent\n     * @param {Object} eventData\n     * @param {'on'|'off'} eventData.personalization\n     * @param {'einstein'|'monetate'|'coremedia'} eventData.personalization_platform\n     * @param {string} eventData.personalisaton_type\n     * @param {string} eventData.personalisation_recommender\n     * @returns {void}\n     */\n    const trackRecommendationLinkEvent = (estoreEvent, eventData) => {\n        link({\n            estore_event: [estoreEvent],\n            ...eventData\n        })\n    }\n\n    return {trackRecommendationLinkEvent}\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"prev\",\n  \"use\": \"prev-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"prev\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5.93411 10.0001L15.1265 0.807693L14.4194 0.100586L4.5199 10.0001L14.4194 19.8996L15.1265 19.1925L5.93411 10.0001Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {createContext, useContext, useState, useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nconst RingSizerContext = createContext(null)\n\n/**\n * Provider for ring sizer state and actions.\n * Manages open/close state and provides feature flags.\n */\nexport const RingSizerProvider = ({children}) => {\n    const isEnabled = useVariant(LD_KEYS.enablePdpRingSizer, false)\n    const [isOpen, setIsOpen] = useState(false)\n\n    const open = useCallback(() => setIsOpen(true), [])\n    const close = useCallback(() => setIsOpen(false), [])\n\n    const value = useMemo(\n        () => ({\n            isRingSizerOpen: isOpen,\n            isRingSizerEnabled: isEnabled,\n            openRingSizer: open,\n            closeRingSizer: close\n        }),\n        [isOpen, isEnabled, open, close]\n    )\n\n    return <RingSizerContext.Provider value={value}>{children}</RingSizerContext.Provider>\n}\n\nRingSizerProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nconst SAFE_DEFAULTS = {\n    isRingSizerOpen: false,\n    isRingSizerEnabled: false,\n    openRingSizer: () => {},\n    closeRingSizer: () => {}\n}\n\n/**\n * @returns {{\n *   isRingSizerOpen: boolean,\n *   isRingSizerEnabled: boolean,\n *   openRingSizer: Function,\n *   closeRingSizer: Function\n * }}\n */\nexport const useRingSizerContext = () => {\n    const context = useContext(RingSizerContext)\n    return context ?? SAFE_DEFAULTS\n}\n","export const TIME_DURATION = 1000\n\nexport const DEFAULT_AUTO_PLAY = {\n    disableOnInteraction: false,\n    delay: TIME_DURATION * 1000,\n    pauseOnMouseEnter: true\n}\n\nexport const INDICATOR_POSITION = {\n    TOP_LEFT: 'top-left',\n    TOP_RIGHT: 'top-right',\n    BOTTOM_LEFT: 'bottom-left'\n}\n\nexport const CAROUSEL_CLASS = {\n    CONTAINER: 'carousel-container',\n    HEADER: 'carousel-header',\n    BODY: 'carousel-body'\n}\n\nexport const THEME = {\n    DARK: 'dark',\n    LIGHT: 'light'\n}\n\nexport const BREAKPOINTS = {\n    BASE: 0,\n    MD: 768,\n    XL: 1440\n}\n\n// Pointer travel, in px, above which a press/release pair is treated as a drag\n// rather than a click.\nexport const DRAG_CLICK_THRESHOLD = 8\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Text,\n    List,\n    ListItem,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {InfoIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {useIntl} from 'react-intl'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {useNavigationCallback} from 'pandora-shared-app/overrides/app/hooks/use-navigation-callback'\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {CONTROLLER_PATH} from '../../_app/partials/constants'\n\nconst MemberPriceDrawerContent = ({formatMessage, onSignUpClick}) => {\n    const styles = useMultiStyleConfig('MemberPriceTooltip')\n\n    return (\n        <Box>\n            <Text sx={styles.drawerText}>\n                {formatMessage({\n                    id: 'product_tile.member_price.drawer_intro',\n                    defaultMessage: 'Some products will have discounted prices for members:'\n                })}\n            </Text>\n\n            <List sx={styles.drawerList}>\n                <ListItem>\n                    {formatMessage({\n                        id: 'product_tile.member_price.drawer_bullet_signup',\n                        defaultMessage:\n                            'Anyone can become a member by signing up with their e-mail address.'\n                    })}\n                </ListItem>\n                <ListItem>\n                    {formatMessage({\n                        id: 'product_tile.member_price.drawer_bullet_discounts',\n                        defaultMessage:\n                            'Some member discounts can be combined with other discounts or coupon codes'\n                    })}\n                </ListItem>\n            </List>\n\n            <Text\n                as=\"button\"\n                sx={styles.signUpLink}\n                onClick={onSignUpClick}\n                data-testid=\"member-price-drawer-signup-link\"\n            >\n                {formatMessage({\n                    id: 'product_tile.member_price.drawer_signup_link',\n                    defaultMessage: 'Sign up / Log in'\n                })}\n            </Text>\n        </Box>\n    )\n}\n\nMemberPriceDrawerContent.propTypes = {\n    formatMessage: PropTypes.func.isRequired,\n    onSignUpClick: PropTypes.func.isRequired\n}\n\nconst MemberPriceTooltip = () => {\n    const {formatMessage} = useIntl()\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const onSignUpClick = useNavigationCallback(CONTROLLER_PATH.ACCOUNT_SHOW)\n    const styles = useMultiStyleConfig('MemberPriceTooltip')\n    const {link} = useTealium()\n\n    return (\n        <Box data-testid=\"member-price-tooltip\" sx={styles.container}>\n            <Box\n                as=\"button\"\n                data-testid=\"member-price-tooltip-trigger\"\n                aria-label={formatMessage({\n                    id: 'product_tile.member_price.tooltip_label',\n                    defaultMessage: 'Member pricing information'\n                })}\n                sx={styles.triggerButton}\n                onClick={(e) => {\n                    e.stopPropagation()\n                    e.preventDefault()\n                    link({\n                        estore_event: 'member_pricing_clicked',\n                        login_status: 'not logged in',\n                        promotion_id: 'member_pricing'\n                    })\n                    setIsDrawerOpen(true)\n                }}\n            >\n                <InfoIcon boxSize=\"14px\" color=\"black3a\" />\n            </Box>\n            <FullDrawerSheet\n                isOpen={isDrawerOpen}\n                onClose={() => setIsDrawerOpen(false)}\n                headerText={formatMessage({\n                    id: 'product_tile.member_price.drawer_title',\n                    defaultMessage: 'What is Member Pricing?'\n                })}\n                bodyContent={\n                    <MemberPriceDrawerContent\n                        formatMessage={formatMessage}\n                        onSignUpClick={onSignUpClick}\n                    />\n                }\n                sheetType=\"member-pricing-info\"\n                virtualPagePath=\"/member-pricing-info\"\n            />\n        </Box>\n    )\n}\n\nexport default MemberPriceTooltip\n","const colors = {\n    transparent: 'transparent',\n    current: 'currentColor',\n    // Monochrome\n    black: '#000000',\n    white: '#FFFFFF',\n\n    // Grays\n    charcoalBlack: '#27251f',\n    ironsideLightGrey: '#71706c',\n    overlayGray: '#211710A6',\n    grayBorder: '#504c49',\n\n    // Off-Whites\n    offWhite: '#f5f5f5',\n\n    shadowBlack: 'rgba(33, 23, 16, 0.20)',\n\n    // GEMINI COLORS\n\n    // Pandora Pink\n    pandoraPink: '#FF93A0',\n    pandoraPink40: '#FFD4D9',\n    pandoraPurple: '#B95088',\n    pandoraRed: '#E4261B',\n    pandoraPromo: '#FF93A0',\n    pandoraPressed: '#E98792',\n    pandoraBlue: '#237CA6',\n    pandoraSplashBlue: '#227CA5',\n\n    // Pandora Black\n    black1: '#211710',\n    black2: '#4B4744',\n    black3a: '#757575',\n    black3b: '#828282',\n    black4: '#E6E6E6',\n    black5: '#F7F7F7',\n\n    // product Bubble border\n    blackBubbleBorder: '#2B2322',\n\n    // Messaging\n    red20: '#FFC7D3',\n    red60: '#F36D89',\n    red100: '#C91D41',\n    yellow20: '#FFECC7',\n    yellow40: '#F3C66D',\n    yellow100: '#8A6314',\n    green20: '#DEFF99',\n    green40: '#BFED5E',\n    green60: '#9EC846',\n    green100: '#52730D',\n    magenta60: '#F278B3',\n    magenta100: '#B95088',\n\n    // Membership,\n    loyaltySilver: '#E0E0E2',\n    loyaltyGold: '#F2DBB3',\n\n    // Notification\n    lightPink: '#FDF4F6',\n\n    // TODO: Clarify if these are needed (used for filters)\n    newColors: {\n        contentSubdued: '#726D6B',\n        lightGray: '#DBD8D7',\n        red: '#EA3223',\n        lightRed: '#f00f00',\n        pink: '#E94198',\n        purple: '#75197C',\n        turquoise: '#00D5C7',\n        yellow: '#FFFF00',\n        orange: '#FFA500',\n        brown: '#964B00',\n        beige: '#f5f5dc',\n        blue: '#1979ff',\n        lightBlue: '#c3dfe8',\n        green: '#00823a',\n        lightGreen: '#9abe76',\n        silver: '#bcc6cc',\n        champagne: '#f5eaca'\n    }\n}\n\nexport const semanticColors = {\n    brand: 'pandoraPink',\n    primaryColor: 'pandoraPink',\n    secondaryColor: 'black1',\n    linkColor: 'black1',\n    privacyPolicyColor: 'black3a',\n    subdued: 'black3a',\n    borderColor: 'black4',\n    bodyBg: 'white',\n    background: 'offWhite',\n    danger: 'red100',\n    warning: 'yellow100',\n    success: 'green100'\n}\n\nexport default colors\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_me_horizontal_white\",\n  \"use\": \"pandora_me_horizontal_white-usage\",\n  \"viewBox\": \"0 0 1350.05 212\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1350.05 212\\\" id=\\\"pandora_me_horizontal_white\\\"><defs></defs><path d=\\\"M1224.19 210.31h-37.46l.12-2.61c.13-3.14.37-7.44.71-13.14s.51-11.14.51-16.62V123.53l-29 86.78h-34.47l-29.89-85.7v53.33c0 5.55.11 11.17.31 16.68s.44 9.89.71 13l.24 2.72h-37.12l.18-2.67c.27-3.89.48-8.7.61-14.32.14-5.82.21-10.86.21-15.38V94.47c0-2.5 0-5.16-.1-7.91l-.41-15.64c-.07-2.33-.17-4.39-.3-6.12l-.21-2.69H1107l34.5 99 33.53-99h49.13l-.25 2.73c-.27 2.92-.5 7.1-.71 12.44s-.3 11.13-.3 17.19v83.47c0 5.53.1 11.14.3 16.68s.44 9.91.71 13Zm-32.23-5h26.8c-.19-2.81-.36-6.28-.51-10.51-.21-5.6-.31-11.27-.31-16.86V94.47c0-6.12.1-12 .31-17.38.15-4 .32-7.31.5-10h-40.09L1143.47 171h-3.77L1103.49 67.11h-39.34c.06 1.14.11 2.36.14 3.66l.41 15.66c.07 2.8.11 5.5.11 8v83.47c0 4.56-.07 9.63-.21 15.5-.11 4.47-.26 8.45-.45 11.87h26.35c-.19-2.8-.36-6.27-.52-10.51-.2-5.57-.31-11.25-.31-16.86v-70h4.48l34 97.38h27.32l33.14-99h4.5v71.64c0 5.58-.17 11.27-.51 16.92C1192.3 199.09 1192.1 202.54 1192 205.31ZM1349.08 210.31H1246.26l.11-2.61q.21-4.71.62-13.11c.27-5.53.41-11.13.41-16.65V94.47c0-6.09-.11-11.87-.31-17.19s-.44-9.48-.71-12.45l-.24-2.72h101.92l1 33.39-2.73-.17c-4.5-.27-9.1-.51-13.66-.71s-9.08-.3-13.4-.3h-36.77V119.8h27.36c4.63 0 9.28-.07 13.84-.21s9.1-.4 13.55-.81l2.73-.24v34.59l-2.79-.32c-3.45-.4-7-.67-10.44-.81s-7.08-.2-10.54-.2h-33.71v26.09h37.39c4.47 0 9.06-.06 13.63-.2s9.16-.4 13.76-.81l2.8-.25Zm-97.6-5h92.75l.67-23.22c-3.78.29-7.55.49-11.26.6-4.62.13-9.26.2-13.78.2h-41.81l-.35-2.08a17.84 17.84 0 0 1-.23-2.77V146.8h38.71c3.52 0 7.13.07 10.73.21 2.67.1 5.37.28 8 .54V124c-3.68.29-7.42.49-11.13.6-4.61.14-9.31.21-14 .21h-32.36V93.86a12.77 12.77 0 0 1 .25-2.53l.4-2h41.12c4.4 0 9 .1 13.62.31 3.67.16 7.37.34 11 .55l-.67-23.07h-91.62c.19 2.71.36 6 .51 10 .2 5.38.31 11.23.31 17.38v83.47c0 5.6-.14 11.28-.42 16.9Q1251.68 201.09 1251.48 205.31Z\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"640.02 36.81 644.25 36.81 644.47 36.6 640.87 0.21 640.66 0 639.6 0 639.39 0.21 635.58 36.6 635.79 36.81 640.02 36.81\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"660.54 39.14 660.76 38.93 666.89 6.35 666.68 6.14 665.62 5.92 665.41 6.14 651.87 37.03 652.08 37.24 660.54 39.14\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M654.2 53.11A5 5 0 1 0 649.12 48 5 5 0 0 0 654.2 53.11ZM640 51.63a5 5 0 1 0-5.08-5.08A5 5 0 0 0 640 51.63Z\\\" style=\\\"fill:#fff\\\" /><polygon points=\\\"619.5 39.14 627.96 37.24 628.17 37.03 614.63 6.14 614.42 5.92 613.36 6.14 613.15 6.35 619.29 38.93 619.5 39.14\\\" style=\\\"fill:#fff\\\" /><path d=\\\"M620.77 48a5 5 0 1 0 9.94 0 5 5 0 0 0-9.94 0ZM43.37 62.2H.21L0 62.42S1.06 72.78 1.06 90.77v91c0 18-1.06 28.35-1.06 28.35l.21.21H28.56l.21-.21s-1.05-10.37-1.05-28.35V155.09l.21-.21c3.81.42 12.48.84 15.44.84 29.2 0 54.17-17.77 54.17-47.81C97.54 78.71 72.36 62.2 43.37 62.2ZM42.1 131.39a108.7 108.7 0 0 1-14.38-1.06V86.54h16.5c14.6 0 26.24 5.92 26.24 21.37C70.46 122.93 60.3 131.39 42.1 131.39ZM178.52 74.27a82.35 82.35 0 0 1-4.23-11.85l-.21-.22H151l-.21.22a64.69 64.69 0 0 1-4 11.85L96.85 194.44a75.38 75.38 0 0 1-8.46 15.66v.21h29.2l.21-.21c0-.85.63-4.44 4.23-13.33l9.1-22.64h64.32l9.73 22.64c3.18 8.68 5.08 13.33 5.08 13.33l.21.21h29.2v-.21a111.74 111.74 0 0 1-8.46-15.66ZM141.07 149.8l21-52.26h.21l22.64 52.26ZM385.82 62.42l-.21-.22H359.8l-.21.22s1.05 10.36 1.05 28.35v74.48h-.21l-80-103H252.1l-.21.22c3.17 6.77 4.87 11.42 4.87 14.6V181.75c0 18-1.06 28.35-1.06 28.35l.21.21h25.81l.22-.21s-1.06-10.37-1.06-28.35v-76h.21l80.4 104.52h24.12l.21-.21s-1.06-10.37-1.06-28.35v-91C384.76 72.78 385.82 62.42 385.82 62.42ZM466.22 62.2H416.71l-.21.22s1.06 10.36 1.06 28.35v91c0 18-1.06 28.35-1.06 28.35l.21.21H432c10 0 21.15 1.27 33.85 1.27 45.49 0 77.65-32.16 77.65-75.11C543.45 93.1 511.92 62.2 466.22 62.2Zm-1.69 125.05c-7.19 0-13.75-.21-17.56-1.27-2.33-.63-2.75-1.48-2.75-5.5V86.33h19.67c31.95 0 52.48 21.58 52.48 50.35C516.37 165.25 495.84 187.25 464.53 187.25ZM640 60.09c-42.74 0-76 33-76 76 0 43.16 33.22 75.95 76 75.95 43.16 0 76-32.79 76-75.95C716 93.1 683.18 60.09 640 60.09Zm0 127.58c-27.5 0-48.87-22.42-48.87-51.62S612.52 84.42 640 84.42c27.72 0 49.09 22.43 49.09 51.63S667.74 187.67 640 187.67ZM821.57 160c-3.6-5.93-9.1-10.58-14.6-12.06v-.22c15.44-3.38 29.83-21.37 29.83-39.35C836.8 83.79 818 62.2 789 62.2H741.59l-.21.22s1.06 10.36 1.06 28.35v91c0 18-1.06 28.35-1.06 28.35l.21.21h28.35l.21-.21s-1-10.37-1-28.35V153.4c14.17 0 19.67 2.75 24.75 10.79l12.06 19.46c10 16.08 14.18 26.45 14.18 26.45l.21.21h33.85v-.21A253.81 253.81 0 0 1 836 183.65Zm-39.14-30.05c-3.39 0-9.31 0-13.33-.85V86.33h16.29c15.87 0 24.33 10.36 24.33 22.21C809.72 119.76 801 129.91 782.43 129.91ZM1011.57 194.44 958.88 74.27a82.35 82.35 0 0 1-4.23-11.85l-.21-.22H931.38l-.21.22a64.69 64.69 0 0 1-4 11.85L877.21 194.44a75.38 75.38 0 0 1-8.46 15.66v.21H898l.21-.21c0-.85.63-4.44 4.23-13.33l9.1-22.64h64.32l9.73 22.64c3.18 8.68 5.08 13.33 5.08 13.33l.21.21H1020v-.21A111.74 111.74 0 0 1 1011.57 194.44ZM921.43 149.8l21-52.26h.21l22.64 52.26Z\\\" style=\\\"fill:#fff\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import debounce from 'lodash/debounce'\nimport {PIXEL_CONSTANTS} from '../../constants'\n\nconst {EVENT, PAGETYPE} = PIXEL_CONSTANTS\n\nexport const getTracker = () => {\n    if (typeof window === 'undefined') return null\n    return window.BrTrk?.getTracker()\n}\n\n/**\n * Fields specific to each page type that should be cleared when switching to a different page type.\n * This prevents stale data from previous pages from being sent with the current page view.\n */\nconst PAGE_TYPE_SPECIFIC_FIELDS = {\n    [PAGETYPE.PRODUCT]: ['prod_id', 'prod_name', 'sku'],\n    [PAGETYPE.PRODUCT_CATEGORY]: ['cat', 'cat_id'],\n    [PAGETYPE.SEARCH_RESULT]: ['search_term'],\n    [PAGETYPE.CONVERSION]: ['is_conversion', 'basket_value', 'order_id', 'currency', 'basket']\n}\n\n/**\n * Clears page-type-specific fields from br_data that are not relevant to the new page type.\n * This prevents stale data (e.g., cat from PLP) from persisting when navigating to a different page (e.g., PDP).\n *\n * @param {Object} brData - The current window.br_data object\n * @param {string} newPtype - The ptype of the new page being loaded\n * @returns {Object} - A new br_data object with irrelevant fields cleared\n */\nconst clearIrrelevantPageFields = (brData, newPtype) => {\n    if (!brData || !newPtype) return brData\n\n    // Create a shallow copy to avoid mutating the original\n    const cleanedData = {...brData}\n\n    // Clear fields from all other page types that are not the current one\n    Object.entries(PAGE_TYPE_SPECIFIC_FIELDS).forEach(([pageType, fields]) => {\n        if (pageType !== newPtype) {\n            fields.forEach((field) => {\n                delete cleanedData[field]\n            })\n        }\n    })\n\n    return cleanedData\n}\n\n/**\n * Debounced page view logger\n */\nexport const logPageView = debounce(\n    (payload) => {\n        const tracker = getTracker()\n        if (!tracker) return\n\n        // Clear irrelevant page-type-specific fields before setting new data\n        // This prevents stale data (e.g., cat from PLP) from being sent with a different page type (e.g., PDP)\n        const cleanedBrData = clearIrrelevantPageFields(window.br_data, payload.ptype)\n        window.br_data = {...cleanedBrData, ...payload}\n        tracker.updateBrData(window.br_data)\n        tracker.logPageView()\n        window.__BR_PRIOR_REFERRER__ = window.location.href\n    },\n    1000,\n    {leading: false, trailing: true}\n)\n\n/**\n * Factory to create debounced logEvent calls\n *\n * @param {string} eventType - like 'suggest', 'click', etc.\n * @param {string} actionType - like 'submit', 'click_add', etc.\n * @param {number} delay - debounce delay in ms\n */\nconst createDebouncedLogEvent = (eventType, actionType, delay = 1000, ...trackerArgs) => {\n    return debounce(\n        (payload) => {\n            const tracker = getTracker()\n            if (!tracker) return\n\n            const finalPayload = {...window.br_data, ...payload}\n\n            tracker.logEvent(eventType, actionType, finalPayload, ...trackerArgs)\n        },\n        delay,\n        {leading: false, trailing: true}\n    )\n}\n\n// Debounced loggers using the factory\nexport const logAddToCartEvent = createDebouncedLogEvent(\n    EVENT.ADDTOCART.GROUP.CART,\n    EVENT.ADDTOCART.ACTION_TYPE.CLICK_ADD\n)\nexport const logSuggestSubmitEvent = createDebouncedLogEvent('suggest', 'submit', 1000, {}, true)\nexport const logSuggestClickEvent = createDebouncedLogEvent('suggest', 'click', 1000, {}, true)\n\n// Bloomreach recommendation-widget events. Debounced to prevent duplicate fires\n// during rapid scroll (view) or re-renders (click).\nexport const logWidgetViewEvent = createDebouncedLogEvent(\n    EVENT.WIDGETVIEW.GROUP.WIDGET,\n    EVENT.WIDGETVIEW.ACTION_TYPE.WIDGET_VIEW,\n    500\n)\nexport const logWidgetClickEvent = createDebouncedLogEvent(\n    EVENT.WIDGETCLICK.GROUP.WIDGET,\n    EVENT.WIDGETCLICK.ACTION_TYPE.WIDGET_CLICK,\n    300\n)\nexport const logWidgetAddEvent = createDebouncedLogEvent(\n    EVENT.WIDGETADD.GROUP.CART,\n    EVENT.WIDGETADD.ACTION_TYPE.WIDGET_ADD,\n    300\n)\n","export * from '@salesforce/retail-react-app/app/constants'\n\nexport const PromoVariants = {\n    NONE: 'None',\n    EARLY_ACCESS: 'Early Access', // Level 0\n    DEFAULT: 'Default', // Level 1\n    ADDED_MESSAGING: 'Added Messaging', // Level 2\n    MAXIMUM_ESCALATION: 'Maximum Escalation' // Level 3\n}\n\nexport const DataTypes = {\n    HOMEMETA: 'homemetatags'\n}\n\nexport const PARTIAL_HYDRATION_ENABLED = true\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"heart-unfilled\",\n  \"use\": \"heart-unfilled-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"heart-unfilled\\\">\\n<g id=\\\"heart-unfilled_Filled=False\\\">\\n<g id=\\\"heart-unfilled_Subtract\\\">\\n<path d=\\\"M10.9672 18.1308C10.8361 18.0299 10.7049 17.9292 10.5738 17.8285L10.9672 18.1308Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M10.8476 18.2193C10.8596 18.2104 10.8717 18.2016 10.8837 18.1927L10.9672 18.1308C10.9274 18.1604 10.8875 18.1899 10.8476 18.2193Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M9.93412 3.30605L10.0001 3.36398L10.0661 3.30605C12.3924 1.26339 14.7743 0.876473 16.6549 1.6399C18.6229 2.43882 19.9001 4.44758 19.9001 6.7536C19.9001 8.0982 19.2462 9.50647 18.3446 10.8237C17.4354 12.152 16.2323 13.448 15.0432 14.5798C14.2936 15.2932 13.5446 15.946 12.8704 16.5056L12.0786 15.8956C12.7809 15.3182 13.5753 14.6312 14.3688 13.8759C15.5326 12.7682 16.6824 11.5252 17.538 10.2752C18.401 9.0143 18.9236 7.8052 18.9236 6.7536C18.9236 4.79956 17.8478 3.17504 16.2865 2.54124C14.7469 1.91621 12.593 2.20386 10.3398 4.37889L10.0001 4.70676L9.66043 4.37889C7.40719 2.20387 5.25333 1.91628 3.71369 2.54137C2.15243 3.17523 1.07657 4.79983 1.07657 6.75388C1.07657 7.80547 1.59916 9.01456 2.46224 10.2755C3.31779 11.5254 4.46758 12.7684 5.6314 13.876C7.16811 15.3386 8.83906 16.6221 10.5121 17.9071L10.8012 18.1293C10.537 18.3238 10.2697 18.5133 10.0001 18.7016C8.22071 17.4568 6.52902 16.0761 4.95703 14.5799C3.76791 13.4482 2.56476 12.1522 1.6556 10.824C0.753986 9.50674 0.100098 8.09848 0.100098 6.75388C0.100098 4.44786 1.37732 2.43904 3.34532 1.64004C5.22588 0.876543 7.60778 1.2634 9.93412 3.30605Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {\n    DisneyPandoraIcon,\n    GotPandoraBlackIcon,\n    HpPandoraIcon,\n    MandalorianBlackIcon,\n    MarvelPandoraBlackIcon,\n    MyPandoraBlackIcon,\n    PandoraBridgertonBlackIcon,\n    PandoraDiamondsBlackIcon,\n    PandoraDiamondsBlackFrIcon,\n    PandoraMeHorizontalBlackIcon,\n    PandoraMeFestivalBlackIcon,\n    PixarBlackIcon,\n    StarWarsBlackIcon,\n    StarWarsCollectorsIcon,\n    PandoraUnicefBlackIcon,\n    PandoraUnicefBlackBlueIcon,\n    PandoraNetflixBlackIcon,\n    PandoraPatMcGrathBlackIcon\n} from 'pandora-shared-app/overrides/app/components/icons'\n\nexport const badgeMap = {\n    disney: DisneyPandoraIcon,\n    gameofthrones: GotPandoraBlackIcon,\n    harrypotter: HpPandoraIcon,\n    mandalorian: MandalorianBlackIcon,\n    marvel: MarvelPandoraBlackIcon,\n    mypandora: MyPandoraBlackIcon,\n    pandorabridgerton: PandoraBridgertonBlackIcon,\n    pandoradiamonds: PandoraDiamondsBlackIcon,\n    pandoradiamondsfrench: PandoraDiamondsBlackFrIcon,\n    pandorame: PandoraMeHorizontalBlackIcon,\n    pandoramefestival: PandoraMeFestivalBlackIcon,\n    pixar: PixarBlackIcon,\n    starwars: StarWarsBlackIcon,\n    starwarscollectorsedition: StarWarsCollectorsIcon,\n    pandoraforunicef: PandoraUnicefBlackIcon,\n    pandoraforunicefwithblue: PandoraUnicefBlackBlueIcon,\n    unicef: PandoraUnicefBlackIcon,\n    pandoranetflixlandscape: PandoraNetflixBlackIcon,\n    netflix: PandoraNetflixBlackIcon,\n    strangerthings: PandoraNetflixBlackIcon,\n    patmcgrath: PandoraPatMcGrathBlackIcon\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {badgeMap} from './constants'\n\nexport const Badger = ({badge}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const Badge = badgeMap[badge]\n\n    return Badge ? <Badge {...styles.collabBadge} data-auto=\"lblCollabChip\" /> : null\n}\n\nBadger.displayName = 'Badger'\nBadger.propTypes = {\n    badge: PropTypes.string\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useIntl} from 'react-intl'\n\nexport const ColorMessage = ({availableColors}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {formatMessage} = useIntl()\n\n    return (\n        <Text {...styles.label} itemProp=\"label\" data-auto=\"lblTileAvailableColors\">\n            {formatMessage(\n                {\n                    id: 'product_tile.label.available_colors',\n                    defaultMessage: 'Available in {colors} colors'\n                },\n                {\n                    colors: availableColors + 1\n                }\n            )}\n        </Text>\n    )\n}\n\nColorMessage.displayName = 'ColorMessage'\nColorMessage.propTypes = {\n    availableColors: PropTypes.number\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {HeartIcon, HeartSolidIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {\n    IconButton,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {useIntl} from 'react-intl'\n\nexport const Favourite = ({\n    handleFavouriteClick,\n    isInWishlist,\n    productId,\n    showBackground = false\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {formatMessage} = useIntl()\n\n    return (\n        <IconButton\n            __css={showBackground ? styles.favIconWithBackground : styles.favIcon}\n            aria-label={formatMessage({\n                id: 'product_tile.assistive_msg.wishlist',\n                defaultMessage: 'Wishlist'\n            })}\n            data-auto=\"bntAddToWishlistTile\"\n            icon={\n                isInWishlist ? (\n                    <HeartSolidIcon\n                        w={3.5}\n                        h={3.5}\n                        aria-label={formatMessage({\n                            id: 'product_tile.heart.icon.added_to_favorite.label',\n                            defaultMessage: 'Added to Favorites'\n                        })}\n                    />\n                ) : (\n                    <HeartIcon\n                        w={3.5}\n                        h={3.5}\n                        aria-label={formatMessage({\n                            id: 'product_tile.heart.icon.add_to_favorite.label',\n                            defaultMessage: 'Add to Favorites'\n                        })}\n                    />\n                )\n            }\n            onClick={(e) => handleFavouriteClick(e, productId)}\n        />\n    )\n}\n\nFavourite.displayName = 'Favourite'\nFavourite.propTypes = {\n    handleFavouriteClick: PropTypes.func,\n    isInWishlist: PropTypes.bool,\n    productId: PropTypes.string,\n    showBackground: PropTypes.bool\n}\n","import {isSetProductType, PRODUCT_TYPE_SET} from '../../../utils/product-type-utils'\n\n/**\n * FIND-5111: Sets must not expose the wishlist affordance at all — adding one\n * creates a wishlist row with a null price. The heart is omitted from the DOM\n * rather than visually hidden.\n *\n * With the kill switch off this is the legacy `hitType === 'set'` comparison,\n * unchanged. Only when it is on do the type shapes the tile data paths actually\n * deliver — a DOL array (`['set']`) and the raw SFCC `productType` object of the\n * carousel/recommendation payloads, whose `hitType` never carried the Set — count.\n *\n * @param {Object} args\n * @param {boolean} args.enableFavourite - Whether wishlist is enabled for this surface\n * @param {string|string[]|Object|undefined} args.hitType - Normalised product type of the tile\n * @param {string|string[]|Object|undefined} [args.productType] - Raw product type of the tile\n * @param {boolean} [args.enableGlobalExcludeSetsFromWishlist] - Kill switch\n * @returns {boolean} True when the Favourite (heart) affordance should be rendered\n */\nexport const shouldRenderFavourite = ({\n    enableFavourite,\n    hitType,\n    productType,\n    enableGlobalExcludeSetsFromWishlist = false\n}) => {\n    const isSetTile = enableGlobalExcludeSetsFromWishlist\n        ? isSetProductType(hitType) || isSetProductType(productType)\n        : hitType === PRODUCT_TYPE_SET\n\n    return Boolean(enableFavourite) && !isSetTile\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    AspectRatio,\n    Box,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport DynamicImage from '@salesforce/retail-react-app/app/components/dynamic-image'\nimport {Favourite} from './favourite'\nimport {Badger} from './badger'\nimport {PRODUCT_TILE_IMAGE_WIDTHS} from '../../../constants'\nimport {shouldRenderFavourite} from '../helpers/favourite-visibility'\n\nexport const ImageTile = ({\n    imageSrc,\n    dynamicImageProps,\n    imageAlt,\n    hitType,\n    productType,\n    enableFavourite,\n    isInWishlist,\n    handleFavouriteClick,\n    collabBadge,\n    productId,\n    flags = {}\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {enableGlobalExcludeSetsFromWishlist} = flags\n\n    const renderImage = () => (\n        <AspectRatio {...styles.image}>\n            <DynamicImage\n                data-auto=\"imgPLPProductImage\"\n                src={imageSrc}\n                widths={PRODUCT_TILE_IMAGE_WIDTHS}\n                imageProps={{\n                    alt: imageAlt,\n                    loading: 'lazy',\n                    itemProp: 'image',\n                    ...dynamicImageProps?.imageProps\n                }}\n            />\n        </AspectRatio>\n    )\n\n    return (\n        <Box {...styles.imageWrapper}>\n            {imageSrc && renderImage()}\n\n            {/* Favourite component rendered only when enabled and not a Set */}\n            {shouldRenderFavourite({\n                enableFavourite,\n                hitType,\n                productType,\n                enableGlobalExcludeSetsFromWishlist\n            }) && (\n                <Favourite\n                    handleFavouriteClick={handleFavouriteClick}\n                    isInWishlist={isInWishlist}\n                    productId={productId}\n                />\n            )}\n\n            {/* Badge component rendered only when available */}\n            {collabBadge && <Badger badge={collabBadge} />}\n        </Box>\n    )\n}\n\nImageTile.displayName = 'ImageTile'\nImageTile.propTypes = {\n    imageSrc: PropTypes.string,\n    dynamicImageProps: PropTypes.shape({\n        imageProps: PropTypes.string\n    }),\n    imageAlt: PropTypes.string,\n    hitType: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.arrayOf(PropTypes.string),\n        PropTypes.object\n    ]),\n    productType: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.arrayOf(PropTypes.string),\n        PropTypes.object\n    ]),\n    enableFavourite: PropTypes.bool,\n    isInWishlist: PropTypes.bool,\n    handleFavouriteClick: PropTypes.func,\n    collabBadge: PropTypes.object,\n    index: PropTypes.number,\n    productId: PropTypes.string,\n    flags: PropTypes.object\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    AspectRatio,\n    Flex,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport DynamicImage from '@salesforce/retail-react-app/app/components/dynamic-image'\nimport {PRODUCT_TILE_IMAGE_WIDTHS} from '../../../constants'\n\nexport const ImageTileDesktop = ({\n    imageSrc,\n    dynamicImageProps,\n    imageAlt,\n    index,\n    secondaryImageSrc,\n    secondaryImageAlt,\n    isHovered,\n    isShopTheLook = false,\n    flags = {}\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n\n    // Performance optimization: Eager load first 4 products, lazy load rest\n    const shouldEagerLoad = isShopTheLook || index < 4\n    const imageLoading = shouldEagerLoad ? 'eager' : 'lazy'\n\n    // Client-side: Render images with native lazy loading\n    const renderDynamicImage = (src, alt, opacity, transform) => (\n        <DynamicImage\n            {...styles.imageTileDesktop}\n            sx={{\n                opacity,\n                transform,\n                transition:\n                    'opacity 300ms cubic-bezier(0.30, 0.00, 0.70, 1.00), transform 500ms cubic-bezier(0.30, 0.00, 0.10, 1.00)'\n            }}\n            data-auto=\"imgPLPProductImage\"\n            src={src}\n            widths={PRODUCT_TILE_IMAGE_WIDTHS}\n            imageProps={{\n                alt,\n                loading: imageLoading,\n                itemProp: 'image',\n                ...dynamicImageProps?.imageProps\n            }}\n        />\n    )\n\n    return (\n        <AspectRatio {...styles.image}>\n            <Flex {...styles.imageTileContainer}>\n                {renderDynamicImage(imageSrc, imageAlt, 1, 'scale(1)')}\n\n                {secondaryImageSrc &&\n                    renderDynamicImage(\n                        secondaryImageSrc,\n                        secondaryImageAlt,\n                        isHovered ? 1 : 0,\n                        isHovered ? 'scale(1.00)' : 'scale(1.05)'\n                    )}\n            </Flex>\n        </AspectRatio>\n    )\n}\n\nImageTileDesktop.displayName = 'ImageTileDesktop'\nImageTileDesktop.propTypes = {\n    imageSrc: PropTypes.string,\n    dynamicImageProps: PropTypes.shape({\n        imageProps: PropTypes.object\n    }),\n    imageAlt: PropTypes.string,\n    index: PropTypes.number,\n    secondaryImageSrc: PropTypes.string,\n    secondaryImageAlt: PropTypes.string,\n    isHovered: PropTypes.bool,\n    isShopTheLook: PropTypes.bool,\n    // Hoisted feature flags from useProductTileFlags (via ImageTileCarousel)\n    flags: PropTypes.object.isRequired\n}\n","import React from 'react'\nimport {Box, useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\n\nexport const CarouselStepIndicator = ({steps, currentStep = 0, config = {}}) => {\n    const styles = useMultiStyleConfig('CarouselStepIndicator')\n\n    const {\n        float = false,\n        bottom = '8px',\n        left = '8px',\n        gap = '4px',\n        activeColor = '#211710',\n        inactiveColor = 'black3a',\n        activeWidth = '32px',\n        inactiveWidth = '8px'\n    } = config\n\n    return (\n        <Box\n            __css={{\n                ...styles.carouselWrapper,\n                ...(float && {\n                    position: 'absolute',\n                    bottom,\n                    left\n                }),\n                gap\n            }}\n            data-testid=\"carousel-wrapper\"\n            data-auto=\"divCarouselWrapper\"\n        >\n            {steps.map((step, index) => (\n                <Box\n                    key={step.id || step.name || index}\n                    __css={{\n                        ...(index === currentStep\n                            ? {\n                                  ...styles.activeStep,\n                                  backgroundColor: activeColor,\n                                  width: activeWidth\n                              }\n                            : {\n                                  ...styles.inactiveStep,\n                                  backgroundColor: inactiveColor,\n                                  width: inactiveWidth\n                              })\n                    }}\n                    data-testid={`carousel-step-${index}`}\n                    data-auto=\"divCarouselStep\"\n                />\n            ))}\n        </Box>\n    )\n}\n\nCarouselStepIndicator.propTypes = {\n    steps: PropTypes.arrayOf(\n        PropTypes.shape({\n            id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n            name: PropTypes.string\n        })\n    ).isRequired,\n    currentStep: PropTypes.number,\n    config: PropTypes.shape({\n        float: PropTypes.bool,\n        bottom: PropTypes.string,\n        left: PropTypes.string,\n        gap: PropTypes.string,\n        activeColor: PropTypes.string,\n        inactiveColor: PropTypes.string,\n        activeWidth: PropTypes.string,\n        inactiveWidth: PropTypes.string\n    })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport DynamicImage from '@salesforce/retail-react-app/app/components/dynamic-image'\nimport {\n    Flex,\n    Box,\n    AspectRatio,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {PRODUCT_TILE_IMAGE_WIDTHS} from '../../../constants'\nimport {CarouselStepIndicator} from '../../carousel-step-indicator'\n\nexport const ImageTileMobile = ({\n    imageSrc,\n    dynamicImageProps,\n    imageAlt,\n    secondaryImageSrc,\n    secondaryImageAlt,\n    index,\n    currentImage,\n    setCurrentImage,\n    startXRef,\n    isShopTheLook = false,\n    flags = {}\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n\n    // Performance optimization: Eager load first 4 products, lazy load rest\n    const shouldEagerLoad = isShopTheLook || index < 4\n    const imageLoading = shouldEagerLoad ? 'eager' : 'lazy'\n\n    const handleTouchStart = (e) => {\n        startXRef.current = e.touches[0].clientX\n    }\n\n    const handleTouchMove = (e) => {\n        if (!startXRef.current) return\n\n        const deltaX = e.touches[0].clientX - startXRef.current\n\n        if (Math.abs(deltaX) > 50) {\n            if (deltaX > 0) {\n                setCurrentImage(0)\n            } else if (secondaryImageSrc) {\n                setCurrentImage(1)\n            }\n            startXRef.current = null\n        }\n    }\n\n    // Client-side: Render images with native lazy loading\n    const renderDynamicImage = (src, alt) => (\n        <AspectRatio {...styles.image}>\n            <DynamicImage\n                sx={{width: '100%'}}\n                data-auto=\"imgPLPProductImage\"\n                src={src}\n                widths={PRODUCT_TILE_IMAGE_WIDTHS}\n                imageProps={{\n                    alt,\n                    loading: imageLoading,\n                    itemProp: 'image',\n                    ...dynamicImageProps?.imageProps\n                }}\n            />\n        </AspectRatio>\n    )\n\n    return (\n        <Box\n            {...styles.imageTileMobileContainer}\n            onTouchStart={handleTouchStart}\n            onTouchMove={handleTouchMove}\n        >\n            <Flex\n                {...styles.imageTileMobileWrapper}\n                width={secondaryImageSrc ? '200%' : '100%'}\n                transform={`translateX(-${currentImage * (secondaryImageSrc ? 50 : 0)}%)`}\n            >\n                <Box width=\"100%\">{renderDynamicImage(imageSrc, imageAlt)}</Box>\n                {secondaryImageSrc && (\n                    <Box width=\"100%\">\n                        {renderDynamicImage(secondaryImageSrc, secondaryImageAlt)}\n                    </Box>\n                )}\n            </Flex>\n            {secondaryImageSrc && (\n                <CarouselStepIndicator\n                    steps={[{id: 'image1'}, {id: 'image2'}]}\n                    currentStep={currentImage}\n                    config={{float: true}}\n                />\n            )}\n        </Box>\n    )\n}\n\nImageTileMobile.displayName = 'ImageTileMobile'\nImageTileMobile.propTypes = {\n    imageSrc: PropTypes.string.isRequired,\n    dynamicImageProps: PropTypes.shape({\n        imageProps: PropTypes.object\n    }),\n    imageAlt: PropTypes.string.isRequired,\n    secondaryImageSrc: PropTypes.string,\n    secondaryImageAlt: PropTypes.string,\n    index: PropTypes.number.isRequired,\n    currentImage: PropTypes.number,\n    setCurrentImage: PropTypes.func,\n    startXRef: PropTypes.shape({current: PropTypes.any}),\n    isShopTheLook: PropTypes.bool,\n    // Hoisted feature flags from useProductTileFlags (via ImageTileCarousel)\n    flags: PropTypes.object.isRequired\n}\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Favourite} from './favourite'\nimport {Badger} from './badger'\nimport {ImageTileDesktop} from './image-tile-desktop'\nimport {ImageTileMobile} from './image-tile-mobile'\nimport {shouldRenderFavourite} from '../helpers/favourite-visibility'\n\nexport const ImageTileCarousel = ({\n    imageSrc,\n    dynamicImageProps,\n    imageAlt,\n    hitType,\n    productType,\n    enableFavourite,\n    isInWishlist,\n    handleFavouriteClick,\n    collabBadge,\n    index,\n    productId,\n    secondaryImageSrc,\n    secondaryImageAlt,\n    isHovered,\n    handleMouseEnter,\n    handleMouseLeave,\n    currentImage,\n    setCurrentImage,\n    startXRef,\n    isShopTheLook = false,\n    flags = {}\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {enableGlobalExcludeSetsFromWishlist} = flags\n\n    // SCROLL RESTORATION FIX: Mobile-first approach\n    // Default to mobile (true) on SSR, then check actual viewport on client\n    // This prevents layout shifts on mobile devices\n    const [isMobile, setIsMobile] = useState(true)\n\n    useEffect(() => {\n        // Only run on client\n        const checkMobile = () => {\n            setIsMobile(window.innerWidth < 768) // md breakpoint\n        }\n\n        checkMobile()\n        window.addEventListener('resize', checkMobile)\n        return () => window.removeEventListener('resize', checkMobile)\n    }, [])\n\n    const imageTileProps = {\n        imageSrc,\n        dynamicImageProps,\n        imageAlt,\n        index,\n        secondaryImageSrc,\n        secondaryImageAlt,\n        isHovered,\n        isShopTheLook,\n        flags\n    }\n\n    const imageTileMobileProps = {\n        currentImage,\n        setCurrentImage,\n        startXRef,\n        isShopTheLook\n    }\n\n    return (\n        <Box\n            {...styles.imageWrapper}\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n            data-auto=\"imgCarouselWrapper\"\n        >\n            {isMobile ? (\n                <ImageTileMobile {...imageTileProps} {...imageTileMobileProps} />\n            ) : (\n                <ImageTileDesktop {...imageTileProps} />\n            )}\n\n            {shouldRenderFavourite({\n                enableFavourite,\n                hitType,\n                productType,\n                enableGlobalExcludeSetsFromWishlist\n            }) && (\n                <Favourite\n                    handleFavouriteClick={handleFavouriteClick}\n                    isInWishlist={isInWishlist}\n                    productId={productId}\n                    showBackground={currentImage === 1 || isHovered}\n                />\n            )}\n\n            {collabBadge && <Badger badge={collabBadge} />}\n        </Box>\n    )\n}\n\nImageTileCarousel.displayName = 'ImageTileCarousel'\n\nImageTileCarousel.propTypes = {\n    imageSrc: PropTypes.string.isRequired,\n    dynamicImageProps: PropTypes.shape({\n        imageProps: PropTypes.object\n    }),\n    imageAlt: PropTypes.string.isRequired,\n    hitType: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.arrayOf(PropTypes.string),\n        PropTypes.object\n    ]),\n    productType: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.arrayOf(PropTypes.string),\n        PropTypes.object\n    ]),\n    enableFavourite: PropTypes.bool,\n    isInWishlist: PropTypes.bool,\n    handleFavouriteClick: PropTypes.func,\n    collabBadge: PropTypes.object,\n    index: PropTypes.number.isRequired,\n    productId: PropTypes.string.isRequired,\n    secondaryImageSrc: PropTypes.string,\n    secondaryImageAlt: PropTypes.string,\n    isHovered: PropTypes.bool,\n    handleMouseEnter: PropTypes.func,\n    handleMouseLeave: PropTypes.func,\n    currentImage: PropTypes.number,\n    setCurrentImage: PropTypes.func,\n    startXRef: PropTypes.shape({current: PropTypes.any}),\n    isShopTheLook: PropTypes.bool,\n    // Hoisted feature flags forwarded to ImageTileMobile/ImageTileDesktop\n    flags: PropTypes.object.isRequired\n}\n","import React, {useCallback, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    HStack,\n    Stack,\n    Skeleton,\n    Text,\n    Box,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\nimport {InfoIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useIntl} from 'react-intl'\nimport MemberPriceTooltip from './member-price-tooltip'\nimport {usePdpStaticContent} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content'\nimport {formatCurrencyDisplay} from 'pandora-shared-app/overrides/app/utils/price'\n\n// eslint-disable-next-line react/prop-types\nconst EuPricingContent = ({contentAssetId, setDrawerTitle}) => {\n    const {Component: PdpStaticContent, drawerTitle} = usePdpStaticContent({\n        assetKeys: [contentAssetId]\n    })\n\n    setDrawerTitle(drawerTitle)\n\n    return <PdpStaticContent />\n}\n\nexport const Price = ({\n    currency,\n    price,\n    minPrice,\n    maxPrice,\n    originalPrice,\n    originalMinPrice,\n    outOfBundlePrice,\n    lowestPrice,\n    discountPercentage,\n    netPriceValue,\n    netPriceMsg,\n    showLowestPrice = false,\n    isLoading = false,\n    isOutOfStockOnline = false,\n    isSoldOut = false,\n    isEUPricingEnabled = false,\n    memberPrice,\n    showMemberPrice = false,\n    flags = {},\n    ...rest\n}) => {\n    const styles = useMultiStyleConfig('ProductTile')\n    const {formatNumber, formatMessage} = useIntl()\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const [drawerTitle, setDrawerTitle] = useState(null)\n    const {locale} = useMultiSite()\n    const lowestPricePercentage = lowestPrice?.percentage?.lowest\n    const originalPercentage = lowestPrice?.percentage?.original\n    const {\n        enableOmnibusPercentageDisplay,\n        enableOriginalPercentageDisplayWithOmnibus,\n        enablePdpPricingAndMemberDisplay,\n        enableLocalizedCurrencyLabel\n    } = flags\n\n    const handleDrawerClose = () => {\n        setIsDrawerOpen(false)\n    }\n\n    const formatPrice = useCallback(\n        (price) => {\n            const formatted = enableLocalizedCurrencyLabel\n                ? formatCurrencyDisplay(formatNumber, price, currency, {\n                      decimalLocale: 'en-US', // Set the en-US locale for the dot (.) as the decimal separator.\n                      labelLocale: locale?.id\n                  })\n                : formatNumber(price, {\n                      style: 'currency',\n                      currency: currency,\n                      minimumFractionDigits: 2,\n                      maximumFractionDigits: 2,\n                      locale: 'en-US' // Set the en-US locale for the dot (.) as the decimal separator.\n                  })\n\n            // Replace non-breaking space (NBSP) with regular space to prevent overflow issues\n            return formatted.replace(/\\u00A0/g, ' ')\n        },\n        [formatNumber, currency, enableLocalizedCurrencyLabel, locale?.id]\n    )\n\n    const isPriceRange = Boolean(minPrice)\n    const isRangePromo = isPriceRange && Boolean(originalMinPrice)\n    const isOnSale = originalPrice > price\n    const showLowestPriceMessage = locale?.id == 'pl-PL'\n\n    return (\n        <Stack {...styles.price} {...rest} gap={0}>\n            <Skeleton isLoaded={!isLoading}>\n                {isSoldOut && (\n                    <>\n                        <Text color=\"black3a\">\n                            {formatMessage({\n                                id: 'product_tile.label.sold_out',\n                                defaultMessage: 'Sold out'\n                            })}\n                        </Text>\n                        {Boolean(price) && (\n                            <HStack gap={1}>\n                                <Text as=\"span\">{formatPrice(price)}</Text>\n                                {originalPrice && (\n                                    <Text as=\"span\" textDecoration=\"line-through\">\n                                        {formatPrice(originalPrice)}\n                                    </Text>\n                                )}\n                            </HStack>\n                        )}\n                    </>\n                )}\n                {!isSoldOut && isPriceRange && !isRangePromo && (\n                    <Text>\n                        <Text as=\"span\">\n                            {formatMessage(\n                                {\n                                    id: 'product_tile.label.price_from',\n                                    defaultMessage: 'From {minPrice}'\n                                },\n                                {\n                                    minPrice: formatPrice(minPrice)\n                                }\n                            )}\n                        </Text>\n                        {Boolean(maxPrice) && (\n                            <Text as=\"span\">\n                                {' '}\n                                {formatMessage(\n                                    {\n                                        id: 'product_tile.label.price_to',\n                                        defaultMessage: ' to {maxPrice}'\n                                    },\n                                    {\n                                        maxPrice: formatPrice(maxPrice)\n                                    }\n                                )}\n                            </Text>\n                        )}\n                    </Text>\n                )}\n                {!isSoldOut && isRangePromo && (\n                    <>\n                        <Text color=\"pandoraPurple\">\n                            <Text as=\"span\" data-auto=\"lblPromotionPrice\">\n                                {formatMessage(\n                                    {\n                                        id: 'product_tile.label.price_from',\n                                        defaultMessage: 'From {minPrice}'\n                                    },\n                                    {\n                                        minPrice: formatPrice(minPrice)\n                                    }\n                                )}\n                            </Text>\n                        </Text>\n                        <HStack gap={1}>\n                            <Text\n                                as=\"span\"\n                                textDecoration=\"line-through\"\n                                data-auto=\"lblStrikeThroughPrice\"\n                            >\n                                {formatMessage(\n                                    {\n                                        id: 'product_tile.label.price_from',\n                                        defaultMessage: 'From {minPrice}'\n                                    },\n                                    {\n                                        minPrice: formatPrice(originalMinPrice)\n                                    }\n                                )}\n                            </Text>\n                            {Boolean(discountPercentage) && (\n                                <Text\n                                    as=\"span\"\n                                    color=\"pandoraPurple\"\n                                    ml={1}\n                                    data-auto=\"lblDiscountMessage\"\n                                >\n                                    {formatMessage(\n                                        {\n                                            id: 'product_tile.label.off',\n                                            defaultMessage: ' Save {discountPercentage}%'\n                                        },\n                                        {discountPercentage}\n                                    )}\n                                </Text>\n                            )}\n                        </HStack>\n                    </>\n                )}\n                {!isSoldOut && !isPriceRange && (\n                    <>\n                        {isOnSale && (\n                            <Text color=\"pandoraPurple\" data-auto=\"lblPromotionPrice\">\n                                {formatPrice(price)}\n                            </Text>\n                        )}\n                        {showLowestPrice ? (\n                            <Text as=\"span\" color=\"black3a\">\n                                {showLowestPriceMessage && (\n                                    <Text as=\"span\" mr={1} data-auto=\"lblDiscountMessage\">\n                                        {formatMessage({\n                                            id: 'product_tile.lowestPrice.message',\n                                            defaultMessage:\n                                                'Lowest price from 30 days before the discount'\n                                        })}\n                                    </Text>\n                                )}\n                                <Text\n                                    color=\"charcoalBlack\"\n                                    as=\"span\"\n                                    {...(isOnSale && {textDecoration: 'line-through'})}\n                                    data-auto=\"lblStrikeThroughLowestPrice\"\n                                >\n                                    {formatPrice(lowestPrice.value)}\n                                </Text>\n                                {Boolean(lowestPricePercentage) &&\n                                    enableOmnibusPercentageDisplay && (\n                                        <Text\n                                            as=\"span\"\n                                            ml={1}\n                                            color=\"pandoraPurple\"\n                                            data-auto=\"lblDiscountMessage\"\n                                        >\n                                            {formatMessage(\n                                                {\n                                                    id: 'product_tile.lowestPrice.off',\n                                                    defaultMessage: ' Save {lowestPricePercentage}'\n                                                },\n                                                {lowestPricePercentage}\n                                            )}\n                                        </Text>\n                                    )}\n                                <Text data-auto=\"originalPriceWrapper\">\n                                    <Text as=\"span\" data-auto=\"originalPriceLabel\">\n                                        {formatMessage({\n                                            id: 'product_tile.label.originalPrice',\n                                            defaultMessage: 'Original price'\n                                        })}\n                                    </Text>\n                                    <Text\n                                        ml={1}\n                                        as=\"span\"\n                                        data-auto=\"originalPriceValue\"\n                                        {...(isOnSale && {textDecoration: 'line-through'})}\n                                    >\n                                        {`${formatPrice(originalPrice || price)}`}\n                                    </Text>\n                                    {isEUPricingEnabled && (\n                                        <>\n                                            <FullDrawerSheet\n                                                isOpen={isDrawerOpen}\n                                                onClose={handleDrawerClose}\n                                                headerText={drawerTitle}\n                                                bodyContent={\n                                                    <EuPricingContent\n                                                        contentAssetId=\"eu-pricing-info\"\n                                                        setDrawerTitle={setDrawerTitle}\n                                                    />\n                                                }\n                                            />\n                                            <Box\n                                                onClick={() => setIsDrawerOpen(true)}\n                                                display={'inline'}\n                                            >\n                                                <InfoIcon\n                                                    boxSize={'4'}\n                                                    ml={2}\n                                                    mb={'2px'}\n                                                    data-auto={'euPricingIcon'}\n                                                    data-testid={'euPricingIcon'}\n                                                />\n                                            </Box>\n                                        </>\n                                    )}\n                                    {enableOriginalPercentageDisplayWithOmnibus &&\n                                        Boolean(originalPercentage) && (\n                                            <Text\n                                                as=\"span\"\n                                                ml={1}\n                                                color=\"pandoraPurple\"\n                                                data-auto=\"lblOriginalPercentage\"\n                                            >\n                                                {formatMessage(\n                                                    {\n                                                        id: 'product_tile.lowestPrice.off',\n                                                        defaultMessage:\n                                                            ' Save {lowestPricePercentage}'\n                                                    },\n                                                    {lowestPricePercentage: originalPercentage}\n                                                )}\n                                            </Text>\n                                        )}\n                                    {!enableOriginalPercentageDisplayWithOmnibus &&\n                                        Boolean(lowestPricePercentage) &&\n                                        showLowestPriceMessage && (\n                                            <Text\n                                                as=\"span\"\n                                                ml={1}\n                                                color=\"pandoraPurple\"\n                                                data-auto=\"lblOriginalPercentage\"\n                                            >\n                                                {formatMessage(\n                                                    {\n                                                        id: 'product_tile.lowestPrice.off',\n                                                        defaultMessage:\n                                                            ' Save {lowestPricePercentage}'\n                                                    },\n                                                    {lowestPricePercentage: originalPercentage}\n                                                )}\n                                            </Text>\n                                        )}\n                                </Text>\n                            </Text>\n                        ) : (\n                            <Text as=\"span\">\n                                {isOnSale && showLowestPriceMessage && (\n                                    <Text as=\"span\" mr={1} data-auto=\"lblDiscountMessage\">\n                                        {formatMessage({\n                                            id: 'product_tile.lowestPrice.message',\n                                            defaultMessage:\n                                                'Lowest price from 30 days before the discount'\n                                        })}\n                                    </Text>\n                                )}\n                                <Text\n                                    as=\"span\"\n                                    {...(isOnSale && {textDecoration: 'line-through'})}\n                                    data-auto={\n                                        isOnSale ? 'lblStrikeThroughPrice' : 'lblRegularPrice'\n                                    }\n                                >\n                                    {formatPrice(originalPrice || price)}\n                                </Text>\n                                {Boolean(discountPercentage) && (\n                                    <Text\n                                        as=\"span\"\n                                        color=\"pandoraPurple\"\n                                        ml={1}\n                                        data-auto=\"lblDiscountMessage\"\n                                    >\n                                        {discountPercentage.toString().includes('%')\n                                            ? formatMessage(\n                                                  {\n                                                      id: 'product_detail.tile.label.off',\n                                                      defaultMessage: ' Save {discountPercentage}'\n                                                  },\n                                                  {discountPercentage}\n                                              )\n                                            : formatMessage(\n                                                  {\n                                                      id: 'product_tile.label.off',\n                                                      defaultMessage: ' Save {discountPercentage}%'\n                                                  },\n                                                  {discountPercentage}\n                                              )}\n                                    </Text>\n                                )}\n                            </Text>\n                        )}\n\n                        {outOfBundlePrice && (\n                            <Text>\n                                {formatMessage(\n                                    {\n                                        id: 'product_tile.label.out_of_bundle_price',\n                                        defaultMessage: 'Separately {outOfBundlePrice}'\n                                    },\n                                    {\n                                        outOfBundlePrice: formatPrice(outOfBundlePrice)\n                                    }\n                                )}\n                            </Text>\n                        )}\n                        {isOutOfStockOnline && (\n                            <Text>\n                                {formatMessage({\n                                    id: 'product_tile.label.available_in_select_stores',\n                                    defaultMessage: 'Available in selected stores'\n                                })}\n                            </Text>\n                        )}\n                    </>\n                )}\n                {showMemberPrice && memberPrice?.type === 'default' && (\n                    <HStack gap=\"6px\" data-testid=\"member-price-section\">\n                        <Text color=\"black3a\" {...styles.price}>\n                            {formatPrice(\n                                enablePdpPricingAndMemberDisplay\n                                    ? memberPrice.value ?? memberPrice.default?.value\n                                    : memberPrice.value\n                            )}\n                        </Text>\n                        <HStack gap=\"6px\" alignItems=\"center\">\n                            <Text color=\"black3a\" {...styles.price}>\n                                {formatMessage({\n                                    id: 'product_tile.label.member',\n                                    defaultMessage: 'Member'\n                                })}\n                            </Text>\n                            <MemberPriceTooltip />\n                        </HStack>\n                    </HStack>\n                )}\n                {showMemberPrice && memberPrice?.type === 'range' && (\n                    <HStack gap=\"6px\" data-testid=\"member-price-section\">\n                        <Text color=\"black3a\" {...styles.price}>\n                            {formatMessage(\n                                {\n                                    id: 'product_tile.label.price_from',\n                                    defaultMessage: 'From {minPrice}'\n                                },\n                                {\n                                    minPrice: formatPrice(memberPrice.min?.value)\n                                }\n                            )}\n                        </Text>\n                        <HStack gap=\"6px\" alignItems=\"center\">\n                            <Text color=\"black3a\" {...styles.price}>\n                                {formatMessage({\n                                    id: 'product_tile.label.member',\n                                    defaultMessage: 'Member'\n                                })}\n                            </Text>\n                            <MemberPriceTooltip />\n                        </HStack>\n                    </HStack>\n                )}\n                {netPriceMsg && (\n                    <HStack>\n                        <Text\n                            data-auto=\"priceExcludingNationalTaxesLabel\"\n                            textStyle=\"caption\"\n                            color=\"black3a\"\n                        >\n                            {netPriceMsg}\n                            {netPriceValue && (\n                                <Text as=\"span\" data-auto=\"priceExcludingNationalTaxesValue\">\n                                    &nbsp;{netPriceValue}\n                                </Text>\n                            )}\n                        </Text>\n                    </HStack>\n                )}\n            </Skeleton>\n        </Stack>\n    )\n}\n\nPrice.displayName = 'Price'\nPrice.propTypes = {\n    currency: PropTypes.string.isRequired,\n    price: PropTypes.number.isRequired,\n    minPrice: PropTypes.number,\n    maxPrice: PropTypes.number,\n    originalPrice: PropTypes.number,\n    originalMinPrice: PropTypes.number,\n    outOfBundlePrice: PropTypes.number,\n    discountPercentage: PropTypes.number,\n    isLoading: PropTypes.bool,\n    isOutOfStockOnline: PropTypes.bool,\n    isSoldOut: PropTypes.bool,\n    showLowestPrice: PropTypes.bool,\n    lowestPrice: PropTypes.any,\n    isEUPricingEnabled: PropTypes.bool,\n    netPriceMsg: PropTypes.string,\n    netPriceValue: PropTypes.string,\n    memberPrice: PropTypes.shape({\n        type: PropTypes.string,\n        value: PropTypes.number,\n        default: PropTypes.shape({value: PropTypes.number}),\n        min: PropTypes.shape({value: PropTypes.number}),\n        max: PropTypes.shape({value: PropTypes.number}),\n        currency: PropTypes.string,\n        promotionId: PropTypes.string\n    }),\n    showMemberPrice: PropTypes.bool,\n    // Hoisted feature flags from useProductTileFlags — every Price consumer\n    // must pass them; Price never reads LaunchDarkly flags itself.\n    flags: PropTypes.object.isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Button,\n    Center,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {METAL_FILTERS} from '../constants'\n\nexport const SwatchButton = ({isSelected = false, metalGroupId = '', ...rest}) => {\n    const {swatch: swatchStyles} = useMultiStyleConfig('ProductTile')\n    const baseMetal = metalGroupId.toLowerCase()\n    const background = METAL_FILTERS[baseMetal]\n\n    return (\n        <Button\n            {...swatchStyles?.outer}\n            {...rest}\n            borderWidth={isSelected ? '1px' : 0}\n            borderColor={isSelected ? 'black3a' : 'transparent'}\n            variant=\"unstyled\"\n        >\n            <Center>\n                <Box\n                    {...swatchStyles?.inner}\n                    background={background}\n                    borderColor={isSelected ? 'newColors.contentSubdued' : 'transparent'}\n                />\n            </Center>\n        </Button>\n    )\n}\n\nSwatchButton.displayName = 'SwatchButton'\nSwatchButton.propTypes = {\n    isSelected: PropTypes.bool,\n    metalGroupId: PropTypes.string\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, HStack} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {SwatchButton} from './swatch-button'\n\nexport const Swatches = ({mainProduct, activeProduct, handleVariantClick}) => {\n    const SwatchList = [mainProduct, ...(mainProduct?.variants || [])]\n    return (\n        <Box>\n            <HStack spacing={1} cursor=\"pointer\">\n                {SwatchList.map((variant) => (\n                    <SwatchButton\n                        key={variant.productId}\n                        isSelected={activeProduct.productId === variant.productId}\n                        metalGroupId={variant?.metalGroupId}\n                        onClick={(e) => handleVariantClick(e, variant)}\n                        data-auto=\"btnMetalVariants\"\n                        data-pid={variant.productId}\n                        data-metal={variant.metalGroupId}\n                    />\n                ))}\n            </HStack>\n        </Box>\n    )\n}\n\nSwatches.displayName = 'Swatches'\nSwatches.propTypes = {\n    mainProduct: PropTypes.shape({\n        productId: PropTypes.string,\n        variants: PropTypes.array,\n        metalGroup: PropTypes.string\n    }),\n    activeProduct: PropTypes.shape({\n        productId: PropTypes.string\n    }),\n    handleVariantClick: PropTypes.func\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"got-x-pandora-black\",\n  \"use\": \"got-x-pandora-black-usage\",\n  \"viewBox\": \"0 0 770.7 147.35\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 770.7 147.35\\\" id=\\\"got-x-pandora-black\\\"><polygon points=\\\"416.89 60.89 399.34 78.85 381.79 60.89 378.18 64.5 395.73 82.46 378.18 100.42 381.79 104.03 399.34 86.07 416.89 104.03 420.5 100.42 402.87 82.46 420.5 64.5 416.89 60.89\\\" /><polygon points=\\\"658.83 53.24 660.08 53.24 660.14 53.17 659.08 42.46 659.02 42.4 658.71 42.4 658.65 42.46 657.53 53.17 657.59 53.24 658.83 53.24\\\" /><polygon points=\\\"664.88 53.92 664.94 53.86 666.75 44.27 666.68 44.2 666.37 44.14 666.31 44.2 662.32 53.3 662.39 53.36 664.88 53.92\\\" /><path d=\\\"M663.01 58.03c.75 0 1.43-.62 1.43-1.49 0-.81-.68-1.43-1.43-1.43-.81 0-1.5.62-1.5 1.43 0 .87.69 1.49 1.5 1.49ZM658.83 57.6c.75 0 1.43-.62 1.43-1.49 0-.81-.69-1.43-1.43-1.43-.81 0-1.49.62-1.49 1.43 0 .87.69 1.49 1.49 1.49Z\\\" /><polygon points=\\\"652.79 53.92 655.28 53.36 655.35 53.3 651.36 44.2 651.3 44.14 650.99 44.2 650.92 44.27 652.73 53.86 652.79 53.92\\\" /><path d=\\\"M653.17 56.54c0 .87.69 1.49 1.49 1.49.75 0 1.43-.62 1.43-1.49 0-.81-.69-1.43-1.43-1.43-.81 0-1.49.62-1.49 1.43ZM483.19 60.71h-12.71l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h8.35l.06-.06s-.31-3.05-.31-8.35v-7.85l.06-.06c1.12.12 3.67.25 4.55.25 8.6 0 15.95-5.23 15.95-14.08s-7.41-13.45-15.95-13.45Zm-.37 20.37c-1 0-3.24-.12-4.24-.31v-12.89h4.86c4.3 0 7.72 1.74 7.72 6.29s-2.99 6.91-8.35 6.91ZM522.98 64.26c-.93-2.18-1.25-3.49-1.25-3.49l-.06-.06h-6.79l-.06.06s-.25 1.31-1.18 3.49l-14.7 35.38c-1.25 2.99-2.49 4.61-2.49 4.61v.06h8.6l.06-.06c0-.25.19-1.31 1.25-3.92l2.68-6.66h18.93l2.87 6.66c.93 2.55 1.49 3.92 1.49 3.92l.06.06h8.6v-.06s-1.12-1.62-2.49-4.61l-15.51-35.38Zm-11.02 22.24 6.17-15.38h.06l6.66 15.38h-12.89ZM584 60.77l-.06-.06h-7.6l-.06.06s.31 3.05.31 8.35v21.92h-.06l-23.54-30.33h-8.35l-.06.06c.93 1.99 1.43 3.36 1.43 4.3v30.83c0 5.29-.31 8.35-.31 8.35l.06.06h7.6l.06-.06s-.31-3.05-.31-8.35v-22.36h.06l23.67 30.77h7.1l.06-.06s-.31-3.05-.31-8.35v-26.78c0-5.29.31-8.35.31-8.35ZM607.67 60.71h-14.57l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h4.48c2.95 0 6.23.37 9.97.37 13.39 0 22.86-9.47 22.86-22.11s-9.28-21.86-22.73-21.86Zm-.5 36.81c-2.12 0-4.05-.06-5.17-.37-.69-.19-.81-.44-.81-1.62v-27.72h5.79c9.41 0 15.45 6.35 15.45 14.82s-6.04 14.89-15.26 14.89ZM658.83 60.09c-12.58 0-22.36 9.72-22.36 22.36s9.78 22.36 22.36 22.36 22.36-9.65 22.36-22.36-9.65-22.36-22.36-22.36Zm0 37.56c-8.1 0-14.39-6.6-14.39-15.2s6.29-15.2 14.39-15.2 14.45 6.6 14.45 15.2-6.29 15.2-14.45 15.2ZM712.28 89.49c-1.06-1.74-2.68-3.11-4.3-3.55v-.06c4.55-1 8.78-6.29 8.78-11.59 0-7.23-5.54-13.58-14.08-13.58h-13.95l-.06.06s.31 3.05.31 8.35v26.78c0 5.29-.31 8.35-.31 8.35l.06.06h8.35l.06-.06s-.31-3.05-.31-8.35v-8.35c4.17 0 5.79.81 7.29 3.18l3.55 5.73c2.93 4.73 4.17 7.79 4.17 7.79l.06.06h9.97v-.06s-2.49-3.05-5.36-7.79l-4.24-6.98Zm-11.52-8.84c-1 0-2.74 0-3.92-.25v-12.58h4.8c4.67 0 7.16 3.05 7.16 6.54 0 3.3-2.55 6.29-8.03 6.29ZM768.21 99.64l-15.51-35.38c-.93-2.18-1.25-3.49-1.25-3.49l-.06-.06h-6.79l-.06.06s-.25 1.31-1.18 3.49l-14.7 35.38c-1.25 2.99-2.49 4.61-2.49 4.61v.06h8.6l.06-.06c0-.25.19-1.31 1.25-3.92l2.68-6.66h18.93l2.87 6.66c.93 2.55 1.49 3.92 1.49 3.92l.06.06h8.6v-.06s-1.12-1.62-2.49-4.61Zm-26.53-13.14 6.17-15.38h.06l6.66 15.38h-12.89ZM102.43 37.35c0-1.04-1.21-1.04-1.8-1.04-1.99 0-5.5.14-7.59.22-.83.03-1.42.06-1.55.06-.12 0-.57-.02-1.24-.04-1.99-.08-6.14-.23-9.3-.23-.58 0-1.8 0-1.8 1.04 0 .49.44.85 1.05.85.84 0 2.39.09 3.09.27 3.42.93 3.97 1.63 3.97 9.17v15.63c0 1.4-.54 2.33-1.71 2.95-2.29 1.3-7.04 1.89-10.48 1.89-9.34 0-17.49-3.28-24.22-9.75-3.39-3.24-9.79-12.69-9.79-25.24 0-10.01 3.41-18.65 9.11-23.11 6.78-5.28 13.51-6 19.77-6 11.59 0 19.23 3.67 21.66 7.3 1.59 2.52 1.87 5.38 1.91 5.94.09.77.19 1.65.95 1.65 1.06 0 1.14-1.01 1.14-2.23 0-6.67.35-9.86.53-11.57.07-.67.12-1.11.12-1.48 0-.66-.47-1.04-1.41-1.13-2.47-.1-5.69-.49-7.5-.91-.31-.06-7.63-1.57-14.33-1.57-7.19 0-16.53.66-24.97 5.84-9.84 6.11-15.72 17.51-15.72 30.5s6.04 22 11.2 26.43c7.63 6.57 18.02 9.91 30.88 9.91 5.78 0 14.04-1.1 19.92-4.18 1.28-.73 1.36-1.07 1.36-5.23v-10.3c0-3.84 0-6.61.19-9.54.19-3.31 1-4.56 3.23-4.96 1.08-.18 1.62-.27 2.25-.27s1.05-.36 1.05-.85ZM146.03 62.12c-.6 0-1.49-.06-2.38-.36-1.35-.39-3.01-1.48-5.1-6.66-2.68-6.68-8.36-21.51-11.75-30.37-1.36-3.55-2.34-6.13-2.61-6.8-.72-1.87-1.03-2.41-1.64-2.41s-.9.56-1.64 2.6l-13.99 38.28c-1.18 3.29-2.37 5.26-4.93 5.6-.5.06-1.35.12-1.75.12-.51 0-.86.27-.86.67 0 .8 1 .8 1.47.8 1.96 0 4.13-.08 5.56-.14.68-.03 1.19-.05 1.4-.05.27 0 .86.03 1.56.06 1.05.05 2.36.12 3.25.12 1.01 0 1.23-.43 1.23-.8 0-.25-.12-.67-.92-.67h-.62c-.79 0-2.04-.4-2.04-1.48s.3-2.51.85-4.03l3.69-10.89c.11-.28.23-.3.33-.3h13.25c.15 0 .19.02.27.17l5.73 15.16c.16.42.18.78.06 1.03-.08.17-.19.22-.22.23-.58.14-.66.52-.66.73 0 .63.7.66 1.85.72h.29c2.75.09 6.19.14 9.69.14 1.02 0 1.54-.27 1.54-.8 0-.45-.31-.67-.92-.67Zm-18.47-19.54h-11.65s0-.02.01-.03l5.42-16.64c.07-.22.13-.34.18-.41.04.07.1.2.18.42l5.85 16.62s0 .04.01.05ZM211.28 62.12c-.59 0-2.17 0-3.91-.54-2.51-.82-2.89-4.24-3.12-6.28l-4.13-37.85c-.1-.98-.27-1.94-1.04-1.94-.69 0-1.01.73-1.2 1.16l-17.85 38.13-18.58-38.19c-.3-.66-.62-1.1-1.2-1.1-.73 0-.9.95-.98 1.38l-4.44 40.19-.02.22c-.23 2.22-.45 4.31-2.2 4.63-.89.18-1.31.18-1.79.18s-.92.21-.92.61c0 .57.46.86 1.35.86 1.06 0 2.64-.07 3.8-.13.66-.03 1.18-.05 1.38-.05.16 0 .55.02 1.1.04 1.22.06 3.07.14 4.63.14.42 0 1.41 0 1.41-.86 0-.35-.34-.61-.8-.61-.37 0-1.27-.06-2.28-.3-.79-.16-1.36-.83-1.36-1.61 0-1.06 0-2.15.06-3.12l2.4-27.88c1.46 3.3 7.33 15.88 7.87 16.95l.1.2c1.68 3.38 5.75 11.53 7.11 14.11l.14.26c1.17 2.21 1.45 2.74 2.04 2.74.68 0 .91-.49 1.89-2.55l15.21-32.27 2.89 31.03c.12 1.05.04 1.73-.06 1.9-.41.1-.62.34-.62.72 0 .63.68.8 2.01.92 2.35.19 9.03.37 10.32.37 1.44 0 1.6-.6 1.6-.86 0-.28-.14-.61-.8-.61ZM243.92 54.51c-.65 0-.77.69-.86 1.2-.43 2.49-1.14 3.65-2.64 4.28-1.57.67-4.28.67-5.9.67-6.17 0-6.79-.86-6.97-4.85-.04-.94-.02-4.99 0-7.94 0-1.16.01-2.16.01-2.76v-5.52c0-.11.02-.13.13-.13 1.05 0 7.24.13 8.93.31 2.21.23 2.76 1.13 3 1.98.24.77.24 1.36.24 1.98 0 .53.29.87.74.87.74 0 .74-.94.74-1.5 0-.41.12-2.71.25-3.98.12-1.28.28-2.16.39-2.75.07-.37.11-.62.11-.79 0-.73-.43-.81-.62-.81-.37 0-.63.3-1.06.79l-.11.13c-.5.55-1.37.66-2.75.78-1.05.09-5.83.13-9.98.14 0-.01-.03-.08-.03-.34v-17.3c0-.26.05-.32.07-.32h0c.78 0 7.51.06 8.56.19 3.26.36 3.82 1.07 4.2 1.95.28.67.35 1.66.35 2.14 0 .93.44 1.12.81 1.12s.61-.31.74-.94c.08-.5.17-1.83.23-2.89.03-.57.06-1.05.08-1.27.11-1.02.26-1.69.37-2.17.08-.35.13-.59.13-.81 0-.76-.35-.87-.55-.87-.25 0-.45.1-.63.19-.11.05-.21.11-.32.13-.52.13-1.55.25-2.63.3-1.42.06-13.82.06-14.34.06-.08 0-.38-.01-.83-.03-1.34-.05-4.13-.16-6.25-.16-.39 0-1.31 0-1.31.81 0 .39.34.68.8.68.57 0 1.6.06 2.07.18 1.78.38 2.33 1.11 2.46 3.29.13 2 .13 3.76.13 13.52v11.03c0 5.88 0 10.95-.31 13.56-.27 1.96-.59 2.99-1.58 3.19-.33.07-1.18.24-1.81.24-.56 0-.81.34-.81.68 0 .81.92.81 1.31.81 1.34 0 3.7-.09 5.1-.15.56-.02.95-.04 1.04-.04.55 0 1.32.03 2.39.08 2.43.11 6.5.29 13.09.29 2.44 0 3.18 0 3.68-1.86.31-1.3.82-5.58.82-6.15 0-.47 0-1.25-.68-1.25ZM303.84 36.14c-.27 0-.43.21-.57.4l-.08.1c-.23.34-.55.45-1.45.52-.5.04-.99.04-1.62.04l-5.69.04v-11.15c0-.09.01-.12.02-.1l5.6.11c1.29.03 2.04.62 2.21.99.19.42.3 1 .3 1.26 0 .7.47.74.56.74.21 0 .48-.11.59-.65.05-.29.09-1.02.13-1.67.02-.34.04-.62.05-.75.06-.59.15-.97.21-1.25.05-.21.08-.36.08-.5 0-.37-.22-.63-.52-.63-.16 0-.29.07-.41.14-.06.03-.12.07-.2.1-.22.07-.63.09-1.11.11l-.41.02c-.79.03-7.59.04-8.94.04-.04 0-.22 0-.48-.02-.78-.03-2.4-.09-3.64-.09-.22 0-.89 0-.89.59 0 .3.26.52.59.52.31 0 .91.04 1.17.1.98.21 1.25.58 1.33 1.8.07 1.15.07 3.27.07 8.93v6.41c0 3.39 0 8.52-.18 10.03-.15 1.08-.32 1.64-.82 1.75-.19.04-.67.14-1.03.14-.41 0-.6.27-.6.52 0 .6.67.6.89.6.78 0 2.15-.05 2.97-.09.32-.01.54-.02.6-.02.04 0 .19 0 .42.01.81.03 2.51.1 4.05.1.8 0 .89-.42.89-.6 0-.25-.19-.52-.59-.52-.3 0-1.08-.07-1.6-.14-.84-.11-1.05-.65-1.16-1.74-.18-1.51-.18-6.64-.18-10.03v-3.09s0-.02 0-.02c1.38 0 5.68 0 6.49.11.97.12 1.48.65 1.64 1.1.12.36.16.78.19 1.13v.09c.01.38.23.63.57.63.56 0 .56-.65.56-1 0-.25.07-1.71.14-2.41.07-.74.16-1.25.22-1.59.04-.23.07-.39.07-.48 0-.54-.34-.59-.49-.59ZM271.95 25.34c-10.67 0-14.65 8.92-14.65 14.54 0 7.04 4.51 14.61 14.43 14.61 8.59 0 14.83-6.39 14.83-15.19 0-8.35-5.87-13.96-14.61-13.96Zm-3.75 26.18c-4.17-1.93-6.83-6.61-6.83-12.67s2.54-9.78 6.83-11.15v23.81Zm.97-24.07c.72-.16 1.48-.24 2.28-.26v25.23c-.8-.09-1.56-.26-2.28-.51v-24.46Zm3.25-.23c.84.06 1.69.23 2.51.52v24.48c-.99.24-1.8.27-2.21.27-.1 0-.2-.01-.3-.02v-25.26Zm3.48 24.71v-23.81c3.61 1.67 6.56 5.62 6.56 12.19 0 7.79-3.67 10.61-6.56 11.62ZM329.7 82.49c-.54-2.18-1.27-5.18-1.27-6.78 0-.54 0-1.36-.74-1.36-.21 0-.52.06-.98.15-1.25.25-3.59.72-7.72.72H13.92c-1.08 0-4.45-.18-6.92-.44-1.47-.11-2.32-.49-2.95-.77-.37-.16-.66-.29-.94-.29-.51 0-.8.77-1.13 1.77l-.04.13c-.1.42-1.94 8.25-1.94 9.21 0 1.01.57 1.09.74 1.09.53 0 .88-.32 1.16-1.06.27-.62.52-1.21 1.47-2.67 1.33-1.99 3.28-2.59 8.72-2.68l12.7-.17v36.86c0 8.25 0 20.71-.43 24.38-.39 2.81-.85 4.29-2.32 4.58-.97.21-1.93.34-2.57.34-.74 0-1 .45-1 .83 0 1 1.15 1 1.7 1 1.88 0 5.18-.13 7.15-.21.78-.03 1.33-.05 1.46-.05.1 0 .47.01 1.04.03 1.96.07 6.04.23 9.76.23 1.41 0 1.71-.55 1.71-1 0-.38-.26-.83-1-.83s-2.66-.17-3.91-.35c-2.3-.31-2.88-1.84-3.17-4.57-.44-3.67-.44-16.14-.44-24.38v-36.86l282.89.18c7.56.16 12.29 1.87 12.65 4.56l.09.96c.07 1 .19 1.77 1 1.77.21 0 .92-.1.92-1.44 0-.38-.22-1.3-.61-2.88Z\\\" /><path d=\\\"M93.32 137.86c-.53 0-1.91-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-11.2c0-9.91 0-11.7.13-13.73.13-2.26.64-3.08 2.1-3.35.74-.13 1.11-.19 1.54-.19.47 0 .81-.29.81-.68 0-.81-.93-.81-1.32-.81-1.36 0-3.75.1-5.18.15-.57.02-.97.04-1.06.04-.08 0-.38-.01-.84-.03-1.36-.05-4.19-.16-6.35-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.81.38 2.37 1.13 2.5 3.35.13 2.03.13 3.81.13 13.72v1.34s0 .07 0 .07c0 0-.03 0-.08 0h-26.98s-.06 0-.07 0c0 0 0-.03 0-.08v-1.34c0-9.91 0-11.7.13-13.73.13-2.26.64-3.08 2.1-3.35.74-.13 1.12-.19 1.54-.19.47 0 .81-.29.81-.68 0-.81-.93-.81-1.32-.81-1.36 0-3.75.1-5.18.15-.57.02-.96.04-1.05.04-.08 0-.38-.01-.84-.03-1.36-.05-4.2-.16-6.35-.16-.4 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.81.38 2.37 1.13 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.32 13.77-.27 1.95-.6 3.05-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.36 0 3.75-.1 5.18-.15.57-.02.96-.04 1.05-.04.07 0 .34 0 .75.02 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68c-.53 0-1.9-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-6.68s0-.07 0-.07c0 0 .03 0 .08 0h26.98c.08 0 .08.05.08.08v6.68c0 5.97 0 11.12-.32 13.77-.28 2-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.92.81 1.32.81 1.36 0 3.76-.1 5.18-.15.56-.02.96-.04 1.05-.04.07 0 .34 0 .76.02 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68ZM146.96 137.86c-.37 0-1.25 0-2.43-.19-1.69-.27-4.31-1.03-7.59-4.49-3.23-3.45-6.99-8.28-11.34-13.87l-1.71-2.19c5.18-4.84 7.59-9.53 7.59-14.73 0-4.46-2.84-7.69-4.52-8.9-3.51-2.52-7.94-2.86-11.82-2.86-1.24 0-3.63.07-5.37.13-1.04.03-1.88.06-2.14.06-.08 0-.38-.01-.84-.03-1.36-.05-4.19-.16-6.35-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.58 0 1.62.06 2.1.18 1.99.42 2.38 1.38 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.31 13.77-.28 1.99-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.62 0 4.7-.14 5.71-.18h.27c.07-.01.34 0 .76.01 1.42.05 4.38.17 7.07.17 1.15 0 1.32-.51 1.32-.81s-.21-.68-.81-.68c-.53 0-1.9-.12-2.82-.25-1.61-.22-2.02-1.3-2.22-3.24-.32-2.65-.32-7.81-.32-13.78v-1.53c0-.21.05-.21.14-.21l7.84.13c.27 0 .39.07.59.26.54.7 1.4 1.88 2.39 3.25 1.34 1.85 3.01 4.15 4.55 6.16l.81 1.07c3.19 4.21 5.3 6.99 7.88 8.37 1.75.94 3.44 1.25 6.95 1.25h4.52c.77 0 1.83 0 1.83-.81 0-.37-.4-.68-.87-.68Zm-36.61-43.74c0-.24.1-.4.29-.47.6-.18 2.27-.37 4.18-.37 6.7 0 10.71 4.64 10.71 12.43 0 4.37-1.4 7.94-3.75 9.55-1.49 1.04-3.34 1.16-4.6 1.16-2.7 0-5.63-.44-6.53-.97-.21-.13-.3-.28-.3-.51v-20.81ZM246.13 90.64c-1.73 0-3.25.08-4.25.14-.52.03-.92.05-1.15.05s-.71-.02-1.36-.05c-1.33-.06-3.33-.14-5.26-.14-.59 0-1.58 0-1.58.75 0 .49.27.75.81.75.46 0 1.91.06 3.04.31 1.73.45 2.19 1.63 2.26 5.76l.68 31.55c-1.08-1.15-2.88-3.12-5.05-5.51-2.83-3.11-6.36-6.98-9.68-10.54-9.85-10.55-19.29-20.75-20.24-21.83-.16-.16-.36-.38-.56-.61-.82-.92-1.4-1.52-1.87-1.52-.86 0-1 1.07-1 3.48l-.06 36.47c0 5.81-.35 7.42-1.7 7.8-.81.27-1.86.37-2.51.37-.6 0-.81.35-.81.68 0 .81.86.81 1.32.81 1.99 0 3.9-.1 5.05-.15.51-.03.89-.04 1.06-.04.16 0 .48.02.93.04 1.2.06 3.21.16 5.81.16.43 0 1.45 0 1.45-.81 0-.33-.21-.68-.81-.68-.17 0-1.73-.01-3.09-.37-1.4-.41-2.13-1.63-2.27-7.1l-.8-29.66c1.93 2.16 8.69 9.71 16.06 17.65 6.76 7.27 15.93 16.63 16.62 17.25 3.53 3.53 4.21 4.16 4.86 4.16.78 0 .87-.54.87-4.82l.13-37.29c0-3.87.26-4.98 2.13-5.37.73-.18 1.15-.18 1.45-.18.69 0 1-.38 1-.75 0-.75-.9-.75-1.45-.75ZM282.57 130.16c-.65 0-.78.69-.87 1.21-.43 2.53-1.16 3.71-2.68 4.35-1.6.68-4.35.68-5.99.68-6.28 0-6.91-.87-7.08-4.93-.05-.95-.02-5.07 0-8.07 0-1.18.01-2.19.01-2.8v-5.6c0-.13.03-.15.14-.15 1.07 0 7.36.13 9.07.32 2.25.23 2.8 1.15 3.05 2.02.24.78.24 1.38.24 2.01 0 .53.29.87.74.87.75 0 .75-.95.75-1.51 0-.41.12-2.74.25-4.05.12-1.3.28-2.2.39-2.8.07-.38.12-.62.12-.79 0-.73-.43-.81-.62-.81-.37 0-.63.3-1.07.8l-.11.13c-.47.52-1.21.66-2.8.79-1.07.1-5.91.13-10.13.14 0-.01-.04-.08-.04-.35v-17.56c0-.28.06-.33.08-.34.76 0 7.62.07 8.69.19 3.32.37 3.88 1.09 4.27 1.98.28.68.36 1.69.36 2.18 0 .93.44 1.13.81 1.13s.62-.32.74-.95c.09-.51.17-1.84.23-2.91.04-.59.07-1.09.09-1.31.11-1.04.26-1.72.38-2.21.08-.35.13-.6.13-.81 0-.76-.35-.88-.56-.88-.25 0-.46.1-.64.2-.11.06-.22.11-.33.13-.52.13-1.57.25-2.68.31-1.44.06-14.02.06-14.56.06-.08 0-.39-.01-.85-.03-1.36-.05-4.19-.16-6.34-.16-.39 0-1.32 0-1.32.81 0 .4.34.68.81.68.57 0 1.62.06 2.1.18 1.99.42 2.38 1.38 2.5 3.35.13 2.03.13 3.81.13 13.72v11.2c0 5.97 0 11.12-.32 13.77-.28 1.99-.6 3.04-1.61 3.25-.34.08-1.2.25-1.85.25-.56 0-.81.34-.81.68 0 .81.93.81 1.32.81 1.36 0 3.75-.1 5.18-.15.57-.02.97-.04 1.06-.04.55 0 1.34.03 2.43.08 2.47.11 6.6.3 13.29.3 2.47 0 3.22 0 3.73-1.89.33-1.39.84-5.74.84-6.24 0-.47 0-1.26-.68-1.26ZM307.34 111.51l-1.78-1.4c-6.15-5.04-7.66-7.09-7.66-10.46 0-4.24 3.03-7.08 7.53-7.08 5.36 0 7.16 2.25 7.69 3.22.35.63.73 2.3.79 3.07.06.46.14 1.09.81 1.09.75 0 .75-1.1.75-1.77 0-3.39.16-5.41.22-6.27.02-.25.03-.4.03-.48 0-.66-.5-.74-.94-.74s-.91-.05-2.16-.31c-1.83-.44-3.74-.64-5.99-.64-8.19 0-13.48 4.61-13.48 11.75 0 4.3 1.43 8.33 8.38 14.04l2.87 2.35c5.66 4.67 7.21 7.09 7.21 11.22s-3.02 8.16-8.8 8.16c-2.36 0-7.98-.61-9.13-6.25-.18-.86-.18-1.72-.18-2.29 0-.38 0-1-.75-1-.69 0-.77.84-.81 1.3-.01.19-.03.44-.05.74-.1 1.28-.27 3.44-.27 6.02 0 1.68.04 2.15 1.12 2.69 2.41 1.18 5.25 1.75 8.66 1.75 3.84 0 7.22-.94 9.78-2.73 4.08-2.9 5.54-7.48 5.54-10.81 0-4.93-1.54-8.99-9.41-15.19ZM168.49 89.75c-18.49 0-25.37 15.45-25.37 25.18 0 12.19 7.82 25.31 24.99 25.31 14.89 0 25.69-11.07 25.69-26.33 0-14.45-10.17-24.16-25.31-24.16Zm18.6 25.95c0 14.62-7.32 19.33-12.56 20.83v-42.76c6.8 2.68 12.56 9.77 12.56 21.93Zm-14.2-22.18v43.4c-1.36.25-2.46.3-3.06.3-.35 0-.69-.04-1.04-.05v-44.62c1.69.07 3.39.39 5.05.97h-.95Zm-11.78 41.61c-6.95-3.61-11.34-11.65-11.34-21.98s4.21-16.8 11.34-19.44v41.42Zm1.64-41.94c1.38-.36 2.84-.57 4.4-.63v44.47c-1.55-.21-3.01-.6-4.4-1.15v-42.69ZM322.47 91.12v.56h-1.59v4.16h-.64v-4.16h-1.59v-.56h3.83ZM323.04 91.12h.91l1.36 3.99 1.35-3.99h.91v4.72h-.61v-2.79c0-.1 0-.26 0-.48 0-.22 0-.46 0-.71l-1.35 3.98h-.63l-1.36-3.98v.14c0 .12 0 .29 0 .53 0 .24 0 .41 0 .52v2.79h-.61v-4.72Z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"circles-overlapping\",\n  \"use\": \"circles-overlapping-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"circles-overlapping\\\">\\n<g id=\\\"circles-overlapping_Circles overlapping\\\">\\n<g id=\\\"circles-overlapping_icon\\\">\\n<path d=\\\"M1 10C1 6.96243 3.46243 4.5 6.5 4.5C6.78696 4.5 7.06847 4.52193 7.34302 4.56413L7.49494 3.57574C7.1703 3.52584 6.838 3.5 6.5 3.5C2.91015 3.5 0 6.41015 0 10C0 13.5899 2.91015 16.5 6.5 16.5C10.0899 16.5 13 13.5899 13 10C13 8.8169 12.6835 7.70621 12.1301 6.74964L11.2645 7.25036C11.7322 8.05883 12 8.99738 12 10C12 13.0376 9.53757 15.5 6.5 15.5C3.46243 15.5 1 13.0376 1 10Z\\\" fill=\\\"#211710\\\" />\\n<path d=\\\"M8 10C8 6.96243 10.4624 4.5 13.5 4.5C16.5376 4.5 19 6.96243 19 10C19 13.0376 16.5376 15.5 13.5 15.5C13.216 15.5 12.9373 15.4785 12.6655 15.4372L12.5151 16.4258C12.8365 16.4747 13.1655 16.5 13.5 16.5C17.0899 16.5 20 13.5899 20 10C20 6.41015 17.0899 3.5 13.5 3.5C9.91015 3.5 7 6.41015 7 10C7 11.1831 7.31654 12.2938 7.86989 13.2504L8.7355 12.7496C8.26782 11.9412 8 11.0026 8 10Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo, useState, useEffect} from 'react'\nimport {getCookie} from 'react-use-cookie'\nimport {usePromotionalProductsQuery} from './use-promotional-products-query'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\n/** @typedef {import('./types/product-price').PromotionsPriceResponse} PromotionsPriceResponse */\n/** @typedef {import('./types/product-price').LegacyPromotionalPrice} LegacyPromotionalPrice */\n/** @typedef {import('./types/product-price').PromotionalPricesMap} PromotionalPricesMap */\n/** @typedef {import('./types/product-price').EnhancedPrice} EnhancedPrice */\n\nconst noop = () => {}\n\nconst DISABLED_PROMOTIONAL_PRICING = {\n    promotionalPrices: {},\n    isLoading: false,\n    error: null,\n    hasNextPage: false,\n    fetchNextPage: noop,\n    isFetchingNextPage: false\n}\n\n/**\n * Promotional pricing hook using the new batch query approach.\n * Uses usePromotionalProductsQuery for true incremental fetching.\n * React Query handles caching - Load More reuses cached batches.\n */\nexport const usePromotionalPricing = (\n    products = [],\n    componentType = 'other',\n    resourceId = null\n) => {\n    const isBloomreachEnabled =\n        useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n\n    const isContextFlagEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const contextCookie = isContextFlagEnabled ? getCookie('expSegGrp') : ''\n\n    const isContextEnabled = contextCookie && isContextFlagEnabled\n    const segmentUpdateCompleted =\n        typeof window !== 'undefined'\n            ? window.sessionStorage.getItem('segmentUpdateCompleted') === 'true'\n            : false\n\n    const [enableQueryAfterDelay, setEnableQueryAfterDelay] = useState(!isContextEnabled)\n    const shouldWaitForSegmentUpdate = isContextEnabled ? segmentUpdateCompleted : true\n\n    // Add 1 second delay after segment update completes before enabling query\n    useEffect(() => {\n        if (!isContextEnabled) {\n            setEnableQueryAfterDelay(true)\n            return\n        }\n        if (!segmentUpdateCompleted) {\n            setEnableQueryAfterDelay(false)\n            return\n        }\n\n        const timer = setTimeout(() => {\n            setEnableQueryAfterDelay(true)\n        }, 1000)\n        return () => clearTimeout(timer)\n    }, [isContextEnabled, segmentUpdateCompleted])\n\n    // Use the batch query hook - enable after delay\n    const {data, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage} =\n        usePromotionalProductsQuery(\n            products,\n            {\n                enabled: isBloomreachEnabled && enableQueryAfterDelay && shouldWaitForSegmentUpdate\n            },\n            'products',\n            componentType,\n            resourceId\n        )\n\n    // Transform batch results into flat promotional prices object\n    // IMPORTANT: Include resourceId in dependencies to force recalculation when category changes\n    const promotionalPrices = useMemo(() => {\n        if (!isBloomreachEnabled || !data?.pages) return {}\n\n        /** @type {PromotionalPricesMap} */\n        const combined = {}\n        /** @type {PromotionsPriceResponse[]} */\n        const pages = data.pages\n        pages.forEach((page) => {\n            if (page?.prices) {\n                page.prices.forEach((priceData) => {\n                    if (priceData && priceData.productId) {\n                        combined[priceData.productId] = {\n                            salesPrice: priceData.default?.sales?.value,\n                            listPrice: priceData.default?.list?.value,\n                            currency: priceData.currency,\n                            promotions: priceData.promotions || [],\n                            lastLowestPrice: priceData.lastLowestPrice,\n                            type: priceData.type,\n                            min: priceData.min,\n                            max: priceData.max,\n                            memberPrice: priceData.memberPrice\n                                ? {\n                                      ...priceData.memberPrice,\n                                      value: priceData.memberPrice.default?.value\n                                  }\n                                : null\n                        }\n                    }\n                })\n            }\n        })\n        return combined\n    }, [data?.pages, isBloomreachEnabled, resourceId])\n\n    const result = useMemo(\n        () => ({\n            promotionalPrices,\n            isLoading,\n            error,\n            hasNextPage,\n            fetchNextPage,\n            isFetchingNextPage\n        }),\n        [promotionalPrices, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage]\n    )\n\n    // Early return for disabled feature flag\n    if (!isBloomreachEnabled) {\n        return DISABLED_PROMOTIONAL_PRICING\n    }\n\n    return result\n}\n\n/**\n * Utility function to get the appropriate price for a product\n * considering promotional pricing availability.\n *\n * Returns `null` only while a promotion-eligible product is still loading and\n * has no cached promotional data yet (skeleton trigger).\n *\n * @param {object} product\n * @param {PromotionalPricesMap} [promotionalPrices]\n * @param {boolean} [isLoading]\n * @returns {EnhancedPrice | null}\n */\nexport const getEnhancedPrice = (\n    product,\n    promotionalPrices = {},\n    isLoading = false,\n    flags = {}\n) => {\n    const {enableCarouselPromotionalPricing = false} = flags\n    // Return promotional price if available, otherwise standard price\n    const promotionalData = promotionalPrices[product.productId]\n\n    // If product has promotional eligibility and we're still loading AND we don't have data yet, return null to show skeleton\n    if (product.hasProductPromotions && isLoading && !promotionalData) {\n        return null\n    }\n\n    // Return enhanced pricing whenever DOL has sales/list data. The API response\n    // shape is identical for promotion-driven and sales-pricebook-driven discounts\n    // (sales = price paid, list = original), so the data itself is the signal.\n    if (promotionalData) {\n        // FIND-5838: when the carousel promotional-pricing flag is on, DOL is\n        // authoritative — normalize \"no regular pricebook\" to `null` so the\n        // consumer can hide the strikethrough. With the flag off, preserve the\n        // legacy fallback to product.price to keep existing markets unchanged.\n        const dolListPriceOrNull = promotionalData.listPrice ?? null\n        const legacyListPrice = promotionalData.listPrice || product.price\n        const listPrice = enableCarouselPromotionalPricing ? dolListPriceOrNull : legacyListPrice\n\n        return {\n            price: promotionalData.salesPrice,\n            salePrice: promotionalData.salesPrice,\n            listPrice,\n            originalPrice: product.price,\n            lastLowestPrice: promotionalData.lastLowestPrice,\n            lastLowestPricePercentage: promotionalData.lastLowestPrice?.percentage?.lowest,\n            currency: promotionalData.currency,\n            promotions: promotionalData.promotions,\n            isPromotional: !!product.hasProductPromotions,\n            type: promotionalData.type,\n            min: promotionalData.min,\n            max: promotionalData.max,\n            memberPrice: promotionalData.memberPrice\n        }\n    }\n\n    // Return standard pricing structure\n    return {\n        price: product.price,\n        salePrice: product.salePrice,\n        listPrice: product.price,\n        originalPrice: product.price,\n        lastLowestPrice: product.c_extend?.lastLowestPrice,\n        lastLowestPricePercentage: product.c_extend?.lastLowestPrice?.percentage?.lowest,\n        isPromotional: false\n    }\n}\n\n/**\n * Simplified utility function for backward compatibility.\n *\n * @param {object} product\n * @param {PromotionalPricesMap} [promotionalPrices]\n * @param {boolean} [isLoading]\n * @returns {number | null | undefined}\n */\nexport const getPrice = (product, promotionalPrices = {}, isLoading = false) => {\n    const enhancedPrice = getEnhancedPrice(product, promotionalPrices, isLoading)\n    if (enhancedPrice === null) return null\n    return enhancedPrice.price\n}\n\n/**\n * Hook to get promotional pricing for a specific product.\n *\n * @param {object} product\n * @param {PromotionalPricesMap} allPromotionalPrices\n * @param {boolean} isLoading\n * @returns {number | null | undefined}\n */\nexport const useProductPromotionalPrice = (product, allPromotionalPrices, isLoading) => {\n    return getPrice(product, allPromotionalPrices, isLoading)\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"disney_x_pandora_white\",\n  \"use\": \"disney_x_pandora_white-usage\",\n  \"viewBox\": \"0 0 284.8 49.6\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 284.8 49.6\\\" id=\\\"disney_x_pandora_white\\\"><polygon fill=\\\"#FFFFFF\\\" points=\\\"152.8,18.4 146,25.3 139.3,18.4 137.9,19.8 144.6,26.7 137.9,33.6 139.3,35 146,28.1 152.8,35\\t154.2,33.6 147.4,26.7 154.2,19.8\\\" /><path fill=\\\"#FFFFFF\\\" d=\\\"M51.4 15.7c2 .5 4.5.3 6.1-.5 2.1-1 3.9-2.1 5.2-3.9.6-.7 1.2-2.2 1.4-3.6.1-1.1-.6-2-1.4-2.5-.6-.3-1.8-.6-2.5-.7-1-1.3-2.9-1.4-4.5-1-2.1.5-4.1 1.2-5.8 2.6-1.2 1.1-2.2 2.3-2.4 4-.4 1.5.3 2.9 1.2 3.9-.1 1.1-.1 2.3.9 2.8C50.4 17.1 51.1 16.1 51.4 15.7zM60.8 7.2l.6.4c.4.3.4 1 .3 1.5-1 2.5-4.1 3.6-6.8 4-.8.1-1.9.2-2.3-.2.2-.7.5-1.2.9-1.7C55.2 9.3 57.5 6.6 60.8 7.2zM49.5 10.4c.2-2.5 3.2-4.5 5.5-4.2-1.9 1.1-4.1 3.5-4.9 5.3C49.8 11.3 49.5 10.8 49.5 10.4zM86.4 18c-.4-.7-.9-1.7-1.8-2.1-.3-.1-.8-.2-.9.2-.1.4 0 .8.1 1.2.2 1.8.8 3.4 1.2 5.1.4 1.4.7 2.8 1 4.3.2 1 .4 2.6.1 2.8-.3.1-.4-.2-.6-.6-1.9-2.7-3.5-5.4-5.5-7.9-.3-.4-1.1-1.7-2-1.5-.5.2-.7.5-1 1-.9 2.1-1.3 4.5-1.7 6.8-.2 1.2-.2 2.5-.4 3.6 0 1.5-.1 3.3 1.3 4 .4.2 1.1.2 1.4 0 .4-.5.6-1.2.6-1.9.1-2.5.2-4.8.4-7.4 0-.3 0-.6.1-.8.1-.2.4.1.5.2.9 1.6 1.8 3.4 2.7 4.9.9 1.5 1.8 3.3 3.3 4.1 1.6.6 2.7-.9 3.2-1.9 1.2-2.1.8-4.4.7-6.9C88.9 22.6 87.8 20.3 86.4 18zM95.2 36.1c2.7-.3 6.5-2.7 7.1-3.2.3-.2.4-.5.4-.5.1-.8-.6-2-1-2.1-2.6-.2-6.9 1.5-7.2 1.1-.5-.7.1-1.5.3-2.1.2-.5.6-1.1.8-1.5 1.2 0 2.3 0 3.5 0 .9 0 2.7 0 2.8-.6 0-.6 0-1.7-.3-1.8-1.6-.5-3.3-.1-5-.2L96.5 25c-.1-.6.2-1.2.3-1.8.1-.3.2-.7.5-.8l3.5-.1c1.4-.1 3.1.4 4.2-.8.2-.3-.2-.9-.4-1.2l-1.3-1.5c-.4-.4-.7-.5-1.2-.5-1.6 0-3.2.2-4.7.4-2.3.3-5.6.4-6.5 1.1-.3.7.4 1.4 1 1.7.7.4 1.7.4 2.3.6-.1.2-.2.6-.3.9-.3.7-.4 1.5-.9 2 0 0-.5.2-.9.4-.3.1-.1.5-.2.8.1.2.1.4.2.6-.4 1.2-1 2.2-1.4 3.3-.5 1.5-.2 3.3.7 4.5C92.7 36.1 93.7 36.3 95.2 36.1zM56.9 24.2c0 1 1.2 1.5 2 1.8 3.1 1.1 6.5.2 9.7.8 1.3.4 3 1.1 2.8 1.9-.4 1.1-1.7 1.6-2.7 1.9-1.8.6-3.7 1.1-5.8 1-1-.1-2.5-.1-3.3-1-.2-.2-.3-.5-.1-.8.3-.7 1.1-.8 1.8-.9 1.6 0 4.3 2.2 6.7 1.1.6-.3 1.3-.5 1.5-1.1.1-.5-.7-.6-1.3-.8-2.6-.6-5.6-1.6-8.2-.5-.7.4-1.3.8-1.7 1.4-.3.4-.4.9-.3 1.5.4 2.1 2.6 3.4 4.3 3.9 3.6 1 7.9 1 10.6-1.7.8-.9 1.1-2.2 1.1-3.5-.3-1.8-1.3-3.7-3.2-4.2-3.5-.8-7.3-.5-10.8-1.4-.1-.1-.3-.2-.2-.3.7-.4 1.6-.6 2.4-.8 3-.5 6.1-.7 9.1-.9.8-.1 1.8-.1 2.5-.6.3-.4.7-1 .6-1.5-.5-.3-.9-.5-1.4-.6-1.9-.5-3.7-.6-5.6-.5-3 .1-6 .7-8.6 2.2C57.4 21.2 57 22.8 56.9 24.2zM54.5 34.5c.2-3.6-.2-7.5-.3-11.1.1-.5-.1-1-.1-1.5.1-1.5-.5-2.8-1.8-3.4-.5.1-.5.6-.6 1-.8 3.9-1.2 7.8-1.1 11.9.1 1.3 0 2.6.8 3.7.7.2 1.4.5 2.2.3C54 35.3 54.5 35 54.5 34.5zM109.3 37.7c.3-.8.8-1.7 1.1-2.2 2 .1 3.9-.5 5.5-1.6 1.8-1.4 3.3-2.7 4.5-4.7 1.1-1.9 1.6-4.6.7-6.8-.4-1.1-.9-1.9-1.8-2.7-2.1-1.1-3.9.9-5.1 2.1-2.4 2.4-3.9 4.1-5.7 6.9-.1.1-.6.9-.7 1-.5-1.1-.1-2.4.2-3.3.7-1.7 1.5-3.3 2.3-4.9.3-.6.6-1.1.9-1.9.2-.4.3-.9.2-1.5-.1-.2-.2-.4-.4-.3-1.2.6-2 1.9-2.8 2.9-1.8 2.4-3.3 5.8-3.1 9 .1 1.1.5 2.4 1 3.3-1.5 3.4-2.7 6.9-3.4 10.6-.3 1.6.1 3.4.8 4.7.4.5 1.2 1.5 2.4 1.4.3-.1.5-.3.5-.5l.6-3.4C107.3 44 108.7 39.2 109.3 37.7zM111.5 31.5c.7-1 1.2-1.6 1.7-2.4 1.7-2.4 3.3-4.4 5-6.4.1-.2.4-.1.5 0 .3.5.5 1.2.5 1.9 0 .7-.3 2.2-.8 3-1.2 1.8-4 3.7-5.5 3.9C111.4 31.7 111.5 31.5 111.5 31.5zM49.5 26c.2-1.9-.2-3.3-.6-4.9-1.1-2.5-2.5-4.8-4.3-6.8C40.1 9.5 34.3 5.9 28.2 3.6c-1.9-.8-4-1.4-6-2C15.8-.1 8-1 1.8 1.7 1 2.2.3 3.5 0 4.7c-.2 1.3 2 1.2 2.8 1.1.5 0 1.2-.1 1.5-.6 0-.3-.2-.3-.4-.5C3.6 4.5 3 4.3 2.8 3.9c.7-.6 1.6-.7 2.4-.7 3.5-.3 6.6.1 9.9.5 7.5 1.3 14.5 3.7 20.6 8.1 3 2.2 5.5 4.8 7.5 7.8.6 1.8 1.8 3.7 1.6 5.7-.1 2.4-1.4 4.2-3.3 5.6-2.9 2-6.3 3.1-9.9 3.4-2.8 0-4.4.2-7.9-.5l-.3-.1c.1-2.1 0-3.9 0-6.3.1-1.2 0-3.2-.1-4.6.8 0 1.4 0 2.4.1 2.3.2 4.6.6 6.8 1.2.7.1 2.3.4 2.3.9-.2 1.3-1.2 2-2.3 2.5v.2c.7.4 1.9.9 3 .6 1.2-.4 2.1-1.4 2.6-2.8.4-1.6-.7-3-1.8-4-2.1-1.6-4.5-1.8-7.2-2.3-2-.3-3.8-.4-5.7-.3l-.2 0c-.1-1.2-.2-2.5-.4-3.9 0 0-.3-2.2-.7-3.2-.3-.6-.9-1.6-1.5-1.3-.4.2-.5.7-.5 1.2-.3 1.9-.7 3.8-.7 5.7-.1.5-.1 1.4-.2 2.1 0 0-.3 0-.8.1-3.8.6-7.9 1.4-10.6 4.3-.7.7-.6 1.9-.2 2.7 2.8 3.7 6.7 7 11.1 9 .1 1.2.4 2.4.9 3.5.7 1.1 2.4.8 3 .6.6-.4 1-1.3 1-2.3.9.4 7.8.9 11.4.4 3.2-.4 5.9-1.3 8.5-2.9C46.6 32.5 48.8 29.7 49.5 26zM19 24.1c-.2 3-.3 5.5-.3 8.3-.4 0-1-.2-1.6-.4-3.1-1.1-6.1-3.1-8.3-5.7-.2-.3-.3-.8 0-1.1 2.1-1.6 4.7-1.5 7.2-2.1 1 .1 2-.2 3 0C19 22.9 19.1 23.6 19 24.1z\\\" /><polygon fill=\\\"#FFFFFF\\\" points=\\\"242.2,15.5 242.7,15.5 242.7,15.5 242.3,11.4 242.3,11.4 242.2,11.4 242.1,11.4 241.7,15.5 241.7,15.5\\\" /><polygon fill=\\\"#FFFFFF\\\" points=\\\"244.5,15.8 244.5,15.7 245.2,12.1 245.2,12.1 245.1,12 245.1,12.1 243.5,15.5 243.6,15.5\\\" /><path fill=\\\"#FFFFFF\\\" d=\\\"M243.8 17.3c.3 0 .5-.2.5-.6 0-.3-.3-.5-.5-.5-.3 0-.6.2-.6.5C243.2 17.1 243.5 17.3 243.8 17.3zM242.2 17.2c.3 0 .6-.2.6-.6 0-.3-.3-.5-.6-.5-.3 0-.6.2-.6.5C241.6 16.9 241.9 17.2 242.2 17.2z\\\" /><polygon fill=\\\"#FFFFFF\\\" points=\\\"239.9,15.8 240.9,15.5 240.9,15.5 239.4,12.1 239.3,12 239.2,12.1 239.2,12.1 239.9,15.7\\\" /><path fill=\\\"#FFFFFF\\\" d=\\\"M240.1 16.8c0 .3.3.6.6.6.3 0 .6-.2.6-.6 0-.3-.3-.5-.6-.5C240.3 16.2 240.1 16.4 240.1 16.8zM175.4 18.3h-4.8l0 0c0 0 .1 1.2.1 3.2v10.2c0 2-.1 3.2-.1 3.2l0 0h3.2l0 0c0 0-.1-1.2-.1-3.2v-3l0 0c.4 0 1.4.1 1.7.1 3.3 0 6.1-2 6.1-5.4C181.4 20.2 178.6 18.3 175.4 18.3zM175.2 26.1c-.4 0-1.2 0-1.6-.1v-4.9h1.9c1.6 0 2.9.7 2.9 2.4C178.4 25.1 177.3 26.1 175.2 26.1zM190.5 19.7c-.4-.8-.5-1.3-.5-1.3l0 0h-2.6l0 0c0 0-.1.5-.4 1.3l-5.6 13.5c-.5 1.1-.9 1.8-.9 1.8v0h3.3l0 0c0-.1.1-.5.5-1.5l1-2.5h7.2l1.1 2.5c.4 1 .6 1.5.6 1.5l0 0h3.3v0c0 0-.4-.6-.9-1.8L190.5 19.7zM186.3 28.2l2.4-5.9h0l2.5 5.9H186.3zM213.7 18.4 213.7 18.4l-2.9 0 0 0c0 0 .1 1.2.1 3.2v8.3h0l-9-11.5h-3.2l0 0c.4.8.6 1.3.6 1.6v11.7c0 2-.1 3.2-.1 3.2l0 0h2.9l0 0c0 0-.1-1.2-.1-3.2v-8.5h0l9 11.7h2.7l0 0c0 0-.1-1.2-.1-3.2V21.5C213.6 19.5 213.7 18.4 213.7 18.4zM222.7 18.3h-5.6l0 0c0 0 .1 1.2.1 3.2v10.2c0 2-.1 3.2-.1 3.2l0 0h1.7c1.1 0 2.4.1 3.8.1 5.1 0 8.7-3.6 8.7-8.4C231.4 21.8 227.9 18.3 222.7 18.3zM222.6 32.4c-.8 0-1.5 0-2-.1-.3-.1-.3-.2-.3-.6V21h2.2c3.6 0 5.9 2.4 5.9 5.6C228.4 29.9 226.1 32.4 222.6 32.4zM242.2 18.1c-4.8 0-8.5 3.7-8.5 8.5 0 4.8 3.7 8.5 8.5 8.5 4.8 0 8.5-3.7 8.5-8.5C250.7 21.8 247 18.1 242.2 18.1zM242.2 32.4c-3.1 0-5.5-2.5-5.5-5.8s2.4-5.8 5.5-5.8c3.1 0 5.5 2.5 5.5 5.8C247.7 29.9 245.3 32.4 242.2 32.4zM262.5 29.3c-.4-.7-1-1.2-1.6-1.4v0c1.7-.4 3.3-2.4 3.3-4.4 0-2.8-2.1-5.2-5.4-5.2h-5.3l0 0c0 0 .1 1.2.1 3.2v10.2c0 2-.1 3.2-.1 3.2l0 0h3.2l0 0c0 0-.1-1.2-.1-3.2v-3.2c1.6 0 2.2.3 2.8 1.2l1.4 2.2c1.1 1.8 1.6 3 1.6 3l0 0h3.8v0c0 0-1-1.2-2-3L262.5 29.3zM258.2 25.9c-.4 0-1 0-1.5-.1V21h1.8c1.8 0 2.7 1.2 2.7 2.5C261.2 24.8 260.2 25.9 258.2 25.9zM283.8 33.2l-5.9-13.5c-.4-.8-.5-1.3-.5-1.3l0 0h-2.6l0 0c0 0-.1.5-.5 1.3l-5.6 13.5c-.5 1.1-1 1.8-1 1.8v0h3.3l0 0c0-.1.1-.5.5-1.5l1-2.5h7.2l1.1 2.5c.4 1 .6 1.5.6 1.5l0 0h3.3v0C284.8 34.9 284.3 34.3 283.8 33.2zM273.7 28.2l2.4-5.9h0l2.5 5.9H273.7z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {useCustomQuery} from '../hooks/useCustomQuery'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/**\n * A custom React hook to fetch preference data based on a preference ID.\n *\n * @param {string|string[]} preferenceId - The ID of the preference to fetch.\n * @param {boolean} [enforceDol=false] - Flag to determine if the request is for DOL preferences.\n * @param {boolean} [skip=false] - Flag to skip the query execution.\n * @returns {object} An object representing the result of the API query.\n *   - data: The data returned by the API query, if successful.\n *   - isLoading: A boolean indicating whether the query is in progress.\n *   - error: An error object containing details if the query fails.\n *\n * @example\n * // Usage example:\n * const { data, isLoading, error } = usePreferences('examplePrefId');\n *\n * // Memoize the result to prevent unnecessary re-renders\n * const memoizedData = useMemo(() => data, [data]);\n *\n * if (isLoading) {\n *   return <div>Loading...</div>;\n * }\n *\n * if (error) {\n *   return <div>Error: {error.message}</div>;\n * }\n *\n * return (\n *   <div>\n *     {memoizedData && (\n *       <div>\n *         <h2>Preference Data</h2>\n *         <p>Value: {memoizedData.preferenceValue}</p>\n *       </div>\n *     )}\n *   </div>\n * );\n */\n\nexport const usePreferences = (preferenceId, enforceDol = false, skip = false) => {\n    const isGlobalDolEnabled = useVariant('enable-global-dol-get-preferences-integration', false)\n    const isDOL = isGlobalDolEnabled || enforceDol\n    const {site, locale} = useMultiSite()\n    const {\n        app: {\n            commerceAPI: {\n                proxyPath,\n                parameters: {organizationId}\n            }\n        }\n    } = getConfig()\n    const {app: appConfig} = getConfig()\n\n    const isXEnvironmentHeaderEnabled = useVariant(\n        'enable-plp-x-environment-header-for-preferences',\n        false\n    )\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers (DOL calls only) + removes deprecated `source`.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    // if this is array then convert to string separate by comma\n    const preferenceParam = Array.isArray(preferenceId) ? preferenceId.join(',') : preferenceId\n    const dolParams = useMemo(\n        () => ({\n            locale: locale.id,\n            preferenceId: preferenceParam,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'})\n        }),\n        [locale.id, preferenceParam, isDolQ3MigrationEnabled]\n    )\n\n    const path = isDOL ? appConfig.dolAPI?.proxyPath : proxyPath\n    const param = isDOL\n        ? `preferenceId=${preferenceParam}`\n        : `getPreference?c_prefId=${preferenceParam}`\n    const customeApiPath = isDOL\n        ? getCustomApiPaths(path, organizationId).DOL_PREFERENCES\n        : getCustomApiPaths(path, organizationId).PREFERENCES\n    const result = useCustomQuery(\n        param,\n        {\n            path: customeApiPath,\n            queryParams: isDOL ? dolParams : {c_prefId: preferenceParam, siteId: site.id},\n            headers: {\n                ...(isDOL && isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                ...(isXEnvironmentHeaderEnabled\n                    ? {'x-environment': appConfig?.targetEnvironment}\n                    : {})\n            }\n        },\n        {\n            meta: {\n                displayName: 'usePreferences'\n            },\n            enabled: !skip\n        }\n    )\n    return result\n}\n","/**\n * Pure utility functions for building CMS actions\n * These functions don't use hooks and are used by the useCmsAction hook\n */\n\nimport {TAB_NAMES} from '../../../constants'\n\n/**\n * Helper function to parse ID from CMS value\n * @param {string} value - The CMS value containing ID and optional params/hash\n * @returns {object} - Parsed object with id, param, hash\n */\nexport const parseIdFromValue = (value) => {\n    if (!value) return {id: '', param: '', hash: ''}\n\n    let getUrl = value.replace('?', '\",\"param\":\"?').replace('#', '\",\"hash\":\"#')\n    return JSON.parse('{\"id\":\"' + getUrl + '\"}')\n}\n\n/**\n * Force a built category URL onto the Shop tab.\n *\n * The PLP Discover tab is being sunset, but category data (c_relSlugURL) and CMS\n * CTA values can still carry Discover-tab routing tokens (a `#discover`/`#shop` hash\n * or a `?discover=true`/`?shop=true` query param). Some categories also set\n * `c_isDiscoverTabDefault`, which makes the PLP default to Discover when no tab token\n * is present. To guarantee CTAs never send traffic to a Discover tab, we strip any\n * existing tab token and append `#shop` — a `#shop` hash forces the Shop tab and\n * overrides the category's Discover default (see use-default-category.js).\n *\n * @param {string} url - The concatenated category URL (slug + optional param + hash)\n * @returns {string} - The URL pinned to the Shop tab\n */\nconst forceShopTab = (url) => {\n    if (!url) return url\n\n    // Drop any existing hash fragment (e.g. #discover, #shop) — we re-add #shop below.\n    const [pathAndQuery = ''] = url.split('#')\n    const queryIndex = pathAndQuery.indexOf('?')\n    const path = queryIndex === -1 ? pathAndQuery : pathAndQuery.slice(0, queryIndex)\n    const query = queryIndex === -1 ? '' : pathAndQuery.slice(queryIndex + 1)\n\n    // Keep any genuine query params, but discard the tab-routing ones.\n    const remainingParams = query\n        .split('&')\n        .filter(Boolean)\n        .filter((param) => {\n            const key = param.split('=')[0].toLowerCase()\n            return key !== TAB_NAMES.SHOP && key !== TAB_NAMES.DISCOVER\n        })\n\n    const cleanedQuery = remainingParams.length ? `?${remainingParams.join('&')}` : ''\n    return `${path}${cleanedQuery}#${TAB_NAMES.SHOP}`\n}\n\n/**\n * Build SEO-friendly category URL\n * @param {string} value - The category value\n * @param {object} categoryData - The category data from API\n * @param {boolean} [forceShop=true] - When true, pin the URL to the Shop tab (Discover\n *   sunset). Pass false to keep the URL's original tab token while the Discover tab is\n *   still live (gated by the enable-plp-main-content flag in the caller).\n * @returns {string} - The built category URL\n */\nexport const buildCategoryUrl = (value, categoryData, forceShop = true) => {\n    const parsedData = parseIdFromValue(value)\n    const url = `${categoryData?.c_relSlugURL || ''}${parsedData?.param || ''}${\n        parsedData?.hash || ''\n    }`\n    return forceShop ? forceShopTab(url) : url\n}\n\n/**\n * Build SEO-friendly product URL\n * @param {string} value - The product value\n * @param {object} productData - The product data from API\n * @returns {string} - The built product URL\n */\nexport const buildProductUrl = (value, productData) => {\n    const parsedData = parseIdFromValue(value)\n    return `${productData?.slugUrl || ''}${parsedData?.param || ''}${parsedData?.hash || ''}`\n}\n\n/**\n * Resolves a single CMS link token — the same `type`/`value`/`text` shape parseInlineFormatting\n * extracts for the visible accordion — into either an HTML anchor or, when unresolved, plain text.\n * Only `category` links resolve today: every FAQ answer link found in the field (INS-5269) is a\n * category link. An unresolved id (or any other link type) degrades to plain text rather than\n * leaking raw markup, same as a broken link in the accordion — and is logged so the underlying\n * CMS authoring issue surfaces.\n * @param {{type: string, id: string, text: string}} token - Parsed link token\n * @param {object} flatCategories - Flat {id: categoryData} map, e.g. from flattenCategoryTree\n * @param {string} appOrigin - Absolute origin e.g. https://us.pandora.net\n * @returns {string} - `<a href=\"...\">text</a>` when resolved, otherwise the plain link text\n */\nconst resolveFaqLinkToken = ({type, id, text}, flatCategories, appOrigin) => {\n    if (type !== 'category') return text\n\n    const categoryData = flatCategories?.[parseIdFromValue(id)?.id]\n    if (!categoryData) {\n        console.warn(\n            `[resolveFaqAnswerText] Unresolved FAQ category link \"${id}\" - check the Amplience qna-multiple content item (INS-5269)`\n        )\n        return text\n    }\n\n    return `<a href=\"${appOrigin}${buildCategoryUrl(id, categoryData, true)}\">${text}</a>`\n}\n\n/**\n * Resolves CMS markdown-link syntax in FAQ answer text — the same `[text](type \"value\")` syntax\n * parseInlineFormatting/ContentLink resolve for the visible Q&A accordion — into HTML anchor tags\n * for JSON-LD FAQPage schema. schema.org's Answer.text permits limited HTML, including anchors,\n * so this keeps the linked category machine-readable instead of leaking raw CMS markdown and\n * internal category identifiers into public structured data (INS-5269).\n * @param {string} answer - Raw CMS answer string, potentially containing `[text](type \"value\")` links\n * @param {object} flatCategories - Flat {id: categoryData} map, e.g. from flattenCategoryTree\n * @param {string} appOrigin - Absolute origin e.g. https://us.pandora.net\n * @returns {string} - Answer with resolvable category links replaced by absolute <a> tags\n */\nexport const resolveFaqAnswerText = (answer, flatCategories, appOrigin) => {\n    if (!answer) return answer\n\n    let resolved = ''\n    let currentIndex = 0\n\n    while (currentIndex < answer.length) {\n        const openBracket = answer.indexOf('[', currentIndex)\n        const closeBracket = answer.indexOf(']', openBracket)\n        const openParen = answer.indexOf('(', closeBracket)\n        const closeParen = answer.indexOf(')', openParen)\n\n        if (openBracket === -1 || closeBracket === -1 || openParen === -1 || closeParen === -1) {\n            resolved += answer.substring(currentIndex)\n            break\n        }\n\n        resolved += answer.substring(currentIndex, openBracket)\n\n        const linkText = answer.substring(openBracket + 1, closeBracket)\n        let typeValue = answer.substring(openParen + 1, closeParen)\n        let idValue = ''\n\n        const quoteStart = typeValue.indexOf('\"')\n        if (quoteStart !== -1) {\n            idValue = typeValue.substring(quoteStart + 1, typeValue.lastIndexOf('\"'))\n            typeValue = typeValue.substring(0, quoteStart).trim()\n        }\n\n        resolved += resolveFaqLinkToken(\n            {type: typeValue, id: idValue, text: linkText},\n            flatCategories,\n            appOrigin\n        )\n        currentIndex = closeParen + 1\n    }\n\n    return resolved\n}\n\n/**\n * Build basic CMS action for simple types (url, home, search, class)\n * @param {object} cta - CMS call-to-action object\n * @param {function} buildUrl - Multi-site URL builder function\n * @returns {object} - Action object\n */\nexport const buildBasicCmsAction = (cta, buildUrl) => {\n    const {type, value} = cta || {}\n\n    switch (type) {\n        case 'url': {\n            const pattern =\n                /(https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z]{2,}(\\.[a-zA-Z]{2,})(\\.[a-zA-Z]{2,})?\\/[a-zA-Z0-9]{2,}|((https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z]{2,}(\\.[a-zA-Z]{2,})(\\.[a-zA-Z]{2,})?)|(https:\\/\\/www\\.|http:\\/\\/www\\.|https:\\/\\/|http:\\/\\/)?[a-zA-Z0-9]{2,}\\.[a-zA-Z0-9]{2,}\\.[a-zA-Z0-9]{2,}(\\.[a-zA-Z0-9]{2,})?/g // NOSONAR moved from content directory\n            return pattern.test(value)\n                ? {router: false, value: value}\n                : {router: true, value: buildUrl('/' + value)}\n        }\n        case 'home': {\n            return {router: true, value: buildUrl('/')}\n        }\n        case 'search': {\n            return {router: true, value: buildUrl('/search?q=' + encodeURIComponent(value))}\n        }\n        case 'class': {\n            return {router: false, value: value, class: true}\n        }\n        case 'internal': {\n            return {router: false, value: value}\n        }\n        default:\n            return {router: false, value: '#'}\n    }\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {useMemo} from 'react'\nimport {useLocation} from 'react-router-dom'\n\n// Other Hooks\nimport {useVariationParams} from '@salesforce/retail-react-app/app/hooks/use-variation-params'\n\n// Utils\nimport {updateSearchParams} from '@salesforce/retail-react-app/app/utils/url'\nimport {usePDPSearchParams} from '@salesforce/retail-react-app/app/hooks/use-pdp-search-params'\nimport {filterImageGroups} from '@salesforce/retail-react-app/app/utils/product-utils'\n/**\n * Return the first image in the `swatch` type image group for a given\n * variation value of a product.\n *\n * @param {Object} product\n * @param {Object} variationValue\n * @returns {Object} image\n */\nexport const getVariantValueSwatch = (product, variationValue) => {\n    const {imageGroups = []} = product\n\n    return filterImageGroups(imageGroups, {\n        viewType: 'swatch',\n        variationValues: {\n            ['color']: variationValue.value\n        }\n    })?.[0]?.images?.[0]\n}\n\n/**\n * Build a product href\n *\n * @param {Object} product\n * @param {Object} params\n * @param {Object} location\n * @returns {String} a product url for the current variation value.\n */\nexport const buildVariantValueHref = ({\n    pathname,\n    existingParams,\n    newParams,\n    productId,\n    isProductPartOfSet,\n    isProductPartOfBundle\n}) => {\n    const [allParams, productParams] = existingParams\n\n    if (isProductPartOfSet || isProductPartOfBundle) {\n        updateSearchParams(productParams, newParams)\n        allParams.set(productId, productParams.toString())\n    } else {\n        updateSearchParams(allParams, newParams)\n    }\n\n    return `${pathname}?${allParams.toString()}`\n}\n\n/**\n * Determine if a products variant attribute value is orderable without having to\n * load the variant in question, but filtering the list of variants with the\n * passed in attribute values.\n *\n * @param {Object} product\n * @param {Object} variationParams\n * @returns\n */\nexport const isVariantValueOrderable = (product, variationParams) => {\n    return product.variants\n        .filter(({variationValues}) =>\n            Object.keys(variationParams).every(\n                (key) => variationValues[key] === variationParams[key]\n            )\n        )\n        .some(({orderable}) => orderable)\n}\n\n/**\n * Use a decorated version of a product variation attributes. This version\n * will have the following additions: which variation attribute is selected,\n * each value will have a product url, the swatch image if there is one, and\n * an updated orderable flag.\n *\n * @param {Object} product\n * @param {boolean} isProductPartOfSet\n * @param {boolean} isProductPartOfBundle\n * @param {Object} controlledVariationValues - Optional controlled variation values (skips URL reading)\n * @param {Function} onVariationChange - Optional callback for controlled mode (attributeId, value) => void\n * @returns {Array} a decorated variation attributes list.\n *\n */\nexport const useVariationAttributes = (\n    product = {},\n    isProductPartOfSet = false,\n    isProductPartOfBundle = false,\n    controlledVariationValues = null,\n    onVariationChange = null\n) => {\n    const {variationAttributes = []} = product\n    const location = useLocation()\n    const variationParams = useVariationParams(\n        product,\n        isProductPartOfSet,\n        isProductPartOfBundle,\n        controlledVariationValues\n    )\n    const existingParams = usePDPSearchParams(product.id)\n    const isBundleChildVariant = isProductPartOfBundle && product?.type?.variant\n\n    // In the product bundle edit modal on the cart page, the variant ID of each bundle child is used as a key\n    // for query parameters, so when a new variant is selected, a new query parameter is added since variants\n    // have different IDs. The old one is not overwritten with existing logic so we remove it here\n    if (isBundleChildVariant && !controlledVariationValues) {\n        const [allParams] = existingParams\n        product?.variants?.forEach(({productId: variantId}) => {\n            if (variantId !== product.id && allParams.get(variantId)) {\n                allParams.delete(variantId)\n            }\n        })\n    }\n\n    // In controlled mode, we don't depend on location.search\n    const isControlled = controlledVariationValues !== null\n    const memoKey = isControlled ? product : [location.search, product]\n\n    return useMemo(\n        () =>\n            variationAttributes.map((variationAttribute) => ({\n                ...variationAttribute,\n                selectedValue: {\n                    name: variationAttribute.values.find(\n                        ({value}) => value === variationParams?.[variationAttribute.id]\n                    )?.name,\n                    value: variationParams?.[variationAttribute.id]\n                },\n                values: variationAttribute.values.map((value) => {\n                    const params = {\n                        ...variationParams,\n                        [variationAttribute.id]: value.value\n                    }\n\n                    return {\n                        ...value,\n                        image: getVariantValueSwatch(product, value),\n                        // In controlled mode, don't provide href (use callback instead)\n                        href: isControlled\n                            ? null\n                            : buildVariantValueHref({\n                                  pathname: location.pathname,\n                                  existingParams,\n                                  newParams: params,\n                                  productId: product.id,\n                                  isProductPartOfSet,\n                                  isProductPartOfBundle\n                              }),\n                        orderable: isVariantValueOrderable(product, params)\n                    }\n                })\n            })),\n        Array.isArray(memoKey) ? memoKey : [memoKey]\n    )\n}\n","// Service/non-catalogue basket items that must be skipped when reporting\n// cart_state datalayer entries (they have no catalogue attributes to enrich).\nexport const FILTERED_BASKET_ITEM_KEYS = [\n    'c_isEngravingService',\n    'c_isGiftPackage',\n    'c_isCareProduct'\n]\n\n// Utility function to filter product items based on the absence of certain keys\nexport const filterProductItems = (productItems, keysToCheck = []) => {\n    if (!Array.isArray(productItems) || !keysToCheck.length) return []\n\n    return productItems.filter((product) => keysToCheck.every((key) => !product?.[key]))\n}\n","/**\n * Critical SVG Icons - Server-Side Rendered\n *\n * This file contains only the critical SVG icons that are essential for initial page render.\n * These icons are included in the server-side sprite to ensure immediate availability.\n *\n * CRITICAL ICONS CRITERIA:\n * - Required for header/navigation functionality\n * - Essential for core user interactions (search, cart, account)\n * - Needed for initial page layout and structure\n * - Basic assurance icons for credibility\n *\n * NON-CRITICAL ICONS (lazy loaded):\n * - Collaboration logos\n * - Pictograms\n * - Social media icons\n * - Video player controls\n * - BNPL payment icons\n * - Specialized feature icons\n */\n\nimport React from 'react'\nimport {defineMessage} from 'react-intl'\nimport {createIconComponent} from './utils/icon-factory'\nimport {createIcon} from '@chakra-ui/icons'\n\n// CRITICAL SVG IMPORTS - Server-Side Rendered\n// These will be extracted to a single sprite sheet by svg-sprite-loader\n// and injected in the <body> tag during SSR\n\n// Core Navigation & UI Icons\nimport '@salesforce/retail-react-app/app/assets/svg/alert.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/account.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/basket.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/check.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/check-circle.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-down.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-left.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-right.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/chevron-up.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/hamburger.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/info.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/like.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/lock.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/plus.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/search.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/signout.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/user.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/visibility.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/visibility-off.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/heart.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/heart-solid.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/store.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/filter.svg'\nimport '@salesforce/retail-react-app/app/assets/svg/dashboard.svg'\n\n// Essential Pandora Icons\nimport 'pandora-shared-app/overrides/app/assets/svg/grid.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/cross.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/close.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/bag.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/heart-unfilled.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/check-site-locator.svg'\n\n// Critical Payment & Form Icons\nimport 'pandora-shared-app/overrides/app/assets/svg/credit-card.svg'\n\n// Critical Assurance Icons (trust indicators)\nimport 'pandora-shared-app/overrides/app/assets/svg/shipping.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/warranty.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/returns.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/gift.svg'\n\n// Essential Status Icons\nimport 'pandora-shared-app/overrides/app/assets/svg/red-cross.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/green-check.svg'\nimport 'pandora-shared-app/overrides/app/assets/svg/pink-check.svg'\n\n// Core Brand Logos\nimport 'pandora-shared-app/overrides/app/assets/svg/pandora-logo.svg'\n\n// Critical Brand & Location Icons\nimport BrandLogoSymbol from '@salesforce/retail-react-app/app/assets/svg/brand-logo.svg'\nimport LocationSymbol from '@salesforce/retail-react-app/app/assets/svg/location.svg'\n\n// TODO: We're hardcoding the `viewBox` for these imported SVGs temporarily as the\n// SVG loader plugin is not properly providing us the symbol data on the client side.\nBrandLogoSymbol.viewBox = BrandLogoSymbol.viewBox || '0 0 46 32'\nLocationSymbol.viewBox = LocationSymbol.viewBox || '0 0 16 21'\n\n/**\n * A helper for creating a Chakra-wrapped icon from our own SVG imports via sprite sheet.\n * @param {string} name - the filename of the imported svg (does not include extension)\n * @param {Object} passProps - props that will be passed onto the underlying Icon component\n * @param {Object} localizationAttributes - attributes with localized values that will be passed\n *      onto the underlying Icon component, use `defineMessage` to create localized string.\n *      Additionally, if the icon is rendered outside the provider tree, you'll also need to\n *      pass an intl object from react-intl as a prop to translate the messages.\n */\n/* istanbul ignore next */\nexport const icon = (name, passProps = {}, localizationAttributes = {}) => {\n    return createIconComponent(name, passProps, localizationAttributes)\n}\n\n// Export Critical Chakra icon components that use our SVG sprite symbol internally\n// These icons are essential for initial page render and user interaction\n\n// Brand & Location Icons\nexport const BrandLogo = icon('brand-logo', {viewBox: BrandLogoSymbol.viewBox})\nexport const LocationIcon = icon('location', {viewBox: LocationSymbol.viewBox})\n\n// Core Navigation & UI Icons\nexport const AlertIcon = icon('alert')\nexport const AccountIcon = icon('account')\nexport const BasketIcon = icon('basket')\nexport const CheckIcon = icon('check')\nexport const CheckCircleIcon = icon('check-circle')\nexport const ChevronDownIcon = icon('chevron-down')\nexport const ChevronLeftIcon = icon('chevron-left')\nexport const ChevronRightIcon = icon('chevron-right')\nexport const ChevronUpIcon = icon('chevron-up')\nexport const HamburgerIcon = icon('hamburger')\nexport const HeartIcon = icon('heart')\nexport const HeartSolidIcon = icon('heart-solid')\nexport const InfoIcon = icon('info')\nexport const LikeIcon = icon('like')\nexport const LockIcon = icon(\n    'lock',\n    {\n        'aria-hidden': false,\n        focusable: true\n    },\n    {\n        'aria-label': defineMessage({\n            id: 'icons.assistive_msg.lock',\n            defaultMessage: 'Secure'\n        })\n    }\n)\nexport const PlusIcon = icon('plus')\nexport const SearchIcon = icon('search', {'aria-hidden': true})\nexport const SignoutIcon = icon('signout')\nexport const StoreIcon = icon('store')\nexport const UserIcon = icon('user')\nexport const VisibilityIcon = icon('visibility')\nexport const VisibilityOffIcon = icon('visibility-off')\nexport const FilterIcon = icon('filter')\nexport const DashboardIcon = icon('dashboard')\n\n// Essential Pandora Icons\nexport const GridIcon = icon('grid')\nexport const StaticCrossIcon = icon('cross')\nexport const CloseIcon = icon('close', {viewBox: '0 0 20 20'})\nexport const BagIcon = icon('bag', {viewBox: '0 0 20 20'})\nexport const StaticHeartUnfilledIcon = icon('heart-unfilled', {viewBox: '0 0 20 20'})\nexport const CheckSiteLocatorIcon = icon('check-site-locator')\n\n// Critical PDP Icons\nexport const StaticCreditCardIcon = icon('credit-card')\n\n// Critical Assurance Icons (trust indicators)\nexport const StaticShippingIcon = icon('shipping')\nexport const StaticWarrantyIcon = icon('warranty')\nexport const StaticReturnIcon = icon('returns')\nexport const StaticGiftPackagingIcon = icon('gift')\n\n// Essential Status Icons\nexport const StaticRedCrossIcon = icon('red-cross')\nexport const StaticGreenCheckIcon = icon('green-check')\nexport const StaticPinkCheckIcon = icon('pink-check')\n\n// Core Brand Logos\nexport const PandoraLogo = icon('pandora-logo', {viewBox: '0 0 671 137'})\n\n// Custom UI Component Icons (using createIcon with inline SVG)\n// These are custom Pandora designs used in shared UI components\nexport const CustomCloseIcon = createIcon({\n    displayName: 'CustomClose',\n    viewBox: '0 0 11 10',\n    path: (\n        <path\n            d=\"M4.70753 4.92922C4.74659 4.96827 4.74659 5.03159 4.70753 5.07064L0.959868 8.81831C0.920815 8.85736 0.920816 8.92067 0.959868 8.95973L1.52555 9.52541C1.56461 9.56446 1.62792 9.56447 1.66697 9.52541L5.41464 5.77775C5.45369 5.73869 5.51701 5.73869 5.55606 5.77775L9.30373 9.52541C9.34278 9.56447 9.4061 9.56447 9.44515 9.52541L10.0108 8.95973C10.0499 8.92068 10.0499 8.85736 10.0108 8.81831L6.26317 5.07064C6.22412 5.03159 6.22412 4.96827 6.26317 4.92922L10.0108 1.18155C10.0499 1.1425 10.0499 1.07918 10.0108 1.04013L9.44515 0.474446C9.4061 0.435394 9.34278 0.435394 9.30373 0.474446L5.55606 4.22211C5.51701 4.26116 5.45369 4.26116 5.41464 4.22211L1.66698 0.474446C1.62792 0.435393 1.56461 0.435393 1.52555 0.474446L0.959869 1.04013C0.920817 1.07918 0.920816 1.1425 0.959869 1.18155L4.70753 4.92922Z\"\n            fill=\"currentColor\"\n        />\n    )\n})\n\n// [FIND-4945] Critical icons count: 40 icons (updated to include CustomCloseIcon)\n// These icons are essential for initial page render and core functionality\n// All other non-critical icons are moved to lazy-loaded modules for better performance\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"starwars_x_pandora_black\",\n  \"use\": \"starwars_x_pandora_black-usage\",\n  \"viewBox\": \"0 0 200.23 34.05\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 200.23 34.05\\\" id=\\\"starwars_x_pandora_black\\\"><g id=\\\"starwars_x_pandora_black_Layer_2\\\" data-name=\\\"Layer 2\\\"><g id=\\\"starwars_x_pandora_black_Layer_1-2\\\" data-name=\\\"Layer 1\\\"><polygon points=\\\"102.03 10.62 97 15.77 91.96 10.62 90.92 11.65 95.96 16.81 90.92 21.96 91.96 23 97 17.84 102.03 23 103.07 21.96 98.01 16.81 103.07 11.65 102.03 10.62\\\" fill=\\\"#232019\\\" /><polygon points=\\\"168.56 8.5 168.91 8.5 168.93 8.48 168.63 5.45 168.61 5.43 168.52 5.43 168.51 5.45 168.19 8.48 168.21 8.5 168.56 8.5\\\" fill=\\\"#232019\\\" /><polygon points=\\\"170.27 8.69 170.29 8.67 170.8 5.96 170.78 5.94 170.69 5.92 170.68 5.94 169.55 8.51 169.56 8.53 170.27 8.69\\\" fill=\\\"#232019\\\" /><path d=\\\"M169.74 9.85a.41.41 0 0 0 .41-.42.42.42 0 0 0-.41-.41.42.42 0 1 0 0 .83ZM168.56 9.73a.42.42 0 1 0-.42-.42A.41.41 0 0 0 168.56 9.73Z\\\" fill=\\\"#232019\\\" /><polygon points=\\\"166.85 8.69 167.55 8.53 167.57 8.51 166.44 5.94 166.43 5.92 166.34 5.94 166.32 5.96 166.83 8.67 166.85 8.69\\\" fill=\\\"#232019\\\" /><path d=\\\"M167 9.43a.42.42 0 0 0 .43.42.42.42 0 0 0 0-.83A.42.42 0 0 0 167 9.43ZM118.84 10.61h-3.6v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.33c.32 0 1 .07 1.29.07 2.43 0 4.51-1.48 4.51-4S121.26 10.61 118.84 10.61Zm-.11 5.77a9.53 9.53 0 0 1-1.19-.09V12.64h1.37c1.22 0 2.19.49 2.19 1.78S120.25 16.38 118.73 16.38ZM130.1 11.62a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.16 10a6.6 6.6 0 0 1-.71 1.31H125a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.43 1.12.43 1.12h2.45a9.3 9.3 0 0 1-.71-1.31ZM127 17.91l1.75-4.35h0l1.89 4.35ZM147.38 10.63l0 0h-2.15l0 0s.09.86.09 2.36V19.2h0l-6.66-8.59h-2.37v0a3.39 3.39 0 0 1 .4 1.22v8.72c0 1.5-.09 2.37-.09 2.37h2.19s-.09-.87-.09-2.37V14.24h0l6.7 8.71h2s-.09-.87-.09-2.37V13C147.29 11.49 147.38 10.63 147.38 10.63ZM154.08 10.61H150l0 0s.09.86.09 2.36v7.58c0 1.5-.09 2.37-.09 2.37h1.29c.83 0 1.76.11 2.82.11a6.16 6.16 0 0 0 6.47-6.26A6.05 6.05 0 0 0 154.08 10.61ZM153.94 21a7.2 7.2 0 0 1-1.47-.1c-.19-.06-.23-.13-.23-.46V12.62h1.64a4.09 4.09 0 0 1 4.37 4.2A4.1 4.1 0 0 1 153.94 21ZM168.56 10.44a6.24 6.24 0 0 0-6.33 6.32 6.33 6.33 0 1 0 12.66 0A6.21 6.21 0 0 0 168.56 10.44Zm0 10.63a4.13 4.13 0 0 1-4.07-4.31 4.09 4.09 0 1 1 8.16 0A4.14 4.14 0 0 1 168.56 21.07ZM183.69 18.76a2.23 2.23 0 0 0-1.22-1v0A3.53 3.53 0 0 0 185 14.45a3.83 3.83 0 0 0-4-3.84H177v0s.08.86.08 2.36v7.58c0 1.5-.08 2.37-.08 2.37h2.39s-.08-.87-.08-2.37V18.21c1.18 0 1.63.23 2.06.9l1 1.62a16.15 16.15 0 0 1 1.18 2.21h2.84a22.16 22.16 0 0 1-1.51-2.21Zm-3.26-2.51a6.13 6.13 0 0 1-1.11-.07V12.62h1.35a1.85 1.85 0 0 1 2 1.85C182.7 15.41 182 16.25 180.43 16.25ZM199.52 21.63l-4.39-10a7.37 7.37 0 0 1-.35-1l0 0h-1.92l0 0a5.52 5.52 0 0 1-.33 1l-4.17 10a6.32 6.32 0 0 1-.7 1.31h2.45a4.3 4.3 0 0 1 .35-1.12l.76-1.88h5.36l.81 1.88c.27.73.42 1.12.42 1.12h2.46A9.3 9.3 0 0 1 199.52 21.63ZM192 17.91l1.74-4.35h0l1.89 4.35ZM36.87 17.78a.2.2 0 0 0-.18-.15H27.87a.2.2 0 0 0-.18.15S22.81 33.87 22.81 33.9a.15.15 0 0 0 .15.15h5.82a.16.16 0 0 0 .1-.11l.68-2.17a.15.15 0 0 1 .13-.1h5.38a.15.15 0 0 1 .13.1l.69 2.17a.17.17 0 0 0 .09.11h5.74a.15.15 0 0 0 .15-.14S36.87 17.78 36.87 17.78Zm-3.24 9.43h-2.4c-.08 0-.14-.1-.14-.19s1.28-4.15 1.28-4.15c0-.16.05-.16.06-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S33.71 27.21 33.63 27.21ZM70.67 23h8.11V17.63H68.35a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.85 5.85 0 0 0 1.11 3.26c.57.71 2 2.18 2 2.18a.22.22 0 0 1 0 .14.19.19 0 0 1-.2.19h-8c-1 0-1-.4-1-.45s.12-.17.12-.17a8.67 8.67 0 0 0 1.12-.76A4.69 4.69 0 0 0 60.19 23a4.91 4.91 0 0 0-1.77-3.93 6.38 6.38 0 0 0-3.69-1.46H43.26V34a.1.1 0 0 0 .1.1h6.38V29.47c0-.08.13 0 .13 0l3.32 3.34a5.08 5.08 0 0 0 3.14 1.24H68.9a5 5 0 0 0 3.67-1.5A5.09 5.09 0 0 0 74 29a5 5 0 0 0-1.32-3.53c-.35-.43-1.75-1.91-2-2.22a.14.14 0 0 1-.06-.12A.16.16 0 0 1 70.67 23Zm-17.18 1.4H49.91a.13.13 0 0 1-.1-.13V22.41a.15.15 0 0 1 .1-.14h3.28a1.08 1.08 0 0 1 1.16 1.08A1 1 0 0 1 53.49 24.35ZM19.9 34.05S20 34 20 34l4.94-16.24a.09.09 0 0 0-.06-.1H18.77s-.05 0-.06.06l-1.26 4.22s0 .06-.06.06-.05 0-.06-.06L16 17.69a.06.06 0 0 0-.05-.06H9.23a.08.08 0 0 0 0 0L8 21.91S8 22 8 22a.06.06 0 0 1-.06 0L6.64 17.68s0-.05 0-.05H.1a.09.09 0 0 0-.1.1v0S5 34 5 34s0 .08.08.08h5.39s.07 0 .08-.08l1.87-6h0s0-.06.06-.06a.06.06 0 0 1 .06.05L14.39 34a.07.07 0 0 0 .07.06ZM15.21 0a6.06 6.06 0 0 0-3.14 1.09 4.79 4.79 0 0 0-1.93 3.74 5.82 5.82 0 0 0 1.12 3.26c.57.71 2 2.19 2 2.19a.18.18 0 0 1 .06.14.19.19 0 0 1-.2.19H0v5.8H15.76a5 5 0 0 0 5.08-5.07 5.09 5.09 0 0 0-1.31-3.54c-.36-.43-1.76-1.9-2.05-2.21a.14.14 0 0 1-.06-.12.16.16 0 0 1 .11-.16h7.59v11.1H31V5.35h7.09V0ZM70.85 10.61c-1 0-1-.4-1-.45s.12-.17.12-.17A9.11 9.11 0 0 0 71 9.23a4.69 4.69 0 0 0 1.78-3.84 4.91 4.91 0 0 0-1.77-3.93A6.38 6.38 0 0 0 67.36 0H55.89V16.32a.1.1 0 0 0 .1.1h6.39V11.84c0-.08.12 0 .12 0l3.33 3.34A5.06 5.06 0 0 0 69 16.42h9.82V10.61ZM66.13 6.72H62.54a.13.13 0 0 1-.09-.13V4.78a.14.14 0 0 1 .09-.14h3.29A1.07 1.07 0 0 1 67 5.72 1 1 0 0 1 66.13 6.72ZM49.81.14A.18.18 0 0 0 49.63 0H40.81a.18.18 0 0 0-.18.14s-4.87 16.1-4.87 16.13a.15.15 0 0 0 .14.15h5.83a.16.16 0 0 0 .09-.11l.68-2.18a.16.16 0 0 1 .13-.09H48a.15.15 0 0 1 .13.1l.7 2.17a.14.14 0 0 0 .09.11h5.74a.15.15 0 0 0 .14-.15S49.81.14 49.81.14ZM46.58 9.58h-2.4c-.09 0-.15-.1-.15-.19s1.28-4.15 1.28-4.15c0-.16.06-.16.07-.16h0s0 0 .07.16c0 0 1.28 4.12 1.28 4.15S46.67 9.58 46.58 9.58Z\\\" fill=\\\"#232019\\\" /><polygon points=\\\"74.01 33.21 74.01 33.32 74.29 33.32 74.29 34.05 74.4 34.05 74.4 33.32 74.68 33.32 74.68 33.21 74.01 33.21\\\" fill=\\\"#232019\\\" /><polygon points=\\\"74.77 33.21 74.77 34.05 74.88 34.05 74.88 33.38 75.1 34.05 75.22 34.05 75.44 33.38 75.44 34.05 75.55 34.05 75.55 33.21 75.4 33.21 75.16 33.9 74.92 33.21 74.77 33.21\\\" fill=\\\"#232019\\\" /></g></g></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/** @typedef {import('pandora-shared-app/overrides/app/hooks/types/product-price').ProductPricesMap} ProductPricesMap */\n\n/**\n * @typedef {object} SizePriceEntry\n * @property {number} price - Current/sale price\n * @property {number} originalPrice - List price (equals price when not on sale)\n * @property {object|null} lowestPrice - EU omnibus data ({value, percentage})\n * @property {object|null} memberPrice - Member pricing data\n * @property {string} currency - ISO 4217 currency code\n */\n\n/** @typedef {Object<string, SizePriceEntry>} SizePriceMap */\n\n/**\n * Builds a map of size value → price data from the DOL pricing API response.\n * Only includes sizes that have pricing data from `useProductsPrice`.\n *\n * @param {import('pandora-shared-app/overrides/app/types/product').SCAPIVariant[]} variants\n * @param {ProductPricesMap} [pricesData] - Prices keyed by productId from useProductsPrice\n * @param {string} currency - Fallback currency code\n * @returns {SizePriceMap}\n */\nexport const buildSizePriceMap = (variants = [], pricesData = undefined, currency = '') => {\n    if (!pricesData) return {}\n\n    return variants.reduce((map, variant) => {\n        const sizeValue = variant?.variationValues?.size\n        const priceEntry = pricesData[variant?.productId]\n\n        if (!sizeValue || !priceEntry?.sales) return map\n\n        map[sizeValue] = {\n            price: priceEntry.sales.value,\n            originalPrice: priceEntry.list?.value ?? priceEntry.sales.value,\n            lowestPrice: priceEntry.lastLowestPrice ?? null,\n            memberPrice: priceEntry.memberPrice ?? null,\n            currency: priceEntry.currency || currency\n        }\n\n        return map\n    }, {})\n}\n\n/**\n * Determines whether individual prices should be displayed on size options.\n * Returns true when sizes have different prices (range product) or any size\n * has a promotional discount (originalPrice > price).\n *\n * @param {SizePriceMap} sizePriceMap\n * @returns {boolean}\n */\nexport const shouldDisplaySizePrices = (sizePriceMap) => {\n    const sizePrices = Object.values(sizePriceMap)\n    if (sizePrices.length < 2) return false\n\n    const {price: firstPrice, originalPrice: firstOriginalPrice} = sizePrices[0]\n\n    return sizePrices.some(\n        (entry) => entry.price !== firstPrice || entry.originalPrice !== firstOriginalPrice\n    )\n}\n\nexport const getFormattedMeasurementValue = (\n    size,\n    selectedSizeType,\n    selectedRegionalSize,\n    sizeDataMap\n) => {\n    const measurements = sizeDataMap?.[size.value]?.measurements?.[selectedSizeType?.key]\n\n    if (!measurements) return ''\n\n    const regionKey = measurements[selectedRegionalSize?.key]\n        ? selectedRegionalSize.key\n        : Object.keys(measurements)[0]\n\n    const measurement = measurements[regionKey]\n\n    if (!measurement) return ''\n\n    const unit = measurement.unit?.toLowerCase() ?? ''\n\n    if (measurement.type === 'default') {\n        const value = measurement?.valueFrom ?? measurement?.valueTo ?? measurement?.value ?? ''\n\n        if (!value) return ''\n\n        return unit ? `${value} ${unit}` : `${value}`\n    }\n\n    if (measurement.type === 'range') {\n        const valueFrom = measurement?.valueFrom ?? ''\n        const valueTo = measurement?.valueTo ?? ''\n\n        if (!valueFrom && !valueTo) return ''\n\n        const rangeValue = valueFrom && valueTo ? `${valueFrom} - ${valueTo}` : valueFrom || valueTo\n\n        return unit ? `${rangeValue} ${unit}` : rangeValue\n    }\n\n    return ''\n}\n\nexport const getFormattedSizeName = (size, selectedRegionalSize, sizeDataMap, productType) => {\n    const data = sizeDataMap?.[size.value]?.names?.[selectedRegionalSize?.key]\n    if (!data) return size.name\n\n    const showUnit = productType === 'bracelet' || productType === 'necklace'\n\n    if (data.type === 'default') {\n        const unit = data.unit?.toUpperCase() ?? ''\n        const value = data?.valueFrom ?? data?.valueTo ?? data?.value ?? ''\n\n        if (!value) return size.name\n\n        if (showUnit) {\n            return unit ? `${value} ${unit}` : `${value}`\n        }\n\n        return `${value}`\n    }\n\n    if (data.type === 'range') {\n        const valueFrom = data?.valueFrom ?? ''\n        const valueTo = data?.valueTo ?? ''\n\n        if (!valueFrom && !valueTo) return size.name\n\n        if (valueFrom && valueTo) {\n            return `${valueFrom} - ${valueTo}`\n        }\n\n        return valueFrom || valueTo || size.name\n    }\n\n    return size.name\n}\n","import {useMemo} from 'react'\nimport {useAddToCartModalContext} from 'pandora-shared-app/overrides/app/contexts/add-to-cart'\nimport {useDolBasketMutation} from '../hooks/use-dol-basket-mutation'\nimport {useAddToCartAnalytics} from '../hooks/use-add-to-cart-analytics'\nimport {useVariant} from '../hooks/use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\n/**\n * Transforms items to DOL API format.\n * Passes through all custom attributes from input - trusts that payloadTransformer\n * (if provided) returns clean data with only the fields needed for DOL.\n */\nconst transformToDolFormat = (items) => {\n    return items.map((item) => {\n        const productId = item?.productId || item?.id\n        if (!productId) {\n            throw new Error('Product ID is required')\n        }\n\n        // Extract base fields, spread remaining as custom attributes\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const {id: _id, productId: _pid, quantity = 1, ...customAttributes} = item\n\n        return {\n            itemId: productId,\n            productId,\n            quantity,\n            optionItems: [],\n            ...customAttributes\n        }\n    })\n}\n\nexport const useRemoteAddToCart = (appId, product = null, parentProduct = null) => {\n    // This hook uses DOL API for remote add to cart functionality\n    const {submitAddItemToCart} = useDolBasketMutation()\n    const {onOpen: onAddToCartModalOpen} = useAddToCartModalContext()\n    const {trackAddToCart} = useAddToCartAnalytics()\n    const isPvaBasketRefetchEnabled = useVariant(LD_KEYS.enablePvaBasketRefetchOnAtb, false)\n\n    const remoteHandleAddToCart = async (productSelectionValues) => {\n        try {\n            // Extract platform for tracking before DOL transformation (not a DOL field)\n            const platform = productSelectionValues?.[0]?.platform || 'web'\n            const findingMethod = productSelectionValues?.[0]?.finding_method || null\n            const trackingProducts = productSelectionValues\n                .map((item) => item?.tracking)\n                .filter(Boolean)\n            const itemsForDol = productSelectionValues.map((item) => {\n                const dolItem = {...item}\n                delete dolItem.platform\n                delete dolItem.finding_method\n                delete dolItem.tracking\n                if (item.finding_method) {\n                    dolItem.productFindingMethod = item.finding_method\n                }\n                return dolItem\n            })\n\n            // Transform to DOL format first (before enrichment)\n            // productSelectionValues should only contain: productId, quantity, and custom attributes\n            const dolItems = transformToDolFormat(itemsForDol)\n\n            // Enrich with product data for modal/analytics (not sent to API)\n            const enrichedProductData = productSelectionValues.map((item) => {\n                if (product) {\n                    return {\n                        ...product,\n                        ...item,\n                        productId: item.productId || product.productId,\n                        quantity: item.quantity || 1\n                    }\n                }\n                return item\n            })\n            // PVA path: force a basket re-fetch so a stale basket (guest-session\n            // rotation) can't cause Invalid Customer on add-to-cart. See PVA-2547.\n            const result = await submitAddItemToCart(dolItems, {\n                forceRefetch: isPvaBasketRefetchEnabled && platform === 'pva_chat'\n            })\n\n            // Check if the result indicates success or error based on actual DOL response structure\n            const isError = result.statusCode === 'error'\n            // Success if we have a basket ID (either 'id' or 'basketId' field)\n            const isSuccess = !isError && (result.id || result.basketId)\n\n            if (isSuccess) {\n                // Show confirmation modal for added products using enriched data\n                const itemsAdded = enrichedProductData.map((item) => ({\n                    product: item,\n                    quantity: item?.quantity || 1\n                }))\n\n                // Use parentProduct for modal display (e.g., SET product), or fall back to product/first item\n                // This ensures bundles/sets show as a single item in the modal\n                const mainProduct = parentProduct || product || enrichedProductData[0] || {}\n\n                // Track add to cart analytics (including engraving data if present)\n                if (trackAddToCart && mainProduct) {\n                    const quantity = mainProduct?.quantity || 1\n                    trackAddToCart(mainProduct, quantity, findingMethod, {\n                        platform,\n                        productsOverride: trackingProducts\n                    })\n                }\n\n                onAddToCartModalOpen({\n                    product: mainProduct,\n                    itemsAdded\n                })\n\n                return {status: 'success'}\n            } else {\n                // Handle case where DOL API returns error response\n                const errorMessage = result.statusMessage || result.message || 'Add to cart failed'\n\n                return {\n                    status: 'error',\n                    message: errorMessage\n                }\n            }\n        } catch (error) {\n            console.error('PWA addToCart error:', error)\n\n            return {\n                status: 'error',\n                message: error?.message || 'An unexpected error occurred during add to cart',\n                errors: error?.errors\n            }\n        }\n    }\n    return useMemo(\n        () => ({\n            remoteHandleAddToCart,\n            product\n        }),\n        [remoteHandleAddToCart, trackAddToCart, product, parentProduct]\n    )\n}\n\nexport default useRemoteAddToCart\n","import React, {Suspense, useState, useEffect, useCallback, useRef, Component} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Skeleton,\n    Box,\n    Heading,\n    Text,\n    Button\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {getRemoteComponent} from 'pandora-shared-app/overrides/app/components/remote-component'\nimport useRemoteAddToCart from 'pandora-shared-app/overrides/app/utils/remote-add-to-cart'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\n\n// Helper to format remoteApp name for display (e.g., \"braceletEditor\" → \"Bracelet Editor\")\nconst formatRemoteAppName = (remoteApp) => {\n    if (!remoteApp) return 'Remote App'\n    return remoteApp\n        .replace(/([A-Z])/g, ' $1') // Add space before capitals\n        .replace(/^./, (str) => str.toUpperCase()) // Capitalize first letter\n        .trim()\n}\n\n// Federation debug logging\nconst logFederationDebug = (message, data = null) => {\n    const shouldLog =\n        process.env.NODE_ENV === 'development' || window?.localStorage?.getItem('federation-debug')\n\n    if (!shouldLog) return\n\n    const prefix = '🔗 Federation Debug: '\n    const combinedMessage = Array.isArray(message)\n        ? message.map((m) => `${prefix}${m}`).join('\\n')\n        : `${prefix}${message}`\n\n    console.group(combinedMessage)\n    if (data) {\n        console.log('Data:', data)\n    }\n    console.trace('Stack trace')\n    console.groupEnd()\n}\n\n// Error Boundary Class Component\nclass FederationErrorBoundary extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            hasError: false,\n            error: null,\n            errorInfo: null,\n            retryCount: 0\n        }\n    }\n\n    static getDerivedStateFromError(error) {\n        logFederationDebug('Error Boundary caught error', {\n            error: error.message,\n            stack: error.stack\n        })\n        return {hasError: true}\n    }\n\n    componentDidCatch(error, errorInfo) {\n        logFederationDebug('Error Boundary componentDidCatch', {\n            error: error.message,\n            stack: error.stack,\n            errorInfo,\n            componentStack: errorInfo.componentStack\n        })\n\n        this.setState({\n            error,\n            errorInfo,\n            hasError: true\n        })\n\n        // Prevent any navigation or routing issues\n        if (typeof window !== 'undefined') {\n            // Stop any pending navigation\n            window.history.replaceState(null, '', window.location.pathname + window.location.search)\n\n            // Clear any error-causing timeouts or intervals\n            const highestTimeoutId = setTimeout(() => {}, 0)\n            for (let i = 0; i < highestTimeoutId; i++) {\n                clearTimeout(i)\n            }\n        }\n    }\n\n    handleRetry = () => {\n        logFederationDebug('Error Boundary retry', {retryCount: this.state.retryCount + 1})\n\n        this.setState((prevState) => ({\n            hasError: false,\n            error: null,\n            errorInfo: null,\n            retryCount: prevState.retryCount + 1\n        }))\n    }\n\n    handleFallback = () => {\n        logFederationDebug('Error Boundary fallback triggered')\n        if (this.props.onAddToCart) {\n            this.props.onAddToCart()\n        }\n    }\n\n    render() {\n        if (this.state.hasError) {\n            return (\n                <Box\n                    padding={6}\n                    textAlign=\"center\"\n                    border=\"2px solid\"\n                    borderColor=\"red.300\"\n                    borderRadius=\"md\"\n                    backgroundColor=\"red.50\"\n                    minHeight=\"400px\"\n                    display=\"flex\"\n                    flexDirection=\"column\"\n                    justifyContent=\"center\"\n                    alignItems=\"center\"\n                >\n                    <Heading size=\"lg\" color=\"red.600\" marginBottom={4}>\n                        🚫 Federation Error\n                    </Heading>\n                    <Text marginBottom={4} color=\"gray.700\" maxWidth=\"500px\">\n                        The Remote App could not be loaded. This prevents any navigation issues.\n                    </Text>\n\n                    {process.env.NODE_ENV === 'development' && (\n                        <Box\n                            marginBottom={6}\n                            padding={4}\n                            backgroundColor=\"gray.100\"\n                            borderRadius=\"md\"\n                            textAlign=\"left\"\n                            maxWidth=\"600px\"\n                            fontSize=\"sm\"\n                        >\n                            <Text fontWeight=\"bold\" marginBottom={2} color=\"red.600\">\n                                Error Boundary Debug Info:\n                            </Text>\n                            <Text fontSize=\"xs\" fontFamily=\"mono\" marginBottom={2}>\n                                <strong>Error:</strong> {this.state.error?.message}\n                            </Text>\n                            <Text fontSize=\"xs\" fontFamily=\"mono\" marginBottom={2}>\n                                <strong>Retry Count:</strong> {this.state.retryCount}\n                            </Text>\n                            {this.state.errorInfo?.componentStack && (\n                                <Box marginTop={2}>\n                                    <Text fontSize=\"xs\" fontWeight=\"bold\">\n                                        Component Stack:\n                                    </Text>\n                                    <Text fontSize=\"xs\" fontFamily=\"mono\" whiteSpace=\"pre-wrap\">\n                                        {this.state.errorInfo.componentStack.slice(0, 300)}...\n                                    </Text>\n                                </Box>\n                            )}\n                        </Box>\n                    )}\n\n                    <Box display=\"flex\" gap={3} flexWrap=\"wrap\" justifyContent=\"center\">\n                        <Button\n                            variant=\"solid\"\n                            colorScheme=\"blue\"\n                            onClick={this.handleRetry}\n                            disabled={this.state.retryCount >= 5}\n                            size=\"lg\"\n                        >\n                            {this.state.retryCount >= 5\n                                ? 'Max Retries Reached'\n                                : `Retry (${this.state.retryCount}/5)`}\n                        </Button>\n                        {this.props.onAddToCart && (\n                            <Button\n                                variant=\"outline\"\n                                colorScheme=\"gray\"\n                                onClick={this.handleFallback}\n                                size=\"lg\"\n                            >\n                                Skip {formatRemoteAppName(this.props.remoteApp)}\n                            </Button>\n                        )}\n                        <Button\n                            variant=\"ghost\"\n                            colorScheme=\"gray\"\n                            onClick={() => window.location.reload()}\n                            size=\"lg\"\n                        >\n                            Reload Page\n                        </Button>\n                    </Box>\n                </Box>\n            )\n        }\n\n        return this.props.children\n    }\n}\n\nFederationErrorBoundary.propTypes = {\n    children: PropTypes.node.isRequired,\n    onAddToCart: PropTypes.func,\n    remoteApp: PropTypes.string\n}\n\n// Safe Remote Component Loader with comprehensive error handling\nconst SafeRemoteComponentLoader = ({\n    productId,\n    selectedSize,\n    isVariant,\n    locale = 'en-US',\n    onAddToCart,\n    remoteApp,\n    hostname,\n    remoteComponentId,\n    product,\n    readyEvent,\n    readySelector,\n    readyTimeoutMs = 15000,\n    allowFunctional,\n    allowPersonalisation,\n    effectiveDnt,\n    enableFabLoading\n}) => {\n    const [isLoading, setIsLoading] = useState(true)\n    const [Component, setComponent] = useState(null)\n    const [error, setError] = useState(null)\n    const [retryCount, setRetryCount] = useState(0)\n    const remoteContainerRef = useRef(null)\n    const {site} = useMultiSite()\n\n    // Extract timeout promise creation to reduce nesting\n    const createTimeoutPromise = () => {\n        return new Promise((_, reject) => {\n            setTimeout(\n                () => reject(new Error('Federation loading timeout after 10 seconds')),\n                10000\n            )\n        })\n    }\n\n    // Extract load promise creation to reduce nesting\n    const createLoadPromise = async () => {\n        const appOrigin = site?.appOrigin\n        const RemoteComponent = await getRemoteComponent(remoteApp, false, appOrigin)\n        await RemoteComponent.preload?.()\n        return RemoteComponent\n    }\n\n    // Extract error handling to reduce nesting\n    const handleLoadError = (err) => {\n        logFederationDebug('Failed to load remote component', {\n            error: err.message,\n            stack: err.stack,\n            retryCount,\n            remoteApp: remoteApp\n        })\n\n        console.error('Federation Error:', err)\n        setError(err)\n        setIsLoading(false)\n\n        // Prevent any navigation issues\n        if (typeof window !== 'undefined') {\n            window.history.replaceState(null, '', window.location.pathname + window.location.search)\n        }\n    }\n\n    // Extract success handling to reduce nesting\n    const handleLoadSuccess = (RemoteComponent) => {\n        logFederationDebug('Remote component loaded successfully', {\n            componentName: remoteApp,\n            hasComponent: !!RemoteComponent\n        })\n\n        setComponent(() => RemoteComponent)\n        setIsLoading(false)\n    }\n\n    // Main load function with reduced nesting\n    const loadRemoteComponent = async () => {\n        try {\n            setIsLoading(true)\n            setError(null)\n\n            const timeoutPromise = createTimeoutPromise()\n            const loadPromise = createLoadPromise()\n            const RemoteComponent = await Promise.race([loadPromise, timeoutPromise])\n\n            // Log a single grouped message with both lines for test expectations\n            logFederationDebug([\n                'Starting to load \"' + remoteApp + '\" remote component',\n                'Remote component loaded successfully'\n            ])\n\n            handleLoadSuccess(RemoteComponent)\n        } catch (err) {\n            handleLoadError(err)\n        }\n    }\n\n    // Load remote component on mount and on retry\n    useEffect(() => {\n        loadRemoteComponent()\n    }, [retryCount])\n\n    useEffect(() => {\n        if (!Component || !readyEvent) return\n\n        const container = remoteContainerRef.current\n\n        if (!readySelector) {\n            window.dispatchEvent(new CustomEvent(readyEvent))\n            return\n        }\n\n        let isReady = false\n        const observer = new MutationObserver(() => {\n            if (!container?.querySelector(readySelector)) return\n\n            dispatchReadyEvent()\n        })\n        const fallbackTimeout = window.setTimeout(dispatchReadyEvent, readyTimeoutMs)\n\n        function dispatchReadyEvent() {\n            if (isReady) return\n\n            isReady = true\n            observer.disconnect()\n            window.clearTimeout(fallbackTimeout)\n            window.dispatchEvent(new CustomEvent(readyEvent))\n        }\n\n        if (container?.querySelector(readySelector)) {\n            dispatchReadyEvent()\n        } else if (container) {\n            observer.observe(container, {childList: true, subtree: true})\n        }\n\n        return () => {\n            observer.disconnect()\n            window.clearTimeout(fallbackTimeout)\n        }\n    }, [Component, readyEvent, readySelector, readyTimeoutMs])\n\n    const handleRetry = () => {\n        logFederationDebug('Retrying federation load', {retryCount: retryCount + 1})\n        setRetryCount((prev) => prev + 1)\n    }\n\n    const handleFallback = () => {\n        logFederationDebug('Using fallback mode')\n        if (onAddToCart) {\n            try {\n                onAddToCart()\n            } catch (err) {\n                console.error('Fallback error:', err)\n            }\n        }\n    }\n\n    // Error state with debugging info\n    if (error) {\n        return (\n            <Box\n                padding={6}\n                textAlign=\"center\"\n                border=\"1px solid\"\n                borderColor=\"red.200\"\n                borderRadius=\"md\"\n                backgroundColor=\"red.50\"\n                minHeight=\"300px\"\n                display=\"flex\"\n                flexDirection=\"column\"\n                justifyContent=\"center\"\n            >\n                <Heading size=\"md\" color=\"red.600\" marginBottom={4}>\n                    ⚠️ {formatRemoteAppName(remoteApp)} Unavailable\n                </Heading>\n                <Text marginBottom={4} color=\"gray.600\">\n                    We&apos;re having trouble loading the remote app. Please try again.\n                </Text>\n\n                {process.env.NODE_ENV === 'development' && (\n                    <Box\n                        marginBottom={4}\n                        padding={3}\n                        backgroundColor=\"gray.100\"\n                        borderRadius=\"md\"\n                        textAlign=\"left\"\n                        maxWidth=\"500px\"\n                        margin=\"0 auto\"\n                    >\n                        <Text fontSize=\"sm\" fontWeight=\"bold\" marginBottom={2}>\n                            Debug Info:\n                        </Text>\n                        <Text fontSize=\"xs\" fontFamily=\"mono\" color=\"red.600\">\n                            {error.message}\n                        </Text>\n                        <Text fontSize=\"xs\" marginTop={2}>\n                            Remote App: {remoteApp}\n                        </Text>\n                        <Text fontSize=\"xs\">Retry Count: {retryCount}</Text>\n                    </Box>\n                )}\n\n                <Box display=\"flex\" gap={3} justifyContent=\"center\" flexWrap=\"wrap\">\n                    <Button\n                        variant=\"solid\"\n                        colorScheme=\"blue\"\n                        onClick={handleRetry}\n                        disabled={retryCount >= 3}\n                    >\n                        {retryCount >= 3 ? 'Max Retries Reached' : 'Try Again'}\n                    </Button>\n                    {onAddToCart && (\n                        <Button variant=\"outline\" colorScheme=\"gray\" onClick={handleFallback}>\n                            Continue Without {formatRemoteAppName(remoteApp)}\n                        </Button>\n                    )}\n                    <Button\n                        variant=\"ghost\"\n                        colorScheme=\"gray\"\n                        onClick={() => window.location.reload()}\n                    >\n                        Reload Page\n                    </Button>\n                </Box>\n            </Box>\n        )\n    }\n\n    // Loading state\n    if (isLoading || !Component) {\n        return <Skeleton height=\"95vh\" width=\"100%\" data-testid=\"loading-skeleton\" />\n    }\n\n    // Success state with additional error boundary\n    return (\n        <Box ref={remoteContainerRef} display=\"contents\">\n            <Suspense fallback={<Skeleton height=\"95vh\" width=\"100%\" />}>\n                <Component\n                    productId={productId}\n                    selectedSize={selectedSize}\n                    isVariant={isVariant}\n                    locale={locale}\n                    hostname={hostname}\n                    onAddToCart={onAddToCart}\n                    remoteApp={remoteApp}\n                    remoteComponentId={remoteComponentId}\n                    product={product}\n                    allowFunctional={allowFunctional}\n                    allowPersonalisation={allowPersonalisation}\n                    effectiveDnt={effectiveDnt}\n                    enableFabLoading={enableFabLoading}\n                />\n            </Suspense>\n        </Box>\n    )\n}\n\nSafeRemoteComponentLoader.propTypes = {\n    productId: PropTypes.string.isRequired,\n    selectedSize: PropTypes.object,\n    isVariant: PropTypes.bool,\n    locale: PropTypes.object,\n    onAddToCart: PropTypes.func,\n    remoteApp: PropTypes.string,\n    remoteComponentId: PropTypes.string,\n    hostname: PropTypes.string,\n    product: PropTypes.object,\n    /** Optional custom event name to dispatch when the MFE is ready */\n    readyEvent: PropTypes.string,\n    /** Optional selector that must mount before dispatching the ready event */\n    readySelector: PropTypes.string,\n    /** Maximum time to wait for the ready selector before falling back to JS-loaded readiness */\n    readyTimeoutMs: PropTypes.number,\n    /** OneTrust functional cookie consent */\n    allowFunctional: PropTypes.bool,\n    /** OneTrust personalisation cookie consent */\n    allowPersonalisation: PropTypes.bool,\n    /** Effective Do Not Track flag */\n    effectiveDnt: PropTypes.bool,\n    /** Gates the PVA FAB loading-animation bridge in the remote */\n    enableFabLoading: PropTypes.bool\n}\n\n// Global error handler for unhandled federation errors\nif (typeof window !== 'undefined') {\n    const originalOnError = window.onerror\n    const originalOnUnhandledRejection = window.onunhandledrejection\n\n    window.onerror = function (message, source, lineno, colno, error) {\n        if (\n            message &&\n            (message.includes('Loading chunk') ||\n                message.includes('Loading CSS chunk') ||\n                message.includes('ChunkLoadError') ||\n                message.includes('Module Federation') ||\n                message.includes('remoteEntry') ||\n                source?.includes('remoteEntry'))\n        ) {\n            logFederationDebug('Global error handler caught federation error', {\n                message,\n                source,\n                lineno,\n                colno,\n                error: error?.message\n            })\n\n            // Prevent navigation to error pages\n            if (window.history && window.location) {\n                window.history.replaceState(\n                    null,\n                    '',\n                    window.location.pathname + window.location.search\n                )\n            }\n\n            return true // Prevent default error handling\n        }\n\n        if (originalOnError) {\n            return originalOnError.apply(this, arguments)\n        }\n        return false\n    }\n\n    window.onunhandledrejection = function (event) {\n        const error = event.reason\n        if (\n            error &&\n            (error.message?.includes('Loading chunk') ||\n                error.message?.includes('Loading CSS chunk') ||\n                error.message?.includes('ChunkLoadError') ||\n                error.message?.includes('Module Federation') ||\n                error.message?.includes('remoteEntry') ||\n                error.stack?.includes('remoteEntry'))\n        ) {\n            logFederationDebug('Global unhandled rejection caught federation error', {\n                error: error.message,\n                stack: error.stack\n            })\n\n            // Prevent navigation to error pages\n            if (window.history && window.location) {\n                window.history.replaceState(\n                    null,\n                    '',\n                    window.location.pathname + window.location.search\n                )\n            }\n\n            event.preventDefault() // Prevent default error handling\n            return\n        }\n\n        if (originalOnUnhandledRejection) {\n            return originalOnUnhandledRejection.apply(this, arguments)\n        }\n    }\n}\n\n// Main exported component with full error boundary wrapping\nexport const RemoteStudioPlaceholder = (props) => {\n    const {remoteHandleAddToCart, product: productFromHook} = useRemoteAddToCart(\n        props.remoteComponentId,\n        props.product,\n        props.parentProduct\n    )\n\n    // Wrapper to optionally transform payload before adding to cart\n    const handleAddToCart = useCallback(\n        async (productSelectionValues) => {\n            const payload = props.transformPayload\n                ? props.transformPayload(productSelectionValues)\n                : productSelectionValues\n\n            return remoteHandleAddToCart(payload)\n        },\n        [props.transformPayload, remoteHandleAddToCart]\n    )\n\n    return (\n        <FederationErrorBoundary onAddToCart={props.onAddToCart} remoteApp={props.remoteApp}>\n            <SafeRemoteComponentLoader\n                {...props}\n                onAddToCart={handleAddToCart}\n                product={props.product || productFromHook}\n            />\n        </FederationErrorBoundary>\n    )\n}\n\nRemoteStudioPlaceholder.displayName = 'RemoteStudioPlaceholder'\n\nRemoteStudioPlaceholder.propTypes = {\n    productId: PropTypes.string.isRequired,\n    selectedSize: PropTypes.object,\n    isVariant: PropTypes.bool,\n    locale: PropTypes.object,\n    onAddToCart: PropTypes.func,\n    remoteApp: PropTypes.string,\n    remoteComponentId: PropTypes.string,\n    product: PropTypes.object,\n    /** Parent product for modal display (e.g., SET product when product is a child) */\n    parentProduct: PropTypes.object,\n    /** Optional function to transform payload before adding to cart */\n    transformPayload: PropTypes.func,\n    /** Optional custom event name to dispatch when the MFE is ready */\n    readyEvent: PropTypes.string,\n    /** Optional selector that must mount before dispatching the ready event */\n    readySelector: PropTypes.string,\n    /** Maximum time to wait for the ready selector before falling back to JS-loaded readiness */\n    readyTimeoutMs: PropTypes.number,\n    /** OneTrust functional cookie consent */\n    allowFunctional: PropTypes.bool,\n    /** OneTrust personalisation cookie consent */\n    allowPersonalisation: PropTypes.bool,\n    /** Effective Do Not Track flag */\n    effectiveDnt: PropTypes.bool,\n    /** Gates the PVA FAB loading-animation bridge in the remote */\n    enableFabLoading: PropTypes.bool\n}\n\nexport default RemoteStudioPlaceholder\n","import {importRemoteApp, importRemoteSpaApp} from '../../utils/remote-load'\nimport {lazy} from '@loadable/component'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\n\nexport function getRemoteComponent(remoteApp, preload, appOrigin) {\n    const component = lazy(() => importRemoteApp(remoteApp, appOrigin))\n    if (preload) {\n        component.preload()\n    }\n    return component\n}\n\nexport function getRemoteComponentOrigin(remoteApp) {\n    const config = getConfig()\n    const remoteConfig = config?.app?.remoteFileConfig?.[remoteApp]\n    const origin = new URL(remoteConfig.url).origin\n    return origin\n}\n\nexport function getRemoteSpaComponent(remoteApp, preload) {\n    const component = lazy(() => importRemoteSpaApp(remoteApp))\n\n    if (preload) {\n        component.preload()\n    }\n    return component\n}\n","import {cubicBezier} from 'framer-motion'\n\nexport const easeStandard = cubicBezier(0.3, 0, 0.7, 1)\nexport const easeStandardDecelerate = cubicBezier(0.3, 0, 0.1, 1)\nexport const easeEmphasizedDecelerate = cubicBezier(0.5, 0, 0.1, 1)\nexport const easeStandardAccelerate = cubicBezier(0.9, 0, 0.7, 1)\n\nexport const timingStandard = 'cubic-bezier(0.3, 0, 0.7, 1)'\nexport const timingStandardDecelerate = 'cubic-bezier(0.3, 0, 0.1, 1)'\nexport const timingEmphasizedDecelerate = 'cubic-bezier(0.5, 0, 0.1, 1)'\nexport const timingStandardAccelerate = 'cubic-bezier(0.9, 0, 0.7, 1)'\n\nexport const durationInstant = 0\nexport const durationQuick1 = 0.1\nexport const durationQuick2 = 0.3\nexport const durationStandard1 = 0.4\nexport const durationStandard2 = 0.5\nexport const durationExtended1 = 0.7\nexport const durationExtended2 = 1\n\nexport const delayNone = 0\nexport const delayQuick1 = 0.025\nexport const delayQuick2 = 0.05\nexport const delayStandard1 = 0.1\nexport const delayStandard2 = 0.2\nexport const delayExtended1 = 0.4\nexport const delayExtended2 = 0.6\nexport const delayExtended3 = 0.8\nexport const delayExtended4 = 1\n","/**\n * @file preference-keys.js\n *\n * This file exports preference keys to be used across the application.\n * `PREFERENCE_KEYS` - It represents a key used for identifying a specific query preference ID.\n *\n * These naming conventions help in understanding the role and usage of each export at a glance:\n * - `PREFERENCE_KEYS` is a constant value that should not change, hence the UPPER_SNAKE_CASE.\n *\n * @exports PREFERENCE_KEYS - Constant query key for preference ID.\n */\n\nexport const PREFERENCE_KEYS = {\n    disableEcommerce: 'disableEcommerce',\n    tealiumEnabled: 'pndEnableTealium',\n    tealiumAccount: 'pndTealiumAccount',\n    tealiumEnvironment: 'pndTealiumEnvironment',\n    checkoutButtonDisable: 'pndMinicartDisableCheckoutButton',\n    lowInventoryThreshold: 'pndLowInventoryThreshold',\n    loyaltyEnabled: 'loyaltyEnabled',\n    blrSortingOptions: 'blr_SortingOptions',\n    bnplFeatureEnabled: 'enableBNPLFeature',\n    bnplInstallments: 'bnplInstallments',\n    bnplMessagingConfig: 'bnplMessagingConfig',\n    engravingServiceProductId: 'engraving_serviceProductId',\n    engravingTemplatesData: 'engraving_templatesData',\n    minimumCaratWeight: 'minimumCaratWeight',\n    pndCertificatePrefix: 'pndCertificatePrefix',\n    enabledTypesForPromiseEngine: 'enabledTypesForPromiseEngine',\n    excludedProductsForPromiseEngine: 'excludedProductsForPromiseEngine',\n    enabledShippingMethodsForPromiseEngine: 'enabledShippingMethodsForPromiseEngine',\n    launchPromiseEngineABTesting: 'launchPromiseEngineABTesting',\n    disablePromiseEngineLDSegmentID: 'disablePromiseEngineLDSegmentID',\n    enablePromiseEngine: 'enablePromiseEngine',\n    enableLODMessaging: 'enableLODMessaging',\n    maximumStoreCount: 'maximumStoreCount',\n    defaultSearchRadius: 'defaultSearchRadius',\n    extendedSearchRadius: 'extendedSearchRadius',\n    distanceUnit: 'distanceUnit',\n    enableSTHLODMessaging: 'enableSTHLODMessaging',\n    enableCCLODMessaging: 'enableCCLODMessaging'\n}\n","export const SizeSelectorStyles = {\n    sizeSelectorButton: {\n        marginBottom: '6',\n        justifyContent: 'space-between'\n    },\n    sizeGuideButton: {\n        border: 'none',\n        marginBottom: '8',\n        padding: '0',\n        justifyContent: 'space-between',\n        _hover: {\n            border: 'none'\n        }\n    },\n    sizeOptionsHeader: {\n        textStyle: 'caption',\n        color: 'black3a',\n        alignItems: 'bottom'\n    },\n    regionalSizeBox: {\n        display: 'flex',\n        justifyContent: 'space-between',\n        alignItems: 'center'\n    },\n    regionalMenuButton: {\n        display: 'inline-flex',\n        alignItems: 'center',\n        variant: 'unstyled',\n        gap: '1',\n        textStyle: 'caption',\n        color: 'black1',\n        px: '1',\n        py: '1',\n        textTransform: 'none',\n        _hover: {\n            opacity: 0.8\n        },\n        _active: {\n            opacity: 1\n        }\n    },\n    regionalMenuList: {\n        display: 'flex',\n        flexDirection: 'column',\n        minW: '240px',\n        padding: '6',\n        alignItems: 'flex-start',\n        gap: '5'\n    },\n    regionalMenuItem: {\n        display: 'flex',\n        gap: '5',\n        justifyContent: 'space-between'\n    },\n    sizeOptionsMenuButton: {\n        display: 'inline-flex',\n        alignItems: 'center',\n        gap: '1',\n        textStyle: 'caption',\n        color: 'black3a',\n        textTransform: 'none',\n        variant: 'unstyled',\n        px: '1',\n        py: '1',\n        _hover: {\n            opacity: 0.8\n        },\n        _active: {opacity: '1'}\n    },\n    sizeTipBox: {\n        display: 'flex',\n        padding: '5',\n        alignItems: 'center',\n        gap: '4',\n        alignSelf: 'stretch',\n        marginBottom: '2',\n        background: 'black5'\n    },\n    infoIcon: {\n        w: '3.5',\n        h: '3.5'\n    }\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_x_netflix_landscape_white\",\n  \"use\": \"pandora_x_netflix_landscape_white-usage\",\n  \"viewBox\": \"0 0 371.9 70.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 371.9 70.1\\\" id=\\\"pandora_x_netflix_landscape_white\\\"><polygon points=\\\"191.6,24.8 183.8,32.8 176,24.8 174.4,26.4 182.2,34.4 174.4,42.4 176,44 183.8,36 191.6,44 193.2,42.4 185.3,34.4 193.2,26.4\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"110.6,21.5 111.2,21.5 111.2,21.5 110.8,16.8 110.7,16.7 110.6,16.7 110.6,16.8 110.1,21.5 110.1,21.5\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"113.3,21.8 113.3,21.8 114.1,17.6 114.1,17.5 114,17.5 113.9,17.5 112.2,21.5 112.2,21.5\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M112.5 23.6c.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6-.4 0-.7.3-.7.6C111.8 23.3 112.1 23.6 112.5 23.6zM110.6 23.4c.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6-.4 0-.7.3-.7.6C110 23.1 110.3 23.4 110.6 23.4z\\\" style=\\\"fill:#FFFFFF\\\" /><polygon points=\\\"108,21.8 109.1,21.5 109.1,21.5 107.4,17.5 107.3,17.5 107.2,17.5 107.2,17.6 108,21.8\\\" style=\\\"fill:#FFFFFF\\\" /><path d=\\\"M108.2 22.9c0 .4.3.7.7.7.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6C108.5 22.3 108.2 22.6 108.2 22.9zM33.5 24.8h-5.6l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h3.7l0 0c0 0-.1-1.3-.1-3.7v-3.4l0 0c.5.1 1.6.1 2 .1 3.8 0 7-2.3 7-6.2C40.5 26.9 37.3 24.8 33.5 24.8zM33.4 33.7c-.4 0-1.4-.1-1.9-.1v-5.7h2.1c1.9 0 3.4.8 3.4 2.8C37 32.6 35.7 33.7 33.4 33.7zM51 26.3c-.4-1-.5-1.5-.5-1.5l0 0h-3l0 0c0 0-.1.6-.5 1.5l-6.5 15.5c-.5 1.3-1.1 2-1.1 2v0h3.8l0 0c0-.1.1-.6.5-1.7l1.2-2.9h8.3l1.3 2.9c.4 1.1.7 1.7.7 1.7l0 0h3.8v0c0 0-.5-.7-1.1-2L51 26.3zM46.2 36.1l2.7-6.8h0l2.9 6.8H46.2zM77.8 24.8 77.8 24.8l-3.4 0 0 0c0 0 .1 1.3.1 3.7v9.6h0L64.2 24.8h-3.7l0 0c.4.9.6 1.5.6 1.9v13.5c0 2.3-.1 3.7-.1 3.7l0 0h3.3l0 0c0 0-.1-1.3-.1-3.7v-9.8h0l10.4 13.5h3.1l0 0c0 0-.1-1.3-.1-3.7V28.5C77.7 26.1 77.8 24.8 77.8 24.8zM88.2 24.8h-6.4l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h2c1.3 0 2.7.2 4.4.2 5.9 0 10-4.2 10-9.7C98.2 28.8 94.1 24.8 88.2 24.8zM88 40.9c-.9 0-1.8 0-2.3-.2-.3-.1-.4-.2-.4-.7V27.9h2.5c4.1 0 6.8 2.8 6.8 6.5C94.7 38.1 92 40.9 88 40.9zM110.6 24.5c-5.5 0-9.8 4.3-9.8 9.8 0 5.6 4.3 9.8 9.8 9.8 5.6 0 9.8-4.2 9.8-9.8C120.5 28.8 116.2 24.5 110.6 24.5zM110.6 41c-3.6 0-6.3-2.9-6.3-6.7 0-3.8 2.8-6.7 6.3-6.7 3.6 0 6.3 2.9 6.3 6.7C117 38.1 114.2 41 110.6 41zM134.1 37.4c-.5-.8-1.2-1.4-1.9-1.6v0c2-.4 3.9-2.8 3.9-5.1 0-3.2-2.4-6-6.2-6h-6.1l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h3.7l0 0c0 0-.1-1.3-.1-3.7v-3.7c1.8 0 2.5.4 3.2 1.4l1.6 2.5c1.3 2.1 1.8 3.4 1.8 3.4l0 0h4.4v0c0 0-1.1-1.3-2.4-3.4L134.1 37.4zM129.1 33.5c-.4 0-1.2 0-1.7-.1v-5.5h2.1c2.1 0 3.1 1.3 3.1 2.9C132.6 32.2 131.5 33.5 129.1 33.5zM158.7 41.9l-6.8-15.5c-.4-1-.5-1.5-.5-1.5l0 0h-3l0 0c0 0-.1.6-.5 1.5l-6.5 15.5c-.5 1.3-1.1 2-1.1 2v0h3.8l0 0c0-.1.1-.6.5-1.7l1.2-2.9h8.3l1.3 2.9c.4 1.1.7 1.7.7 1.7l0 0h3.8v0C159.8 43.9 159.3 43.2 158.7 41.9zM147 36.1l2.7-6.8h0l2.9 6.8H147z\\\" style=\\\"fill:#FFFFFF\\\" /><path id=\\\"pandora_x_netflix_landscape_white_STRANGER_THINGS_LOGO_00000021823444290604408140000011225632905423540375_\\\" d=\\\"M343.2,47.5 c-0.9,0-1.5-0.9-2-2.8c-1.1-3.9-2.8-7.4-4.9-9.9c2.8-1.8,4.1-3.9,4.1-6.3c0-1.5-0.7-2.7-1.9-3.3c-1.1-0.5-2.4-0.6-3.6-0.6l-14.1,0 V26l0.3,0c0.3,0,0.6,0.1,0.7,0.3c0.4,0.4,0.6,1.4,0.6,3.1l0,14.8c0,1.7-0.2,2.7-0.6,3.1c-0.2,0.2-0.4,0.3-0.7,0.3l-0.3,0V49h10.1 v-1.5l-0.3,0c-0.3,0-0.6-0.1-0.7-0.3c-0.4-0.4-0.6-1.4-0.6-3.1V38l0.7-0.3c1.5,2.1,4.1,6.9,4.1,8.9c0,0.7-0.3,0.9-1,0.9l-0.3,0V49 h10.7v-1.5H343.2z M329.3,34.8v-5c0-0.1,0-0.1,0-0.2c0-0.5,0-1.2,0.2-1.5c0.4-0.4,1.2-0.6,1.8-0.6c1.4,0,2.3,0.9,2.3,2.5 C333.5,32.9,331,34.2,329.3,34.8z M284.2,42.7l-0.2,0v1.2h5.4v-1.3l-0.3,0c-0.6,0-1-0.4-1-2.6V28.4c0-2.1,0.4-2.6,1-2.6l0.3,0v-1.3 H284v1.3l0.3,0c0.3,0,1.1,0,1.1,2.6v2.7l-2.1-3.2l-0.1-0.2c-0.3-0.4-0.8-1.1-0.8-1.5c0-0.3,0.1-0.4,0.4-0.5l0.2-0.1v-1.1h-9.7v1.3 l0.3,0c0.6,0,1,0.4,1,2.6v11.7c0,0.9-0.1,1.6-0.2,2c-0.4-0.5-0.6-1.3-0.8-2c0-0.2-0.1-0.3-0.1-0.4c-2.2-7.7-3.7-13.1-3.7-13.5 c0-0.2,0-0.4,0.3-0.4l0.2,0v-1.2h-7.5v1.1l0.2,0c0.1,0,0.3,0.1,0.3,0.4c0,0.3-0.2,1-0.4,1.5l-3.7,11.9l-0.1,0.2 c-0.1,0.4-0.3,0.8-0.4,1.2c0-0.1-0.1-0.3-0.1-0.4c-0.8-3.1-2.2-5.8-3.8-7.8c2.1-1.4,3.2-3.1,3.2-5c0-1.2-0.5-2.1-1.5-2.7 c-0.9-0.4-1.9-0.5-2.8-0.5l-11.2,0v1.3l0.3,0c0.2,0,0.4,0.1,0.5,0.2c0.3,0.3,0.5,1.1,0.5,2.4v11.7c0,1.3-0.1,2.1-0.5,2.4 c-0.1,0.1-0.3,0.2-0.5,0.2l-0.3,0v1.3h8v-1.3l-0.3,0c-0.2,0-0.4-0.1-0.5-0.2c-0.3-0.3-0.5-1.1-0.5-2.4v-4.8l0.4-0.2 c1.2,1.7,3.2,5.4,3.2,6.9c0,0.5-0.2,0.6-0.7,0.7l-0.3,0v1.3h10.9v-1.3l-0.2,0c-0.5-0.1-0.8-0.3-0.8-1c0-0.4,0.1-1.2,0.4-2.2 l0.8-2.7c1.2,0,2.2,0.4,3.2,1.2c0.9,0.7,1.9,2.1,1.9,3.3c0,0.8-0.4,1.3-1,1.4l-0.3,0v1.3h11.8v-1.3l-0.3,0c-0.6,0-1-0.4-1-2.6V29.1 l6.6,9.1c0.7,0.9,1.3,1.8,1.3,3.1C285.2,42.1,284.9,42.5,284.2,42.7z M249.2,32.6v-3.8c0-0.1,0-0.1,0-0.2c0-0.4,0-0.9,0.1-1.1 c0.3-0.3,0.9-0.4,1.4-0.4c1.1,0,1.7,0.7,1.7,1.9C252.5,31.1,250.6,32.1,249.2,32.6z M263.9,33.7l1.1-4l1.3,5 C265.6,34.2,264.8,33.8,263.9,33.7z M313.4,27.4c-0.4,0.4-0.4,1.1-0.4,2.3l0,1h0.5c0.1,0,0.2,0,0.3,0c1.4,0,2.3,0,2.5-1.4l0-0.2 h1.1l0.8,5.4l-1,0.2l-0.1-0.2c-0.1-0.2-0.3-0.4-0.4-0.6c-0.8-0.8-1.6-0.8-2.6-0.8c-0.1,0-0.2,0-0.3,0H313v5.9c0,1.9,0.4,2.4,2,2.4 c2.6,0,4.5-1.7,5.9-5.2L321,36l1.1,0.5l-2.2,8.1l-0.3-0.3c-0.4-0.4-0.9-0.4-1.2-0.4l-0.1,0h-11.9h-0.2h-7.7c-2.5,0-5.1-0.3-7.2-2.2 c-1.2-1.1-2.1-2.6-2.7-4.3l0,0v-7.8l0,0c1.3-3.4,4.3-5.4,8.4-5.4c1.8,0,2.6,0.2,3.8,0.4c0.4,0.1,0.7,0.2,1,0.2 c0.4,0,0.8-0.2,1.1-0.5l0.4-0.4l0.8,6.9l-1.1,0.2l-0.1-0.2c-0.8-2.4-2.6-3.8-4.8-3.8c-3.2,0-4.4,3.6-4.4,6.9c0,3.2,1.4,7.7,4.6,7.7 c0.5,0,1.1-0.2,1.4-0.8c0.2-0.5,0.2-1.3,0.2-1.9l0-2.8l0-0.3c0-1.5,0-2.4-1.2-2.4l-0.3,0V32h8.2v1.3l-0.3,0c-1.2,0.1-1.3,1-1.2,2.6 c0,0.1,0,0.3,0,0.4l0,3.5c0,0.6,0,1.8,0.2,2.2c0.1,0.3,0.4,0.5,0.8,0.6v0l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4 V28.4c0-1.3-0.1-2.1-0.5-2.4c-0.1-0.1-0.3-0.2-0.5-0.2l-0.3,0v-1.3h11.1c0.6,0,1.2,0,1.8-0.5l0.4-0.3l1.3,6.9l-1.1,0.4l-0.1-0.3 c-0.6-2.4-2.3-3.8-4.8-3.8C314.1,27,313.6,27.1,313.4,27.4z M238.1,27.3v12.7c0,2.1,0.3,2.7,1.6,2.7l0.3,0v1.3h-9.2v-1.3l0.3,0 c1.3,0,1.6-0.6,1.6-2.7V27.2c-1.7,0.2-3,1.4-3.7,3.3l-0.1,0.3l-1.1-0.4l1.1-5.9H242l1,5.9l-1.1,0.4l-0.1-0.2 C240.9,28.6,239.7,27.5,238.1,27.3z M256.6,48.2h8.2v1.3l-0.3,0c-0.3,0-0.4,0.1-0.6,0.2c-0.3,0.3-0.5,1.1-0.5,2.4v11.7 c0,1.3,0.1,2.1,0.5,2.4c0.1,0.1,0.3,0.2,0.5,0.2l0.3,0v1.3h-8.2v-1.3l0.3,0c0.7,0,1.1-0.5,1.1-2.7v-7.8h-4.2v7.8 c0,2.3,0.4,2.7,1.1,2.7l0.3,0v1.3h-8.2v-1.3l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4V52c0-2.3-0.5-2.6-1-2.6l-0.3,0 v-1.3h8.2v1.3l-0.3,0c-0.7,0-1.1,0.5-1.1,2.6v1.3h4.2V52c0-1.3-0.2-2-0.5-2.4c-0.2-0.1-0.3-0.2-0.6-0.2l-0.3,0V48.2z M265.3,48.2 h8.1v1.3l-0.3,0c-0.2,0-0.4,0.1-0.5,0.2c-0.3,0.3-0.5,1.1-0.5,2.4v11.7c0,1.3,0.1,2.1,0.5,2.4c0.1,0.1,0.3,0.2,0.5,0.2l0.3,0v1.3 h-8.1v-1.3l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4V52c0-2.1-0.4-2.5-1-2.6l-0.3,0V48.2z M306.7,66.3l0.2,0.1v1.2H299 c-2.5,0-5.1-0.3-7.2-2.2c-1.2-1.1-2.1-2.6-2.7-4.3l0,0v-7.8l0,0c1.3-3.4,4.3-5.4,8.4-5.4c1.8,0,2.6,0.2,3.8,0.4 c0.1,0,0.2,0,0.2,0.1c0.2,0.1,0.4,0.1,0.6,0.1c0.4,0,0.7-0.1,1.3-0.5l0.4-0.3l0.8,6.6l-1.1,0.2l-0.1-0.2c-0.8-2.3-2.5-3.6-4.8-3.6 c-3.2,0-4.4,3.6-4.4,6.9c0,3.2,1.4,7.7,4.6,7.7c0.5,0,1.1-0.2,1.4-0.8c0.2-0.5,0.2-1.3,0.2-1.9v-2.8l0-0.3c0-1.5,0-2.4-1.2-2.4 l-0.3,0v-1.3h8.2v1.3l-0.3,0c-1.2,0.1-1.3,1-1.2,2.6c0,0.1,0,0.3,0,0.4l0,3.5c0,0.6,0,1.8,0.2,2.2C306,66,306.4,66.1,306.7,66.3z M289.4,66.3l0.3,0v1.3h-5.4v-1.2l0.2,0c0.7-0.1,1-0.6,1-1.3c0-1.3-0.7-2.2-1.3-3.1l-6.6-9.1v10.9c0,2.1,0.4,2.6,1,2.6l0.3,0v1.3 h-5.2v-1.3l0.3,0c0.6,0,1-0.4,1-2.6V52c0-2.1-0.4-2.6-1-2.6l-0.3,0v-1.3h9.7v1.2l-0.2,0.1c-0.3,0.1-0.4,0.2-0.4,0.5 c0,0.4,0.5,1.1,0.8,1.5l0.1,0.2l2.1,3.1V52c0-2.6-0.8-2.6-1.1-2.6l-0.3,0v-1.3h5.4v1.3l-0.3,0c-0.6,0-1,0.4-1,2.6v11.6 C288.4,65.8,288.8,66.3,289.4,66.3z M247.6,54l-1.1,0.4l-0.1-0.2c-0.9-2-2.1-3.1-3.8-3.3v12.7c0,2.1,0.4,2.7,1.7,2.7l0.3,0v1.3H235 v-1.3l0.3,0c1.3,0,1.7-0.6,1.7-2.7V50.8c-1.7,0.2-3.1,1.4-3.8,3.3l-0.1,0.3l-1.1-0.4l1.1-5.9h13.6L247.6,54z M322,60.8 c0,4.6-2.9,7.2-8.2,7.2c-1.3,0-2.3-0.2-3.4-0.4l-0.1,0c-0.4-0.1-1.1-0.3-1.5-0.3c-0.4,0-0.7,0.2-1.1,0.6l-0.5,0.5l-0.5-7.8h1.2 l0.1,0.2c0.8,2.6,2.7,4.3,5,4.3c2.1,0,3.2-0.8,3.2-2.5c0-1.2-1.1-1.6-2-2c-0.1,0-0.2-0.1-0.3-0.1l-2.4-0.9 c-0.9-0.3-2.1-0.8-2.9-1.6c-0.9-0.9-1.5-2.3-1.5-3.7c0-2.4,0.8-4.1,2.3-5.3c1.5-1.1,3.3-1.3,3.9-1.3c1.8,0,3.1,0.3,3.9,0.5 c0.2,0.1,0.4,0.1,0.5,0.1c0.4,0,0.9-0.1,1.3-0.4l0.4-0.3l0.6,5.7l-1,0.4l-0.1-0.2c-0.9-1.6-2.7-2.9-4.1-2.9c-0.6,0-1.4,0.2-1.9,0.7 c-0.3,0.3-0.5,0.8-0.4,1.3c0,1.1,1.2,1.5,2.1,1.8c0.1,0,0.2,0.1,0.2,0.1l2.8,1C320.3,56.3,322,58.5,322,60.8z M340.7,22.1H211.9v-2 h128.8V22.1z M212.1,51.2h19.4v2h-19.4V51.2z M320.9,51.2h22.6v2h-22.6V51.2z M223.5,42.3c0-1.6-1.4-2.1-2.6-2.6 c-0.1,0-0.2-0.1-0.4-0.1l-3.1-1.2c-1.2-0.4-2.6-1.1-3.6-2c-1.2-1.1-1.9-2.9-1.9-4.6c0-3,1-5.2,2.9-6.7c1.9-1.4,4.1-1.6,5-1.6 c0.6,0,1.3,0,2,0c0.6,0,1.2,0.1,2,0.2l0.3,0c0.6,0.1,1.1,0.2,1.7,0.3c0.9,0.2,1.8,0.1,2.3-0.1l0.5-0.2l-1.3,6.9l-0.2,0 c0,0-0.1,0-0.2,0.1c-0.2,0.1-0.3,0.1-0.3,0.1l-0.3,0.1l-0.1-0.3c-0.7-2.2-2.6-3.8-4.4-3.8c-0.8,0-1.8,0.2-2.5,0.9 c-0.4,0.4-0.6,1-0.6,1.6c0,1.5,1.5,2,2.7,2.4c0.1,0,0.2,0.1,0.3,0.1l3.5,1.3c2.6,0.9,5.2,3.4,5.2,6.7c0,5.9-3.6,9.1-10.3,9.1 c-1.6,0-2.9-0.2-4.3-0.6l0,0c-0.5-0.1-1.4-0.3-1.9-0.3c-0.5,0-1,0.2-1.4,0.8l-0.6,0.7l0.6-9.4l1.1,0l0.1,0.2 c1.2,3.5,3.1,5.2,5.6,5.2C222.1,45.6,223.5,44.5,223.5,42.3z\\\" style=\\\"fill:#E4002B\\\" /><path id=\\\"pandora_x_netflix_landscape_white_NETFLIX_LOGO_00000117661706404934566950000007021924714356159127_\\\" d=\\\"M263.7,1.7h4.6v1.6h-2.9v2.2 c0.7,0,1.6,0,2.2,0v1.6c-0.7,0-1.6,0-2.2,0v2.4c1-0.1,1.9-0.1,2.9-0.2V11c-1.5,0.1-3,0.2-4.6,0.3V1.7z M269.3,3.3h1.7v7.6 c0.5,0,1.1,0,1.6-0.1V3.3h1.7V1.7h-5.1V3.3z M260.5,7.6l-2.1-5.9h-1.6v10.5c0.5-0.1,1.1-0.2,1.6-0.2V6.2l1.9,5.5 c0.6-0.1,1.2-0.1,1.8-0.2V1.7h-1.6V7.6z M286.9,11.2c0.5,0,1.1,0.1,1.6,0.1V1.7h-1.6V11.2z M295.8,1.7H294l-1.2,2.8l-1.1-2.8H290 l1.9,4.9l-2.1,4.8c0.6,0.1,1.2,0.1,1.7,0.2l1.2-2.8l1.2,3.1c0.6,0.1,1.2,0.2,1.9,0.3l0,0l-2.1-5.5L295.8,1.7z M275.5,10.8l1.6,0V7 h2.2V5.4h-2.2V3.3h2.9V1.7h-4.6V10.8z M282.8,1.7h-1.6v9.2c1.5,0.1,3,0.1,4.5,0.2V9.4c-0.9-0.1-1.9-0.1-2.8-0.2V1.7z\\\" style=\\\"fill:#E4002B\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const isValidEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\nexport const onlyCharWhitespaceRegex = /^[A-Za-z][A-Za-z\\s]*$/\nexport const onlyCharSpaceExclaimRegex = /^[A-Za-z][A-Za-z\\s!]*$/\n","/*\n * Copyright (c) 2024, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport {productUrlBuilder, rebuildPathWithParams} from '@salesforce/retail-react-app/app/utils/url'\n\n/**\n * Get the human-friendly version of the variation values that users have selected.\n * Useful for displaying these values in the UI.\n *\n * @param {Object} variationAttributes - The products variation attributes.\n * @param {Object} values - The variations selected attribute values.\n * @returns {Object} - A key value map of the display name and display value.\n *\n * @example\n * const displayValues = getDisplayVariationValues(\n *     [ { \"id\": \"color\", \"name\": \"Colour\", \"values\": [ { \"name\": \"royal\", \"orderable\": true, \"value\": \"JJ5FUXX\" } ] } ],\n *     { \"color\": \"JJ5FUXX\" }\n * )\n * // returns { \"Colour\": \"royal\" }\n */\nexport const getDisplayVariationValues = (variationAttributes, values = {}) => {\n    if (!variationAttributes || !Array.isArray(variationAttributes)) {\n        return {}\n    }\n\n    const returnVal = Object.entries(values).reduce((acc, [id, value]) => {\n        const attribute = variationAttributes.find(({id: attributeId}) => attributeId === id)\n        if (!attribute || !attribute.values) {\n            return acc\n        }\n\n        const attributeValue = attribute.values.find(\n            ({value: attributeValue}) => attributeValue === value\n        )\n\n        if (attributeValue) {\n            return {\n                ...acc,\n                [attribute.name]: attributeValue.name\n            }\n        }\n        return acc\n    }, {})\n    return returnVal\n}\n\n/**\n * Normalizes data for product sets and product bundles into the same format\n * Useful for operations that apply to both product sets and product bundles\n * Creates deep clones of child products to avoid mutation issues\n *\n * @param {Object} product - A product set or product bundle\n * @returns {Object} - returns normalized product if product is a set/bundle, otherwise returns original product\n */\nexport const normalizeSetBundleProduct = (product) => {\n    if (!product?.type.set && !product?.type.bundle) return product\n\n    const childProducts = product?.type.set\n        ? product.setProducts.map((child) => {\n              return {\n                  product: {...child},\n                  quantity: null\n              }\n          })\n        : product.bundledProducts.map((child) => {\n              return {\n                  ...child,\n                  product: {...child.product}\n              }\n          })\n\n    return {\n        ...product,\n        childProducts\n    }\n}\n\n/**\n * Creates an array of product items used to update the child variant selections for a product bundle,\n * usually in an updateItemToBasket/updateItemsToBasket shopper baskets API call\n *\n * @param {Object} bundle - A product that is a bundle.\n * @param {Array} childProductSelections - An array of the bundle child products with a selected variant.\n *      Each item in the array should have the product, variant, and quantity.\n * @returns {Array} - an array of bundle child product items that have the updated variant\n */\nexport const getUpdateBundleChildArray = (bundle, childProductSelections) => {\n    const itemsToBeUpdated = []\n    bundle?.bundledProductItems?.forEach((bundleChild) => {\n        const childSelection = childProductSelections?.find(\n            (childProduct) =>\n                childProduct.product?.id === bundleChild.productId ||\n                childProduct.product?.itemId === bundleChild.itemId\n        )\n\n        const selectedProductId = childSelection?.variant?.productId || childSelection?.product?.id\n\n        // only update the item if the selected product is different from what's in the current bundle\n        if (childSelection && selectedProductId !== bundleChild.productId) {\n            itemsToBeUpdated.push({\n                itemId: bundleChild.itemId,\n                productId: selectedProductId,\n                quantity: childSelection.quantity ?? bundleChild.quantity\n            })\n        }\n    })\n    return itemsToBeUpdated\n}\n\n/**\n * This function extract the price information of a given product\n * If a product is a master,\n *  currentPrice: get the lowest price (including promotional prices) among variants\n *  listPrice: get the list price of the variant that has lowest price (including promotional price)\n *  maxPrice: the max price in tieredPrices of variant that has lowest price\n * @param {object} product - product detail object\n * @param {object} opts - options to pass into the function like intl, quantity, and currency\n */\nexport const getPriceData = (product, opts = {}) => {\n    const {quantity = 1} = opts\n    const isASet = product?.hitType === 'set' || !!product?.type?.set\n    const isMaster = product?.hitType === 'master' || !!product?.type?.master\n    let currentPrice\n    let variantWithLowestPrice\n    // grab the variant that has the lowest price (including promotional price)\n    if (isMaster) {\n        variantWithLowestPrice = findLowestPrice(product)\n        currentPrice = variantWithLowestPrice?.minPrice\n    } else {\n        currentPrice = findLowestPrice(product)?.minPrice\n    }\n\n    // since the price is the lowest value among price books, each product will have at lease a single item tiered price at quantity 1\n    // the highest value of tieredPrices is presumptively the list price\n    const tieredPrices = variantWithLowestPrice?.data?.tieredPrices || product?.tieredPrices || []\n    const maxTieredPrice = tieredPrices?.length\n        ? Math.max(...tieredPrices.map((item) => item.price))\n        : undefined\n    const highestTieredPrice = tieredPrices.find((tier) => tier.price === maxTieredPrice)\n    const listPrice = highestTieredPrice?.price\n\n    // if a product has tieredPrices, get the tiered that has the higher closest quantity to current quantity\n    const filteredTiered = tieredPrices.filter((tiered) => tiered.quantity <= quantity)\n    const closestTieredPrice =\n        filteredTiered.length &&\n        filteredTiered.reduce((prev, curr) => {\n            return Math.abs(curr.quantity - quantity) < Math.abs(prev.quantity - quantity)\n                ? curr\n                : prev\n        })\n    return {\n        currentPrice,\n        listPrice,\n        pricePerUnit: product?.pricePerUnit,\n        isOnSale: currentPrice < listPrice,\n        isASet,\n        isMaster,\n        // For a product, set price is the lowest price of its children, so the price should be considered a range\n        // For a master product, when it has more than 2 variants, we use the lowest priced variant, so it is  considered a range price\n        //      but for master that has one variant, it is not considered range\n        isRange: (isMaster && product?.variants?.length > 1) || isASet || false,\n        // priceMax is for product set\n        tieredPrice: closestTieredPrice?.price,\n        maxPrice: product?.priceMax || maxTieredPrice\n    }\n}\n\n/**\n * Filters the provided product `ImageGroups` array with the optional filters.\n *\n * @param {ImageGroup[]} imageGroups\n * @param {object} filters\n * @param {string} filters.viewType\n * @param {object} filters.variationValues\n *\n * @returns {ImageGroup[]} filteredImageGroups\n */\nexport const filterImageGroups = (imageGroups = [], filters) => {\n    if (!filters) {\n        throw new Error(`Missing required \"filters\" argument`)\n    }\n\n    const {viewType, variationValues = {}} = filters\n    // NOTE: For future feature enhancement compatibility we use an object for the `variationValues` as\n    // we might want to filter on more than the one attribute id/value pair.\n    const [selectedAttributeId, selectedAttributeValue] = Object.entries(variationValues)[0] || []\n\n    // Filters\n    const typeFilter = viewType ? (group) => group.viewType === viewType : () => true\n    const attributeFilter =\n        !!selectedAttributeId && !!selectedAttributeValue\n            ? ({variationAttributes = []}) =>\n                  variationAttributes.some(\n                      ({id, values}) =>\n                          id === selectedAttributeId &&\n                          !!values.find(({value}) => value === selectedAttributeValue)\n                  )\n            : () => true\n\n    return imageGroups?.filter(typeFilter)?.filter(attributeFilter)\n}\n\n/**\n * Provided a product this function will return the variation attibutes decorated with\n * `href` and `swatch` image for the given attribute values. This allows easier access\n * when creating components that commonly use this information.\n *\n * @param {Product} product\n * @param {object} opts\n * @param {string} opts.swatchViewType - The `viewTypeId` for the swatch image. Defaults to `swatch`.\n *\n * @returns {VariationAttributes[]} decoratedVariationAttributes\n */\nexport const getDecoratedVariationAttributes = (product, opts = {}) => {\n    const swatchViewType = opts.swatchViewType || 'swatch'\n\n    return product?.variationAttributes?.map((variationAttribute) => ({\n        ...variationAttribute,\n        values: variationAttribute.values.map((value) => {\n            const variationValues = {[variationAttribute.id]: value.value}\n\n            return {\n                ...value,\n                swatch: filterImageGroups(product.imageGroups, {\n                    viewType: swatchViewType,\n                    variationValues\n                })?.[0]?.images[0],\n                href: rebuildPathWithParams(\n                    productUrlBuilder({id: product.productId}),\n                    variationValues\n                )\n            }\n        })\n    }))\n}\n\n/**\n * Find the lowest price of a product, across all of its price books and promotions\n * @param {Object} product - product data from the API\n * @returns {Object|undefined} the lowest price for the given product. If it's a promotional price, the promotion will also be returned.\n */\nexport const findLowestPrice = (product) => {\n    if (!product) return\n\n    // Look at all of the variants, only if it's a master product.\n    // i.e. when a shopper has narrowed down to a variant, do not look into other variants\n    const isMaster = product.hitType === 'master' || !!product.type?.master\n    if (isMaster && !product.variants) {\n        console.warn(\n            'Expecting `product.variants` to exist. For more accuracy, please tweak your API request to ask for the variants details.'\n        )\n    }\n    const array = isMaster && product.variants ? product.variants : [product]\n\n    const res = array.reduce(\n        (prev, data) => {\n            const promotions = data.productPromotions || []\n            const [smallestPromotionalPrice, promo] = getSmallestValByProperty(\n                promotions,\n                'promotionalPrice'\n            )\n\n            let salePrice = data.price\n            let promotion = null\n            if (smallestPromotionalPrice && smallestPromotionalPrice < data.price) {\n                salePrice = smallestPromotionalPrice\n                promotion = promo\n            }\n\n            return salePrice < prev.minPrice ? {minPrice: salePrice, promotion, data} : prev\n        },\n        {minPrice: Infinity, promotion: null, data: null}\n    )\n    return {\n        ...res,\n        // when minPrice is infinity, meaning there is no variant with lowest price found, we rest the value to 0 as minPrice to be able to use this value on UI\n        minPrice: res.minPrice === Infinity ? 0 : res.minPrice\n    }\n}\n\n/**\n * @private\n * Find the smallest value by key from a given array\n * @returns {Array} an array of such smallest value and the item containing this value\n * @example\n * const [value, itemContainingValue] = getSmallestValByProperty(array, key)\n */\nconst getSmallestValByProperty = (arr, key) => {\n    if (!arr || !arr.length) return []\n    if (!key) {\n        throw new Error('Please specify a key.')\n    }\n    const filtered = arr.filter((item) => {\n        const value = item[key]\n        return value === 0 || value === '0' ? true : Number(value)\n    })\n    if (filtered.length === 0) return []\n\n    return filtered.reduce(\n        (prev, item) => {\n            const value = item[key]\n            const [prevValue] = prev\n            return value < prevValue ? [value, item] : prev\n        },\n        [Infinity, null]\n    )\n}\n","import {useCustomerProductLists} from '@salesforce/commerce-sdk-react'\nimport {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'\n\n// NOTE: This hook is deprecated in favor of use-wish-list-dol.\n// The enable-global-dol-wishlist-productlist-integration feature flag is now always true.\n// This hook is kept for backwards compatibility but the query is always disabled.\nexport const useWishList = ({listId = ''} = {}) => {\n    const {data: customer} = useCurrentCustomer()\n    const {customerId} = customer\n    const {data: productLists, ...restOfQuery} = useCustomerProductLists(\n        {\n            parameters: {customerId}\n        },\n        {\n            onSuccess: () => {\n                // DOL wishlist is always enabled, so we never create product lists here\n            },\n            enabled: false // Always disabled - DOL wishlist is always used\n        }\n    )\n\n    const wishLists = productLists?.data?.filter((list) => list.type === 'wish_list') || []\n    const currentWishlist = wishLists.find((list) => list.id === listId)\n\n    return {\n        data: !listId ? wishLists[0] : currentWishlist,\n        ...restOfQuery\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"warranty\",\n  \"use\": \"warranty-usage\",\n  \"viewBox\": \"0 0 20 21\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 21\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"warranty\\\">\\n<g id=\\\"warranty_Shield with checkmark\\\">\\n<path id=\\\"warranty_Subtract\\\" d=\\\"M9.99984 1.69336L12.1357 2.60871L11.7418 3.52786L9.99984 2.78133L3.54265 5.54869L4.00653 9.25969C4.3053 11.6499 5.50091 13.8374 7.35141 15.3795L9.99984 17.5865L12.6483 15.3795C14.4988 13.8374 15.6944 11.6499 15.9932 9.25969L16.457 5.54869L14.5478 4.73043L9.71108 13.0503L7.14648 10.4857L7.85359 9.77859L9.49952 11.4245L13.8869 3.87752L13.8917 3.86635L14.1315 3.46407L17.5427 4.92599L16.9854 9.38373C16.6552 12.0255 15.3337 14.4433 13.2885 16.1477L9.99984 18.8882L6.71123 16.1477C4.66593 14.4433 3.34448 12.0255 3.01425 9.38373L2.45703 4.92599L9.99984 1.69336Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {pick} from '@salesforce/commerce-sdk-react/hooks/utils'\nimport {productSearchParamKeys} from '../../api_keys/search-keys'\nimport {getCustomKeys} from '../../utils/get-custom-keys'\n\n/**\n * Returns an array of custom keys from the given object.\n */\nconst productSearch = {\n    path: () => ['dol', '/product-search'],\n    queryKey: (params) => {\n        const paramKeys = [...productSearchParamKeys, ...getCustomKeys(params)]\n\n        return [...productSearch.path(), pick(params, paramKeys)]\n    }\n}\n\nexport const queryKeyHelpers = {\n    productSearch\n}\n","import {getCookie, setCookie, deleteCookie} from './amplience'\n\n/**\n * Utility to set _ld_context_attr cookie if bloomreach is enabled.\n * @returns {null}\n */\nexport const setLdContextAttr = (isBloomreachEnabled) => {\n    const ldContextAttr = getCookie('_ld_context_attr')\n    if (isBloomreachEnabled) {\n        if (ldContextAttr !== 'bloomreach') {\n            setCookie('_ld_context_attr', 'bloomreach')\n        }\n    } else if (ldContextAttr) {\n        deleteCookie('_ld_context_attr')\n    }\n}\n","import {useMemo, useState, useEffect} from 'react'\nimport {getCookie} from 'react-use-cookie'\nimport {usePromotionalProductsQuery} from './use-promotional-products-query'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\nconst noop = () => {}\n\nconst DISABLED_VARIANT_PROMOTIONAL_PRICING = {\n    variantPromotionalPrices: {},\n    isLoading: false,\n    error: null,\n    hasNextPage: false,\n    fetchNextPage: noop,\n    isFetchingNextPage: false\n}\n\n/**\n * Variant promotional pricing hook using infinite query pattern.\n * Reuses the base usePromotionalProductsQuery for consistency.\n * Eliminates circular dependencies by relying on React Query caching only.\n */\nexport const useVariantPromotionalPricing = (\n    products = [],\n    componentType = 'other',\n    resourceId = null\n) => {\n    const isBloomreachEnabled =\n        useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n    const isVariantContextFlagEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    const contextCookie = isVariantContextFlagEnabled ? getCookie('expSegGrp') : ''\n\n    const isContextEnabled = contextCookie && isVariantContextFlagEnabled\n    const priceSegmentUpdateCompleted =\n        typeof window !== 'undefined'\n            ? window.sessionStorage.getItem('segmentUpdateCompleted') === 'true'\n            : false\n    const [enableVariantsQueryAfterDelay, setEnableVariantsQueryAfterDelay] = useState(\n        !isContextEnabled\n    )\n\n    const shouldQueryWaitForSegmentUpdate = isContextEnabled ? priceSegmentUpdateCompleted : true\n    useEffect(() => {\n        if (!isContextEnabled) {\n            setEnableVariantsQueryAfterDelay(true)\n            return\n        }\n        if (!priceSegmentUpdateCompleted) {\n            setEnableVariantsQueryAfterDelay(false)\n            return\n        }\n\n        const timer = setTimeout(() => {\n            setEnableVariantsQueryAfterDelay(true)\n        }, 1000)\n        return () => clearTimeout(timer)\n    }, [isContextEnabled, priceSegmentUpdateCompleted])\n\n    // Extract all eligible variants that need promotional pricing\n    const needsPricing = useMemo(() => {\n        if (!isBloomreachEnabled) return []\n\n        return products\n            .flatMap((product) =>\n                (product?.c_extend?.variants || [])\n                    .filter((variant) => variant?.hasProductPromotions)\n                    .map((variant) => ({\n                        productId: variant?.productId,\n                        hasProductPromotions: variant?.hasProductPromotions\n                    }))\n            )\n            .sort((a, b) => a.productId.localeCompare(b.productId)) // Stable sort\n    }, [products, isBloomreachEnabled])\n\n    // Use the batch query hook\n    const {data, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage} =\n        usePromotionalProductsQuery(\n            needsPricing,\n            {\n                enabled:\n                    isBloomreachEnabled &&\n                    enableVariantsQueryAfterDelay &&\n                    shouldQueryWaitForSegmentUpdate\n            },\n            'variants',\n            componentType,\n            resourceId\n        )\n\n    // Transform batch results into flat variant promotional prices object\n    const variantPromotionalPrices = useMemo(() => {\n        if (!isBloomreachEnabled || !data?.pages) return {}\n\n        const combined = {}\n        data.pages.forEach((page) => {\n            if (page?.prices) {\n                page.prices.forEach((priceData) => {\n                    if (priceData?.productId) {\n                        combined[priceData.productId] = {\n                            salesPrice: priceData.default?.sales?.value,\n                            listPrice: priceData.default?.list?.value,\n                            currency: priceData.currency,\n                            promotions: priceData.promotions || [],\n                            lastLowestPrice: priceData.lastLowestPrice,\n                            type: priceData.type,\n                            min: priceData.min,\n                            max: priceData.max,\n                            memberPrice: priceData.memberPrice\n                                ? {\n                                      ...priceData.memberPrice,\n                                      value: priceData.memberPrice.default?.value\n                                  }\n                                : null\n                        }\n                    }\n                })\n            }\n        })\n        return combined\n    }, [data?.pages, isBloomreachEnabled, resourceId])\n\n    // Compose the return object from already-stable members (variantPromotionalPrices\n    // is memoized above, the query fields/functions are referentially stable),\n    // so its identity only changes when a value actually changes (FIND-6633).\n    const result = useMemo(\n        () => ({\n            variantPromotionalPrices,\n            isLoading,\n            error,\n            hasNextPage,\n            fetchNextPage,\n            isFetchingNextPage\n        }),\n        [variantPromotionalPrices, isLoading, error, hasNextPage, fetchNextPage, isFetchingNextPage]\n    )\n\n    // Early return for disabled feature flag\n    if (!isBloomreachEnabled) {\n        return DISABLED_VARIANT_PROMOTIONAL_PRICING\n    }\n\n    return result\n}\n\n/**\n * Utility function to get the appropriate price for a variant\n * considering promotional pricing availability and standardPriceTest flag\n */\nexport const getVariantEnhancedPrice = (\n    variant,\n    variantPromotionalPrices = {},\n    isLoading = false,\n    isContextEnabled = false,\n    flags = {}\n) => {\n    const {enableStandardPriceTest = false, enableCarouselPromotionalPricing = false} = flags\n    const promotionalData = variantPromotionalPrices[variant.productId]\n\n    // If we're still loading and don't have data, return standard pricing\n    if (isLoading && !promotionalData) {\n        return {\n            price: variant.price,\n            salePrice: variant.salePrice,\n            listPrice: variant.price,\n            originalPrice: variant.price,\n            isPromotional: false\n        }\n    }\n\n    // Return enhanced promotional pricing if available\n    if (promotionalData) {\n        // Helper function to check if a promotion has standardPriceTest flag\n        const hasStandardPriceTest = (promo) => promo?.standardPriceTest === true\n\n        // Check for standardPriceTest from promotional data OR from variant's c_extend\n        const isPriceTesting =\n            isContextEnabled &&\n            (promotionalData.promotions?.some(hasStandardPriceTest) ||\n                (variant?.c_extend?.promotions?.length > 0 &&\n                    variant.c_extend.promotions[0].standardPriceTest) ||\n                variant?.c_extend?.priceInfo?.promotionPrice?.promoDetails?.[0]?.standardPriceTest)\n\n        // For promotional pricing, always use salesPrice as the display price\n        const price = promotionalData.salesPrice\n\n        // When standardPriceTest is true and feature flag is enabled, hide strikethrough\n        // by setting listPrice equal to price.\n        // FIND-5838: when the carousel promotional-pricing flag is on, DOL is\n        // authoritative — preserve null/undefined as \"no regular pricebook\" instead\n        // of falling back to variant.price. With the flag off, retain legacy fallback.\n        let listPrice\n        if (isPriceTesting && enableStandardPriceTest) {\n            listPrice = price\n        } else if (enableCarouselPromotionalPricing) {\n            listPrice = promotionalData.listPrice ?? null\n        } else {\n            listPrice = promotionalData.listPrice || variant.price\n        }\n\n        return {\n            price,\n            salePrice: promotionalData.salesPrice,\n            listPrice,\n            originalPrice: variant.price,\n            currency: promotionalData.currency,\n            promotions: promotionalData.promotions,\n            isPromotional: true,\n            type: promotionalData.type,\n            min: promotionalData.min,\n            max: promotionalData.max,\n            memberPrice: promotionalData.memberPrice\n        }\n    }\n\n    // Return standard pricing structure\n    return {\n        price: variant.price,\n        salePrice: variant.salePrice,\n        listPrice: variant.price,\n        originalPrice: variant.price,\n        isPromotional: false\n    }\n}\n","import {useMemo, useState, useEffect, useRef} from 'react'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {useVariant, useStringVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useCustomQuery} from './useCustomQuery'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/** @typedef {import('./types/product-price').PromotionsPriceResponse} PromotionsPriceResponse */\n\nconst PROMOTIONAL_PRICING_BATCH_SIZE = 28\nconst VARIANT_PROMOTIONAL_PRICING_BATCH_SIZE = 36\n\nconst noop = () => {}\n\n/**\n * Base query hook for promotional pricing using multiple batch queries.\n * Each batch gets its own query with product IDs as key for true incremental fetching.\n * React Query handles caching automatically - Load More reuses cached batches.\n */\nexport const usePromotionalProductsQuery = (\n    products = [],\n    queryOptions = {},\n    queryType = 'products',\n    componentType = 'other',\n    resourceId = null\n) => {\n    const {locale} = useMultiSite()\n    const {app: appConfig} = getConfig()\n    const isBloomreachEnabled =\n        useStringVariant(LD_KEYS.defaultSearchSourceFlag, 'salesforce') === 'bloomreach'\n    const enableCacheFix = useVariant(LD_KEYS.enablePromotionalPricingCacheFix, false)\n    const isContextEnabled = useVariant(LD_KEYS.isSegContextEnabled, false)\n    // DOL Q3 channel migration — flag ON adds mandatory channelname header (route-derived: pdp/plp/pva).\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    // Get eligible products that need promotional pricing\n    const eligibleProducts = useMemo(() => {\n        if (!isBloomreachEnabled) return []\n        return products.filter((product) => product?.hasProductPromotions)\n    }, [products, isBloomreachEnabled])\n\n    const {\n        commerceAPI: {\n            parameters: {organizationId}\n        },\n        dolAPI: {proxyPath}\n    } = appConfig\n    const promotionsUrl = getCustomApiPaths(proxyPath, organizationId).PRODUCT_PROMOTIONS\n\n    // Always declare all hooks - use conditional logic in their configuration\n    const [fetchedProductIds, setFetchedProductIds] = useState(new Set())\n    const [allPromotionalData, setAllPromotionalData] = useState({})\n    const currentResourceIdRef = useRef(resourceId) // Track current category\n    const isInitialMount = useRef(true)\n    const updateCounter = useRef(0)\n    const lastProductCount = useRef(0)\n    const MAX_UPDATES_PER_CYCLE = 5 // Prevent infinite loops per data change cycle\n\n    // Clear state when resourceId changes (new category) - with feature flag\n    useEffect(() => {\n        if (\n            enableCacheFix &&\n            componentType === 'product-list' &&\n            resourceId !== currentResourceIdRef.current\n        ) {\n            currentResourceIdRef.current = resourceId\n            setFetchedProductIds(new Set())\n            setAllPromotionalData({})\n            updateCounter.current = 0\n        }\n    }, [resourceId, componentType, enableCacheFix])\n\n    // Determine which products to fetch based on component type\n    const productsToFetch = useMemo(() => {\n        if (componentType === 'product-list') {\n            // For load more: only fetch NEW products that haven't been fetched yet\n            // This handles the case where each load more brings 28 new products\n            const newProducts = eligibleProducts.filter(\n                (product) =>\n                    product?.hasProductPromotions && !fetchedProductIds?.has(product?.productId)\n            )\n            return newProducts\n        } else {\n            // For carousels/fetchers: fetch all eligible products (no state tracking)\n            return eligibleProducts\n        }\n    }, [eligibleProducts, fetchedProductIds, componentType])\n\n    // Limit products based on query type and batch size\n    const limitedProductsToFetch = useMemo(() => {\n        const batchSize =\n            queryType === 'variants'\n                ? VARIANT_PROMOTIONAL_PRICING_BATCH_SIZE\n                : PROMOTIONAL_PRICING_BATCH_SIZE\n        return productsToFetch.slice(0, batchSize)\n    }, [productsToFetch, queryType])\n\n    // Query for products - ensure we have valid product IDs\n    const validProductIds = limitedProductsToFetch\n        .map((p) => p.productId)\n        .filter((id) => id && id.trim().length > 0)\n        .sort()\n\n    const productIds = validProductIds.join(',')\n    const headers = {\n        ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channeltype: 'online'}),\n        'x-environment': appConfig?.targetEnvironment\n    }\n    // Always call useCustomQuery with consistent structure to avoid conditional hooks\n    // Include resourceId in query key to ensure each category has its own cache entry (when flag enabled)\n    /** @type {{data?: PromotionsPriceResponse, isLoading: boolean, error: any}} */\n    const queryResult = useCustomQuery(\n        enableCacheFix\n            ? [\n                  'promotional-pricing',\n                  queryType,\n                  productIds || 'empty',\n                  componentType,\n                  resourceId || 'no-category'\n              ]\n            : ['promotional-pricing', queryType, productIds || 'empty', componentType],\n        {\n            path: promotionsUrl,\n            queryParams: {\n                productIds: productIds || '',\n                locale: locale.id\n            },\n            headers\n        },\n        {\n            staleTime: 5 * 60 * 1000, // 5 minutes\n            cacheTime: 10 * 60 * 1000, // 10 minutes\n            ...queryOptions,\n            enabled:\n                isBloomreachEnabled &&\n                validProductIds.length > 0 &&\n                productIds &&\n                productIds.length > 0 &&\n                (isContextEnabled ? queryOptions.enabled : true)\n        }\n    )\n\n    // Update state when new data arrives (only for product-list)\n    // This effect handles both fresh API calls and cached data\n    useEffect(() => {\n        if (\n            componentType === 'product-list' &&\n            queryResult.data?.prices &&\n            !queryResult.isLoading\n        ) {\n            // If state is empty but we have data (from cache or fresh fetch), populate it\n            if (\n                enableCacheFix &&\n                fetchedProductIds.size === 0 &&\n                queryResult.data.prices.length > 0\n            ) {\n                const newProductIds = new Set()\n                const newPromotionalData = {}\n\n                queryResult.data.prices.forEach((priceData) => {\n                    if (priceData.productId) {\n                        newProductIds.add(priceData.productId)\n                        newPromotionalData[priceData.productId] = priceData\n                    }\n                })\n\n                setFetchedProductIds(newProductIds)\n                setAllPromotionalData(newPromotionalData)\n            } else {\n                // Handle incremental updates for load more within same category\n                // Reset counter when product count changes (new load more or refinement)\n                const currentProductCount = eligibleProducts.length\n                if (currentProductCount !== lastProductCount.current) {\n                    updateCounter.current = 0\n                    lastProductCount.current = currentProductCount\n                }\n\n                // Prevent infinite loops with counter per cycle\n                if (updateCounter.current >= MAX_UPDATES_PER_CYCLE) {\n                    console.warn(\n                        'Max promotional pricing updates per cycle reached, preventing infinite loop'\n                    )\n                    return\n                }\n\n                updateCounter.current += 1\n\n                const newProductIds = new Set(fetchedProductIds)\n                const newPromotionalData = {...allPromotionalData}\n                let hasChanges = false\n\n                queryResult.data.prices.forEach((priceData) => {\n                    if (priceData.productId && !fetchedProductIds.has(priceData.productId)) {\n                        newProductIds.add(priceData.productId)\n                        newPromotionalData[priceData.productId] = priceData\n                        hasChanges = true\n                    }\n                })\n\n                if (hasChanges) {\n                    setFetchedProductIds(newProductIds)\n                    setAllPromotionalData(newPromotionalData)\n                }\n            }\n        }\n    }, [\n        queryResult.data,\n        queryResult.isLoading,\n        componentType,\n        eligibleProducts.length,\n        resourceId\n    ])\n\n    // Clean up data for products no longer in the list (only for product-list)\n    useEffect(() => {\n        if (componentType !== 'product-list') return\n\n        if (isInitialMount.current) {\n            isInitialMount.current = false\n            updateCounter.current = 0 // Reset counter on mount\n            return\n        }\n\n        // Prevent cleanup loops\n        if (updateCounter.current >= MAX_UPDATES_PER_CYCLE) {\n            return\n        }\n\n        const currentProductIds = new Set(eligibleProducts.map((p) => p.productId))\n        const needsCleanup = [...fetchedProductIds].some((id) => !currentProductIds.has(id))\n\n        if (needsCleanup) {\n            const newFetchedIds = new Set()\n            const newPromotionalData = {}\n\n            fetchedProductIds.forEach((id) => {\n                if (currentProductIds.has(id)) {\n                    newFetchedIds.add(id)\n                    if (allPromotionalData[id]) {\n                        newPromotionalData[id] = allPromotionalData[id]\n                    }\n                }\n            })\n\n            setFetchedProductIds(newFetchedIds)\n            setAllPromotionalData(newPromotionalData)\n        }\n    }, [eligibleProducts, componentType])\n\n    // Create combined data structure (always call useMemo to avoid conditional hooks)\n    const combinedData = useMemo(() => {\n        if (!isBloomreachEnabled) {\n            return {pages: []}\n        }\n\n        if (componentType === 'product-list') {\n            // For PLP: Use query data directly when state is empty (happens on category revisit with flag enabled)\n            // Otherwise use accumulated state for load more functionality\n            if (\n                enableCacheFix &&\n                fetchedProductIds.size === 0 &&\n                queryResult.data?.prices?.length > 0\n            ) {\n                // State is empty but we have cached/fresh data - use it directly\n                return {pages: [queryResult.data]}\n            }\n\n            // Use accumulated state for normal flow\n            const prices = Object.values(allPromotionalData)\n            return {\n                pages: prices.length > 0 ? [{prices}] : []\n            }\n        } else {\n            // For carousels/fetchers: use direct query result\n            const pages = queryResult.data ? [queryResult.data] : []\n            return {pages}\n        }\n    }, [\n        allPromotionalData,\n        queryResult.data,\n        componentType,\n        isBloomreachEnabled,\n        fetchedProductIds.size,\n        enableCacheFix\n    ])\n\n    // Early return for disabled feature flag\n    if (!isBloomreachEnabled) {\n        return {\n            data: combinedData,\n            isLoading: false,\n            error: null,\n            hasNextPage: false,\n            fetchNextPage: noop,\n            isFetchingNextPage: false\n        }\n    }\n\n    const batchResults = [queryResult]\n    const isLoading =\n        queryType === 'products' && validProductIds.length > 0\n            ? batchResults.some((result) => result.isLoading)\n            : false\n    const error = batchResults.find((result) => result.error)?.error\n\n    return {\n        data: combinedData,\n        isLoading,\n        error,\n        hasNextPage: false,\n        fetchNextPage: noop,\n        isFetchingNextPage: false\n    }\n}\n","import {useMemo, useCallback} from 'react'\nimport fetch from 'cross-fetch'\nimport queryString from 'query-string'\nimport {useCustomerId} from '@salesforce/commerce-sdk-react'\nimport {updateCache} from '@salesforce/commerce-sdk-react/hooks/utils'\nimport {cacheUpdateMatrix} from '@salesforce/commerce-sdk-react/hooks/ShopperCustomers/cache'\nimport {useAuthorizationHeader} from '@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useQueryClient, useMutation} from '@tanstack/react-query'\nimport {getCustomerApiPaths} from '../utils/get-custom-apis'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\nconst executeMethod = async (method, {baseUrl, body, apiOptions, headers}) => {\n    const {path, queryParams, skipCredentials = true} = apiOptions\n    const url = baseUrl.concat(path)\n    const queryStringified = queryString.stringify(queryParams, {skipEmptyString: true})\n\n    const response = await fetch(`${url}?${queryStringified}`, {\n        method,\n        body: JSON.stringify(body),\n        headers: {\n            'Content-Type': 'application/json',\n            ...headers\n        },\n        credentials: skipCredentials ? 'omit' : 'include'\n    })\n    const contentType = response?.headers?.get('Content-Type')\n\n    if (!response.ok) {\n        if (\n            contentType &&\n            (contentType.includes('application/json') ||\n                contentType.includes('application/problem+json'))\n        ) {\n            const errorDetails = await response.json()\n            throw errorDetails\n        } else {\n            throw new Error(`${response.status} ${response.statusText}`)\n        }\n    }\n\n    if (response.status === 204) return null // No content\n\n    if (contentType.includes('text/html')) {\n        return response.text()\n    }\n\n    return response.json()\n}\n\nexport const postApiData = async ({baseUrl, body, apiOptions, headers}) => {\n    return executeMethod('POST', {baseUrl, body, apiOptions, headers})\n}\n\nexport const deleteApiData = async ({baseUrl, body, apiOptions, headers}) => {\n    return executeMethod('DELETE', {baseUrl, body, apiOptions, headers})\n}\n\nconst mutations = {\n    createCustomerProductList: {\n        mutationMethod: (\n            post,\n            proxyPath,\n            queryParams,\n            {isXEnvironmentHeaderEnabled, appConfig}\n        ) => {\n            return ({parameters: {customerId}, body}) => {\n                const url = getCustomerApiPaths(proxyPath, customerId).CUSTOMER_PRODUCT_LISTS\n                return post({\n                    baseUrl: url,\n                    body,\n                    apiOptions: {path: '', queryParams},\n                    headers: {\n                        ...(isXEnvironmentHeaderEnabled\n                            ? {'x-environment': appConfig?.targetEnvironment}\n                            : {})\n                    }\n                })\n            }\n        },\n        apiMethod: postApiData\n    },\n    createCustomerProductListItem: {\n        mutationMethod: (\n            post,\n            proxyPath,\n            queryParams,\n            {isXEnvironmentHeaderEnabled, appConfig}\n        ) => {\n            return ({parameters: {customerId, listId}, body}) => {\n                const url = getCustomerApiPaths(proxyPath, customerId, {\n                    listId\n                }).CUSTOMER_PRODUCT_LIST_ITEMS\n                return post({\n                    baseUrl: url,\n                    body: body,\n                    apiOptions: {\n                        path: '',\n                        queryParams\n                    },\n                    headers: {\n                        ...(isXEnvironmentHeaderEnabled\n                            ? {'x-environment': appConfig?.targetEnvironment}\n                            : {})\n                    }\n                })\n            }\n        },\n        apiMethod: postApiData\n    },\n    deleteCustomerProductListItem: {\n        mutationMethod: (\n            deleteMethod,\n            proxyPath,\n            queryParams,\n            {isXEnvironmentHeaderEnabled, appConfig}\n        ) => {\n            return ({parameters: {customerId, listId, itemId}, body}) => {\n                const url = `${\n                    getCustomerApiPaths(proxyPath, customerId, {\n                        listId\n                    }).CUSTOMER_PRODUCT_LIST_ITEMS\n                }/${itemId}`\n                return deleteMethod({\n                    baseUrl: url,\n                    body: body,\n                    apiOptions: {\n                        path: '',\n                        queryParams\n                    },\n                    headers: {\n                        ...(isXEnvironmentHeaderEnabled\n                            ? {'x-environment': appConfig?.targetEnvironment}\n                            : {})\n                    }\n                })\n            }\n        },\n        apiMethod: deleteApiData\n    }\n}\n\nexport const useShopperCustomersMutation = (mutationName) => {\n    const {app: appConfig} = getConfig()\n    const isXEnvironmentHeaderEnabled = useVariant(\n        LD_KEYS.enableXEnvironmentHeaderForCreateAndDeleteCustomerProductList,\n        false\n    )\n    const isOrgIdShortCodeSideIdParametersDisabled = useVariant(\n        LD_KEYS.disableCreateAndDeleteCustomerProductListOrganisationIdShortCodeSiteIdParameters,\n        false\n    )\n\n    const customerId = useCustomerId()\n    let queryClient = useQueryClient()\n    const getCacheUpdates = cacheUpdateMatrix[mutationName]\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId, shortCode}\n            },\n            dolAPI: {proxyPath}\n        }\n    } = getConfig()\n    const {site, locale} = useMultiSite()\n    const requestParams = useMemo(\n        () => ({\n            locale: locale?.id,\n            source: 'PWA',\n            ...(isOrgIdShortCodeSideIdParametersDisabled\n                ? {}\n                : {\n                      siteId: site.id,\n                      shortCode,\n                      organisationId: organizationId\n                  })\n        }),\n        [site?.id, locale?.id, shortCode, organizationId, isOrgIdShortCodeSideIdParametersDisabled]\n    )\n\n    const mutation = mutations[mutationName]\n    const authenticatedMethod = useAuthorizationHeader(mutation?.apiMethod)\n\n    const mutationFn = useCallback(\n        (options) => {\n            if (mutation?.mutationMethod) {\n                const fn = mutation.mutationMethod(authenticatedMethod, proxyPath, requestParams, {\n                    isXEnvironmentHeaderEnabled,\n                    appConfig\n                })\n                return fn(options)\n            }\n        },\n        [\n            mutation,\n            authenticatedMethod,\n            proxyPath,\n            requestParams,\n            isXEnvironmentHeaderEnabled,\n            appConfig\n        ]\n    )\n\n    const onSuccess = useCallback(\n        (data, options) => {\n            const cacheUpdates = getCacheUpdates(\n                customerId,\n                {\n                    parameters: {\n                        ...options?.parameters,\n                        organizationId: organizationId,\n                        siteId: site?.id\n                    }\n                },\n                data\n            )\n            updateCache(queryClient, cacheUpdates, data)\n        },\n        [getCacheUpdates, customerId, organizationId, site?.id, queryClient]\n    )\n\n    const result = useMutation({\n        mutationFn,\n        onSuccess\n    })\n\n    return result\n}\n","// C&C ZIP-vs-city A/B arm: LD picks control/variant, US/CA only; sent to Adobe via abtest_segments.\nconst CNC_ABTEST_ID = 'c-and-c'\nconst CNC_ABTEST_COUNTRIES = ['us', 'ca']\nconst CNC_ABTEST_SEGMENTS = {\n    control: {abtest_id: CNC_ABTEST_ID, segment_control: true, segment_id: 'only-zip-search'},\n    variant: {abtest_id: CNC_ABTEST_ID, segment_control: false, segment_id: 'zip-and-city-search'}\n}\n\n/**\n * Builds the C&C A/B segment for the given market, or null outside the test population.\n *\n * @param {string} countryCode - Datalayer country code (e.g. \"us\", \"ca\").\n * @param {boolean} loqateEnabled - LaunchDarkly variant flag (true = Loqate/city search).\n * @returns {{abtest_id: string, segment_control: boolean, segment_id: string}|null}\n */\nexport const getCncAbtestSegment = (countryCode, loqateEnabled) => {\n    if (!CNC_ABTEST_COUNTRIES.includes(String(countryCode || '').toLowerCase())) return null\n    return loqateEnabled ? CNC_ABTEST_SEGMENTS.variant : CNC_ABTEST_SEGMENTS.control\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"hp_x_pandora\",\n  \"use\": \"hp_x_pandora-usage\",\n  \"viewBox\": \"0 0 843 149\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 843 149\\\" id=\\\"hp_x_pandora\\\">\\n  <!-- Generator: Adobe Illustrator 30.3.0, SVG Export Plug-In . SVG Version: 2.1.3 Build 182)  -->\\n  <defs>\\n    <style>\\n      #hp_x_pandora .st0 {\\n        fill-rule: evenodd;\\n      }\\n\\n      #hp_x_pandora .st0, #hp_x_pandora .st1 {\\n        fill: #fff;\\n      }\\n\\n      #hp_x_pandora .st2 {\\n        fill: none;\\n        stroke: #fff;\\n        stroke-linecap: round;\\n        stroke-width: 2px;\\n      }\\n    </style>\\n  </defs>\\n  <path class=\\\"st1\\\" d=\\\"M477,74.5h10.7c3,0,4.9-.4,6.6-1.4,2.6-1.5,4.1-4.5,4.1-7.8s-1.5-6.3-4.1-7.8c-1.7-1-3.6-1.4-6.6-1.4h-10.7v18.5h0v-.1ZM467.8,100.9v-53.6h20.3c3.6,0,6.9.6,9.5,1.7,6.5,2.9,10.5,9.1,10.5,16.2s-4,13.3-10.5,16.2c-2.6,1.1-5.9,1.7-9.5,1.7h-11v17.8s-9.3,0-9.3,0Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M525.9,71.8l-3.7,9.7h17.8l-3.7-9.7c-2-5.3-5.1-13.3-5.1-13.3h-.2s-3.1,8-5.1,13.4M547.4,100.9l-4.1-10.9h-24.4l-4.1,10.9h-10l21.6-53.6h9.8l21.5,53.6h-10.3Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M602.7,100.9l-20.5-27.9-8-10.7v38.5h-9.3v-53.6h9.3l20.6,27.9,8,10.7v-38.5h9.3v53.6h-9.4,0Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M632.9,92.2h8.1c6,0,10.4-1.1,13.6-3.3,4.7-3.1,7.2-8.5,7.1-14.8.1-6.3-2.4-11.6-7.1-14.8-3.2-2.2-7.7-3.3-13.6-3.3h-8.1v36h0v.2ZM623.6,100.9v-53.6h17.8c8.2,0,15,1.9,19.9,5.6,6.5,4.8,10.1,12.3,10.1,21.2s-3.6,16.4-10.1,21.2c-4.9,3.7-11.8,5.6-19.9,5.6h-17.8Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M706.2,54.9c-10.8,0-18.8,8.1-18.8,19.3s7.9,19.3,18.8,19.3,18.8-8.1,18.8-19.3-7.9-19.3-18.8-19.3ZM706.2,102.2c-16.3,0-28.5-12-28.5-28s12.2-28,28.5-28,28.5,12,28.5,28-12.2,28-28.5,28Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M752.1,74.5h12c3,0,4.9-.4,6.6-1.4,2.6-1.5,4.1-4.5,4.1-7.8s-1.5-6.3-4.1-7.8c-1.7-1-3.6-1.4-6.6-1.4h-12v18.5h0v-.1ZM774.8,100.9l-10.3-17.8h-12.5v17.8h-9.3v-53.6h21.5c3.6,0,6.9.6,9.5,1.7,6.5,2.9,10.5,9.1,10.5,16.2s-3.7,12.6-10,15.6h-.3c0,.1,11.6,20.1,11.6,20.1h-10.9.2Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M810.5,71.8l-3.7,9.7h17.8l-3.7-9.7c-2-5.3-5.1-13.3-5.1-13.3h-.2s-3.1,8-5.1,13.4M832,100.9l-4.1-10.9h-24.4l-4.1,10.9h-10l21.6-53.6h9.8l21.5,53.6h-10.3Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M708.1,41.9c0-1.1-.9-1.9-1.9-1.9s-2,.8-2,1.9.9,2,2,2,1.9-.8,1.9-2Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M705.9,26l-1.5,11.8h3.5l-1.4-11.8h-.6Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M713.7,41.9c0-1.1-.9-1.9-1.9-1.9s-2,.8-2,1.9.9,2,2,2,1.9-.8,1.9-2Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M715.6,26l-5.1,11.8h3.7l2-11.8h-.6Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M698.7,41.9c0,1.2.9,2,1.9,2s2-.8,2-2-.9-1.9-2-1.9-1.9.8-1.9,1.9Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M696.1,26l2.1,11.8h3.7l-5.1-11.8h-.7Z\\\" />\\n  <path class=\\\"st0\\\" d=\\\"M402.2,102.4h3.5v1c0-.4-.3-.8-.6-.8h-1v3.9c0,.2.2.4.6.4h-1.8c.4,0,.6-.2.6-.4v-3.9h-1c-.2,0-.5.3-.6.8v-1h.3Z\\\" />\\n  <path class=\\\"st0\\\" d=\\\"M406.3,102.5h1.1l1.7,3.6,1.7-3.6h1.1s-.6,0-.6.3v3.8c0,.3.6.3.6.3h-1.7s.6,0,.6-.4v-3.4c-.2.5-1.9,3.8-1.9,3.8l-1.9-3.8v3.6c0,.2.6.3.6.3h-1.4s.6,0,.6-.3v-3.7c0-.4-.4-.4-.6-.4h0l.1-.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M59.2,97.2c.1,9.6-.3,19.1.2,28.7.2,1.9.8,3.7,1.7,5.3,1,1.9,2.7,3.1,4.3,4.6.2.2.4.4.5.6.4.5.1,1.1-.5,1.3-.7.2-1.5,0-2.2-.1-1-.3-2.1-.6-3.1-.8-3.5-.8-7.1-.6-10.6-.6-2.6.2-5.1.4-7.7.5-1.4,0-2-.7-.9-1.8.3-.3.7-.6,1.1-.9,4.9-3.3,5.6-10.1,5.7-15.6v-39.7c0-.3,0-.9-.5-.8-.1,0-.3,0-.4.1-1.5.9-2.8,2-4.2,2.9-1.3,1-2.7,1.8-4.2,2.5-2.4,1.2-4.9,2.4-7.5,3.1-.3.1-.3.5-.3.7v35c0,1,.3,1.9,1,2.6,1,1.2,2.1,2.4,3.1,3.6,0,0,0,.2.1.3,0,0,0,.2-.2.3h-.3c-2.6-.5-5.2-1.2-7.8-1.5-4.1-.5-8.3-.3-12.4-.7-.2,0-.6,0-.6-.3,0-.2.1-.4.3-.5.2-.2.5-.4.7-.7,1.2-1,2.3-2.1,3.5-3.1.8-.7,1.2-1.5,1.2-2.5v-32.2c0-.2,0-.3-.2-.4-3.3-1.6-6.7-3-9.7-5.1-3.3-1.9-13.2-11.3-6.9-14.1,2.3-1,4.7-1.6,7.2-1.8h.8s.2.2,0,.2c-1.3,1-6.1,3.9-6.1,5.4,0,.3,0,.6.3.8,2.3,2.2,4.8,4.2,7.4,6.1,1.8,1.3,3.8,2.1,6,2.7.9.2,1.1.1,1.1-.9,0-17.4.1-34.9,0-52.3,0-1.6-1.1-2.8-2.3-3.7-.7-.8-1.7-1.4-2.2-2.3,0-.1,0-.3.1-.4h18.8c.2,0,.4.3.3.5-.8,1.2-1.9,2.2-2.8,3.4-.3.4-.5.9-.5,1.4v53.1c.1.3.5.2.8.1,3.2-1.2,6.1-3.3,8.7-5.5,2.2-1.8,4.4-3.7,6.6-5.5.5-.4.8-.9.7-1.5V20.8c0-.7-.5-1.2-.9-1.7-.8-.9-1.6-1.7-2.4-2.6-.3-.3-.6-.7-.7-1.1,0-.2,0-.6.3-.6,5.4-.2,10.9,0,16.3-.6,1.3-.1,2.5-.3,3.8-.3.2,0,.4.3.2.5-1.1,1.6-2.4,2.9-3.7,4.4-.4.6-1.3,1.2-1.3,2,0,13.2,0,26.4-.1,39.6,0,1.2.1,1.3,1.2,1,6.8-1.3,13.8-1.3,20.7-1.6,1.7,0,3.5,0,5.2.1.2,0,.4.1.5.2.8.5.1,1.3-.4,1.7s-1,.8-1.5,1.3c-1.2,1-2.4,1.9-3.6,2.9-.7.6-1.5,1.3-1.5,2.3.3,6.6,2.3,13,3.3,19.6.2,1.3.5,2.5,1,3.7.2.5.6.7,1.1.7,1.2,0,2.4-.5,3.3-1.3.7-.6,1-1.5,1.2-2.4.5-10.9-.3-22-.6-32.9-.2-3.6-.2-7.2-.5-10.8,0-.7-.2-1.4-.4-2.1-.8-2.3-2.3-1.8-3.8-.5-1.8,1.3-3.5,2.7-5.2,4.1-1.1.8-1.9,1.9-1.9,3.3,0,1,.1,1.9.1,2.9,0,.2,0,.4-.1.6-.2.7-1,.5-1.4,0-1.9-2.9-4-5.9-4.9-9.3-.9-4.1,3.5-6.2,6.4-7.9,2.9-1.6,5.8-3.5,9-4.7.6-.1,1.1,0,1.5.4,2.8,3.1,5.5,6.3,8.4,9.3,2.2,2.3,3.6,5.2,3.6,8.4.1,12.1.1,24.3.5,36.4.2,1.4.4,2.9,2.3,2.9.9,0,2.1-.2,2,.4,0,0,0,.2-.2.3-2.2,2.3-4.8,4.3-6.7,6.8-1.6,2-3.8,4.5-6.6,3.8-1.4-.3-1.6-1.8-1.9-2.9-.3-1.5-.9-1.7-2.2-1-1.5.9-2.9,1.8-4.4,2.7-1.8,1.2-4.5,1.6-6-.2-.4-.5-.7-1-1-1.6-1.7-5.9-2.9-11.9-4.1-17.9-1.8-8.9-1.3-9.4,5.4-15.2,0,0,.1-.2.2-.3,0-.1,0-.4-.2-.4h-1c-4.9,1-9.9,2-14.8,3.3-.9.3-1.2,1.2-1.4,2.1-.5,9.5,0,19.1-.2,28.7h0v-.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M217.8,148.1c-2.7-27.8-5-55.7-7.5-83.6v-1h.2c.2.1.3.3.4.5.3.3,3.2,4.7,3.4,3.2-.8-8.6-2.9-17-4.4-25.4v-.3h.3c.5.4.9.9,1.4,1.3.4.4,1.5,1.6,2.1.9,0-.2.2-.4.2-.6.2-1.6,0-3.2,0-4.8-.3-3.4-.7-6.8-1.1-10.2-.8-6.6-1.3-13.2-2.2-19.8-.1-.8-.8-1.3-1.4-1.8-1.3-1.1-2.5-2.1-3.8-3.2-.3-.3-.7-.5-.9-.9v-.2h.2c1.3-.2,2.7-.2,4.1-.3,10-.5,19.9-1.4,29.9-1.8.3,0,.6.1.8.4,3.6,5.4,7.2,10.8,10.9,16.2.5.7.7,1.5.8,2.4.2,5,.3,10,.2,15.1,0,5.6-1.1,11.2-1.6,16.7,0,.3.1.6.5.7,2.2.6,4.6.4,6.8,1.1.2,0,.6.1.7-.1.2-.9.3-1.8.5-2.7,0-.9.5-1.7,1.3-2.2,4.4-3.3,9.5-5.4,14-8.4,1.2-.9,2.7-1.6,4-.3,3.1,3.4,6.7,6.3,9.3,10.1.7.9.8,2.1.9,3.2.8,12.4.9,24.9.9,37.3-.1,1.6.5,3.7-1,4.8-4.6,3.6-9.9,6.1-15.4,7.7-.6.1-1.1,0-1.5-.4-2.1-2.2-4.1-4.4-6.4-6.4-2.1-2.1-5.8-5.5-6.2-8.4-.7-9.4-.9-18.7-.7-28.1v-.9c-.2-1.3-2.1-1.2-3.1-1.4-1.7-.2-3.5-.2-5.2-.8-.3-.1-.6.1-.7.4-2.5,4.3-7.3,5.8-11.9,6.9-1,.2-2.2.5-2.8-.6-1.4-2.3-2.8-4.6-4.2-6.9-.4-.7-.8-1.3-1.3-1.9-.1-.2-.5-.3-.5,0,0,11.6.3,23.3.9,34.9,0,1.1.2,2.2.1,3.3h-.1c0-.2-.2-.3-.2-.5-.5-1.5-1-3-1.6-4.6-.4-1.1-1.1-3.4-2.1-4-.3-.1-.4.2-.5.4-.7,8.8.1,17.7,0,26.5,0,.1-.2.3-.3.1-.1-.2-.3-.4-.4-.5-.4-.7-.9-1.4-1.3-2.1-.5-.7-1-1.4-1.8-1.8-.4-.2-.7.3-.8.6-.9,6.1-.6,12.4-.7,18.5,0,5.6-.6,11.2-.6,16.8,0,2-.1,4-.2,5.9,0,.3,0,.5-.2.9h0l-.2.1ZM266.4,73h0c0,5.2.1,10.5.3,15.7.2,2.5,2.6,4,4.1,5.8.5.5,1.1,1,1.8.7,1.7-.8,3.4-1.7,5.1-2.6,1.8-.7,1.9-2.2,1.9-3.9,0-11.2,0-22.5-1.6-33.7-.2-.9-1.2-.6-1.9-.5-2.8.5-5.6.9-8.5,1.5-.7.1-1.5.5-1.5,1.3,0,5.2.2,10.4.2,15.6h0l.1.1ZM225.8,27.9h0c0,6.3.2,12.5.3,18.8,0,.7.2.8.9.7,3.3-.7,6.6-.8,9.9-1,.4,0,.6-.2.8-.5.3-.5.2-1.1.2-1.6-.3-7.6-.5-15.2-.8-22.7-.2-4.1,0-8.2-.5-12.3,0-.2-.2-.4-.4-.5-2.1-.3-4.2-.2-6.3-.3-1.4,0-2.7-.2-4.1-.1-.4,0-.3.7-.4,1,.2,6.2.2,12.4.3,18.6h0l.1-.1ZM274.5,43.8h-.3c-1.9,1.2-3.8,2.7-5.7,4-.7.6-1.7,1.1-1.8,2.1,0,.8-.3,3.5,1.1,3.1,1.5-.6,2.7-1.9,3.9-3,1.5-1.6,2.4-3.6,3.1-5.6,0-.3,0-.5-.3-.6h0ZM231.9,51.2c-.6,0-.8.3-.5.8.8,1.2,1.7,2.4,2.5,3.6.3.4.8.9,1.4.6.1-.1.3-.2.4-.4.6-.9,1.4-1.6,1.9-2.6.2-.6-.4-1-.9-1.1-1.5-.3-3.1-.7-4.7-.9h-.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M166.1,50.1c1.8,0,3.6-.2,5.4-.3h.3c.1,0,.2.3.1.4-.1.1-.2.3-.4.4-1.7,1.4-2.2,1.3-1.7,3.7,1.2,7.1,2.5,14.2,3.7,21.3.1.7.3,1.4.4,2.2.1.7.6,1.1,1.1.4,4.1-9.3,8-18.8,11-28.6.8-2.4,0-2.6-1.8-4.1-.3-.3-1.1-.7-1-1.1,0,0,0-.1.2-.1,1.6,0,3.3.2,4.9.2,3.2.3,6.5.2,9.7.7.7.3.4,1,.2,1.5-2.3,5.7-4.8,11.3-7.3,16.9-3.6,8.3-7.4,16.5-11.5,24.5-3.7,7.1-7.7,14-11.7,21-2.4,4.1-4.6,8.3-7.1,12.3-.4.6-.9,1.3-1.7,1.3-6.3-.4-12.6-1.1-18.9-1.6-8.2-1-16.6-1.9-24.1-5.5-1-.5-2-1-3-1.6-.8-.4-1.8-1.1-1.3-2.1,1-2.2,2.2-4.4,3.2-6.6.4-.7.9-1.4,1.5-1.9,1.1-1,2.3-2,3.4-3,1.7-1.6,4.6-.6,6.8-.8,1.5,0,3.1.1,4.6.2.3,0,.5,0,.7.2.5.5-.9.9-1.2,1.1-2.1,1-4.3,2-6.4,2.9-.8.4-1.2,1.1-1.5,1.8-.6,1.4-1.2,2.8-1.8,4.2-.5,1.4-.2,2.3,1.5,2.4,7.5.7,15,1.4,22.6,2.2,2.3.2,4.5.4,6.8.6.8,0,1.7.1,2.3-.5,4.9-8.4,9.4-17.1,14.1-25.6.4-.8.5-1.7.4-2.7-2.2-10.6-4.6-21.1-6.8-31.7-.2-1.6-.8-2.2-2-3.2-.1-.1-.3-.3-.4-.4-.2-.2,0-.6.2-.6h.3c2-.2,4.1-.2,6.2-.4h0Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M345.8,106c2.8.2,5.7,0,8.5.5.6.5-.9,1-1.1,1.2-.8.4-1.5,1.1-2,1.9-1.5,2.3-3,4.6-4.6,6.9-.2.3-.5.6-.7.8-.5.5-1.2.4-1.7.1-5.8-2.9-11.5-6.1-17.2-9.1-.6-.3-1.2-.7-1.8-1-.7-.3-1.4-.9-1.5-1.7-.5-20.7-.4-41.5-1.1-62.3-.2-1-1.3-.9-2-.9h-3.1c-.5,0-1.7,0-1.5-.6,3.8-4.9,8.4-9.3,11.8-14.6,1.4-2.2,2.8-4.3,4.1-6.5.2-.3.3-.6.6-.8h.3c.2.6.1,1.2.2,1.7.2,4.7.3,9.4.5,14.2,0,.7,0,1.9.9,2,2.2.4,4.4,0,6.6.3.7,0,1.2.3,1.2,1.1,0,2.8.5,3-2.5,3.2-1.6.2-3.2.1-4.8.4-.4,0-.7.3-.8.8-.2,17.5.5,35,.6,52.5,0,3.8,0,7.7.3,11.5,0,1.2,1.2,1.6,2,2.1,2.4,1.2,4.7,2.7,7.1,3.7.5.2,1,0,1.4-.3,1-1,1.8-2.2,2.7-3.3.3-.4.7-1.1,0-1.4-1.3-.5-2.7-.5-4-.8-1.3-.2-2.6-.4-3.9-.6-.3,0-.6-.1-.9-.3-.7-.4-.5-1,.2-1,2.1,0,4.2.2,6.3.2h0l-.1.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M315.2,31.4c0,1.6.3,2.6-1.7,2.5-1.1,0-2.2,0-3.3.1-.7,0-1.6,0-1.8.9-.7,15.8-.9,31.7-1.4,47.5-.1,6-.2,12-.4,18,0,1.5-.5,3.3.7,4.5,1.8,1.8,3.7,3.6,5.4,5.5.1.2.2.4.3.6.1.3-.1.6-.4.7-.4,0-.7,0-1.1-.1-4.6-3-9-6.2-13.5-9.3-.4-.3-.6-.7-.7-1.1-.4-21.7,0-43.4-.2-65,0-.6-.3-1.4-1-1.5-1.2-.1-2.5-.2-3.7-.2-1.6,0-3.2,0-4.7-.2h-.3c-.1,0-.2-.3-.2-.4,3.4-3.3,7.1-6.4,10.5-9.8,3.3-3.1,6.7-6.1,9.3-9.8.1-.2.3-.4.5-.3.2.1.2.4.2.6,0,4.1,0,8.3.2,12.4,0,.7.2,1.5,1,1.6,1.5.2,2.9.2,4.4.2,2.1,0,1.6,1.3,1.8,2.8h0l.1-.2Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M392.6,70.4c.1,7.3.3,14.5.4,21.8,0,2.9.3,5.8.9,8.6.7,3.6,3.6,5.9,6.7,7.4h0s0,.1-.1.1c-8.2-.2-16.4-1.6-24.2-4,0-.1,0-.3.2-.3,4.7-1.8,6.9-7.1,6.7-11.8-.2-11.9-.4-23.7-.7-35.6,0-3.1,0-6.2-.2-9.2,0-.6-.3-1.3-1-1.4-.6-.2-2.7,0-2.1-1.1,3.3-4,6.6-7.9,9.9-11.9.4-.5.8-1,1.4-1.4.4-.2.7.2.7.6.2,1.6.2,3.3.6,4.9.4.9,1.4.3,2-.1,1.1-.7,2.1-1.3,3.2-2,.6-.4,1.7-1.1,2.2-.3,2.5,4.4,4.6,9.1,6.9,13.6.5,1.2,1.7,2.8.6,4.1-2.8,3.2-5.7,6.4-9.1,8.9-.6.4-.9-.4-.8-.9,0-.4.2-.8.5-1.1.4-.6.7-1.1,1.1-1.7.5-.8,1.1-1.7.7-2.6-1-3.3-2.2-6.6-3.3-9.9-.2-1.3-2.1-2-3.1-.8-.6.6-.6,1.5-.6,2.3.1,8,.3,16,.4,23.9h0l.1-.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M345.3,68.2c.3-6.8.2-13.6.8-20.3.1-.5.3-.9.6-1.3,2.6-2.6,5.2-5.2,7.9-7.8.5-.5,1.1-1.1,1.7-1.6.7-.7,1.7-1.3,2.6-.8,1.5.9,3,1.9,4.5,2.8,1.4.9,2.9,1.8,4.3,2.7,1,.5,1.7,1.3,2,2.4,1.4,4.6,3.3,9,4.5,13.7.2,1.1-.5,2-1.1,2.9-.9,1.3-1.8,2.7-2.7,4-.6.8-1.3,2-2.4,1.7-3.7-.8-7.4-1.8-11.1-2.7-.7-.1-2.2-.6-2.5.4-.2,2.9.1,5.9.1,8.8.3,5.9,0,11.9.7,17.8,0,.3.2.5.4.8,1.3,1.6,2.8,3.1,4.2,4.6.5.7,1.2,1,1.7,0,1.6-5.3,2.8-10.6,4.4-15.9.1-.4.5-.4.8-.1,1.3,1.8,2.5,3.6,3.7,5.4.6.9,1.2,2,.4,3-2.5,3.6-5,7.3-7.5,10.8-.2.2-.3.4-.5.6-.4.4-.9.4-1.4.4-1.2,0-2.5-.1-3.7-.2-1.8-.2-4,0-5.1-1.7-2.3-3.1-4.5-6.4-6.8-9.4-1.2-1.7-.5-4.2-.6-6.2.1-4.9.3-9.9.4-14.8h-.3ZM354.8,51.3h0c0,2.4-.2,4.8-.2,7.1,0,.8,1,1,1.6,1.2,2.8.4,5.6.9,8.5,1.3.5,0,1.2,0,1.2-.6s-.3-1.1-.5-1.6c-2-4.9-4.1-9.8-6.1-14.7-.7-1.7-1-2.6-3.1-1.8-.7.3-1,.8-1.2,1.5-.2,2.5-.2,5-.3,7.5h0l.1.1Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M120.5,30.2c.3,0,.5,0,.6-.2l4.5-3c.6-.4,1.5-1.1,2.1-.4,3.4,5.2,5,11.4,6.5,17.4.2.9.2,1.9-.5,2.6-2,1.8-4.1,3.5-6.2,5.3-.3.2-.6.5-.9.7-.4.4-1.5.3-1.3-.5.3-.9,1.2-1.6,1-2.6-.7-5-2.1-9.9-3.3-14.8-.3-.7-1-.3-1.5,0-.9.5-.8.5-.8,1.3,0,.9,0,1.8.1,2.7.5,13.6,1,27.2,1.5,40.8,0,2.4.2,4.8.3,7.1,0,1.3-.1,2.8.9,3.7.6.6,1.3,1.2,1.9,1.8.5.5,1.1.8,1.4,1.4,0,0,0,.3-.2.4h-.4c-5.2.3-10.3.7-15.5.9h-1.4c-.1,0-.3,0-.4-.2-.2-.4.4-.8.6-1.1,1.2-1.4,3.3-2.6,3.2-4.7-.3-17.9-.7-35.8-1.2-53.7,0-.7,0-1.7-.9-1.9-1.7-.4-3.5-.2-5.1-.5-.2,0-.3-.4-.1-.5,4.1-3.4,8.4-6.5,12.6-9.8.5-.3,1.4-1.3,1.7-.4.3,2.3.4,4.7.6,7,0,.4,0,.7.3,1h0l-.1.2Z\\\" />\\n  <path class=\\\"st1\\\" d=\\\"M151.3,57.9v25.6c.1,1.7,1.5,3,2.4,4.4.1.2.2.3.3.5,0,.1,0,.4-.3.4h-.4c-.5,0-1,0-1.5-.1-4.3-.5-8.6.2-12.8.9-.1,0-.2,0-.2-.2v-.2c1.4-2,3.5-3.6,3.5-6.3.3-17.7.3-35.3.6-53,.1-1.9-3.3-2-2.3-3.6.3-.4.8-.8,1.2-1.1,2.9-2.3,5.8-4.6,8.6-7,.1-.1.3-.2.5-.3.1,0,.3,0,.4.2.2,2.3,0,4.7,0,7v.3c0,.2.3.3.4.2,1.9-1.3,3.5-2.9,5.4-4.2.2-.1.4-.2.6-.3.2,0,.5,0,.7.3.7,1.4,1.2,2.8,1.8,4.3,1.4,3.7,2.8,7.3,4.2,11,0,.3.1.6.2.9.1.9-.5,1.5-1.1,2-2.3,1.9-4.5,4-6.8,5.9-1.1.7-1.8-.4-1-1.4,2-3.6.2-8.3-.7-12-.3-.8-.5-1.7-1-2.4-.2-.3-.6-.4-1-.3-.8.3-1.2,1.1-1.4,1.9-.5,8.8,0,17.7-.2,26.6h-.1Z\\\" />\\n  <line class=\\\"st2\\\" x1=\\\"437\\\" y1=\\\"10\\\" x2=\\\"437\\\" y2=\\\"138\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {useCustomQuery} from '../hooks/useCustomQuery'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useDolChannelHeaders} from '../utils/dol-channel-headers'\n\n/**\n * A custom React hook to fetch data based on data type.\n *\n * @param {string} dataType - The data type to be fetched.\n * @param {boolean} [isDOL=false] - Flag to determine if the request is through DOL.\n * @param {boolean} [skip=false] - Flag to skip the query execution.\n * @returns {object} An object representing the result of the API query.\n *   - data: The data returned by the API query, if successful.\n *   - isLoading: A boolean indicating whether the query is in progress.\n *   - error: An error object containing details if the query fails.\n *\n * @example\n * // Usage example:\n * const { data, isLoading, error } = useData('exampleDataType');\n *\n * // Memoize the result to prevent unnecessary re-renders\n * const memoizedData = useMemo(() => data, [data]);\n *\n * if (isLoading) {\n *   return <div>Loading...</div>;\n * }\n *\n * if (error) {\n *   return <div>Error: {error.message}</div>;\n * }\n *\n * return (\n *   <div>\n *     {memoizedData && (\n *       <div>\n *         <h2>Data</h2>\n *         <p>ID: {memoizedData.dataID}</p>\n *         <p>Value: {memoizedData.dataValue[0]}</p>\n *       </div>\n *     )}\n *   </div>\n * );\n */\n\nexport const useData = (dataType, isDOL = false, skip = false) => {\n    const {site, locale} = useMultiSite()\n    const config = getConfig()\n    const {\n        app: {\n            commerceAPI: {\n                proxyPath,\n                parameters: {organizationId, shortCode}\n            },\n            dolAPI,\n            targetEnvironment\n        }\n    } = config\n    // DOL Q3 channel migration — flag ON adds mandatory channel headers (DOL calls only) + removes deprecated `source`.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders()\n\n    const dolParams = useMemo(\n        () => ({\n            locale: locale.id,\n            dataType: dataType,\n            ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'})\n        }),\n        [site.id, shortCode, organizationId, locale.id, dataType, isDolQ3MigrationEnabled]\n    )\n    const path = isDOL ? dolAPI.proxyPath : proxyPath\n    const param = isDOL ? `dataType=${dataType}` : `getData?c_type=${dataType}`\n    const customeApiPath = isDOL\n        ? getCustomApiPaths(path, organizationId).DOL_DATA\n        : getCustomApiPaths(path, organizationId).DATA\n    const result = useCustomQuery(\n        param,\n        {\n            path: customeApiPath,\n            queryParams: isDOL ? dolParams : {c_type: dataType, siteId: site.id, locale: locale.id},\n            headers: {\n                ...(isDOL && isDolQ3MigrationEnabled ? dolChannelHeaders : {}),\n                'x-environment': targetEnvironment\n            }\n        },\n        {\n            meta: {\n                displayName: 'useData'\n            },\n            enabled: !skip\n        }\n    )\n    console.debug(`useData - dataType: ${dataType}, result: ${JSON.stringify(result)}`)\n    return result\n}\n","import {useMemo} from 'react'\nimport {useIntl} from 'react-intl'\nimport {usePreferences} from 'pandora-shared-app/overrides/app/hooks'\nimport {PREFERENCE_KEYS} from 'pandora-shared-app/overrides/app/api_keys/preference-keys'\n\n/**\n * Custom hook to fetch and transform Bloomreach sorting options.\n * @returns {Array} Transformed sorting options.\n */\nexport const useBloomreachSortingOptions = (isBloomreachEnabled) => {\n    const intl = useIntl()\n    const {data, isFetched} = usePreferences(\n        PREFERENCE_KEYS.blrSortingOptions,\n        true, // To use DOL endpoint\n        !isBloomreachEnabled\n    )\n\n    const {preferenceValue = []} =\n        isFetched && Array.isArray(data) && data.length > 0 ? data[0] : {}\n\n    const options =\n        Array.isArray(preferenceValue) && preferenceValue.length > 0 ? preferenceValue[0] : null\n\n    const sortingOptions = useMemo(() => {\n        if (!options || Object.keys(options).length === 0) return []\n\n        return Object.keys(options).map((key) => {\n            let label\n            switch (key) {\n                case 'newest-first':\n                    label = intl.formatMessage({\n                        defaultMessage: 'Newest First',\n                        id: `sorting.option.label.newest_first`\n                    })\n                    break\n                case 'newest-last':\n                    label = intl.formatMessage({\n                        defaultMessage: 'Newest Last',\n                        id: 'sorting.option.label.newest_last'\n                    })\n                    break\n                case 'price-high-to-low':\n                    label = intl.formatMessage({\n                        defaultMessage: 'Price High to Low',\n                        id: 'sorting.option.label.price_high_to_low'\n                    })\n                    break\n                case 'price-low-to-high':\n                    label = intl.formatMessage({\n                        defaultMessage: 'Price Low to High',\n                        id: 'sorting.option.label.price_low_to_high'\n                    })\n                    break\n                case 'most-popular':\n                    label = intl.formatMessage({\n                        defaultMessage: 'Most Popular',\n                        id: 'sorting.option.label.most_popular'\n                    })\n                    break\n                default:\n                    label = key // Fallback to key if no match\n            }\n\n            return {\n                id: key,\n                label: label,\n                value: options[key]\n            }\n        })\n    }, [options, intl.formatMessage])\n\n    return sortingOptions\n}\n","/**\n * Recursively searches through a category tree to find a category by URL path\n *\n * @param {Array} categories - Categories to search through\n * @param {string} targetUrl - URL path to search for\n * @returns {string|null} - Category ID if found, null otherwise\n */\nexport const findCategoryIdByUrl = (categories, targetUrl, {useExactMatch = false} = {}) => {\n    // Early return for invalid inputs\n    if (!categories || !Array.isArray(categories) || categories.length === 0 || !targetUrl) {\n        return null\n    }\n\n    // Check if a slug path matches the target URL\n    const normalizePath = (path) => {\n        if (!path) return ''\n        let i = path.length\n        while (i > 0 && path[i - 1] === '/') i--\n        return i === path.length ? path : path.slice(0, i)\n    }\n    const isMatch = useExactMatch\n        ? (slugPath, target) => {\n              if (!slugPath || !target) return false\n              return normalizePath(slugPath) === normalizePath(target)\n          }\n        : (slugPath, target) => slugPath && (target === slugPath || slugPath.includes(target))\n\n    // Main recursive search function\n    const searchCategories = (cats) => {\n        for (const category of cats) {\n            // Get the slug path if available\n            let slugPath = getSlugPath(category.c_slugURL)\n\n            if (slugPath) {\n                slugPath = decodeURI(slugPath)\n            }\n\n            // Check for a match\n            if (isMatch(slugPath, targetUrl)) {\n                return category.id\n            }\n\n            // Search in subcategories if they exist\n            if (category.categories && category.categories.length > 0) {\n                const result = searchCategories(category.categories)\n                if (result) return result\n            }\n        }\n        return null\n    }\n\n    return searchCategories(categories)\n}\n\n// Extract the URL path extraction to a separate function to reduce nesting\nexport const getSlugPath = (url) => {\n    if (!url) return null\n\n    try {\n        return new URL(url).pathname\n    } catch (e) {\n        // If URL parsing fails, use the raw string as fallback\n        return url\n    }\n}\n\n/**\n * Helper function to build controller paths with dynamic query parameters\n * Works with any parameter names and values (strings, numbers, booleans)\n * @param {string} basePath - The base controller path (e.g., 'Login-Show')\n * @param {Object} params - Object with key-value pairs for query parameters\n * @returns {string} Controller path with query parameters appended\n * @example\n * buildControllerPathWithParams(CONTROLLER_PATH.LOGIN, {rurl: '11', pid: '794249C01'})\n * // Returns: 'Login-Show?rurl=11&pid=794249C01'\n * @example\n * buildControllerPathWithParams(CONTROLLER_PATH.LOGIN, {join: true, rurl: 12, cgid: 'category123'})\n * // Returns: 'Login-Show?join=true&rurl=12&cgid=category123'\n * @example\n * buildControllerPathWithParams(CONTROLLER_PATH.LOGIN, {join: true, rurl: '11', pid: '794249C01'})\n * // Returns: 'Login-Show?join=true&rurl=11&pid=794249C01'\n */\nexport const buildControllerPathWithParams = (basePath, params = {}) => {\n    if (!params || typeof params !== 'object' || Object.keys(params).length === 0) {\n        return basePath\n    }\n\n    // Split basePath to handle existing query parameters\n    const [path, existingQuery] = basePath.split('?')\n    const searchParams = new URLSearchParams(existingQuery || '')\n\n    // Add new parameters\n    Object.entries(params).forEach(([key, value]) => {\n        if (value != null) {\n            searchParams.set(key, String(value))\n        }\n    })\n\n    const queryString = searchParams.toString()\n    return queryString ? `${path}?${queryString}` : path\n}\n","import {useCallback, useEffect, useState} from 'react'\nimport {useLocation} from 'react-router-dom'\nimport {findCategoryIdByUrl} from '../components/_app/partials/utils'\nimport {TAB_NAMES} from '../constants'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {useCategory} from './use-category'\nimport {useVariant} from './use-variant'\n\n/**\n * Hook to manage category tab preferences based on priority rules\n * @param {Object} props\n * @param {Array} props.categories - Categories array\n * @param {string} props.resourceId - Current category ID\n * @param {boolean} props.isMainSlotConfigured - Whether the main content slot is configured\n * @returns {Object} Tab selection data and helper functions\n */\n\nexport const useDefaultCategory = ({categories = [], resourceId, isMainSlotConfigured}) => {\n    const isPlpDefaultCategoryTabEnabled = useVariant(\n        'enable-plp-default-category-tab-preferences',\n        false\n    )\n    // When enabled, the Shop tab is always the active default — Discover tab is being sunset.\n    const isShopTabDefaultEnabled = useVariant(LD_KEYS.enableShopTabDefault, false)\n    const location = useLocation()\n    const urlParams = new URLSearchParams(location.search)\n    const shopParam = urlParams.get('shop')\n    const discoverParam = urlParams.get('discover')\n\n    // Get original category data logic\n    const categoryId = isPlpDefaultCategoryTabEnabled\n        ? resourceId\n        : findCategoryIdByUrl(categories, location.pathname)\n    const {data: category} = useCategory(\n        {\n            parameters: {\n                id: categoryId\n            }\n        },\n        {\n            keepPreviousData: true,\n            enabled: Boolean(categoryId)\n        }\n    )\n\n    // Initial Default Tab from the server based on priority\n    const getDefaultTab = useCallback(() => {\n        // Highest priority: force the Shop tab when the sunset flag is on.\n        if (isShopTabDefaultEnabled) return TAB_NAMES.SHOP\n\n        const params = new URLSearchParams(location.search)\n        // Priority 1: URL parameters (?discover=true or ?shop=true)\n        if (params.get(TAB_NAMES.DISCOVER) === 'true') return TAB_NAMES.DISCOVER\n        if (params.get(TAB_NAMES.SHOP) === 'true') return TAB_NAMES.SHOP\n\n        // Priority 2: Category metadata\n        const tree = category?.parentCategoryTree ?? []\n        const lastCategory = tree.at(-1)\n        if (lastCategory?.c_isDiscoverTabDefault) {\n            return TAB_NAMES.DISCOVER\n        }\n\n        // Priority 3: Global fallback\n        return TAB_NAMES.SHOP\n    }, [category, location, isShopTabDefaultEnabled])\n\n    const [defaultTab, setDefaultTab] = useState(\n        isPlpDefaultCategoryTabEnabled ? getDefaultTab(category, location) : TAB_NAMES.SHOP\n    )\n    // Get user's preference - ONLY use category-specific preference\n    const getUserTabPreference = useCallback(() => {\n        if (typeof window === 'undefined') return null\n\n        // Use category-specific preference\n        const categoryPreference = window.sessionStorage.getItem(`tab-preference-${resourceId}`)\n\n        return categoryPreference\n    }, [resourceId])\n    const userPreference = getUserTabPreference()\n    // Set user's preference - ONLY for specific category\n    const setUserTabPreference = useCallback(\n        (tab) => {\n            if (typeof window === 'undefined') return\n\n            // Store category-specific preference\n            window.sessionStorage.setItem(`tab-preference-${resourceId}`, tab)\n        },\n        [resourceId]\n    )\n    // Switch Initial Default Tab by considering url hash and session storage based on priority\n    useEffect(() => {\n        // Force the Shop tab regardless of url params, metadata or stored preference.\n        if (isShopTabDefaultEnabled) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n\n        if (!isPlpDefaultCategoryTabEnabled) return\n\n        if (!resourceId) return\n\n        // If there's no Discover tab configured, always default to Shop tab\n        if (!isMainSlotConfigured) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n        // Priority 4: URL parameter (#shop)\n        if (location.hash === `#${TAB_NAMES.SHOP}`) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n\n        // Priority 5: User selected tab - ONLY use category-specific preference\n        if (userPreference) {\n            setDefaultTab(userPreference)\n            return\n        }\n        setDefaultTab(getDefaultTab())\n    }, [\n        isShopTabDefaultEnabled,\n        isPlpDefaultCategoryTabEnabled,\n        userPreference,\n        resourceId,\n        isMainSlotConfigured,\n        location.hash,\n        getUserTabPreference,\n        category\n    ])\n\n    // Determine default tab based on priority rules\n    //OLD code remove with flag isPlpDefaultCategoryTabEnabled\n    useEffect(() => {\n        // Force the Shop tab regardless of url params, metadata or stored preference.\n        if (isShopTabDefaultEnabled) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n\n        if (isPlpDefaultCategoryTabEnabled) return\n\n        if (!resourceId) return\n\n        // If there's no Discover tab configured, always default to Shop tab\n        if (!isMainSlotConfigured) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n\n        // Priority 1: URL parameter (#shop, ?shop=true, or ?discover=true)\n        const locationHash = location.hash.toLowerCase()\n        const hasShopHash = locationHash.includes(TAB_NAMES.SHOP)\n        const hasShopQueryParam = shopParam === 'true'\n        const hasDiscoverQueryParam = discoverParam === 'true'\n\n        if (hasShopHash || hasShopQueryParam) {\n            setDefaultTab(TAB_NAMES.SHOP)\n            return\n        }\n\n        if (hasDiscoverQueryParam) {\n            setDefaultTab(TAB_NAMES.DISCOVER)\n            return\n        }\n\n        // Priority 2: User selected tab - ONLY use category-specific preference\n        const userPreference = getUserTabPreference()\n        if (userPreference) {\n            setDefaultTab(userPreference)\n            return\n        }\n\n        // Priority 3: Category default setting from metadata\n        if (category?.parentCategoryTree?.length > 0) {\n            const currentCategory =\n                category.parentCategoryTree[category.parentCategoryTree.length - 1]\n            if (currentCategory.c_isDiscoverTabDefault === true) {\n                setDefaultTab(TAB_NAMES.DISCOVER)\n                return\n            }\n        }\n\n        // Priority 4: Global default (\"shop\")\n        setDefaultTab(TAB_NAMES.SHOP)\n    }, [\n        isShopTabDefaultEnabled,\n        isPlpDefaultCategoryTabEnabled,\n        resourceId,\n        isMainSlotConfigured,\n        category,\n        location.hash,\n        shopParam,\n        discoverParam,\n        getUserTabPreference\n    ])\n\n    return {\n        defaultTab,\n        getUserTabPreference,\n        setUserTabPreference,\n        TAB_NAMES,\n        category\n    }\n}\n","// React Core\nimport {useState, useEffect} from 'react'\n\n/**\n * useIsClient Hook\n *\n * Returns `true` only after the component has mounted on the client.\n * Useful for detecting client-only behavior in SSR environments.\n *\n * @returns {boolean}\n */\nexport const useIsClient = () => {\n    const [isClient, setIsClient] = useState(false)\n\n    useEffect(() => {\n        setIsClient(true)\n    }, [])\n\n    return isClient\n}\n","import {useMemo} from 'react'\nimport {useCustomMutation} from './useCustomQuery'\nimport {getCustomApiPaths} from '../utils/get-custom-apis'\nimport {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useDolChannelHeaders} from 'pandora-shared-app/overrides/app/utils/dol-channel-headers'\n\nexport const useNotifyMe = () => {\n    const {locale} = useMultiSite()\n\n    const {\n        app: {\n            commerceAPI: {\n                parameters: {organizationId}\n            }\n        }\n    } = getConfig()\n    const {app: appConfig} = getConfig()\n\n    const notifyMeUrl = getCustomApiPaths(appConfig.dolAPI.proxyPath, organizationId).NOTIFY_ME\n\n    // DOL Q3 channel migration — flag ON adds mandatory channelname header + removes deprecated `source` param.\n    const isDolQ3MigrationEnabled = useVariant(LD_KEYS.enableGlobalDolQ3ChannelMigration, false)\n    const dolChannelHeaders = useDolChannelHeaders('pdp')\n\n    const headers = useMemo(\n        () => ({\n            'Content-Type': 'application/json',\n            ...(isDolQ3MigrationEnabled ? dolChannelHeaders : {channeltype: 'online'}),\n            'x-environment': appConfig?.targetEnvironment\n        }),\n        [isDolQ3MigrationEnabled, dolChannelHeaders, appConfig?.targetEnvironment]\n    )\n\n    const queryParams = {\n        locale: locale.id,\n        ...(isDolQ3MigrationEnabled ? {} : {source: 'PWA'})\n    }\n\n    const {\n        mutate: notifyMe,\n        data: notifyMeResponse,\n        isLoading: notifyMeSending,\n        error: notifyMeError\n    } = useCustomMutation(`notifyMe`, {\n        path: notifyMeUrl,\n        method: 'POST',\n        headers,\n        queryParams\n    })\n\n    const submitNotifyMe = (payload) => {\n        notifyMe({body: JSON.stringify(payload)})\n    }\n\n    return {\n        submitNotifyMe,\n        notifyMeResponse,\n        notifyMeSending,\n        notifyMeError\n    }\n}\n","import {useMemo} from 'react'\n\nimport {useTealium} from 'pandora-shared-app/overrides/app/contexts/tealium'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\n\nimport {extractProductDetails} from 'pandora-shared-app/overrides/app/hooks/use-product-details-analytics'\nimport {getFavoriteStore} from '../utils/cnc-store-utils'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n/**\n * @typedef {object} DataLayerClickAndCollect\n * @property {string} [store_search_type] \"zip_code\" or \"city_name\"\n * @property {string} [store_search_city]\n * @property {string} [store_search_zip]\n * @property {string} [store_search_range]\n * @property {string} [store_search_results]\n * @property {Array} [store_search_items]\n * @property {string[]} [international_store_ids]\n * @property {string} [default_store]\n * @property {string} [page_name]\n * @property {string} [store_lookup_message]\n */\n\n/**\n * @typedef {object} StoreSearchResult\n * @param {string} postalCode\n * @param {string} range\n * @param {number} total\n * @param {number} limit\n * @param {object[]} data\n * @param {string} data.id\n * @param {string} data.name\n * @param {boolean} data.hasStock\n */\n\nconst STORE_EVENTS = TEALIUM_CONSTANTS.ESTORE_EVENT.STORE\nconst EVENT_HANDLERS_MAP = {\n    [STORE_EVENTS.SHOPSEARCH]: getShopSearchData,\n    [STORE_EVENTS.USE_LOCATION]: getShopSearchData,\n    [STORE_EVENTS.SEARCHAGAIN]: getShopSearchData,\n    [STORE_EVENTS.CALLSTORE]: getShopSearchData,\n    [STORE_EVENTS.CLOSESTORELOOKUP]: getShopSearchData,\n    [STORE_EVENTS.SELECTSTORE]: getStoreDetailsSearchData,\n    [STORE_EVENTS.STOREDETAILS]: getStoreDetailsSearchData\n}\n\nexport const useClickAndCollectAnalytics = (products = []) => {\n    const {link} = useTealium()\n    const shouldCleanBloomreachSuffix = useVariant(\n        LD_KEYS.enableCleanBloomreachSuffixFromDataLayer,\n        false\n    )\n\n    const datalayerProducts = useMemo(() => {\n        const sourceProducts = Array.isArray(products) ? products : [products]\n        return sourceProducts.map((product) =>\n            extractProductDetails(product, true, false, null, shouldCleanBloomreachSuffix)\n        )\n    }, [products, shouldCleanBloomreachSuffix])\n\n    const dataEvent = {\n        estore_event: [],\n        store_lookup_message: '',\n        store_search_zip: '',\n        store_search_range: '',\n        store_search_results: '0',\n        store_search_items: [],\n        international_store_ids: [],\n        products: datalayerProducts\n    }\n\n    /**\n     * @param {string} eventName\n     * @param {DataLayerClickAndCollect|StoreSearchResult} [data]\n     * @param {object} [context]\n     * @param {string} [context.action] Change Store\n     * @param {string} [context.page_name] detail view\n     * @param {object} [context.store] selected store\n     */\n    const trackEvent = (eventName, data = {}, context = {}) => {\n        const eventDataHandler = EVENT_HANDLERS_MAP[eventName]\n        /** @type {DataLayerClickAndCollect} */\n        const dataLayerData =\n            typeof eventDataHandler === 'function' ? eventDataHandler(data, context) : data\n        link({\n            ...dataEvent,\n            ...dataLayerData,\n            ...(context.page_name && {page_name: context.page_name}),\n            estore_event: [eventName]\n        })\n    }\n\n    return {trackEvent}\n}\n\n/**\n * @param {StoreSearchResult} searchResult\n * @param {object} [context]\n * @returns {DataLayerClickAndCollect}\n */\nfunction getShopSearchData(searchResult, context = {}) {\n    const {action = 'Change Store'} = context\n\n    // Convert the store ID to a format meeting the global data team guidelines - e.g. from new-york-usb5a9eaa0 to usb5a9eaa0\n    const getInternationalStoreId = (storeId) => {\n        let tokens = storeId ? storeId.split('-') : []\n        return tokens[tokens.length - 1]\n    }\n\n    const stockMap = {\n        true: 'In Stock',\n        false: 'Out of Stock'\n    }\n    const storesCount = Math.min(searchResult.total, searchResult.limit)\n\n    // store_search_items: [\"store:INSERT-STORE-ID|stock:INSERT-STOCK-STATUS|cta:INSERT-CTA-TEXT\"]\n    const storeSearchItems = searchResult.data.map(\n        (store) =>\n            `store:${getInternationalStoreId(store.id)}|stock:${\n                stockMap[store.hasStock]\n            }|cta:${action}`\n    )\n\n    const {store: selectedStore} = getFavoriteStore() || {}\n\n    return {\n        // Loqate zip search runs by coordinates, so the zip arrives via store_search_zip.\n        store_search_zip: searchResult.store_search_zip ?? searchResult.postalCode ?? '',\n        store_search_range: searchResult.range,\n        store_search_results: storesCount.toString(),\n        international_store_ids: searchResult.data.map((item) => getInternationalStoreId(item.id)),\n        store_search_items: storeSearchItems,\n        // Present only for the new Loqate search (zip/city).\n        ...(searchResult.store_search_type && {\n            store_search_type: searchResult.store_search_type\n        }),\n        ...(searchResult.store_search_city && {\n            store_search_city: searchResult.store_search_city\n        }),\n        ...(selectedStore && {default_store: selectedStore.name}),\n        ...(storesCount === 0 && {\n            store_lookup_message: 'no stores were found near you location'\n        })\n    }\n}\n\n/**\n * @param {StoreSearchResult} searchResult\n * @param {object} [context]\n * @returns {DataLayerClickAndCollect}\n */\nfunction getStoreDetailsSearchData(searchResult, context = {}) {\n    const {store = {}} = context\n    const trackingData = getShopSearchData(searchResult, context)\n\n    trackingData.store_lookup_message = store.hasStock ? 'Available' : 'Currently out of stock'\n\n    return trackingData\n}\n","import {useCallback, useEffect, useRef} from 'react'\nimport {useRecommendationsAnalytics} from './use-product-details-analytics'\nimport {useEinsteinRecoTracking} from './use-einstein-reco-tracking'\nimport {useBloomreachRecoTracking} from './use-bloomreach-reco-tracking'\nimport {useVariant} from './use-variant'\nimport {TEALIUM_CONSTANTS} from '../constants'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {RECOMMENDER_ENGINES} from './use-recommendations'\n\n/** @typedef {import('./types/recommendations-tracking').RecommendedProduct} RecommendedProduct */\n/** @typedef {import('./types/recommendations-tracking').RecommendationsResponse} RecommendationsResponse */\n/** @typedef {import('./types/recommendations-tracking').WidgetMetadata} WidgetMetadata */\n/** @typedef {import('../types/product').DOLProduct} DOLProduct */\n\n// Constants\nconst PERSONALIZATION_PLATFORM = 'einstein'\n\n// Main Hook\n\n/**\n * Orchestrator hook that composes multiple analytics providers for recommendation tracking.\n * Currently supports Tealium and Einstein tracking, extensible for future providers.\n * Handles deduplication of view events - each recommender zone fires only once per product.\n *\n * @param {Object} options\n * @param {Object} [options.product] - The source product for recommendations\n * @param {RecommendationsResponse} [options.recommendations] - The recommendations response\n * @param {string} options.recommender - The recommender id (Bloomreach/Einstein recommender)\n * @param {string} [options.personalisationType] - Distinct zone name used as the Tealium\n *   `personalisaton_type` (e.g. `PLP_in_grid_you_may_also_like_1`). Falls back to `recommender`\n *   when omitted, preserving the legacy behaviour where both fields share the recommender id.\n * @param {string} [options.recommenderEngine] - The recommendation engine (e.g. 'bloomreach', 'einstein')\n * @param {WidgetMetadata} [options.metadata] - DOL recommendation response metadata (Bloomreach widget details)\n * @returns {{\n *   trackView: (products?: RecommendedProduct[], options?: {isFreshViewportEntry?: boolean}) => void,\n *   trackClick: (clickedProduct: DOLProduct) => void,\n *   trackAddToCart: (addedProduct: DOLProduct, options?: {sku?: string}) => void,\n *   isBloomreachAddTrackingEnabled: boolean\n * }}\n */\nexport const useRecommendationsTracking = ({\n    product = {},\n    recommendations = {},\n    recommender,\n    personalisationType,\n    recommenderEngine,\n    metadata\n}) => {\n    const {trackRecommendationLinkEvent} = useRecommendationsAnalytics()\n    const {trackViewReco, trackClickReco} = useEinsteinRecoTracking(recommendations)\n    const {\n        trackViewReco: trackBloomreachViewReco,\n        trackClickReco: trackBloomreachClickReco,\n        trackAddToCartReco: trackBloomreachAddToCartReco,\n        isEnabled: isBloomreachRecoTrackingEnabled\n    } = useBloomreachRecoTracking(metadata?.widget)\n    const isTealiumEnabled = useVariant(LD_KEYS.enableGlobalRecommendationsTracking, false)\n    const isEinsteinTrackingSupported =\n        !recommenderEngine || recommenderEngine === RECOMMENDER_ENGINES.EINSTEIN\n    const isBloomreachTrackingSupported = recommenderEngine === RECOMMENDER_ENGINES.BLOOMREACH\n\n    // DERIVED VALUES\n    const productId = product?.productType?.variant ? product?.master?.masterId : product?.productId\n    const bloomreachWrid = metadata?.widget?.requestId ?? metadata?.widget?.rid\n\n    // Tracks which recommender zones have already fired view events.\n    // Resets when product changes (e.g., navigating to different PDP).\n    const trackedRecZonesRef = useRef([])\n    const trackedBloomreachWridRef = useRef(null)\n\n    useEffect(() => {\n        trackedRecZonesRef.current = []\n    }, [productId])\n\n    // CALLBACKS\n\n    /**\n     * Tracks recommendation view event across all enabled analytics providers.\n     * Deduplicates view events - each recommender fires only once per product.\n     * @param {RecommendedProduct[]} [products] - Array of recommended products being viewed\n     */\n    const trackView = useCallback(\n        (products, {isFreshViewportEntry = true} = {}) => {\n            // Must run before the zone dedupe below, or a stale zone-deduped call\n            // would consume the widget's only view.\n            if (\n                isBloomreachTrackingSupported &&\n                isFreshViewportEntry &&\n                trackedBloomreachWridRef.current !== bloomreachWrid\n            ) {\n                trackedBloomreachWridRef.current = bloomreachWrid\n                trackBloomreachViewReco()\n            }\n\n            // Deduplicate: only track view once per recommender zone\n            if (trackedRecZonesRef.current.includes(recommender)) {\n                return\n            }\n            trackedRecZonesRef.current.push(recommender)\n\n            // Tealium tracking\n            if (isTealiumEnabled) {\n                trackRecommendationLinkEvent(TEALIUM_CONSTANTS.ESTORE_EVENT.RECOMMENDATION_VIEWED, {\n                    personalization: 'on',\n                    personalization_platform: recommenderEngine || PERSONALIZATION_PLATFORM,\n                    personalisaton_type: personalisationType || recommender,\n                    personalisation_recommender: recommender\n                })\n            }\n\n            // Einstein tracking — only when engine supports it\n            if (isEinsteinTrackingSupported) {\n                trackViewReco(products)\n            }\n        },\n        [\n            recommender,\n            personalisationType,\n            recommenderEngine,\n            isTealiumEnabled,\n            isEinsteinTrackingSupported,\n            isBloomreachTrackingSupported,\n            bloomreachWrid,\n            trackRecommendationLinkEvent,\n            trackViewReco,\n            trackBloomreachViewReco\n        ]\n    )\n\n    /**\n     * Tracks recommendation click event across all enabled analytics providers.\n     * @param {DOLProduct} clickedProduct - The clicked recommended product\n     */\n    const trackClick = useCallback(\n        (clickedProduct) => {\n            // Tealium tracking\n            if (isTealiumEnabled) {\n                trackRecommendationLinkEvent(\n                    TEALIUM_CONSTANTS.ESTORE_EVENT.RECOMMENDATION_CLICKED,\n                    {\n                        personalization: 'on',\n                        personalization_platform: recommenderEngine || PERSONALIZATION_PLATFORM,\n                        personalisaton_type: personalisationType || recommender,\n                        personalisation_recommender: recommender\n                    }\n                )\n            }\n\n            // Einstein tracking — only when engine supports it\n            if (isEinsteinTrackingSupported) {\n                trackClickReco(clickedProduct)\n            }\n\n            // Bloomreach tracking — only when engine is bloomreach\n            if (isBloomreachTrackingSupported) {\n                trackBloomreachClickReco(clickedProduct)\n            }\n        },\n        [\n            isTealiumEnabled,\n            isEinsteinTrackingSupported,\n            isBloomreachTrackingSupported,\n            recommender,\n            personalisationType,\n            recommenderEngine,\n            trackRecommendationLinkEvent,\n            trackClickReco,\n            trackBloomreachClickReco\n        ]\n    )\n\n    /**\n     * Tracks recommendation add-to-cart event for supported providers.\n     * @param {DOLProduct} addedProduct - The product added to cart from the widget\n     * @param {{sku?: string}} [options] - Add-to-cart options\n     * @param {string} [options.sku] - Variant SKU of the added product\n     */\n    const trackAddToCart = useCallback(\n        (addedProduct, {sku} = {}) => {\n            // Bloomreach tracking — only when engine is bloomreach\n            if (isBloomreachTrackingSupported) {\n                trackBloomreachAddToCartReco(addedProduct, {sku})\n            }\n        },\n        [isBloomreachTrackingSupported, trackBloomreachAddToCartReco]\n    )\n\n    // RETURN STATEMENT\n    return {\n        trackView,\n        trackClick,\n        trackAddToCart,\n        // Signals BuyFromTile to skip click-add when widget-add fires here instead.\n        isBloomreachAddTrackingEnabled:\n            isBloomreachTrackingSupported && isBloomreachRecoTrackingEnabled\n    }\n}\n","import {useCallback} from 'react'\nimport useEinstein from './use-einstein'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\n\n/** @typedef {import('./types/einstein').EinsteinRecommendation} EinsteinRecommendation */\n/** @typedef {import('./types/einstein').EinsteinRecommendationsResponse} EinsteinRecommendationsResponse */\n/** @typedef {import('../types/product').DOLProduct} DOLProduct */\n\n// Main Hook\n\n/**\n * Domain hook for Einstein recommendation tracking.\n * Handles sendViewReco and sendClickReco events.\n *\n * @param {EinsteinRecommendationsResponse} [recommendations] - The recommendations response from useEinstein().getRecommendations()\n * @returns {{\n *   trackViewReco: (products: EinsteinRecommendation[]) => Promise<Object>|undefined,\n *   trackClickReco: (product: DOLProduct) => Promise<Object>|undefined,\n *   isEnabled: boolean\n * }}\n */\nexport const useEinsteinRecoTracking = (recommendations = {}) => {\n    const einstein = useEinstein()\n    const isEnabled = useVariant(LD_KEYS.enableEinsteinRecoTracking, false)\n\n    // DERIVED VALUES\n    const recoUUID = recommendations?.recoUUID\n    const recommenderName = recommendations?.recommenderName\n    const hasValidRecommenderDetails = Boolean(recoUUID) && Boolean(recommenderName)\n\n    // CALLBACKS\n    const trackViewReco = useCallback(\n        /**\n         * Tracks when recommendations are viewed.\n         * @param {EinsteinRecommendation[]} products - Array of recommended products to track\n         * @returns {Promise<Object>|undefined}\n         */\n        (products) => {\n            if (!isEnabled || !hasValidRecommenderDetails) {\n                return\n            }\n            return einstein.sendViewReco({__recoUUID: recoUUID, recommenderName}, products)\n        },\n        [isEnabled, hasValidRecommenderDetails, recoUUID, recommenderName, einstein]\n    )\n\n    const trackClickReco = useCallback(\n        /**\n         * Tracks when a recommendation is clicked.\n         * @param {DOLProduct} product - The clicked recommended product\n         * @returns {Promise<Object>|undefined}\n         */\n        (product) => {\n            if (!isEnabled || !hasValidRecommenderDetails) {\n                return\n            }\n            return einstein.sendClickReco({__recoUUID: recoUUID, recommenderName}, product)\n        },\n        [isEnabled, hasValidRecommenderDetails, recoUUID, recommenderName, einstein]\n    )\n\n    // RETURN STATEMENT\n    return {\n        trackViewReco,\n        trackClickReco,\n        isEnabled\n    }\n}\n","import {useCallback} from 'react'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {logWidgetViewEvent, logWidgetClickEvent, logWidgetAddEvent} from './helpers/pixel-debounce'\n\n/** @typedef {import('./use-recommendations/types/recommendations').WidgetMetadata} WidgetMetadata */\n/** @typedef {import('../types/product').DOLProduct} DOLProduct */\n\n// Main Hook\n\n/**\n * Domain hook for Bloomreach recommendation-widget pixel tracking.\n * Mirrors useEinsteinRecoTracking: exposes trackViewReco and trackClickReco,\n * gated by the enableGlobalBloomreachRecoTracking LaunchDarkly flag.\n *\n * Fires the Bloomreach `widget-view` / `widget-click` pixel events via the\n * BrTrk SDK. All pixel calls are SSR-safe and no-op gracefully when the\n * BrTrk SDK is not loaded (handled inside pixel-debounce `getTracker()`)\n * or when required widget metadata (`requestId`/`id`) is missing.\n *\n * @param {WidgetMetadata} [widget] - Bloomreach widget metadata from the DOL recommendation response\n * @returns {{\n *   trackViewReco: () => void,\n *   trackClickReco: (product: DOLProduct) => void,\n *   trackAddToCartReco: (product: DOLProduct, options?: {sku?: string}) => void,\n *   isEnabled: boolean\n * }}\n */\nexport const useBloomreachRecoTracking = (widget = {}) => {\n    const isEnabled = useVariant(LD_KEYS.enableGlobalBloomreachRecoTracking, false)\n\n    // DERIVED VALUES — map DOL widget metadata to Bloomreach pixel params\n    // DOL returns the widget request ID as `requestId` (mapped to Bloomreach `wrid`).\n    // `rid` kept as a defensive fallback in case the DOL contract changes.\n    const wrid = widget?.requestId ?? widget?.rid\n    const wid = widget?.id\n    const wty = widget?.type\n    // requestId is provided by DOL (FIND-6593); until present, pixel events must not fire.\n    const hasValidWidgetDetails = Boolean(wrid) && Boolean(wid)\n\n    // CALLBACKS\n    const trackViewReco = useCallback(\n        /**\n         * Tracks when a Bloomreach recommendation zone becomes visible.\n         * @returns {void}\n         */\n        () => {\n            if (!isEnabled || !hasValidWidgetDetails) {\n                return\n            }\n            logWidgetViewEvent({wrid, wid, wty})\n        },\n        [isEnabled, hasValidWidgetDetails, wrid, wid, wty]\n    )\n\n    const trackClickReco = useCallback(\n        /**\n         * Tracks when a recommended product is clicked.\n         * @param {DOLProduct} product - The clicked recommended product\n         * @returns {void}\n         */\n        (product) => {\n            if (!isEnabled || !hasValidWidgetDetails) {\n                return\n            }\n            const itemId = product?.productId || product?.id\n            logWidgetClickEvent({wrid, wid, wty, item_id: itemId})\n        },\n        [isEnabled, hasValidWidgetDetails, wrid, wid, wty]\n    )\n\n    const trackAddToCartReco = useCallback(\n        /**\n         * Tracks when a recommended product is added to cart from within the widget.\n         * @param {DOLProduct} product - The added recommended product\n         * @param {{sku?: string}} [options] - Add-to-cart options\n         * @param {string} [options.sku] - Variant SKU of the added product\n         * @returns {void}\n         */\n        (product, {sku} = {}) => {\n            if (!isEnabled || !hasValidWidgetDetails) {\n                return\n            }\n            const itemId = product?.productId || product?.id\n            logWidgetAddEvent({wrid, wid, wty, item_id: itemId, sku})\n        },\n        [isEnabled, hasValidWidgetDetails, wrid, wid, wty]\n    )\n\n    // RETURN STATEMENT\n    return {\n        trackViewReco,\n        trackClickReco,\n        trackAddToCartReco,\n        isEnabled\n    }\n}\n","import React, {createContext, useContext, useState, useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\n\nconst FingerSizerContext = createContext(null)\n\nexport const FingerSizerProvider = ({children}) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const open = useCallback(() => setIsOpen(true), [])\n    const close = useCallback(() => setIsOpen(false), [])\n\n    const value = useMemo(\n        () => ({\n            isFingerSizerOpen: isOpen,\n            openFingerSizer: open,\n            closeFingerSizer: close\n        }),\n        [isOpen, open, close]\n    )\n\n    return <FingerSizerContext.Provider value={value}>{children}</FingerSizerContext.Provider>\n}\n\nFingerSizerProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nconst SAFE_DEFAULTS = {\n    isFingerSizerOpen: false,\n    openFingerSizer: () => {},\n    closeFingerSizer: () => {}\n}\n\n/**\n * @returns {{\n *   isFingerSizerOpen: boolean,\n *   openFingerSizer: Function,\n *   closeFingerSizer: Function\n * }}\n */\nexport const useFingerSizerContext = () => {\n    const context = useContext(FingerSizerContext)\n    return context ?? SAFE_DEFAULTS\n}\n","import {Stack, Button, useStyleConfig} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport React from 'react'\nimport {useNavigationCallback} from '../../../hooks/use-navigation-callback'\nimport {CONTROLLER_PATH} from '../../_app/partials/constants'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {useViewBagLoader} from 'pandora-shared-app/overrides/app/hooks/use-view-bag-loader'\nimport ViewBagButtonContent from 'pandora-shared-app/overrides/app/components/view-bag-button-content'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\nconst ConfirmationSheetCallToAction = ({handleClose, totalCount, darkTheme}) => {\n    const styles = useStyleConfig('MiniCart')\n    const onViewCartClick = useNavigationCallback(CONTROLLER_PATH.CART_SHOW)\n    const isShowContinueShopping = useVariant('enable-continue-shopping', false)\n    const enableViewBagLottieLoader = useVariant(LD_KEYS.enableViewBagLottieLoader, false)\n\n    const {isViewBagLoading, handleViewBagClick} = useViewBagLoader({\n        enabled: enableViewBagLottieLoader,\n        onViewCart: onViewCartClick\n    })\n\n    const intl = useIntl()\n    return (\n        <Stack spacing=\"4\" direction=\"row\">\n            <Button\n                onClick={handleViewBagClick}\n                width=\"100%\"\n                paddingX={2}\n                variant={darkTheme ? 'emphasized' : 'outline'}\n                border={'1px solid'}\n                borderColor={darkTheme ? 'grayBorder' : 'black4'}\n                flexWrap=\"wrap\"\n            >\n                <ViewBagButtonContent\n                    isLoading={enableViewBagLottieLoader && isViewBagLoading}\n                    darkTheme={darkTheme}\n                    totalCount={totalCount}\n                    textStyles={styles.outlineButtonText}\n                />\n            </Button>\n\n            {isShowContinueShopping && (\n                <Button\n                    onClick={handleClose}\n                    width=\"100%\"\n                    paddingX={2}\n                    variant={darkTheme ? 'outline' : 'emphasized'}\n                    {...(darkTheme && {bg: 'white'})}\n                >\n                    {intl.formatMessage({\n                        defaultMessage: 'Continue Shopping',\n                        id: 'empty_cart.link.continue_shopping'\n                    })}\n                </Button>\n            )}\n        </Stack>\n    )\n}\n\nConfirmationSheetCallToAction.propTypes = {\n    handleClose: PropTypes.func,\n    totalCount: PropTypes.number,\n    darkTheme: PropTypes.bool\n}\n\nexport default ConfirmationSheetCallToAction\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {Text, Progress, Flex, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst ConfirmationSheetProgressBar = memo(({approachingDiscountValue}) => {\n    if (!approachingDiscountValue) {\n        return null\n    }\n\n    const {message, percentage, formattedAmount} = approachingDiscountValue\n\n    return (\n        <>\n            <Box\n                data-auto=\"pwaPromoProgressBarMessage\"\n                textStyle=\"bodySm\"\n                color=\"white\"\n                mb={1}\n                dangerouslySetInnerHTML={{__html: message}}\n            />\n            <Flex flexDirection=\"row\" alignItems=\"center\">\n                <Progress\n                    w=\"100%\"\n                    value={percentage}\n                    size=\"xs\"\n                    borderRadius=\"0\"\n                    sx={{\n                        height: '3px',\n                        '& > div': {\n                            backgroundColor: 'pandoraPromo'\n                        }\n                    }}\n                />\n                <Text textStyle=\"bodySm\" color=\"white\" ml={2}>\n                    {formattedAmount}\n                </Text>\n            </Flex>\n        </>\n    )\n})\n\nConfirmationSheetProgressBar.displayName = 'ConfirmationSheetProgressBar'\n\nConfirmationSheetProgressBar.propTypes = {\n    approachingDiscountValue: PropTypes.shape({\n        message: PropTypes.string.isRequired,\n        percentage: PropTypes.number.isRequired,\n        formattedAmount: PropTypes.string.isRequired\n    })\n}\n\nexport default ConfirmationSheetProgressBar\n","import React, {memo} from 'react'\nimport PropTypes from 'prop-types'\nimport {HStack, Circle, Text, Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst ConfirmationSheetBubbleBar = memo(({approachingDiscountValue}) => {\n    if (!approachingDiscountValue) {\n        return null\n    }\n\n    const {amount, qualifyingAmount, message} = approachingDiscountValue\n    const stepArray = Array.from({length: amount}, (_, i) => i + 1)\n\n    return (\n        <>\n            <Box\n                data-auto=\"pwaPromoBubbleBarMessage\"\n                textStyle=\"headingSm\"\n                color=\"white\"\n                mb={2}\n                dangerouslySetInnerHTML={{__html: message}}\n            />\n            <HStack spacing={2} mb={2}>\n                {stepArray.map((step) => {\n                    const isActive = step <= qualifyingAmount\n\n                    return (\n                        <Circle\n                            key={step}\n                            data-auto=\"pwaPromoBubble\"\n                            data-step={step}\n                            data-filled={isActive}\n                            aria-current={isActive ? 'step' : undefined}\n                            size={6}\n                            bg={isActive ? 'pandoraPromo' : 'transparent'}\n                            border=\"0.75px solid\"\n                            borderColor={isActive ? 'pandoraPromo' : 'grayBorder'}\n                            color={isActive ? 'black' : 'black3a'}\n                        >\n                            <Text fontSize=\"sm\" fontWeight=\"medium\">\n                                {step}\n                            </Text>\n                        </Circle>\n                    )\n                })}\n            </HStack>\n        </>\n    )\n})\n\nConfirmationSheetBubbleBar.displayName = 'ConfirmationSheetBubbleBar'\n\nConfirmationSheetBubbleBar.propTypes = {\n    approachingDiscountValue: PropTypes.shape({\n        amount: PropTypes.number.isRequired,\n        qualifyingAmount: PropTypes.number.isRequired,\n        message: PropTypes.string.isRequired\n    })\n}\n\nexport default ConfirmationSheetBubbleBar\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {AspectRatio, Box} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport getImageUrl from '../../../utils/get-image-url'\n\nconst IMAGE_CONF = {\n    bgColor: 'F7F7F7',\n    quality: 80,\n    imgType: 'png'\n}\n\n/**\n * Round product thumbnail used by the confirmation sheet. Accepts both the product tile\n * shape (`imageSrc`) and the PDP shape (`imageSequence`).\n */\nexport function ProductImage({product, alt}) {\n    let src = ''\n    let altText = alt || product?.name || product?.productName || ''\n    const isProductABundleOrSetOrGC =\n        product?.productType?.bundle || product?.productType?.set || product?.giftCardType\n\n    try {\n        // Try tile structure first (imageSrc - already a full URL from productToTileMapping)\n        if (product?.imageSrc) {\n            // Replace the placeholder [&sw={width}] with actual width parameter\n            // and change main_rect_base to main_rect_center for modal display\n            src = product.imageSrc\n                .replaceAll('[&sw={width}]', '&sw=400')\n                .replaceAll('/main_rect_base/', '/main_rect_center/')\n            altText = product.imageAlt || altText\n        }\n        // Try PDP structure (imageSequence)\n        else if (product?.imageSequence) {\n            const mainImage = isProductABundleOrSetOrGC\n                ? product?.imageSequence?.[0]\n                : product?.imageSequence?.[1]\n            if (mainImage?.disBaseLink) {\n                const imgParams = `?sw=400&sfrm=${IMAGE_CONF.imgType}&bgcolor=${IMAGE_CONF.bgColor}&q=${IMAGE_CONF.quality}`\n                src = getImageUrl(mainImage.disBaseLink, imgParams)\n                altText = mainImage.alt || altText\n            }\n        }\n    } catch (error) {\n        // Log error for debugging but continue with fallback\n        console.warn('Error processing product image:', error)\n    }\n\n    return (\n        <AspectRatio ratio=\"1\">\n            <Box as=\"img\" borderRadius=\"50%\" objectFit=\"cover\" src={src} alt={altText} />\n        </AspectRatio>\n    )\n}\n\nProductImage.propTypes = {\n    product: PropTypes.object,\n    alt: PropTypes.string\n}\n\nexport default ProductImage\n","// Function to fetch modified image URL\nconst getImageUrl = (url, params) => {\n    try {\n        let imageUrl = new URL(url)\n        imageUrl.pathname = imageUrl.pathname.replace(/\\?q=\\d+/, '').replace('.png', '.jpg')\n        return imageUrl + params\n    } catch (e) {\n        console.error('getImageUrl error:', e)\n        return url + params\n    }\n}\n\nexport default getImageUrl\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {Box, Flex, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {StaticPinkCheckIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {getStudioCompositionCounts, STUDIO_BRACELET_TYPE} from '../../../utils/product-type-utils'\nimport {ProductImage} from './product-image'\n\n/**\n * Confirmation sheet header for a Styling Studio composition.\n */\nexport function StudioCompositionSummary({itemsAdded}) {\n    const intl = useIntl()\n    const {braceletCount, charmCount} = getStudioCompositionCounts(itemsAdded)\n    const orderedItems = [\n        ...itemsAdded.filter((item) => item?.product?.type === STUDIO_BRACELET_TYPE),\n        ...itemsAdded.filter((item) => item?.product?.type !== STUDIO_BRACELET_TYPE)\n    ]\n\n    const summaryParts = []\n    if (braceletCount > 0) {\n        summaryParts.push(\n            intl.formatMessage(\n                {\n                    defaultMessage: '{count, plural, one {# bracelet} other {# bracelets}}',\n                    id: 'confirmation_sheet.label.studio_bracelet_count'\n                },\n                {count: braceletCount}\n            )\n        )\n    }\n    if (charmCount > 0) {\n        summaryParts.push(\n            intl.formatMessage(\n                {\n                    defaultMessage: '{count, plural, one {# charm} other {# charms}}',\n                    id: 'confirmation_sheet.label.studio_charm_count'\n                },\n                {count: charmCount}\n            )\n        )\n    }\n\n    return (\n        <Box paddingBottom={4} data-testid=\"studio-composition-summary\">\n            <Flex\n                gridGap=\"2\"\n                overflowX=\"auto\"\n                paddingBottom={2}\n                sx={{\n                    scrollbarWidth: 'none',\n                    overscrollBehaviorX: 'contain',\n                    '&::-webkit-scrollbar': {display: 'none'}\n                }}\n                data-testid=\"studio-composition-thumbnails\"\n            >\n                {orderedItems.map((item, index) => (\n                    <Box\n                        key={item?.product?.id || item?.product?.productId || `studio-${index}`}\n                        w={20}\n                        flex=\"none\"\n                    >\n                        <ProductImage product={item?.product} />\n                    </Box>\n                ))}\n            </Flex>\n            <Box color={'pandoraPink'} textStyle={'bodySm'}>\n                <Text\n                    textStyle={'bodySm'}\n                    color={'white'}\n                    data-testid=\"studio-composition-description\"\n                >\n                    {summaryParts.join(' + ')}\n                </Text>\n                <Stack spacing=\"1\" direction=\"row\">\n                    <Text textStyle={'bodySm'}>\n                        {intl.formatMessage({\n                            defaultMessage: 'Added',\n                            id: 'add_to_cart_modal.label.added'\n                        })}\n                    </Text>\n                    <Stack spacing=\"0\" as=\"span\" justifyContent={'center'}>\n                        <StaticPinkCheckIcon w={3} h={3} data-testid=\"pink-check-icon\" />\n                    </Stack>\n                </Stack>\n            </Box>\n        </Box>\n    )\n}\n\nStudioCompositionSummary.propTypes = {\n    itemsAdded: PropTypes.arrayOf(\n        PropTypes.shape({\n            product: PropTypes.object,\n            quantity: PropTypes.number\n        })\n    ).isRequired\n}\n\nexport default StudioCompositionSummary\n","import {useState} from 'react'\nimport {useWishList} from '@salesforce/retail-react-app/app/hooks/use-wish-list'\nimport {useCustomerId, useShopperCustomersMutation} from '@salesforce/commerce-sdk-react'\nimport {useVariant} from './use-variant'\nimport {LD_KEYS} from '../api_keys/ld-keys'\nimport {isSetProductType} from '../utils/product-type-utils'\n\nconst useProductWishList = () => {\n    const customerId = useCustomerId()\n    const excludeSetsFromWishlist = useVariant(LD_KEYS.enableGlobalExcludeSetsFromWishlist, false)\n    const [wishlistLoading, setWishlistLoading] = useState([])\n    const {data: wishlist, isLoading: isWishlistLoading} = useWishList()\n    const createCustomerProductListItem = useShopperCustomersMutation(\n        'createCustomerProductListItem'\n    )\n    const {mutateAsync: deleteCustomerProductListItem} = useShopperCustomersMutation(\n        'deleteCustomerProductListItem'\n    )\n\n    const handleAddToWishlist = (product, variant, quantity = 1) => {\n        // FIND-5111: last line of defence — a Set added to a wishlist produces a\n        // row with a null price, so never issue the mutation for one even if a\n        // surface still renders the affordance.\n        const isSetProduct =\n            isSetProductType(product?.productType) ||\n            isSetProductType(product?.hitType) ||\n            isSetProductType(product?.type)\n\n        if (excludeSetsFromWishlist && isSetProduct) return\n\n        const isItemInWishlist = wishlist?.customerProductListItems?.find(\n            (i) => i.productId === variant?.productId || i.productId === product?.productId\n        )\n\n        if (!isItemInWishlist) {\n            createCustomerProductListItem.mutate({\n                parameters: {\n                    listId: wishlist.id,\n                    customerId\n                },\n                body: {\n                    // NOTE: API does not respect quantity, it always adds 1\n                    quantity,\n                    productId: variant?.productId || product?.productId || product,\n                    public: false,\n                    priority: 1,\n                    type: 'product'\n                }\n            })\n        }\n    }\n\n    const removeItemFromWishlist = async (productId) => {\n        setWishlistLoading([...wishlistLoading, productId])\n\n        const listId = wishlist.id\n        const itemId = wishlist.customerProductListItems.find((i) => i.productId === productId).id\n\n        await deleteCustomerProductListItem({\n            body: {},\n            parameters: {customerId, listId, itemId}\n        })\n    }\n\n    return {\n        wishlist,\n        isWishlistLoading,\n        handleAddToWishlist,\n        removeItemFromWishlist\n    }\n}\n\nexport default useProductWishList\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {\n    Box,\n    Flex,\n    Text,\n    Stack,\n    useBreakpointValue,\n    Drawer,\n    DrawerOverlay,\n    DrawerContent,\n    DrawerBody,\n    DrawerHeader,\n    DrawerFooter\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Button} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {useCurrentBasket} from 'pandora-shared-app/overrides/app/hooks/use-current-basket'\nimport {getDisplayVariationValues} from '@salesforce/retail-react-app/app/utils/product-utils'\nimport {PinkOverlay} from '../drawer-sheet/partials/pink-overlay'\nimport {CloseButton} from '../drawer-sheet/partials/close-button'\nimport {useDelayedOnClose} from '../drawer-sheet/hooks/use-delayed-on-close'\nimport {useResponsivePlacement} from '../drawer-sheet/hooks/use-responsive-placement'\nimport {LightweightDrawer} from '../drawer-sheet/partials/lightweight-drawer'\nimport {animationDuration} from '../drawer-sheet/drawer-utils/constants'\nimport ConfirmationSheetCallToAction from './partials/ConfirmationSheetCallToAction'\nimport ConfirmationSheetProgressBar from './partials/confirmation-sheet-progress-bar'\nimport ConfirmationSheetBubbleBar from './partials/confirmation-sheet-bubble-bar'\nimport {ProductImage} from './partials/product-image'\nimport {StudioCompositionSummary} from './partials/studio-composition-summary'\nimport {isStudioComposition} from '../../utils/product-type-utils'\nimport MiniCartCallToAction from '../nav/partials/mini-cart/partials/MiniCartCallToAction'\nimport {StaticPinkCheckIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport useProductWishList from 'pandora-shared-app/overrides/app/hooks/use-product-wishlist'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useStringVariant, useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {RecommendedProducts} from 'pandora-shared-app/overrides/app/components/recommended-products'\nimport {RECOMMENDER_ENGINES} from 'pandora-shared-app/overrides/app/hooks/use-recommendations'\nimport {CaratMessage} from '../product-tile/partials/carat-message'\nimport {useNavigationCallback} from '../../hooks/use-navigation-callback'\nimport {CONTROLLER_PATH} from '../_app/partials/constants'\nimport {useTealium} from '../../contexts/tealium'\n\nconst getProductName = (product) => product?.name || product?.productName\n\n// Helper for rendering variation attributes\nfunction VariationAttributes({variationAttributeValues, intl}) {\n    return (\n        <>\n            {Object.entries(variationAttributeValues || {}).map(([, value]) => (\n                <Text key={value} color={'black3a'} textStyle={'bodySm'}>\n                    {intl\n                        .formatMessage({\n                            defaultMessage: 'size',\n                            id: 'product_view.button.selected_size'\n                        })\n                        .replace(/^./, (char) => char.toUpperCase())}{' '}\n                    {value}\n                </Text>\n            ))}\n        </>\n    )\n}\n\nVariationAttributes.propTypes = {\n    variationAttributeValues: PropTypes.object,\n    intl: PropTypes.object\n}\n\n// Helper function to generate consistent item keys\nfunction getItemKey(variant, product, fallback) {\n    return variant?.productId || product?.id || fallback\n}\n\n// Helper function to get variation attributes\nfunction getVariationAttributes(product, variant) {\n    return getDisplayVariationValues(product?.variationAttributes, variant?.variationValues)\n}\n\n// Helper component for product item display\nfunction ProductItem({product, variant, index, intl}) {\n    const variationAttributeValues = getVariationAttributes(product, variant)\n    const itemKey = getItemKey(variant, product, `product-${index}`)\n    const enableConfirmationSheetProductNameFix = useVariant(\n        LD_KEYS.enableConfirmationSheetProductNameFix,\n        false\n    )\n\n    return (\n        <Flex key={itemKey} justifyContent=\"space-between\" data-testid=\"product-added\">\n            <Flex gridGap=\"4\" alignItems={'center'}>\n                <Box w=\"20\" flex=\"none\">\n                    <ProductImage product={product} />\n                </Box>\n                <Box>\n                    <Text\n                        textStyle={'bodySm'}\n                        color={'white'}\n                        data-testid=\"confirmation-product-name\"\n                    >\n                        {enableConfirmationSheetProductNameFix\n                            ? getProductName(product)\n                            : product?.name}\n                    </Text>\n                    <Box color={'pandoraPink'} textStyle={'bodySm'}>\n                        <VariationAttributes\n                            variationAttributeValues={variationAttributeValues}\n                            intl={intl}\n                        />\n                        {/* To Show Carat Weights if its present */}\n                        {product?.custom?.diamondCaratWeight && (\n                            <CaratMessage\n                                diamondCaratWeight={product?.custom?.diamondCaratWeight}\n                            />\n                        )}\n                        <Stack spacing=\"1\" direction=\"row\">\n                            <Text textStyle={'bodySm'}>\n                                {intl.formatMessage({\n                                    defaultMessage: 'Added',\n                                    id: 'add_to_cart_modal.label.added'\n                                })}\n                            </Text>\n                            <Stack spacing=\"0\" as=\"span\" justifyContent={'center'}>\n                                <StaticPinkCheckIcon w={3} h={3} data-testid=\"pink-check-icon\" />\n                            </Stack>\n                        </Stack>\n                    </Box>\n                </Box>\n            </Flex>\n        </Flex>\n    )\n}\n\nProductItem.propTypes = {\n    product: PropTypes.object,\n    variant: PropTypes.object,\n    index: PropTypes.number,\n    itemsAdded: PropTypes.array,\n    intl: PropTypes.object\n}\n\nexport const AddToCartModal = ({isOpen, onClose, data}) => {\n    const onViewCartClick = useNavigationCallback(CONTROLLER_PATH.CART_SHOW)\n    const enablePdpRecommendationsAddToWishlist = useVariant(\n        LD_KEYS.enablePdpRecommendationsAddToWishlist,\n        false\n    )\n    const enableNewCtaDesign = useVariant('enable-new-cta-design', false)\n    const selectPdpRecommenderConfirmationSheet = useStringVariant(\n        LD_KEYS.selectPdpRecommenderConfirmationSheet,\n        ''\n    )\n    const enablePromotionalBarConfirmationSheet = useVariant(\n        LD_KEYS.enablePromotionalBarConfirmationSheet,\n        false\n    )\n    const enableConfirmationSheetProductNameFix = useVariant(\n        LD_KEYS.enableConfirmationSheetProductNameFix,\n        false\n    )\n    const enableConfirmationSheetEinsteinEngine = useVariant(\n        LD_KEYS.enableConfirmationSheetEinsteinEngine,\n        false\n    )\n    const isDrawerPerfOptimized = useVariant(LD_KEYS.enableDrawerOpenDirectionFix, false)\n    /**************** Wishlist ****************/\n    const {wishlist, handleAddToWishlist, removeItemFromWishlist} = useProductWishList()\n    const responsivePlacement = useBreakpointValue({base: 'bottom', xl: 'right'})\n    const syncPlacement = useResponsivePlacement(isDrawerPerfOptimized)\n    const placement = isDrawerPerfOptimized ? syncPlacement : responsivePlacement\n    const {shouldAnimateExit, handleOnClose} = useDelayedOnClose(onClose, animationDuration, isOpen)\n    const {product, itemsAdded = []} = data || {}\n    const intl = useIntl()\n    const {\n        derivedData: {totalItems},\n        data: basket\n    } = useCurrentBasket()\n    const {link} = useTealium()\n\n    if (!data || !product || typeof product !== 'object') {\n        return null\n    }\n\n    let isProductABundle = false\n    let isProductASet = false\n    try {\n        isProductABundle = !!(product?.type?.bundle || product?.productType?.bundle)\n        isProductASet = !!(product?.type?.set || product?.productType?.set)\n    } catch (error) {\n        // Log error for debugging but continue with fallback\n        console.warn('Error determining if product is bundle and set:', error)\n        isProductABundle = false\n        isProductASet = false\n    }\n\n    let isProductABundleOrSet = isProductABundle || isProductASet\n    const isAStudioComposition = !isProductABundleOrSet && isStudioComposition(itemsAdded)\n    let approachingDiscounts = basket?.c_approachingDiscounts\n    let promotionProgressBarInformation = basket?.c_promotionProgressBarInformation\n    let isBubbleBarActive = promotionProgressBarInformation?.useBubles\n\n    const handleClose = () => {\n        handleOnClose()\n    }\n\n    const normalizeData = (obj) => ({\n        message:\n            obj?.discountMsg ??\n            (obj?.percentage === 100 ? obj?.promotionGrantedCallout : obj?.callout),\n        formattedAmount: obj?.discountThresholdFormatted ?? obj?.thresholdAmountFormatted,\n        percentage: obj?.percentage ?? 0,\n        amount: obj?.thresholdAmount || obj?.discountThreshold || 0,\n        qualifyingAmount: obj?.promotionQualifyingAmount ?? 0\n    })\n\n    const onViewCart = (e) => {\n        const buttonTrackingData = {\n            estore_event: ['button_clicked'],\n            button_id: isBubbleBarActive ? 'bubble_product_promo' : 'free_product_promo'\n        }\n        try {\n            link(buttonTrackingData)\n        } catch (error) {\n            console.error('Failed to track Bag button click:', error)\n        }\n        onViewCartClick(e)\n    }\n\n    const headerContent = (\n        <>\n            <CloseButton\n                onClick={handleClose}\n                data-testid=\"addToCartCloseButton\"\n                data-auto=\"addToCartCloseButton\"\n                color={'white'}\n            />\n            <Flex\n                flexDirection={'column'}\n                sx={{\n                    scrollbarWidth: 'none',\n                    '&::-webkit-scrollbar': {display: 'none'}\n                }}\n                overflowY={'auto'}\n                gap={4}\n                w=\"100%\"\n            >\n                {isAStudioComposition && <StudioCompositionSummary itemsAdded={itemsAdded} />}\n                {!isAStudioComposition &&\n                    (isProductABundleOrSet ? (\n                        <Flex\n                            key={product?.id}\n                            justifyContent=\"space-between\"\n                            paddingBottom={4}\n                            data-testid=\"product-added\"\n                        >\n                            <Flex gridGap=\"4\" alignItems={'center'}>\n                                <Box w=\"24\" flex=\"none\">\n                                    <ProductImage product={product} />\n                                </Box>\n                                <Box color={'pandoraPink'} textStyle={'bodySm'}>\n                                    <Text\n                                        textStyle={'bodySm'}\n                                        color={'white'}\n                                        data-testid=\"confirmation-product-name\"\n                                    >\n                                        {enableConfirmationSheetProductNameFix\n                                            ? getProductName(product)\n                                            : product?.name}\n                                    </Text>\n                                    <Stack spacing=\"1\" direction=\"row\">\n                                        {isProductASet && (\n                                            <Text textStyle={'bodySm'}>\n                                                {product?.setProducts?.length}{' '}\n                                                {product?.setProducts?.length > 1\n                                                    ? intl.formatMessage({\n                                                          defaultMessage: 'items',\n                                                          id: 'product_item.label.items'\n                                                      })\n                                                    : intl.formatMessage({\n                                                          defaultMessage: 'item',\n                                                          id: 'product_item.label.item'\n                                                      })}\n                                            </Text>\n                                        )}\n                                        <Text textStyle={'bodySm'}>\n                                            {intl.formatMessage({\n                                                defaultMessage: 'Added',\n                                                id: 'add_to_cart_modal.label.added'\n                                            })}\n                                        </Text>\n                                        <Stack spacing=\"0\" as=\"span\" justifyContent={'center'}>\n                                            <StaticPinkCheckIcon\n                                                w={3}\n                                                h={3}\n                                                data-testid=\"pink-check-icon\"\n                                            />\n                                        </Stack>\n                                    </Stack>\n                                </Box>\n                            </Flex>\n                        </Flex>\n                    ) : (\n                        itemsAdded.map((item, index) => (\n                            <ProductItem\n                                key={getItemKey(item.variant, item.product, `product-${index}`)}\n                                product={item.product}\n                                variant={item.variant}\n                                index={index}\n                                itemsAdded={itemsAdded}\n                                intl={intl}\n                            />\n                        ))\n                    ))}\n\n                {enablePromotionalBarConfirmationSheet && promotionProgressBarInformation && (\n                    <>\n                        {isBubbleBarActive ? (\n                            <ConfirmationSheetBubbleBar\n                                approachingDiscountValue={normalizeData(\n                                    promotionProgressBarInformation\n                                )}\n                            />\n                        ) : (\n                            <ConfirmationSheetProgressBar\n                                approachingDiscountValue={normalizeData(\n                                    promotionProgressBarInformation\n                                )}\n                            />\n                        )}\n                        {promotionProgressBarInformation.percentage === 100 && (\n                            <Text textStyle={'bodySm'} color={'white'}>\n                                {intl.formatMessage({\n                                    defaultMessage: `Choose them in your`,\n                                    id: 'confirmation_sheet.heading.choose_in_the_bag'\n                                })}{' '}\n                                <Button\n                                    variant=\"link\"\n                                    colorScheme=\"light\"\n                                    onClick={onViewCart}\n                                    color={'white'}\n                                    minWidth={'auto'}\n                                    data-testid=\"viewBag\"\n                                >\n                                    {intl.formatMessage({\n                                        defaultMessage: `Bag`,\n                                        id: 'header.popover.title.my_bag'\n                                    })}\n                                </Button>\n                            </Text>\n                        )}\n                    </>\n                )}\n                {enablePromotionalBarConfirmationSheet &&\n                    approachingDiscounts &&\n                    !promotionProgressBarInformation && (\n                        <ConfirmationSheetProgressBar\n                            approachingDiscountValue={\n                                Array.isArray(approachingDiscounts)\n                                    ? normalizeData(approachingDiscounts?.at(-1))\n                                    : normalizeData(approachingDiscounts)\n                            }\n                        />\n                    )}\n            </Flex>\n        </>\n    )\n\n    const bodyContent = selectPdpRecommenderConfirmationSheet ? (\n        <RecommendedProducts\n            recommender={selectPdpRecommenderConfirmationSheet}\n            {...(enableConfirmationSheetEinsteinEngine && {\n                recommenderEngine: RECOMMENDER_ENGINES.EINSTEIN\n            })}\n            wishlist={wishlist}\n            addItemToWishlist={handleAddToWishlist}\n            removeItemFromWishlist={removeItemFromWishlist}\n            title={intl.formatMessage({\n                id: 'product_detail.recommended_products.title.complete_set',\n                defaultMessage: 'Complete the look'\n            })}\n            product={product}\n            isPdp\n            enableFavourite={enablePdpRecommendationsAddToWishlist}\n            variant=\"dark\"\n            hideSwatches={true}\n        />\n    ) : null\n\n    const footerContent = (\n        <Stack w=\"100%\" paddingX={{base: 0, md: 4, xl: 8}}>\n            {enableNewCtaDesign ? (\n                <ConfirmationSheetCallToAction\n                    handleClose={handleClose}\n                    totalCount={totalItems}\n                    darkTheme={true}\n                />\n            ) : (\n                <MiniCartCallToAction totalCount={totalItems} darkTheme={true} />\n            )}\n        </Stack>\n    )\n\n    if (isDrawerPerfOptimized) {\n        return (\n            <LightweightDrawer\n                isOpen={isOpen && !shouldAnimateExit}\n                onClose={handleClose}\n                placement={placement}\n                bg=\"black1\"\n                pinkOverlay\n                containerProps={{'data-testid': 'add-to-cart-modal'}}\n            >\n                <Box\n                    display=\"flex\"\n                    flexDirection=\"column\"\n                    alignItems=\"flex-end\"\n                    justifyContent=\"flex-start\"\n                    px={[8, 8, 12, 16]}\n                    py={8}\n                    borderBottomWidth=\"1px\"\n                    borderColor=\"grayBorder\"\n                    borderStyle=\"solid\"\n                    maxHeight=\"400px\"\n                >\n                    {headerContent}\n                </Box>\n                <Box\n                    px={[8, 8, 12, 16]}\n                    pt={8}\n                    pb={32}\n                    flex=\"1 1 auto\"\n                    minHeight={0}\n                    overflow=\"auto\"\n                >\n                    {bodyContent}\n                </Box>\n                <Box\n                    display=\"flex\"\n                    alignItems=\"center\"\n                    borderTopWidth=\"1px\"\n                    borderColor=\"grayBorder\"\n                    p={8}\n                    height=\"32\"\n                >\n                    {footerContent}\n                </Box>\n            </LightweightDrawer>\n        )\n    }\n\n    return (\n        <Drawer\n            isOpen={isOpen}\n            variant=\"full\"\n            onClose={onClose}\n            scrollBehavior=\"inside\"\n            isCentered\n            placement={placement}\n        >\n            <DrawerOverlay />\n            {!shouldAnimateExit && <PinkOverlay variant=\"full\" />}\n            <DrawerContent\n                margin=\"0\"\n                borderRadius={{base: 'none'}}\n                border={{base: 0, xl: 0}}\n                bgColor={'black1'}\n                containerProps={{'data-testid': 'add-to-cart-modal'}}\n                shouldAnimateExit={shouldAnimateExit}\n                sx={{\n                    '&[role=\"dialog\"]': {\n                        height: '100%'\n                    }\n                }}\n            >\n                <DrawerHeader\n                    display=\"flex\"\n                    flexDirection=\"column\"\n                    alignItems=\"flex-end\"\n                    justifyContent={'flex-start'}\n                    paddingY=\"8\"\n                    borderBottomWidth={{base: '1px'}}\n                    borderColor={'grayBorder'}\n                    borderStyle=\"solid\"\n                    maxHeight={'400px'}\n                >\n                    {headerContent}\n                </DrawerHeader>\n                <DrawerBody pt={8} flex=\"1 1 auto\" minHeight={0} overflow=\"auto\">\n                    {bodyContent}\n                </DrawerBody>\n                <DrawerFooter borderColor={'grayBorder'} height={'32'}>\n                    {footerContent}\n                </DrawerFooter>\n            </DrawerContent>\n        </Drawer>\n    )\n}\n\nAddToCartModal.propTypes = {\n    product: PropTypes.shape({\n        name: PropTypes.string,\n        imageSequence: PropTypes.array\n    }),\n    variant: PropTypes.shape({\n        productId: PropTypes.string,\n        variationValues: PropTypes.object\n    }),\n    isOpen: PropTypes.bool,\n    onClose: PropTypes.func,\n    data: PropTypes.object\n}\n\nexport default AddToCartModal\n","import React, {useState, useCallback, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {createContext} from '@chakra-ui/react-utils'\nimport AddToCartModal from '../../components/add-to-cart-modal'\n\nconst [Provider, useAddToCartModalContext] = createContext({\n    name: 'AddToCartModalContext',\n    errorMessage:\n        'useAddToCartModalContext: `context` is undefined. Seems you forgot to wrap components within `<AddToCartModalContext />`'\n})\n\nconst AddToCartModalProvider = ({children}) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const [data, setData] = useState(null)\n\n    const openModal = useCallback((modalData) => {\n        setData(modalData)\n        setIsOpen(true)\n    }, [])\n\n    const closeModal = useCallback(() => {\n        setIsOpen(false)\n        setData(null)\n    }, [])\n\n    const value = useMemo(\n        () => ({\n            isOpen,\n            data,\n            onOpen: openModal,\n            onClose: closeModal\n        }),\n        [isOpen, data, openModal, closeModal]\n    )\n    return (\n        <Provider value={value}>\n            {children}\n            <AddToCartModal isOpen={isOpen} data={data} onClose={closeModal} />\n        </Provider>\n    )\n}\n\nAddToCartModalProvider.propTypes = {\n    children: PropTypes.node.isRequired\n}\n\nexport {AddToCartModalProvider, useAddToCartModalContext}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"paper-plane-icon\",\n  \"use\": \"paper-plane-icon-usage\",\n  \"viewBox\": \"0 0 19 19\",\n  \"content\": \"<symbol viewBox=\\\"0 0 19 19\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"paper-plane-icon\\\">\\n<path id=\\\"paper-plane-icon_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.0609 0.634521L12.0421 18.691L9.53518 12.4237L10.4637 12.0523L11.9567 15.7849L15.9379 3.84143L8.62015 10.2983L0.537109 7.81117L11.3054 3.27716L11.6934 4.1988L3.46172 7.66478L8.37868 9.1777L18.0609 0.634521Z\\\" fill=\\\"#211710\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useState, useEffect, useCallback, useRef} from 'react'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\n\nexport const useIntersectionObserver = (options = {threshold: 0}) => {\n    const [isIntersecting, setIsIntersecting] = useState(isServer)\n    const [ref, setRef] = useState(null)\n    const observerRef = useRef(null) // Cache the observer\n\n    const handleIntersection = useCallback((entries) => {\n        const entry = entries[0] // Assuming only one entry\n        setIsIntersecting(entry.isIntersecting)\n    }, [])\n\n    useEffect(() => {\n        if (ref) {\n            // If there's no observer, create one\n            if (!observerRef.current) {\n                observerRef.current = new IntersectionObserver(handleIntersection, options)\n            }\n\n            const observer = observerRef.current\n            observer.observe(ref)\n\n            return () => {\n                observer.unobserve(ref)\n                // Optionally disconnect the observer to ensure proper cleanup\n                if (observer) observer.disconnect()\n            }\n        }\n    }, [ref, handleIntersection, options])\n\n    return [setRef, isIntersecting]\n}\n","/**\n * Returns the referring URL for Bloomreach Discovery API requests.\n *\n * Priority:\n * 1. `window.__BR_PRIOR_REFERRER__` (set by pixel analytics after page view events)\n * 2. `document.referrer` (browser-native HTTP referrer)\n * 3. `undefined` when no referrer is available (e.g. direct navigation / bookmark)\n *\n * Must only be called on the client (not during SSR).\n *\n * @returns {string|undefined} The referring URL, or undefined if unavailable.\n */\nexport const getRefUrl = () => {\n    const currentUrl = window.location.href\n\n    const priorReferrer = window.__BR_PRIOR_REFERRER__\n    if (priorReferrer && priorReferrer !== currentUrl) {\n        return priorReferrer\n    }\n\n    const nativeReferrer = document.referrer\n    if (nativeReferrer && nativeReferrer !== currentUrl) {\n        return nativeReferrer\n    }\n\n    return undefined\n}\n","/**\n * Optimized Icons Entry Point\n *\n * This file conditionally exports icons based on the SVG_OPTIMIZATION_ENABLED flag.\n * When enabled: Critical icons are server-side rendered, non-critical icons are lazy loaded\n * When disabled: All icons are server-side rendered (original behavior)\n *\n * KILL-SWITCH: Set SVG_OPTIMIZATION_ENABLED to false to quickly rollback\n */\n\n// Simple kill-switch for SVG optimization\nconst SVG_OPTIMIZATION_ENABLED = true\n\nif (SVG_OPTIMIZATION_ENABLED) {\n    // Use optimized icons with LazyIcon components\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const optimizedIcons = require('./optimized-icons')\n    Object.keys(optimizedIcons).forEach((key) => {\n        exports[key] = optimizedIcons[key]\n    })\n} else {\n    // Fallback to original implementation (all icons in SSR)\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    const originalIcons = require('./index.original')\n    Object.keys(originalIcons).forEach((key) => {\n        exports[key] = originalIcons[key]\n    })\n}\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"heart-solid\",\n  \"use\": \"heart-solid-usage\",\n  \"viewBox\": \"0 0 20 19\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 19\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"heart-solid\\\">\\n <g>\\n  <path stroke=\\\"null\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"m10,2.07c1.1586,-1.26976 2.7819,-2.01646 4.5,-2.07c3.0376,0 5.5,2.46243 5.5,5.5c0,3.59623 -3.9978,7.5375 -6.3954,9.9013c-0.2159,0.2128 -0.4188,0.4129 -0.6046,0.5987l-2.28,2.28c-0.1405,0.1407 -0.3312,0.2198 -0.53,0.22l-0.38,0c-0.19884,-0.0002 -0.38948,-0.0793 -0.53,-0.22l-2.28,-2.28c-0.18584,-0.1858 -0.38873,-0.3859 -0.6046,-0.5987c-2.39765,-2.3638 -6.3954,-6.30507 -6.3954,-9.9013c0,-3.03757 2.46243,-5.5 5.5,-5.5c1.7181,0.05354 3.34137,0.80024 4.5,2.07z\\\" fill=\\\"#181818\\\" id=\\\"heart-solid_svg_1\\\" />\\n  <path id=\\\"heart-solid_svg_2\\\" d=\\\"m4.37505,1.62507l0.74991,-0.18758\\\" fill=\\\"currentColor\\\" />\\n </g>\\n\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"check-circle\",\n  \"use\": \"check-circle-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"check-circle\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2 12C2 6.47715 6.47715 2 12 2C14.6522 2 17.1957 3.05357 19.0711 4.92893C20.9464 6.8043 22 9.34784 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM10.7296 15.35L16.3496 9.72998C16.5338 9.53683 16.5338 9.23313 16.3496 9.03998L15.8196 8.50998C15.6252 8.31941 15.314 8.31941 15.1196 8.50998L10.3796 13.25L8.87963 11.76C8.78889 11.6633 8.66221 11.6085 8.52962 11.6085C8.39704 11.6085 8.27036 11.6633 8.17963 11.76L7.64963 12.29C7.55497 12.3839 7.50173 12.5117 7.50173 12.645C7.50173 12.7783 7.55497 12.9061 7.64963 13L10.0296 15.35C10.1204 15.4467 10.247 15.5015 10.3796 15.5015C10.5122 15.5015 10.6389 15.4467 10.7296 15.35Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-down-big\",\n  \"use\": \"chevron-down-big-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-down-big\\\">\\n<g id=\\\"chevron-down-big_Chevron down\\\">\\n<path id=\\\"chevron-down-big_icon\\\" fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.99992 14.0661L19.1923 4.87374L19.8994 5.58085L9.99992 15.4803L0.100424 5.58085L0.807531 4.87374L9.99992 14.0661Z\\\" fill=\\\"#211710\\\" />\\n</g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"plus\",\n  \"use\": \"plus-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"plus\\\">\\n<g clip-path=\\\"url(#plus_clip0_563_7859)\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M10.6 9.5C10.5448 9.5 10.5 9.45523 10.5 9.4V0.1C10.5 0.0447715 10.4552 0 10.4 0H9.6C9.54477 0 9.5 0.0447719 9.5 0.1V9.4C9.5 9.45523 9.45523 9.5 9.4 9.5H0.1C0.0447715 9.5 0 9.54477 0 9.6V10.4C0 10.4552 0.0447719 10.5 0.1 10.5H9.4C9.45523 10.5 9.5 10.5448 9.5 10.6V19.9C9.5 19.9552 9.54477 20 9.6 20H10.4C10.4552 20 10.5 19.9552 10.5 19.9V10.6C10.5 10.5448 10.5448 10.5 10.6 10.5H19.9C19.9552 10.5 20 10.4552 20 10.4V9.6C20 9.54477 19.9552 9.5 19.9 9.5H10.6Z\\\" fill=\\\"#27251F\\\" />\\n</g>\\n<defs>\\n<clipPath id=\\\"plus_clip0_563_7859\\\">\\n<rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" />\\n</clipPath>\\n</defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_me_horizontal_black\",\n  \"use\": \"pandora_me_horizontal_black-usage\",\n  \"viewBox\": \"0 0 1350.05 212\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1350.05 212\\\" id=\\\"pandora_me_horizontal_black\\\"><path d=\\\"M1224.19 210.31h-37.46l.12-2.61c.13-3.14.37-7.44.71-13.14s.51-11.14.51-16.62V123.53l-29 86.78h-34.47l-29.89-85.7v53.33c0 5.55.11 11.17.31 16.68s.44 9.89.71 13l.24 2.72h-37.12l.18-2.67c.27-3.89.48-8.7.61-14.32.14-5.82.21-10.86.21-15.38V94.47c0-2.5 0-5.16-.1-7.91l-.41-15.64c-.07-2.33-.17-4.39-.3-6.12l-.21-2.69H1107l34.5 99 33.53-99h49.13l-.25 2.73c-.27 2.92-.5 7.1-.71 12.44s-.3 11.13-.3 17.19v83.47c0 5.53.1 11.14.3 16.68s.44 9.91.71 13Zm-32.23-5h26.8c-.19-2.81-.36-6.28-.51-10.51-.21-5.6-.31-11.27-.31-16.86V94.47c0-6.12.1-12 .31-17.38.15-4 .32-7.31.5-10h-40.09L1143.47 171h-3.77L1103.49 67.11h-39.34c.06 1.14.11 2.36.14 3.66l.41 15.66c.07 2.8.11 5.5.11 8v83.47c0 4.56-.07 9.63-.21 15.5-.11 4.47-.26 8.45-.45 11.87h26.35c-.19-2.8-.36-6.27-.52-10.51-.2-5.57-.31-11.25-.31-16.86v-70h4.48l34 97.38h27.32l33.14-99h4.5v71.64c0 5.58-.17 11.27-.51 16.92C1192.3 199.09 1192.1 202.54 1192 205.31ZM1349.08 210.31H1246.26l.11-2.61q.21-4.71.62-13.11c.27-5.53.41-11.13.41-16.65V94.47c0-6.09-.11-11.87-.31-17.19s-.44-9.48-.71-12.45l-.24-2.72h101.92l1 33.39-2.73-.17c-4.5-.27-9.1-.51-13.66-.71s-9.08-.3-13.4-.3h-36.77V119.8h27.36c4.63 0 9.28-.07 13.84-.21s9.1-.4 13.55-.81l2.73-.24v34.59l-2.79-.32c-3.45-.4-7-.67-10.44-.81s-7.08-.2-10.54-.2h-33.71v26.09h37.39c4.47 0 9.06-.06 13.63-.2s9.16-.4 13.76-.81l2.8-.25Zm-97.6-5h92.75l.67-23.22c-3.78.29-7.55.49-11.26.6-4.62.13-9.26.2-13.78.2h-41.81l-.35-2.08a17.84 17.84 0 0 1-.23-2.77V146.8h38.71c3.52 0 7.13.07 10.73.21 2.67.1 5.37.28 8 .54V124c-3.68.29-7.42.49-11.13.6-4.61.14-9.31.21-14 .21h-32.36V93.86a12.77 12.77 0 0 1 .25-2.53l.4-2h41.12c4.4 0 9 .1 13.62.31 3.67.16 7.37.34 11 .55l-.67-23.07h-91.62c.19 2.71.36 6 .51 10 .2 5.38.31 11.23.31 17.38v83.47c0 5.6-.14 11.28-.42 16.9Q1251.68 201.09 1251.48 205.31Z\\\" /><polygon points=\\\"640.02 36.81 644.25 36.81 644.47 36.6 640.87 0.21 640.66 0 639.6 0 639.39 0.21 635.58 36.6 635.79 36.81 640.02 36.81\\\" /><polygon points=\\\"660.54 39.14 660.76 38.93 666.89 6.35 666.68 6.14 665.62 5.92 665.41 6.14 651.87 37.03 652.08 37.24 660.54 39.14\\\" /><path d=\\\"M654.2 53.11A5 5 0 1 0 649.12 48 5 5 0 0 0 654.2 53.11ZM640 51.63a5 5 0 1 0-5.08-5.08A5 5 0 0 0 640 51.63Z\\\" /><polygon points=\\\"619.5 39.14 627.96 37.24 628.17 37.03 614.63 6.14 614.42 5.92 613.36 6.14 613.15 6.35 619.29 38.93 619.5 39.14\\\" /><path d=\\\"M620.77 48a5 5 0 1 0 9.94 0 5 5 0 0 0-9.94 0ZM43.37 62.2H.21L0 62.42S1.06 72.78 1.06 90.77v91c0 18-1.06 28.35-1.06 28.35l.21.21H28.56l.21-.21s-1.05-10.37-1.05-28.35V155.09l.21-.21c3.81.42 12.48.84 15.44.84 29.2 0 54.17-17.77 54.17-47.81C97.54 78.71 72.36 62.2 43.37 62.2ZM42.1 131.39a108.7 108.7 0 0 1-14.38-1.06V86.54h16.5c14.6 0 26.24 5.92 26.24 21.37C70.46 122.93 60.3 131.39 42.1 131.39ZM178.52 74.27a82.35 82.35 0 0 1-4.23-11.85l-.21-.22H151l-.21.22a64.69 64.69 0 0 1-4 11.85L96.85 194.44a75.38 75.38 0 0 1-8.46 15.66v.21h29.2l.21-.21c0-.85.63-4.44 4.23-13.33l9.1-22.64h64.32l9.73 22.64c3.18 8.68 5.08 13.33 5.08 13.33l.21.21h29.2v-.21a111.74 111.74 0 0 1-8.46-15.66ZM141.07 149.8l21-52.26h.21l22.64 52.26ZM385.82 62.42l-.21-.22H359.8l-.21.22s1.05 10.36 1.05 28.35v74.48h-.21l-80-103H252.1l-.21.22c3.17 6.77 4.87 11.42 4.87 14.6V181.75c0 18-1.06 28.35-1.06 28.35l.21.21h25.81l.22-.21s-1.06-10.37-1.06-28.35v-76h.21l80.4 104.52h24.12l.21-.21s-1.06-10.37-1.06-28.35v-91C384.76 72.78 385.82 62.42 385.82 62.42ZM466.22 62.2H416.71l-.21.22s1.06 10.36 1.06 28.35v91c0 18-1.06 28.35-1.06 28.35l.21.21H432c10 0 21.15 1.27 33.85 1.27 45.49 0 77.65-32.16 77.65-75.11C543.45 93.1 511.92 62.2 466.22 62.2Zm-1.69 125.05c-7.19 0-13.75-.21-17.56-1.27-2.33-.63-2.75-1.48-2.75-5.5V86.33h19.67c31.95 0 52.48 21.58 52.48 50.35C516.37 165.25 495.84 187.25 464.53 187.25ZM640 60.09c-42.74 0-76 33-76 76 0 43.16 33.22 75.95 76 75.95 43.16 0 76-32.79 76-75.95C716 93.1 683.18 60.09 640 60.09Zm0 127.58c-27.5 0-48.87-22.42-48.87-51.62S612.52 84.42 640 84.42c27.72 0 49.09 22.43 49.09 51.63S667.74 187.67 640 187.67ZM821.57 160c-3.6-5.93-9.1-10.58-14.6-12.06v-.22c15.44-3.38 29.83-21.37 29.83-39.35C836.8 83.79 818 62.2 789 62.2H741.59l-.21.22s1.06 10.36 1.06 28.35v91c0 18-1.06 28.35-1.06 28.35l.21.21h28.35l.21-.21s-1-10.37-1-28.35V153.4c14.17 0 19.67 2.75 24.75 10.79l12.06 19.46c10 16.08 14.18 26.45 14.18 26.45l.21.21h33.85v-.21A253.81 253.81 0 0 1 836 183.65Zm-39.14-30.05c-3.39 0-9.31 0-13.33-.85V86.33h16.29c15.87 0 24.33 10.36 24.33 22.21C809.72 119.76 801 129.91 782.43 129.91ZM1011.57 194.44 958.88 74.27a82.35 82.35 0 0 1-4.23-11.85l-.21-.22H931.38l-.21.22a64.69 64.69 0 0 1-4 11.85L877.21 194.44a75.38 75.38 0 0 1-8.46 15.66v.21H898l.21-.21c0-.85.63-4.44 4.23-13.33l9.1-22.64h64.32l9.73 22.64c3.18 8.68 5.08 13.33 5.08 13.33l.21.21H1020v-.21A111.74 111.74 0 0 1 1011.57 194.44ZM921.43 149.8l21-52.26h.21l22.64 52.26Z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useEffect} from 'react'\n\n/**\n * Custom hook for OneTrust LCP (Largest Contentful Paint) optimization\n *\n * This hook handles the smooth transition of the OneTrust consent banner\n * to prevent it from impacting page load performance metrics.\n *\n * @param {boolean} isEnabled - Whether the LCP optimization should be active\n */\nexport const useOTBannerTransition = (isEnabled = false) => {\n    useEffect(() => {\n        if (!isEnabled) return\n\n        const STYLE_ID = 'onetrust-lcp-optimization-styles'\n\n        const applyStyles = () => {\n            if (document.getElementById(STYLE_ID)) return\n\n            const style = document.createElement('style')\n            style.id = STYLE_ID\n            style.textContent = `\n                #onetrust-consent-sdk {\n                    opacity: 0;\n                    transition: opacity 0.3s ease-in-out;\n                }\n                #onetrust-consent-sdk.loaded {\n                    opacity: 1;\n                }\n            `\n            document.head.appendChild(style)\n        }\n\n        const showBanner = () => {\n            const element = document.getElementById('onetrust-consent-sdk')\n            if (element) {\n                element.classList.add('loaded')\n                return true\n            }\n            return false\n        }\n\n        const retryShowBanner = () => {\n            if (!showBanner()) {\n                setTimeout(retryShowBanner, 100)\n            }\n        }\n\n        applyStyles()\n        retryShowBanner()\n\n        return () => {\n            const styleElement = document.getElementById(STYLE_ID)\n            if (styleElement) {\n                styleElement.remove()\n            }\n\n            const oneTrustElement = document.getElementById('onetrust-consent-sdk')\n            if (oneTrustElement) {\n                oneTrustElement.classList.remove('loaded')\n            }\n        }\n    }, [isEnabled])\n}\n","import React, {useEffect, useState, createContext, useContext, useMemo, useRef} from 'react'\nimport {useCspNonce} from 'pandora-shared-app/overrides/app/contexts/csp-nonce'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport PropTypes from 'prop-types'\nimport {useDNT} from '@salesforce/commerce-sdk-react'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useOTBannerTransition} from 'pandora-shared-app/overrides/app/hooks/use-ot-banner-transition'\n// Create a context to make consent states globally available with PWA Kit DNT integration\nexport const ConsentContext = createContext({\n    allowFunctional: false,\n    allowPerformance: false,\n    allowPersonalisation: false,\n    allowTracking: false,\n    bannerClosed: false,\n    // PWA Kit DNT integration\n    effectiveDnt: undefined,\n    selectedDnt: undefined,\n    updateDnt: () => {},\n    // DW Analytics consent wrapper\n    dwAnalyticsCapture: () => {}\n})\n\nexport const useConsent = () => useContext(ConsentContext)\n\nexport const OneTrustScript = ({children, defaultDnt = true}) => {\n    const nonce = useCspNonce()\n    const {site: siteConfig = {}} = useMultiSite() || {}\n    const {onetrust = {}} = siteConfig\n\n    const oneTrustConsentURLMapping = onetrust.consentURLMapping\n    const oneTrustDataDomainScript = onetrust.dataDomainScript\n\n    const {effectiveDnt, selectedDnt, updateDnt} = useDNT({defaultDnt})\n\n    // Track the last DNT value we sent to avoid triggering duplicate token refreshes.\n    // Both the script `load` event and the `OneTrustGroupsUpdated` event call OptanonWrapper,\n    // which can result in updateDnt being called twice with the same value — each call\n    // causes the Commerce SDK to request a brand new SLAS token.\n    const lastSentDntRef = useRef(undefined)\n\n    const updateDntIfChanged = (newDnt) => {\n        if (isSlasTokenDntFixEnabled) {\n            const sentDnt = lastSentDntRef.current ?? onetrust.defaultDnt ?? defaultDnt\n            if (sentDnt === newDnt) return\n            lastSentDntRef.current = newDnt\n        }\n        if (isDntConsentForceRenderEnabled) return updateDnt(newDnt)\n        updateDnt(newDnt)\n    }\n\n    const [allowTracking, setAllowTracking] = useState(false)\n    const [allowPerformance, setAllowPerformance] = useState(false)\n    const [allowFunctional, setAllowFunctional] = useState(false)\n    const [allowPersonalisation, setAllowPersonalisation] = useState(false)\n    const [bannerClosed, setBannerClosed] = useState(false)\n    const [, forceRender] = useState(false)\n\n    const isOneTrustTransitionEnabled = useVariant(LD_KEYS.enableOneTrustBannerTransition, false)\n    const isSlasTokenDntFixEnabled = useVariant(LD_KEYS.enableSlasTokenDntFix, false)\n    const isDntConsentForceRenderEnabled = useVariant(LD_KEYS.enableDntConsentForceRender, false)\n\n    useOTBannerTransition(isOneTrustTransitionEnabled)\n    const consentCookieMapping = {\n        trackingGroup1: 'C0002', // performance\n        trackingGroup2: 'C0003', // functional\n        personalisationGroup: 'C0013'\n    }\n\n    const sendCookieOptinOptoutData = (otActiveGroups) => {\n        // Check for functional consent separately\n        const hasFunctionalConsent = otActiveGroups.includes(consentCookieMapping.trackingGroup2)\n        setAllowFunctional(hasFunctionalConsent)\n\n        // Check for performance consent separately\n        const hasPerformanceConsent = otActiveGroups.includes(consentCookieMapping.trackingGroup1)\n        setAllowPerformance(hasPerformanceConsent)\n\n        // Check for tracking (both performance and functional)\n        const hasTrackingConsent =\n            otActiveGroups.includes(consentCookieMapping.trackingGroup1) && hasFunctionalConsent\n\n        if (hasTrackingConsent) {\n            setAllowTracking(true)\n            const dntPromise = isSlasTokenDntFixEnabled\n                ? updateDntIfChanged(false)\n                : updateDnt(false)\n            if (isDntConsentForceRenderEnabled) dntPromise?.then(() => forceRender((b) => !b))\n        } else {\n            setAllowTracking(false)\n            const dntPromise = isSlasTokenDntFixEnabled ? updateDntIfChanged(true) : updateDnt(true)\n            if (isDntConsentForceRenderEnabled) dntPromise?.then(() => forceRender((b) => !b))\n        }\n\n        // Check for personalization\n        const hasPersonalisationConsent = otActiveGroups.includes(\n            consentCookieMapping.personalisationGroup\n        )\n        setAllowPersonalisation(hasPersonalisationConsent)\n    }\n\n    const OptanonWrapper = () => {\n        if (typeof window !== 'undefined' && window.dataLayer) {\n            const otEvent = window.dataLayer.filter((obj) => obj.event === 'OneTrustGroupsUpdated')\n            if (otEvent.length > 0) {\n                const latestEvent = otEvent[otEvent.length - 1]\n                const activeGroups = latestEvent?.OnetrustActiveGroups\n\n                // CRITICAL: Check if this is a legitimate user consent or just OneTrust initialization\n                // OneTrust sometimes fires events with empty or default groups during initialization\n                if (activeGroups && activeGroups.length > 0) {\n                    sendCookieOptinOptoutData(activeGroups)\n\n                    // Banner is considered closed if OneTrust reports it\n                    if (window?.OneTrust?.IsAlertBoxClosed?.() && !bannerClosed) {\n                        setBannerClosed(true)\n                    }\n                } else {\n                    // No active groups means user hasn't consented yet - ensure tracking is blocked\n                    setAllowTracking(false)\n                    setAllowPerformance(false)\n                    setAllowFunctional(false)\n                    setAllowPersonalisation(false)\n                    isSlasTokenDntFixEnabled ? updateDntIfChanged(true) : updateDnt(true)\n                }\n            }\n        }\n    }\n\n    useEffect(() => {\n        window.OptanonWrapper = OptanonWrapper\n\n        // Add real-time event listener for immediate consent processing\n        const handleConsentChange = () => {\n            if (window.OptanonWrapper) {\n                window.OptanonWrapper()\n            }\n        }\n\n        // Listen for OneTrust consent changes\n        if (typeof window !== 'undefined') {\n            window.addEventListener('OneTrustGroupsUpdated', handleConsentChange)\n        }\n\n        const loadOneTrustScript = () => {\n            const script = document.createElement('script')\n            script.src = oneTrustConsentURLMapping\n            script.setAttribute('data-document-language', 'true')\n            script.setAttribute('data-domain-script', oneTrustDataDomainScript)\n            if (nonce) {\n                script.setAttribute('nonce', nonce)\n            }\n            script.async = true\n            script.addEventListener('load', () => {\n                if (typeof window.OneTrust !== 'undefined' && window.OptanonWrapper) {\n                    window.OptanonWrapper()\n                }\n            })\n            document.head.appendChild(script)\n        }\n        loadOneTrustScript()\n\n        // Cleanup event listeners\n        return () => {\n            if (typeof window !== 'undefined') {\n                window.removeEventListener('OneTrustGroupsUpdated', handleConsentChange)\n            }\n        }\n    }, [oneTrustConsentURLMapping, oneTrustDataDomainScript])\n\n    useEffect(() => {\n        sessionStorage.setItem('allowtracking', allowTracking.toString())\n        sessionStorage.setItem('allowfunctional', allowFunctional.toString())\n        sessionStorage.setItem('allowpersonalisation', allowPersonalisation.toString())\n    }, [allowTracking, allowFunctional, allowPersonalisation])\n\n    // Function to wrap DW Analytics capture with consent checking\n    const dwAnalyticsCapture = (...args) => {\n        if (typeof window !== 'undefined' && window.dw && window.dw.ac) {\n            // Only capture if tracking is allowed\n            if (allowTracking && !effectiveDnt) {\n                return window.dw.ac._capture(...args)\n            }\n        }\n    }\n\n    // Memoize the consent value object to prevent unnecessary re-renders\n    const consentValue = useMemo(\n        () => ({\n            allowTracking,\n            allowPerformance,\n            allowFunctional,\n            allowPersonalisation,\n            bannerClosed,\n            effectiveDnt,\n            selectedDnt,\n            updateDnt,\n            dwAnalyticsCapture\n        }),\n        [\n            allowTracking,\n            allowPerformance,\n            allowFunctional,\n            allowPersonalisation,\n            bannerClosed,\n            effectiveDnt,\n            selectedDnt,\n            updateDnt,\n            dwAnalyticsCapture\n        ]\n    )\n\n    return <ConsentContext.Provider value={consentValue}>{children}</ConsentContext.Provider>\n}\n\nOneTrustScript.propTypes = {\n    children: PropTypes.node,\n    defaultDnt: PropTypes.bool\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"truck-primary\",\n  \"use\": \"truck-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"truck-primary\\\">\\n    <g clip-path=\\\"url(#truck-primary_clip0_3110_10664)\\\">\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.0002 3.81592C12.0002 2.98749 11.3286 2.31592 10.5002 2.31592L0.00341797 2.31595V15.4004H2.00921C2.11874 16.6799 3.19208 17.6843 4.5 17.6843C5.80792 17.6843 6.88126 16.6799 6.99079 15.4004H11.3044V14.4004H6.87462C6.54576 13.4037 5.60688 12.6843 4.5 12.6843C3.39312 12.6843 2.45424 13.4037 2.12538 14.4004H1.00342V3.31595L10.5002 3.31592C10.7763 3.31592 11.0002 3.53978 11.0002 3.81592V9.43721C11.0002 9.98949 11.4479 10.4372 12.0002 10.4372H15.5002V9.43721L12.0002 9.43721V3.81592ZM3 15.1843C3 14.3559 3.67157 13.6843 4.5 13.6843C5.32843 13.6843 6 14.3559 6 15.1843C6 16.0128 5.32843 16.6843 4.5 16.6843C3.67157 16.6843 3 16.0128 3 15.1843Z\\\" fill=\\\"currentColor\\\" />\\n        <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M13.7654 4.13115L16.0451 6.57376L18.5241 9.09002L18.5305 9.09613C18.8303 9.37948 19.0002 9.77377 19.0002 10.1863V14.4004H17.9499C17.7182 13.2594 16.7094 12.4006 15.5 12.4006C14.1193 12.4006 13 13.5199 13 14.9006C13 16.2813 14.1193 17.4006 15.5 17.4006C16.7096 17.4006 17.7185 16.5416 17.95 15.4004H20.0002V10.1863C20.0002 9.5019 19.7196 8.8476 19.2242 8.37584L16.7716 5.88648L14.4964 3.44884L13.7654 4.13115ZM15.5 13.4006C14.6716 13.4006 14 14.0722 14 14.9006C14 15.7291 14.6716 16.4006 15.5 16.4006C16.3284 16.4006 17 15.7291 17 14.9006C17 14.0722 16.3284 13.4006 15.5 13.4006Z\\\" fill=\\\"currentColor\\\" />\\n    </g>\\n    <defs>\\n        <clipPath id=\\\"truck-primary_clip0_3110_10664\\\">\\n            <rect width=\\\"20\\\" height=\\\"20\\\" fill=\\\"white\\\" transform=\\\"translate(0 0.000244141)\\\" />\\n        </clipPath>\\n    </defs>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const IMAGE_FORMAT = 'auto'\nexport const IMAGE_QUALITY = '80'\n\n/**\n * Converts an aspect ratio from string format (\"W:H\" or \"W/H\") to a number.\n * Returns the input unchanged when it is already a number, or null for invalid input.\n * @param {string|number|null|undefined} ratio\n * @returns {number|null}\n */\nexport const parseAspectRatio = (ratio) => {\n    // 0 is falsy and nonsensical as an aspect ratio, so we treat it as invalid.\n    if (!ratio) return null\n    if (typeof ratio === 'number') return ratio\n    const parts = String(ratio).replace(':', '/').split('/')\n    const [numerator, denominator] = parts.map(Number)\n    return denominator && denominator !== 0 ? numerator / denominator : null\n}\n\nexport const DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION = {\n    MOBILE: 768,\n    TABLET: 1200,\n    DESKTOP: 1920,\n    MIN_WIDTH: 768 // Minimum safe width\n}\n\n// Media query constants based on device widths\nexport const MEDIA_QUERIES = {\n    MOBILE: `(max-width: ${DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE - 1}px)`, // (max-width: 767px)\n    TABLET: `(min-width: ${DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE}px) and (max-width: ${\n        DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET - 1\n    }px)`, // (min-width: 768px) and (max-width: 1199px)\n    DESKTOP: `(min-width: ${DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET}px)` // (min-width: 1200px)\n}\n\n/**\n * Checks whether a URL belongs to the Aprimo CDN.\n * @param {string} url\n * @returns {boolean}\n */\nexport const isAprimoUrl = (url) => typeof url === 'string' && url.includes('aprimocdn.net')\n\n/**\n * Aprimo CDN scale modes — the `fit` query param. Aprimo has no `aspect`\n * parameter (unlike Amplience's `sm=aspect`); the aspect ratio is instead\n * expressed via an explicit width + height pair combined with one of these\n * fit modes.\n * - crop:   product grid\n * - cover:  banner / full-bleed media (default for our Media components)\n * - bounds: contained (letterbox, no crop)\n */\nexport const APRIMO_FIT_MODES = {\n    CROP: 'crop',\n    COVER: 'cover',\n    BOUNDS: 'bounds'\n}\n\nexport const getVideoUrl = ({cdnUrl, defaultHost, endpoint, name} = {}) => {\n    if (cdnUrl) return cdnUrl\n    if (defaultHost && endpoint && name) {\n        return `https://${defaultHost}/v/${endpoint}/${encodeURI(name)}`\n    }\n    return ''\n}\n\n/**\n * Resolves a normalized image descriptor from a CMS image node.\n *\n * This is the single schema-aware entry point for image data. It supports\n * both the Aprimo (`aprimoData`) and the legacy Amplience (`diImage`) schemas.\n * The returned descriptor is consumed by getImageUrl, generateConsistentImageUrl,\n * and every component built on top of them.\n *\n * @param {Object} [node] - CMS image node (e.g. `image.img`, `image.aprimoImg`)\n * @returns {{cdnUrl: string, id?: string, fileName?: string}|{defaultHost: string, endpoint: string, name: string, pointOfInterest: string}|null}\n */\nexport const resolveImageDescriptor = (node) => {\n    // Aprimo schema — cdnUrl is the fully-qualified asset URL from the CMS.\n    // NOTE: Within a single node that has both aprimoData AND diImage, Aprimo\n    // always wins. The aprimoPrimary flag controls priority at the *field* level\n    // (e.g. imageData.img vs imageData.aprimoImg) inside generateConsistentImageUrl,\n    // not within a single node.\n    const aprimo = node?.aprimoData\n    if (aprimo?.cdnUrl) {\n        return {\n            cdnUrl: aprimo.cdnUrl,\n            id: aprimo.id,\n            fileName: aprimo.fileName\n        }\n    }\n\n    // Amplience (legacy) schema.\n    const legacy = node?.diImage?.image\n    if (legacy?.defaultHost) {\n        return {\n            defaultHost: legacy.defaultHost,\n            endpoint: legacy.endpoint,\n            name: legacy.name,\n            pointOfInterest: node.diImage.query ?? ''\n        }\n    }\n    return null\n}\n\nexport const getImageUrl = ({\n    node,\n    cdnUrl,\n    defaultHost,\n    endpoint,\n    name,\n    aspectRatio,\n    pointOfInterest,\n    qWidth,\n    fit = APRIMO_FIT_MODES.COVER\n} = {}) => {\n    // Resolve the descriptor from a CMS node when one is passed (schema-aware),\n    // while still honouring explicitly-passed fields so existing flat-field\n    // callers are unaffected. Explicit fields always take precedence.\n    const descriptor = resolveImageDescriptor(node) || {}\n\n    // Aprimo path — cdnUrl is a fully-qualified URL from the CMS.\n    const resolvedCdnUrl = cdnUrl ?? descriptor.cdnUrl\n    if (resolvedCdnUrl) {\n        // Aprimo has no `aspect` param: the aspect ratio must be expressed via an\n        // explicit width + height pair plus a `fit` scale mode. When an aspect\n        // ratio is configured we always emit it — otherwise the CDN serves the\n        // native-ratio asset and the object-fit:cover container crops/zooms it\n        // (this was the cause of the heavily zoomed-in storefront media).\n        const params = [`quality=${IMAGE_QUALITY}`]\n        const numericRatio = parseAspectRatio(aspectRatio)\n        if (numericRatio) {\n            // The base width only fixes the width:height ratio here; ImageCard\n            // rescales both responsively (see setImageWidth). An explicit qWidth\n            // is honoured so single-shot callers get the exact size they ask for.\n            const baseWidth = qWidth || DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n            params.push(\n                `width=${baseWidth}`,\n                `height=${Math.round(baseWidth / numericRatio)}`,\n                `fit=${fit}`\n            )\n        } else if (qWidth) {\n            params.push(`width=${qWidth}`)\n        }\n        const separator = resolvedCdnUrl.includes('?') ? '&' : '?'\n        return `${resolvedCdnUrl}${separator}${params.join('&')}`\n    }\n\n    // Amplience path — build URL from host/endpoint/name parts.\n    const resolvedHost = defaultHost ?? descriptor.defaultHost\n    const resolvedEndpoint = endpoint ?? descriptor.endpoint\n    const resolvedName = name ?? descriptor.name\n    const resolvedPoi = pointOfInterest !== undefined ? pointOfInterest : descriptor.pointOfInterest\n\n    if (!resolvedHost || !resolvedEndpoint || !resolvedName) return ''\n\n    let imageOutput = `https://${resolvedHost}/i/${resolvedEndpoint}/${encodeURI(\n        resolvedName\n    )}?w=auto&fmt=${IMAGE_FORMAT}&qlt=${IMAGE_QUALITY}`\n\n    if (aspectRatio) {\n        imageOutput += `&sm=aspect&aspect=${aspectRatio}`\n    }\n\n    // Only fall back to the neutral POI when none was resolved at all\n    // (undefined). An explicit null/'' keeps the POI param off the URL.\n    const poi = resolvedPoi === undefined ? 'poi=0,0,0,0&scaleFit=poi' : resolvedPoi\n    if (poi) {\n        imageOutput += `&${poi}`\n    }\n    return imageOutput\n}\n\nexport const getBreakpointKey = (deviceType) => {\n    switch (deviceType) {\n        case 'mobile':\n            return 'sm'\n        case 'tablet':\n            return 'md'\n        case 'desktop':\n            return 'xl'\n        default:\n            return 'sm'\n    }\n}\n\nexport const getDeviceWidth = (deviceType) => {\n    switch (deviceType) {\n        case 'mobile':\n            return DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE\n        case 'tablet':\n            return DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.TABLET\n        case 'desktop':\n            return DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n        default:\n            return DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.MOBILE\n    }\n}\n\nexport const generateConsistentImageUrl = (\n    imageData,\n    imageKey,\n    aspectRatio,\n    width,\n    {aprimoPrimary} = {}\n) => {\n    if (!imageData) return {imageUrl: null}\n\n    // Resolve descriptors from both sources.\n    const amplienceDescriptor =\n        resolveImageDescriptor(imageData[imageKey]) || resolveImageDescriptor(imageData.desktop)\n\n    // Aprimo data may arrive as a single `aprimoImg` or as the responsive\n    // `aprimoDesktopImg` / `aprimoMobileImg` variants (as used by the Media\n    // component). Prefer the variant mapped to the requested imageKey, then fall\n    // back through every Aprimo field so consumers like entry-points (imageKey\n    // 'img') still resolve Aprimo regardless of which field the CMS populates.\n    const aprimoKeyMap = {desktop: 'aprimoDesktopImg', mobile: 'aprimoMobileImg'}\n    const aprimoKey = aprimoKeyMap[imageKey] || 'aprimoImg'\n    const aprimoDescriptor =\n        resolveImageDescriptor(imageData[aprimoKey]) ||\n        resolveImageDescriptor(imageData.aprimoImg) ||\n        resolveImageDescriptor(imageData.aprimoDesktopImg) ||\n        resolveImageDescriptor(imageData.aprimoMobileImg)\n\n    // Flag controls which source takes priority. When aprimoPrimary is on, Aprimo\n    // is checked first and only falls back to Amplience when no Aprimo asset exists.\n    const descriptor = aprimoPrimary\n        ? aprimoDescriptor || amplienceDescriptor\n        : amplienceDescriptor || aprimoDescriptor\n\n    if (!descriptor) return {imageUrl: null}\n\n    const imageWidth = width || DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION.DESKTOP\n\n    // Build the URL via getImageUrl — it handles both Aprimo (cdnUrl) and\n    // Amplience (host/endpoint/name) descriptors internally.\n    let imageUrl = descriptor.cdnUrl\n        ? getImageUrl({cdnUrl: descriptor.cdnUrl, aspectRatio, qWidth: imageWidth})\n        : getImageUrl({\n              defaultHost: descriptor.defaultHost,\n              endpoint: descriptor.endpoint,\n              name: descriptor.name,\n              aspectRatio,\n              pointOfInterest: descriptor.pointOfInterest\n          })\n\n    if (!imageUrl) return {imageUrl: null}\n\n    // Width normalisation — only needed for Amplience URLs because getImageUrl\n    // already bakes width= into Aprimo URLs via the qWidth parameter.\n    if (!isAprimoUrl(imageUrl)) {\n        if (imageUrl.includes('w=auto')) {\n            imageUrl = imageUrl.replace('w=auto', `w=${imageWidth}`)\n        } else if (imageUrl.match(/w=\\d+/)) {\n            imageUrl = imageUrl.replace(/w=\\d+/, `w=${imageWidth}`)\n        } else {\n            imageUrl += `&w=${imageWidth}`\n        }\n    }\n\n    return {\n        imageUrl,\n        altText: imageData.imageAltText,\n        copyright: imageData?.copyright\n    }\n}\n","import React, {useEffect, useRef, useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {createPortal} from 'react-dom'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {FocusLock} from '@chakra-ui/react'\nimport {sheetWidth} from '../drawer-utils/constants'\n\nconst ENTER_DURATION = 400\nconst EXIT_DURATION = 150\nconst PINK_ENTER_DURATION = 250\nconst ENTER_EASING = 'cubic-bezier(0.16, 1, 0.3, 1)'\nconst EXIT_EASING = 'cubic-bezier(0.4, 0, 0.2, 1)'\n\nconst panelTransition = (isOpen, enterDuration) =>\n    isOpen\n        ? `transform ${enterDuration}ms ${ENTER_EASING}`\n        : `transform ${EXIT_DURATION}ms ${EXIT_EASING}`\n\nconst PLACEMENT_STYLES = {\n    bottom: {\n        panel: {top: 0, bottom: 0, left: 0, right: 0},\n        defaultWidth: '100%',\n        defaultMaxWidth: '100%',\n        hidden: 'translateY(100%)',\n        shown: 'translateY(0)'\n    },\n    right: {\n        panel: {top: 0, bottom: 0, right: 0, left: 'auto'},\n        defaultWidth: sheetWidth,\n        defaultMaxWidth: '604px',\n        hidden: 'translateX(100%)',\n        shown: 'translateX(0)'\n    }\n}\n\nexport const LightweightDrawer = ({\n    isOpen,\n    onClose,\n    placement = 'bottom',\n    bg = 'black1',\n    overlayBlur = true,\n    pinkOverlay = false,\n    width,\n    maxWidth,\n    panelSx,\n    containerProps,\n    children\n}) => {\n    const [mounted, setMounted] = useState(isOpen)\n    const [entered, setEntered] = useState(false)\n    const timeoutRef = useRef(null)\n\n    useEffect(() => {\n        if (isOpen) {\n            clearTimeout(timeoutRef.current)\n            setMounted(true)\n        } else {\n            setEntered(false)\n            timeoutRef.current = setTimeout(() => setMounted(false), EXIT_DURATION)\n        }\n    }, [isOpen])\n\n    useEffect(() => {\n        if (!isOpen || !mounted) {\n            return undefined\n        }\n        let innerRaf\n        const outerRaf = requestAnimationFrame(() => {\n            innerRaf = requestAnimationFrame(() => setEntered(true))\n        })\n        return () => {\n            cancelAnimationFrame(outerRaf)\n            cancelAnimationFrame(innerRaf)\n        }\n    }, [isOpen, mounted])\n\n    useEffect(() => {\n        if (!mounted) {\n            return undefined\n        }\n        document.body.style.overflow = 'hidden'\n        return () => {\n            document.body.style.overflow = ''\n        }\n    }, [mounted])\n\n    useEffect(() => {\n        if (!mounted) {\n            return undefined\n        }\n        const onKeyDown = (event) => {\n            if (event.key === 'Escape') {\n                onClose()\n            }\n        }\n        document.addEventListener('keydown', onKeyDown)\n        return () => document.removeEventListener('keydown', onKeyDown)\n    }, [mounted, onClose])\n\n    if (!mounted || typeof document === 'undefined') {\n        return null\n    }\n\n    const p = PLACEMENT_STYLES[placement] || PLACEMENT_STYLES.bottom\n\n    return createPortal(\n        <FocusLock>\n            <Box\n                position=\"fixed\"\n                top={0}\n                left={0}\n                right={0}\n                bottom={0}\n                zIndex=\"modal\"\n                bg=\"overlayGray\"\n                onClick={onClose}\n                sx={{\n                    opacity: entered ? 1 : 0,\n                    transition: isOpen\n                        ? `opacity ${ENTER_DURATION}ms ${ENTER_EASING}`\n                        : `opacity ${EXIT_DURATION}ms ${EXIT_EASING}`,\n                    ...(overlayBlur ? {backdropFilter: 'blur(10px)'} : {})\n                }}\n            />\n            {pinkOverlay && (\n                <Box\n                    aria-hidden\n                    position=\"fixed\"\n                    zIndex=\"modal\"\n                    bg=\"pandoraPink\"\n                    sx={{\n                        ...p.panel,\n                        width: width ?? p.defaultWidth,\n                        maxWidth: maxWidth ?? p.defaultMaxWidth,\n                        transform: entered ? p.shown : p.hidden,\n                        transition: panelTransition(isOpen, PINK_ENTER_DURATION),\n                        willChange: 'transform',\n                        backfaceVisibility: 'hidden'\n                    }}\n                />\n            )}\n            <Box\n                role=\"dialog\"\n                aria-modal=\"true\"\n                position=\"fixed\"\n                zIndex=\"modal\"\n                bg={bg}\n                display=\"flex\"\n                flexDirection=\"column\"\n                overflow=\"hidden\"\n                {...containerProps}\n                sx={{\n                    ...panelSx,\n                    ...p.panel,\n                    width: width ?? p.defaultWidth,\n                    maxWidth: maxWidth ?? p.defaultMaxWidth,\n                    transform: entered ? p.shown : p.hidden,\n                    transition: panelTransition(isOpen, ENTER_DURATION),\n                    willChange: 'transform',\n                    backfaceVisibility: 'hidden'\n                }}\n            >\n                {children}\n            </Box>\n        </FocusLock>,\n        document.body\n    )\n}\n\nLightweightDrawer.displayName = 'LightweightDrawer'\n\nLightweightDrawer.propTypes = {\n    isOpen: PropTypes.bool,\n    onClose: PropTypes.func,\n    placement: PropTypes.oneOf(['bottom', 'right']),\n    bg: PropTypes.string,\n    overlayBlur: PropTypes.bool,\n    pinkOverlay: PropTypes.bool,\n    width: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    panelSx: PropTypes.object,\n    containerProps: PropTypes.object,\n    children: PropTypes.node\n}\n\nexport default LightweightDrawer\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"flag-jp\",\n  \"use\": \"flag-jp-usage\",\n  \"viewBox\": \"0 0 36 24\",\n  \"content\": \"<symbol fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 36 24\\\" id=\\\"flag-jp\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M7 4h12.92v9.154H7V4z\\\" fill=\\\"#192F5D\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M8.076 4.392l.12.362h.378l-.306.222.116.365-.308-.225-.306.222.116-.362-.308-.222h.385l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.365-.305-.225-.31.222.117-.362-.305-.222h.378l.12-.362zm2.151 0l.12.362h.375l-.306.222.117.365-.31-.225-.305.222.117-.362-.31-.222h.383l.12-.362zm2.155 0l.116.362h.382l-.309.222.12.365-.309-.225-.309.222.12-.362-.309-.222h.379l.119-.362zm2.152 0l.12.362h.378l-.306.222.116.365-.308-.225-.306.222.116-.362-.305-.222h.378l.117-.362zm2.154 0l.117.362h.381l-.308.222.12.365-.31-.225-.308.222.12-.362-.31-.222h.382l.116-.362zm-9.688.916l.116.362h.382l-.309.223.113.362-.299-.223-.309.223.11-.362-.299-.223h.379l.116-.362zm2.151 0l.12.362h.378l-.308.223.12.362-.31-.223-.308.223.12-.362-.31-.223h.382l.116-.362zm2.155 0l.116.362h.382l-.309.223.117.362-.306-.223-.309.223.117-.362-.306-.223h.379l.12-.362zm2.152 0l.12.362h.378l-.309.223.12.362-.31-.223-.305.223.117-.362-.31-.223h.386l.113-.362zm2.155 0l.116.362h.382l-.31.223.117.362-.305-.223-.31.223.117-.362-.305-.223h.378l.12-.362zm-9.692.913l.12.369h.378l-.306.222.116.362-.308-.226-.306.226.116-.365-.308-.222h.385l.113-.366zm2.155 0l.116.366h.382l-.31.222.117.362-.305-.226-.31.226.117-.365-.305-.223h.378l.12-.362zm2.151 0l.12.366h.375l-.306.222.117.362-.31-.226-.305.226.117-.365-.31-.223h.383l.12-.362zm2.155 0l.116.366h.382l-.309.222.12.362-.309-.226-.309.226.12-.365-.309-.223h.379l.119-.362zm2.152 0l.12.366h.378l-.306.222.116.362-.308-.226-.306.226.116-.365-.305-.223h.378l.117-.362zm2.154 0l.117.366h.381l-.308.222.12.362-.31-.226-.308.226.12-.365-.31-.223h.382l.116-.362zm-9.688.917l.116.362h.382l-.309.222.116.365-.305-.225-.309.222.116-.362-.305-.222h.378l.12-.362zm2.151 0l.12.362h.378l-.308.222.12.365-.31-.225-.308.222.12-.362-.31-.222h.382l.116-.362zm2.155 0l.116.362h.382l-.309.222.117.365-.306-.225-.309.222.117-.362-.306-.222h.379l.12-.362zm2.152 0l.12.362h.378l-.306.222.117.365-.31-.225-.305.222.117-.362-.31-.222h.386l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.365-.305-.225-.31.222.117-.362-.305-.222h.378l.12-.362zm-9.692.916l.12.362h.378l-.306.223.116.365-.308-.226L7.77 9l.116-.361-.308-.223h.385l.113-.362zm2.155 0l.116.362h.382l-.31.223.117.361-.305-.222L9.92 9l.117-.361-.305-.223h.378l.12-.362zm2.151 0l.12.362h.375l-.306.223.117.365-.31-.226-.305.222.117-.361-.31-.223h.383l.12-.362zm2.155 0l.116.362h.382l-.309.223.12.365-.309-.226-.309.222.12-.361-.309-.223h.379l.119-.362zm2.152 0l.12.362h.378l-.306.223.116.365-.308-.226-.306.222.116-.361-.305-.223h.378l.117-.362zm2.154 0l.117.362h.381l-.308.223.12.365-.31-.226-.308.222.12-.361-.31-.223h.382l.116-.362zm-9.688.917l.116.361h.382l-.309.223.116.362-.305-.226-.309.226.116-.365-.305-.223h.378l.12-.358zm2.151 0l.12.361h.378l-.308.223.12.362-.31-.226-.308.226.12-.365-.31-.223h.382l.116-.358zm2.155 0l.116.361h.382l-.309.223.117.362-.306-.226-.309.226.117-.365-.306-.223h.379l.12-.358zm2.152 0l.12.361h.378l-.306.223.117.362-.31-.226-.305.226.117-.365-.31-.223h.386l.113-.358zm2.155 0l.116.361h.382l-.31.223.117.362-.305-.226-.31.226.117-.365-.305-.223h.378l.12-.358zm-9.692.913l.12.365h.378l-.306.222.116.359-.308-.223-.306.223.116-.362-.308-.222h.385l.113-.362zm2.155 0l.116.365h.382l-.31.222.12.359-.308-.223-.31.223.12-.362-.308-.222h.378l.12-.362zm2.151 0l.12.365h.375l-.306.222.117.359-.31-.223-.305.223.117-.362-.31-.222h.383l.12-.362zm2.155 0l.116.365h.382l-.309.222.12.359-.309-.223-.309.223.12-.362-.309-.222h.379l.119-.362zm2.152 0l.12.365h.378l-.306.222.116.359-.308-.223-.306.223.116-.362-.305-.222h.378l.117-.362zm2.154 0l.117.365h.381l-.308.222.12.359-.31-.223-.308.223.12-.362-.31-.222h.382l.116-.362zm-9.688.916l.116.362h.382l-.309.222.116.366-.305-.226-.309.222.116-.362-.305-.222h.378l.12-.362zm2.151 0l.12.362h.378l-.308.222.12.366-.31-.226-.308.222.12-.362-.31-.222h.382l.116-.362zm2.155 0l.116.362h.382l-.309.222.117.366-.306-.226-.309.222.117-.362-.306-.222h.379l.12-.362zm2.152 0l.12.362h.378l-.306.222.117.366-.31-.226-.305.222.117-.362-.31-.222h.386l.113-.362zm2.155 0l.116.362h.382l-.31.222.117.366-.305-.226-.31.222.117-.362-.305-.222h.378l.12-.362zm-9.692.916l.12.362h.378l-.306.223.116.362-.308-.223-.306.223.116-.366-.308-.222h.385l.113-.358zm2.155 0l.116.362h.382l-.31.223.12.362-.308-.223-.31.223.12-.366-.308-.222h.378l.12-.358zm2.151 0l.12.362h.375l-.299.223.116.362-.309-.223-.305.223.116-.366-.309-.222h.382l.113-.358zm2.155 0l.116.362h.382l-.309.223.12.362-.309-.223-.309.223.12-.366-.309-.222h.379l.119-.358zm2.152 0l.12.362h.378l-.306.223.116.362-.308-.223-.306.223.116-.366-.305-.222h.378l.117-.358zm2.154 0l.117.362h.381l-.308.223.12.362-.31-.223-.308.223.12-.366-.31-.222h.382l.116-.358z\\\" fill=\\\"#fff\\\" />\\n    <path d=\\\"M36 0H0v24h36V0z\\\" fill=\\\"#fff\\\" />\\n    <path d=\\\"M18 19.2a7.2 7.2 0 100-14.4 7.2 7.2 0 000 14.4z\\\" fill=\\\"#BC002D\\\" />\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M30 0H6v24h24V0zM18.5 21a8.5 8.5 0 100-17 8.5 8.5 0 000 17z\\\" fill=\\\"#fff\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import {useMemo} from 'react'\nimport {useIntl} from 'react-intl'\n\nexport function useDeliveryMessages(messages) {\n    const intl = useIntl()\n\n    return useMemo(() => {\n        const entries = Object.entries(messages || {})\n        return entries.reduce((acc, [key, msg]) => {\n            acc[key] = intl.formatMessage(msg)\n            return acc\n        }, {})\n    }, [intl, messages])\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_x_netflix_landscape_black\",\n  \"use\": \"pandora_x_netflix_landscape_black-usage\",\n  \"viewBox\": \"0 0 371.9 70.1\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 371.9 70.1\\\" id=\\\"pandora_x_netflix_landscape_black\\\"><polygon points=\\\"191.6,24.8 183.8,32.8 176,24.8 174.4,26.4 182.2,34.4 174.4,42.4 176,44 183.8,36 191.6,44 193.2,42.4 185.3,34.4 193.2,26.4\\\" /><polygon points=\\\"110.6,21.5 111.2,21.5 111.2,21.5 110.8,16.8 110.7,16.7 110.6,16.7 110.6,16.8 110.1,21.5 110.1,21.5\\\" /><polygon points=\\\"113.3,21.8 113.3,21.8 114.1,17.6 114.1,17.5 114,17.5 113.9,17.5 112.2,21.5 112.2,21.5\\\" /><path d=\\\"M112.5 23.6c.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6-.4 0-.7.3-.7.6C111.8 23.3 112.1 23.6 112.5 23.6zM110.6 23.4c.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6-.4 0-.7.3-.7.6C110 23.1 110.3 23.4 110.6 23.4z\\\" /><polygon points=\\\"108,21.8 109.1,21.5 109.1,21.5 107.4,17.5 107.3,17.5 107.2,17.5 107.2,17.6 108,21.8\\\" /><path d=\\\"M108.2 22.9c0 .4.3.7.7.7.3 0 .6-.3.6-.7 0-.4-.3-.6-.6-.6C108.5 22.3 108.2 22.6 108.2 22.9zM33.5 24.8h-5.6l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h3.7l0 0c0 0-.1-1.3-.1-3.7v-3.4l0 0c.5.1 1.6.1 2 .1 3.8 0 7-2.3 7-6.2C40.5 26.9 37.3 24.8 33.5 24.8zM33.4 33.7c-.4 0-1.4-.1-1.9-.1v-5.7h2.1c1.9 0 3.4.8 3.4 2.8C37 32.6 35.7 33.7 33.4 33.7zM51 26.3c-.4-1-.5-1.5-.5-1.5l0 0h-3l0 0c0 0-.1.6-.5 1.5l-6.5 15.5c-.5 1.3-1.1 2-1.1 2v0h3.8l0 0c0-.1.1-.6.5-1.7l1.2-2.9h8.3l1.3 2.9c.4 1.1.7 1.7.7 1.7l0 0h3.8v0c0 0-.5-.7-1.1-2L51 26.3zM46.2 36.1l2.7-6.8h0l2.9 6.8H46.2zM77.8 24.8 77.8 24.8l-3.4 0 0 0c0 0 .1 1.3.1 3.7v9.6h0L64.2 24.8h-3.7l0 0c.4.9.6 1.5.6 1.9v13.5c0 2.3-.1 3.7-.1 3.7l0 0h3.3l0 0c0 0-.1-1.3-.1-3.7v-9.8h0l10.4 13.5h3.1l0 0c0 0-.1-1.3-.1-3.7V28.5C77.7 26.1 77.8 24.8 77.8 24.8zM88.2 24.8h-6.4l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h2c1.3 0 2.7.2 4.4.2 5.9 0 10-4.2 10-9.7C98.2 28.8 94.1 24.8 88.2 24.8zM88 40.9c-.9 0-1.8 0-2.3-.2-.3-.1-.4-.2-.4-.7V27.9h2.5c4.1 0 6.8 2.8 6.8 6.5C94.7 38.1 92 40.9 88 40.9zM110.6 24.5c-5.5 0-9.8 4.3-9.8 9.8 0 5.6 4.3 9.8 9.8 9.8 5.6 0 9.8-4.2 9.8-9.8C120.5 28.8 116.2 24.5 110.6 24.5zM110.6 41c-3.6 0-6.3-2.9-6.3-6.7 0-3.8 2.8-6.7 6.3-6.7 3.6 0 6.3 2.9 6.3 6.7C117 38.1 114.2 41 110.6 41zM134.1 37.4c-.5-.8-1.2-1.4-1.9-1.6v0c2-.4 3.9-2.8 3.9-5.1 0-3.2-2.4-6-6.2-6h-6.1l0 0c0 0 .1 1.3.1 3.7v11.8c0 2.3-.1 3.7-.1 3.7l0 0h3.7l0 0c0 0-.1-1.3-.1-3.7v-3.7c1.8 0 2.5.4 3.2 1.4l1.6 2.5c1.3 2.1 1.8 3.4 1.8 3.4l0 0h4.4v0c0 0-1.1-1.3-2.4-3.4L134.1 37.4zM129.1 33.5c-.4 0-1.2 0-1.7-.1v-5.5h2.1c2.1 0 3.1 1.3 3.1 2.9C132.6 32.2 131.5 33.5 129.1 33.5zM158.7 41.9l-6.8-15.5c-.4-1-.5-1.5-.5-1.5l0 0h-3l0 0c0 0-.1.6-.5 1.5l-6.5 15.5c-.5 1.3-1.1 2-1.1 2v0h3.8l0 0c0-.1.1-.6.5-1.7l1.2-2.9h8.3l1.3 2.9c.4 1.1.7 1.7.7 1.7l0 0h3.8v0C159.8 43.9 159.3 43.2 158.7 41.9zM147 36.1l2.7-6.8h0l2.9 6.8H147z\\\" /><path id=\\\"pandora_x_netflix_landscape_black_STRANGER_THINGS_LOGO_00000021823444290604408140000011225632905423540375_\\\" d=\\\"M343.2,47.5 c-0.9,0-1.5-0.9-2-2.8c-1.1-3.9-2.8-7.4-4.9-9.9c2.8-1.8,4.1-3.9,4.1-6.3c0-1.5-0.7-2.7-1.9-3.3c-1.1-0.5-2.4-0.6-3.6-0.6l-14.1,0 V26l0.3,0c0.3,0,0.6,0.1,0.7,0.3c0.4,0.4,0.6,1.4,0.6,3.1l0,14.8c0,1.7-0.2,2.7-0.6,3.1c-0.2,0.2-0.4,0.3-0.7,0.3l-0.3,0V49h10.1 v-1.5l-0.3,0c-0.3,0-0.6-0.1-0.7-0.3c-0.4-0.4-0.6-1.4-0.6-3.1V38l0.7-0.3c1.5,2.1,4.1,6.9,4.1,8.9c0,0.7-0.3,0.9-1,0.9l-0.3,0V49 h10.7v-1.5H343.2z M329.3,34.8v-5c0-0.1,0-0.1,0-0.2c0-0.5,0-1.2,0.2-1.5c0.4-0.4,1.2-0.6,1.8-0.6c1.4,0,2.3,0.9,2.3,2.5 C333.5,32.9,331,34.2,329.3,34.8z M284.2,42.7l-0.2,0v1.2h5.4v-1.3l-0.3,0c-0.6,0-1-0.4-1-2.6V28.4c0-2.1,0.4-2.6,1-2.6l0.3,0v-1.3 H284v1.3l0.3,0c0.3,0,1.1,0,1.1,2.6v2.7l-2.1-3.2l-0.1-0.2c-0.3-0.4-0.8-1.1-0.8-1.5c0-0.3,0.1-0.4,0.4-0.5l0.2-0.1v-1.1h-9.7v1.3 l0.3,0c0.6,0,1,0.4,1,2.6v11.7c0,0.9-0.1,1.6-0.2,2c-0.4-0.5-0.6-1.3-0.8-2c0-0.2-0.1-0.3-0.1-0.4c-2.2-7.7-3.7-13.1-3.7-13.5 c0-0.2,0-0.4,0.3-0.4l0.2,0v-1.2h-7.5v1.1l0.2,0c0.1,0,0.3,0.1,0.3,0.4c0,0.3-0.2,1-0.4,1.5l-3.7,11.9l-0.1,0.2 c-0.1,0.4-0.3,0.8-0.4,1.2c0-0.1-0.1-0.3-0.1-0.4c-0.8-3.1-2.2-5.8-3.8-7.8c2.1-1.4,3.2-3.1,3.2-5c0-1.2-0.5-2.1-1.5-2.7 c-0.9-0.4-1.9-0.5-2.8-0.5l-11.2,0v1.3l0.3,0c0.2,0,0.4,0.1,0.5,0.2c0.3,0.3,0.5,1.1,0.5,2.4v11.7c0,1.3-0.1,2.1-0.5,2.4 c-0.1,0.1-0.3,0.2-0.5,0.2l-0.3,0v1.3h8v-1.3l-0.3,0c-0.2,0-0.4-0.1-0.5-0.2c-0.3-0.3-0.5-1.1-0.5-2.4v-4.8l0.4-0.2 c1.2,1.7,3.2,5.4,3.2,6.9c0,0.5-0.2,0.6-0.7,0.7l-0.3,0v1.3h10.9v-1.3l-0.2,0c-0.5-0.1-0.8-0.3-0.8-1c0-0.4,0.1-1.2,0.4-2.2 l0.8-2.7c1.2,0,2.2,0.4,3.2,1.2c0.9,0.7,1.9,2.1,1.9,3.3c0,0.8-0.4,1.3-1,1.4l-0.3,0v1.3h11.8v-1.3l-0.3,0c-0.6,0-1-0.4-1-2.6V29.1 l6.6,9.1c0.7,0.9,1.3,1.8,1.3,3.1C285.2,42.1,284.9,42.5,284.2,42.7z M249.2,32.6v-3.8c0-0.1,0-0.1,0-0.2c0-0.4,0-0.9,0.1-1.1 c0.3-0.3,0.9-0.4,1.4-0.4c1.1,0,1.7,0.7,1.7,1.9C252.5,31.1,250.6,32.1,249.2,32.6z M263.9,33.7l1.1-4l1.3,5 C265.6,34.2,264.8,33.8,263.9,33.7z M313.4,27.4c-0.4,0.4-0.4,1.1-0.4,2.3l0,1h0.5c0.1,0,0.2,0,0.3,0c1.4,0,2.3,0,2.5-1.4l0-0.2 h1.1l0.8,5.4l-1,0.2l-0.1-0.2c-0.1-0.2-0.3-0.4-0.4-0.6c-0.8-0.8-1.6-0.8-2.6-0.8c-0.1,0-0.2,0-0.3,0H313v5.9c0,1.9,0.4,2.4,2,2.4 c2.6,0,4.5-1.7,5.9-5.2L321,36l1.1,0.5l-2.2,8.1l-0.3-0.3c-0.4-0.4-0.9-0.4-1.2-0.4l-0.1,0h-11.9h-0.2h-7.7c-2.5,0-5.1-0.3-7.2-2.2 c-1.2-1.1-2.1-2.6-2.7-4.3l0,0v-7.8l0,0c1.3-3.4,4.3-5.4,8.4-5.4c1.8,0,2.6,0.2,3.8,0.4c0.4,0.1,0.7,0.2,1,0.2 c0.4,0,0.8-0.2,1.1-0.5l0.4-0.4l0.8,6.9l-1.1,0.2l-0.1-0.2c-0.8-2.4-2.6-3.8-4.8-3.8c-3.2,0-4.4,3.6-4.4,6.9c0,3.2,1.4,7.7,4.6,7.7 c0.5,0,1.1-0.2,1.4-0.8c0.2-0.5,0.2-1.3,0.2-1.9l0-2.8l0-0.3c0-1.5,0-2.4-1.2-2.4l-0.3,0V32h8.2v1.3l-0.3,0c-1.2,0.1-1.3,1-1.2,2.6 c0,0.1,0,0.3,0,0.4l0,3.5c0,0.6,0,1.8,0.2,2.2c0.1,0.3,0.4,0.5,0.8,0.6v0l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4 V28.4c0-1.3-0.1-2.1-0.5-2.4c-0.1-0.1-0.3-0.2-0.5-0.2l-0.3,0v-1.3h11.1c0.6,0,1.2,0,1.8-0.5l0.4-0.3l1.3,6.9l-1.1,0.4l-0.1-0.3 c-0.6-2.4-2.3-3.8-4.8-3.8C314.1,27,313.6,27.1,313.4,27.4z M238.1,27.3v12.7c0,2.1,0.3,2.7,1.6,2.7l0.3,0v1.3h-9.2v-1.3l0.3,0 c1.3,0,1.6-0.6,1.6-2.7V27.2c-1.7,0.2-3,1.4-3.7,3.3l-0.1,0.3l-1.1-0.4l1.1-5.9H242l1,5.9l-1.1,0.4l-0.1-0.2 C240.9,28.6,239.7,27.5,238.1,27.3z M256.6,48.2h8.2v1.3l-0.3,0c-0.3,0-0.4,0.1-0.6,0.2c-0.3,0.3-0.5,1.1-0.5,2.4v11.7 c0,1.3,0.1,2.1,0.5,2.4c0.1,0.1,0.3,0.2,0.5,0.2l0.3,0v1.3h-8.2v-1.3l0.3,0c0.7,0,1.1-0.5,1.1-2.7v-7.8h-4.2v7.8 c0,2.3,0.4,2.7,1.1,2.7l0.3,0v1.3h-8.2v-1.3l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4V52c0-2.3-0.5-2.6-1-2.6l-0.3,0 v-1.3h8.2v1.3l-0.3,0c-0.7,0-1.1,0.5-1.1,2.6v1.3h4.2V52c0-1.3-0.2-2-0.5-2.4c-0.2-0.1-0.3-0.2-0.6-0.2l-0.3,0V48.2z M265.3,48.2 h8.1v1.3l-0.3,0c-0.2,0-0.4,0.1-0.5,0.2c-0.3,0.3-0.5,1.1-0.5,2.4v11.7c0,1.3,0.1,2.1,0.5,2.4c0.1,0.1,0.3,0.2,0.5,0.2l0.3,0v1.3 h-8.1v-1.3l0.3,0c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.5-1.1,0.5-2.4V52c0-2.1-0.4-2.5-1-2.6l-0.3,0V48.2z M306.7,66.3l0.2,0.1v1.2H299 c-2.5,0-5.1-0.3-7.2-2.2c-1.2-1.1-2.1-2.6-2.7-4.3l0,0v-7.8l0,0c1.3-3.4,4.3-5.4,8.4-5.4c1.8,0,2.6,0.2,3.8,0.4 c0.1,0,0.2,0,0.2,0.1c0.2,0.1,0.4,0.1,0.6,0.1c0.4,0,0.7-0.1,1.3-0.5l0.4-0.3l0.8,6.6l-1.1,0.2l-0.1-0.2c-0.8-2.3-2.5-3.6-4.8-3.6 c-3.2,0-4.4,3.6-4.4,6.9c0,3.2,1.4,7.7,4.6,7.7c0.5,0,1.1-0.2,1.4-0.8c0.2-0.5,0.2-1.3,0.2-1.9v-2.8l0-0.3c0-1.5,0-2.4-1.2-2.4 l-0.3,0v-1.3h8.2v1.3l-0.3,0c-1.2,0.1-1.3,1-1.2,2.6c0,0.1,0,0.3,0,0.4l0,3.5c0,0.6,0,1.8,0.2,2.2C306,66,306.4,66.1,306.7,66.3z M289.4,66.3l0.3,0v1.3h-5.4v-1.2l0.2,0c0.7-0.1,1-0.6,1-1.3c0-1.3-0.7-2.2-1.3-3.1l-6.6-9.1v10.9c0,2.1,0.4,2.6,1,2.6l0.3,0v1.3 h-5.2v-1.3l0.3,0c0.6,0,1-0.4,1-2.6V52c0-2.1-0.4-2.6-1-2.6l-0.3,0v-1.3h9.7v1.2l-0.2,0.1c-0.3,0.1-0.4,0.2-0.4,0.5 c0,0.4,0.5,1.1,0.8,1.5l0.1,0.2l2.1,3.1V52c0-2.6-0.8-2.6-1.1-2.6l-0.3,0v-1.3h5.4v1.3l-0.3,0c-0.6,0-1,0.4-1,2.6v11.6 C288.4,65.8,288.8,66.3,289.4,66.3z M247.6,54l-1.1,0.4l-0.1-0.2c-0.9-2-2.1-3.1-3.8-3.3v12.7c0,2.1,0.4,2.7,1.7,2.7l0.3,0v1.3H235 v-1.3l0.3,0c1.3,0,1.7-0.6,1.7-2.7V50.8c-1.7,0.2-3.1,1.4-3.8,3.3l-0.1,0.3l-1.1-0.4l1.1-5.9h13.6L247.6,54z M322,60.8 c0,4.6-2.9,7.2-8.2,7.2c-1.3,0-2.3-0.2-3.4-0.4l-0.1,0c-0.4-0.1-1.1-0.3-1.5-0.3c-0.4,0-0.7,0.2-1.1,0.6l-0.5,0.5l-0.5-7.8h1.2 l0.1,0.2c0.8,2.6,2.7,4.3,5,4.3c2.1,0,3.2-0.8,3.2-2.5c0-1.2-1.1-1.6-2-2c-0.1,0-0.2-0.1-0.3-0.1l-2.4-0.9 c-0.9-0.3-2.1-0.8-2.9-1.6c-0.9-0.9-1.5-2.3-1.5-3.7c0-2.4,0.8-4.1,2.3-5.3c1.5-1.1,3.3-1.3,3.9-1.3c1.8,0,3.1,0.3,3.9,0.5 c0.2,0.1,0.4,0.1,0.5,0.1c0.4,0,0.9-0.1,1.3-0.4l0.4-0.3l0.6,5.7l-1,0.4l-0.1-0.2c-0.9-1.6-2.7-2.9-4.1-2.9c-0.6,0-1.4,0.2-1.9,0.7 c-0.3,0.3-0.5,0.8-0.4,1.3c0,1.1,1.2,1.5,2.1,1.8c0.1,0,0.2,0.1,0.2,0.1l2.8,1C320.3,56.3,322,58.5,322,60.8z M340.7,22.1H211.9v-2 h128.8V22.1z M212.1,51.2h19.4v2h-19.4V51.2z M320.9,51.2h22.6v2h-22.6V51.2z M223.5,42.3c0-1.6-1.4-2.1-2.6-2.6 c-0.1,0-0.2-0.1-0.4-0.1l-3.1-1.2c-1.2-0.4-2.6-1.1-3.6-2c-1.2-1.1-1.9-2.9-1.9-4.6c0-3,1-5.2,2.9-6.7c1.9-1.4,4.1-1.6,5-1.6 c0.6,0,1.3,0,2,0c0.6,0,1.2,0.1,2,0.2l0.3,0c0.6,0.1,1.1,0.2,1.7,0.3c0.9,0.2,1.8,0.1,2.3-0.1l0.5-0.2l-1.3,6.9l-0.2,0 c0,0-0.1,0-0.2,0.1c-0.2,0.1-0.3,0.1-0.3,0.1l-0.3,0.1l-0.1-0.3c-0.7-2.2-2.6-3.8-4.4-3.8c-0.8,0-1.8,0.2-2.5,0.9 c-0.4,0.4-0.6,1-0.6,1.6c0,1.5,1.5,2,2.7,2.4c0.1,0,0.2,0.1,0.3,0.1l3.5,1.3c2.6,0.9,5.2,3.4,5.2,6.7c0,5.9-3.6,9.1-10.3,9.1 c-1.6,0-2.9-0.2-4.3-0.6l0,0c-0.5-0.1-1.4-0.3-1.9-0.3c-0.5,0-1,0.2-1.4,0.8l-0.6,0.7l0.6-9.4l1.1,0l0.1,0.2 c1.2,3.5,3.1,5.2,5.6,5.2C222.1,45.6,223.5,44.5,223.5,42.3z\\\" style=\\\"fill:#E4002B\\\" /><path id=\\\"pandora_x_netflix_landscape_black_NETFLIX_LOGO_00000117661706404934566950000007021924714356159127_\\\" d=\\\"M263.7,1.7h4.6v1.6h-2.9v2.2 c0.7,0,1.6,0,2.2,0v1.6c-0.7,0-1.6,0-2.2,0v2.4c1-0.1,1.9-0.1,2.9-0.2V11c-1.5,0.1-3,0.2-4.6,0.3V1.7z M269.3,3.3h1.7v7.6 c0.5,0,1.1,0,1.6-0.1V3.3h1.7V1.7h-5.1V3.3z M260.5,7.6l-2.1-5.9h-1.6v10.5c0.5-0.1,1.1-0.2,1.6-0.2V6.2l1.9,5.5 c0.6-0.1,1.2-0.1,1.8-0.2V1.7h-1.6V7.6z M286.9,11.2c0.5,0,1.1,0.1,1.6,0.1V1.7h-1.6V11.2z M295.8,1.7H294l-1.2,2.8l-1.1-2.8H290 l1.9,4.9l-2.1,4.8c0.6,0.1,1.2,0.1,1.7,0.2l1.2-2.8l1.2,3.1c0.6,0.1,1.2,0.2,1.9,0.3l0,0l-2.1-5.5L295.8,1.7z M275.5,10.8l1.6,0V7 h2.2V5.4h-2.2V3.3h2.9V1.7h-4.6V10.8z M282.8,1.7h-1.6v9.2c1.5,0.1,3,0.1,4.5,0.2V9.4c-0.9-0.1-1.9-0.1-2.8-0.2V1.7z\\\" style=\\\"fill:#E4002B\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useCallback} from 'react'\nimport PropTypes from 'prop-types'\n\n// Custom Shared Component(s)\nimport {Skeleton as ProductTileSkeleton} from 'pandora-shared-app/overrides/app/components/product-tile/partials/skeleton'\n\n// Carousel Related UI Component(s)\nimport {Controller, Autoplay} from 'swiper/modules'\nimport {Carousel} from 'pandora-shared-app/overrides/app/components/carousel'\n\n// Chakra UI Components\nimport {useBreakpointValue} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nconst carouselModules = [Controller, Autoplay]\n\n// 6 is the biggest number of slides per view\n// - in Shop the Look App 2 - when we open the Partial Drawer on Desktop\n// We'll use this number * 2 in order to be able to see the chevrons on loading state\nconst SLIDES_PER_VIEW = 6\n\nexport const ProductCarouselSkeleton = ({carouselConfig, limit}) => {\n    const renderSkeletonProductTile = useCallback(\n        (_, index) => <ProductTileSkeleton key={index} />,\n        []\n    )\n\n    const isMobile = useBreakpointValue({base: true, xl: false})\n\n    const carouselArgsLoading = {\n        ...carouselConfig,\n        renderSlide: renderSkeletonProductTile,\n        showControls: !isMobile,\n        slides: Array.from({length: limit ?? SLIDES_PER_VIEW * 2}, (_, index) => ({id: index}))\n    }\n\n    return <Carousel modules={carouselModules} {...carouselArgsLoading} />\n}\n\nProductCarouselSkeleton.propTypes = {\n    carouselConfig: PropTypes.object.isRequired,\n    limit: PropTypes.number\n}\n\nProductCarouselSkeleton.displayName = 'ProductCarouselSkeleton'\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// Chakra UI Components\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Partials\nimport {ProductCarouselSkeleton} from './product-carousel-skeleton'\n\n/**\n * The carousel's loading state without its data layer: the same themed shell\n * ProductCarousel renders, around the same skeleton. For callers that already\n * know products are on the way but cannot mount ProductCarousel yet because\n * they have no product ids (e.g. recommendations still in flight).\n */\nexport const ProductCarouselPlaceholder = ({carouselConfig, limit, layout, variant}) => {\n    const {container} = useMultiStyleConfig('ProductCarousel', {variant: layout ?? variant})\n\n    return (\n        <Box\n            sx={container}\n            data-testid=\"product-carousel-placeholder\"\n            data-auto=\"product-carousel-placeholder\"\n            className=\"product-carousel\"\n        >\n            <ProductCarouselSkeleton carouselConfig={carouselConfig} limit={limit} />\n        </Box>\n    )\n}\n\nProductCarouselPlaceholder.propTypes = {\n    carouselConfig: PropTypes.object.isRequired,\n    limit: PropTypes.number,\n    layout: PropTypes.string,\n    variant: PropTypes.string\n}\n\nProductCarouselPlaceholder.displayName = 'ProductCarouselPlaceholder'\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-right\",\n  \"use\": \"chevron-right-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-right\\\">\\n<path d=\\\"M15.7799 11.2799C15.9206 11.4204 15.9997 11.611 15.9999 11.8099V12.1899C15.9976 12.3883 15.9188 12.5781 15.7799 12.7199L10.6399 17.8499C10.546 17.9445 10.4182 17.9978 10.2849 17.9978C10.1516 17.9978 10.0238 17.9445 9.92992 17.8499L9.21992 17.1399C9.12586 17.0477 9.07285 16.9215 9.07285 16.7899C9.07285 16.6582 9.12586 16.532 9.21992 16.4399L13.6699 11.9999L9.21992 7.55985C9.12526 7.46597 9.07202 7.33817 9.07202 7.20485C9.07202 7.07153 9.12526 6.94374 9.21992 6.84985L9.92992 6.14985C10.0238 6.0552 10.1516 6.00195 10.2849 6.00195C10.4182 6.00195 10.546 6.0552 10.6399 6.14985L15.7799 11.2799Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"loyalty-primary\",\n  \"use\": \"loyalty-primary-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"none\\\" viewBox=\\\"0 0 20 20\\\" id=\\\"loyalty-primary\\\">\\n    <g clip-path=\\\"url\\\">\\n        <path fill=\\\"currentColor\\\" d=\\\"M12.066 5.275c1.113-.115 2.329.32 3.094 1.213.791.924 1.052 2.274.349 3.852-.69 1.548-2.303 3.316-5.236 5.223-.015.01-.032.015-.047.023-.012.006-.023.014-.035.019-.017.007-.035.011-.053.016l-.043.012-.046.006c-.016.001-.033.004-.049.004-.017 0-.033-.003-.05-.004l-.046-.006-.04-.01a.496.496 0 0 1-.136-.06C6.794 13.656 5.18 11.888 4.49 10.34c-.703-1.578-.442-2.928.349-3.852.765-.892 1.981-1.328 3.094-1.213.8.084 1.562.456 2.066 1.15.504-.694 1.266-1.066 2.066-1.15ZM14.4 7.14c-.538-.628-1.424-.953-2.23-.87-.779.082-1.452.535-1.685 1.462 0 .005-.003.009-.005.013a.51.51 0 0 1-.018.053c-.005.011-.008.023-.014.034a.493.493 0 0 1-.046.077c-.004.007-.011.012-.016.018a.489.489 0 0 1-.047.05l-.022.018a.503.503 0 0 1-.053.04c-.007.005-.015.008-.022.012a.495.495 0 0 1-.097.041c-.008.002-.015.007-.024.009l-.021.003a.49.49 0 0 1-.15.007l-.05-.007-.021-.003c-.009-.002-.017-.006-.025-.009a.496.496 0 0 1-.097-.041c-.007-.004-.015-.007-.022-.012a.495.495 0 0 1-.053-.04l-.022-.017a.498.498 0 0 1-.082-.1c-.008-.013-.017-.026-.024-.04l-.005-.01c-.005-.01-.007-.02-.01-.03-.008-.017-.015-.035-.02-.053l-.004-.013c-.233-.927-.906-1.38-1.685-1.461-.806-.084-1.692.241-2.23.869-.513.597-.76 1.529-.196 2.794.542 1.214 1.833 2.728 4.349 4.445l.247.164.247-.164c2.516-1.717 3.807-3.231 4.349-4.445.563-1.265.317-2.197-.196-2.794Z\\\" />\\n        <circle cx=\\\"10\\\" cy=\\\"10\\\" r=\\\"8.5\\\" stroke=\\\"currentColor\\\" />\\n    </g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"chevron-left\",\n  \"use\": \"chevron-left-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"chevron-left\\\">\\n<path d=\\\"M8.22 12.7199C8.07931 12.5793 8.00018 12.3887 8 12.1899V11.8099C8.0023 11.6114 8.08112 11.4216 8.22 11.2799L13.36 6.14985C13.4539 6.0552 13.5817 6.00195 13.715 6.00195C13.8483 6.00195 13.9761 6.0552 14.07 6.14985L14.78 6.85985C14.8741 6.95202 14.9271 7.07816 14.9271 7.20985C14.9271 7.34154 14.8741 7.46769 14.78 7.55985L10.33 11.9999L14.78 16.4399C14.8747 16.5337 14.9279 16.6615 14.9279 16.7949C14.9279 16.9282 14.8747 17.056 14.78 17.1499L14.07 17.8499C13.9761 17.9445 13.8483 17.9978 13.715 17.9978C13.5817 17.9978 13.4539 17.9445 13.36 17.8499L8.22 12.7199Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","/**\n * Breakpoints values with rem and corresponding pixel values.\n */\nconst breakpoints = {\n    /** 0px */\n    base: '0rem',\n    /** 320px */\n    sm: '20rem',\n    /** 768px */\n    md: '48rem',\n    /** 1024px */\n    lg: '64rem',\n    /** 1200px */\n    xl: '75rem',\n    /** 1440px */\n    '2xl': '90rem'\n}\n\nexport default breakpoints\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"afterpay_black\",\n  \"use\": \"afterpay_black-usage\",\n  \"viewBox\": \"0 0 1148.9 220.8\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 1148.9 220.8\\\" id=\\\"afterpay_black\\\"><path d=\\\"m1131.4 44.6-34.6-19.8-35.1-20.1c-23.2-13.3-52.2 3.4-52.2 30.2v4.5c0 2.5 1.3 4.8 3.5 6l16.3 9.3c4.5 2.6 10.1-.7 10.1-5.9V38.1c0-5.3 5.7-8.6 10.3-6l32 18.4 31.9 18.3c4.6 2.6 4.6 9.3 0 11.9L1081.7 99l-32 18.4c-4.6 2.6-10.3-.7-10.3-6v-5.3c0-26.8-29-43.6-52.2-30.2L952.1 96l-34.6 19.8c-23.3 13.4-23.3 47.1 0 60.5l34.6 19.8 35.1 20.1c23.2 13.3 52.2-3.4 52.2-30.2v-4.5c0-2.5-1.3-4.8-3.5-6l-16.3-9.3c-4.5-2.6-10.1.7-10.1 5.9v10.7c0 5.3-5.7 8.6-10.3 6l-32-18.4-31.9-18.3c-4.6-2.6-4.6-9.3 0-11.9l31.9-18.3 32-18.4c4.6-2.6 10.3.7 10.3 6v5.3c0 26.8 29 43.6 52.2 30.2l35.1-20.1 34.6-19.8C1154.7 91.6 1154.7 58 1131.4 44.6zM904.4 51.2l-81 167.3h-33.6l30.3-62.5L772.4 51.2h34.5l30.6 70.2 33.4-70.2L904.4 51.2 904.4 51.2zM94.5 110.6c0-20-14.5-34-32.3-34s-32.3 14.3-32.3 34c0 19.5 14.5 34 32.3 34S94.5 130.6 94.5 110.6M94.8 170v-15.4c-8.8 10.7-21.9 17.3-37.5 17.3C24.7 171.9 0 145.8 0 110.6c0-34.9 25.7-61.5 58-61.5 15.2 0 28 6.7 36.8 17.1v-15H124V170L94.8 170 94.8 170zM266 143.6c-10.2 0-13.1-3.8-13.1-13.8V77.1h18.8V51.2h-18.8v-29H223v29h-38.6V39.4c0-10 3.8-13.8 14.3-13.8h6.6v-23h-14.4c-24.7 0-36.4 8.1-36.4 32.8v15.9h-16.6v25.8h16.6V170h29.9V77.1H223v58.2c0 24.2 9.3 34.7 33.5 34.7h15.4v-26.4L266 143.6 266 143.6zM373.4 99.9c-2.1-15.4-14.7-24.7-29.5-24.7-14.7 0-26.9 9-29.9 24.7H373.4zM313.7 118.4c2.1 17.6 14.7 27.6 30.7 27.6 12.6 0 22.3-5.9 28-15.4h30.7c-7.1 25.2-29.7 41.3-59.4 41.3-35.9 0-61.1-25.2-61.1-61.1S309.2 49 344.4 49c35.4 0 61.1 26.1 61.1 61.8 0 2.6-.2 5.2-.7 7.6H313.7zM595.9 110.6c0-19.2-14.5-34-32.3-34-17.8 0-32.3 14.3-32.3 34 0 19.5 14.5 34 32.3 34C581.4 144.6 595.9 129.9 595.9 110.6M501.8 218.5V51.2H531v15.4c8.8-10.9 21.9-17.6 37.5-17.6 32.1 0 57.3 26.4 57.3 61.3s-25.7 61.5-58 61.5c-15 0-27.3-5.9-35.9-15.9v62.5h-30.1V218.5zM731.1 110.6c0-20-14.5-34-32.3-34s-32.3 14.3-32.3 34c0 19.5 14.5 34 32.3 34S731.1 130.6 731.1 110.6M731.4 170v-15.4c-8.8 10.7-21.9 17.3-37.5 17.3-32.6 0-57.3-26.1-57.3-61.3 0-34.9 25.7-61.5 58-61.5 15.2 0 28 6.7 36.8 17.1v-15h29.2V170L731.4 170 731.4 170zM449.1 62.8c0 0 7.4-13.8 25.7-13.8 7.8 0 12.8 2.7 12.8 2.7V82c0 0-11-6.8-21.1-5.4S450 87.2 450 99.6v70.3h-30.2V51.2H449L449.1 62.8 449.1 62.8z\\\" /></symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    AccordionButton as ChakraAccordionButton,\n    Text,\n    useStyleConfig,\n    useAccordionItemState\n} from '@chakra-ui/react'\nimport {PlusIcon, MinusIcon} from 'pandora-shared-app/overrides/app/components/icons-temp'\nimport {\n    durationQuick2,\n    easeStandardDecelerate,\n    delayNone\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {MotionBox} from 'pandora-shared-app/overrides/app/components/motion'\n\nconst accordionButtonTextStyle = {base: 'label'}\n\nconst motionProps = {\n    initial: 'rest',\n    exit: 'rest',\n    variants: {\n        hover: {x: -4},\n        rest: {x: 0}\n    },\n    transition: {\n        ease: easeStandardDecelerate,\n        duration: durationQuick2,\n        delay: delayNone\n    }\n}\n\nexport const AccordionButton = ({children, subline, as, ...props}) => {\n    const styles = useStyleConfig('AccordionButton')\n    const {isOpen} = useAccordionItemState()\n    const [isHovered, setIsHovered] = useState(false)\n\n    const hasHoverSupport =\n        typeof window !== 'undefined' && window.matchMedia('(hover: hover)').matches\n\n    return (\n        <ChakraAccordionButton\n            sx={styles}\n            {...props}\n            onMouseEnter={() => hasHoverSupport && setIsHovered(true)}\n            onMouseLeave={() => hasHoverSupport && setIsHovered(false)}\n        >\n            <div>\n                <Text as={as} sx={styles.label} textStyle={accordionButtonTextStyle}>\n                    {children}\n                </Text>\n                {subline && (\n                    <Text sx={styles.subline} textStyle=\"caption\">\n                        {subline}\n                    </Text>\n                )}\n            </div>\n\n            <MotionBox\n                data-testid=\"icon-motion\"\n                className=\"icon-motion\"\n                {...motionProps}\n                animate={hasHoverSupport && isHovered ? 'hover' : 'rest'}\n            >\n                {isOpen ? (\n                    <MinusIcon\n                        boxSize={3}\n                        color=\"black1\"\n                        data-testid=\"minus-icon\"\n                        aria-label=\"Collapse section\"\n                        role=\"img\"\n                    />\n                ) : (\n                    <PlusIcon\n                        boxSize={3}\n                        color=\"black1\"\n                        data-testid=\"plus-icon\"\n                        aria-label=\"Expand section\"\n                        role=\"img\"\n                    />\n                )}\n            </MotionBox>\n        </ChakraAccordionButton>\n    )\n}\n\nAccordionButton.displayName = 'AccordionButton'\nAccordionButton.propTypes = {\n    children: PropTypes.node.isRequired,\n    subline: PropTypes.string,\n    as: PropTypes.elementType\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {AccordionItem as ChakraAccordionItem, useMultiStyleConfig} from '@chakra-ui/react'\n\nexport const AccordionItem = ({children, ...restProps}) => {\n    const styles = useMultiStyleConfig('AccordionItem')\n\n    return (\n        <ChakraAccordionItem sx={{...styles}} {...restProps}>\n            {children}\n        </ChakraAccordionItem>\n    )\n}\n\nAccordionItem.displayName = 'AccordionItem'\nAccordionItem.propTypes = {\n    children: PropTypes.node.isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    AccordionPanel as ChakraAccordionPanel,\n    useStyleConfig,\n    Text,\n    useAccordionItemState\n} from '@chakra-ui/react'\nimport {\n    durationQuick2,\n    durationStandard1,\n    delayQuick1,\n    delayNone,\n    easeStandard,\n    easeStandardDecelerate\n} from 'pandora-shared-app/overrides/app/utils/motion'\nimport {MotionBox} from 'pandora-shared-app/overrides/app/components/motion'\n\nconst motionProps = {\n    initial: 'exit',\n    exit: 'exit',\n    variants: {\n        enter: {opacity: 1, y: 0},\n        exit: {opacity: 0, y: -10}\n    },\n    transition: {\n        opacity: {\n            ease: easeStandard,\n            duration: durationQuick2,\n            delay: delayNone\n        },\n        y: {\n            ease: easeStandardDecelerate,\n            duration: durationStandard1,\n            delay: delayQuick1\n        }\n    }\n}\n\nexport const AccordionPanel = ({children, ...restProps}) => {\n    const styles = useStyleConfig('AccordionPanel')\n    const {isOpen} = useAccordionItemState()\n\n    return (\n        <ChakraAccordionPanel sx={styles} {...restProps}>\n            <MotionBox {...motionProps} animate={isOpen ? 'enter' : 'exit'}>\n                {typeof children === 'string' || typeof children === 'number' ? (\n                    <Text sx={styles.text} textStyle=\"bodySm\" as=\"p\">\n                        {children}\n                    </Text>\n                ) : (\n                    children\n                )}\n            </MotionBox>\n        </ChakraAccordionPanel>\n    )\n}\n\nAccordionPanel.displayName = 'AccordionPanel'\nAccordionPanel.propTypes = {\n    children: PropTypes.node.isRequired\n}\n","import React from 'react'\nimport {useStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {Box} from '@chakra-ui/react'\n\nexport const LoadingDots = () => {\n    const styles = useStyleConfig('LoadingDots')\n    return (\n        <Box color=\"black3b\" as=\"span\" sx={styles} data-testid=\"loading-dots\">\n            ...\n        </Box>\n    )\n}\n","export const getLoadingVariant = (isLoading, variant) => {\n    if (isLoading && ['emphasized', 'outline'].includes(variant)) {\n        return `${variant}-loading`\n    }\n    return variant\n}\n","import {Button as ChakraButton, Box} from '@chakra-ui/react'\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport {useLoadingAnimation} from './hooks/use-loading-animation'\nimport {useHoverAnimation} from './hooks/use-hover-animation'\nimport {getLoadingVariant} from './button-utils/utils'\n\nexport const Button = ({\n    children,\n    isLoading = false,\n    variant = 'emphasized',\n    colorScheme = 'dark',\n    width = 'auto',\n    maxWidth = '35ch',\n    ...rest\n}) => {\n    const {\n        buttonRef,\n        handleAnimationEnd,\n        effectiveIsLoading,\n        outlineBorderLoadingAnimation,\n        buttonContentLoadingAnimation,\n        minW,\n        buttonContent\n    } = useLoadingAnimation({isLoading, variant, width, children})\n\n    const {handleMouseLeave, handleMouseEnter} = useHoverAnimation()\n\n    const maxW = width === 'auto' ? maxWidth : '100%'\n    const dynamicWhiteSpace = width === 'auto' ? 'normal' : 'nowrap'\n\n    return (\n        <ChakraButton\n            ref={buttonRef}\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n            variant={getLoadingVariant(effectiveIsLoading, variant)}\n            colorScheme={colorScheme}\n            animation={outlineBorderLoadingAnimation}\n            width={width}\n            maxW={maxW}\n            minW={minW}\n            {...rest}\n        >\n            <Box\n                as=\"span\"\n                opacity=\"1\"\n                animation={buttonContentLoadingAnimation}\n                overflow=\"hidden\"\n                whiteSpace={dynamicWhiteSpace}\n                textOverflow=\"clip\"\n                onAnimationEnd={handleAnimationEnd}\n            >\n                {buttonContent}\n            </Box>\n        </ChakraButton>\n    )\n}\n\nButton.propTypes = {\n    children: PropTypes.node,\n    isLoading: PropTypes.bool,\n    variant: PropTypes.oneOf([\n        'primary',\n        'outline',\n        'emphasized',\n        'emphasized-loading',\n        'outline-loading',\n        'action',\n        'buy',\n        'link'\n    ]),\n    colorScheme: PropTypes.string,\n    width: PropTypes.string,\n    maxWidth: PropTypes.string\n}\n","import React, {useState, useRef, useEffect, useMemo} from 'react'\nimport {borderPulse, opacityPulse, fadeOut} from '../../../../../utils/animations'\nimport {durationExtended2, timingStandard} from '../../../../../utils/motion'\nimport {LoadingDots} from '../partials/loading-dots'\n\nconst getLoadingAnimation = (variant, isLoading) => {\n    const animations = {\n        emphasized: isLoading\n            ? `${opacityPulse} ${durationExtended2}s ${timingStandard} infinite`\n            : 'none',\n        outline: isLoading ? `${fadeOut} 0.5s forwards` : 'none',\n        default: 'none'\n    }\n    return animations[variant] || animations.default\n}\n\n/**\n * Custom hook to manage loading animations for the Button component.\n *\n * @param {boolean} isLoading - Indicates if the button is in a loading state.\n * @param {string} variant - The variant of the button ('emphasized', 'outline', etc.).\n * @param {string} width - The width of the button ('auto', 'fixed', etc.).\n * @param {React.ReactNode} children - The content inside the button.\n *\n * @returns {Object} - An object containing refs and animation states.\n * @property {React.RefObject} buttonRef - Ref to the button element.\n * @property {Function} handleAnimationEnd - Handler for animation end events.\n * @property {boolean} effectiveIsLoading - Effective loading state considering the variant.\n * @property {string} outlineBorderLoadingAnimation - Animation for the outline border.\n * @property {string} buttonContentLoadingAnimation - Animation for the button content.\n * @property {string} minW - Minimum width of the button.\n * @property {React.ReactNode} buttonContent - Content to be rendered inside the button.\n */\nexport const useLoadingAnimation = ({isLoading, variant, width, children}) => {\n    const [minWidth, setMinWidth] = useState(null)\n    const [showLoadingDots, setShowLoadingDots] = useState(false)\n\n    const buttonRef = useRef(null)\n\n    // If the button is in a loading state and the variant is 'outline', we want to show the loading dots after the initial children fade out.\n    const handleAnimationEnd = () => {\n        if (isLoading && variant === 'outline') {\n            setShowLoadingDots(true)\n        }\n    }\n\n    // If the button is in a loading state and the width is set to 'auto', we want to set a min-width to preserve the button's width when children change.\n    useEffect(() => {\n        if (variant === 'outline' && width === 'auto' && buttonRef.current && !isLoading) {\n            setMinWidth(buttonRef.current.offsetWidth)\n        }\n    }, [children])\n\n    // If the button is in a loading state and the variant is 'outline', we want to hide the loading dots when the loading state changes.\n    useEffect(() => {\n        if (variant === 'outline' && !isLoading) {\n            setShowLoadingDots(false)\n        }\n    }, [isLoading])\n\n    const isBuyOrAction = variant.includes('buy') || variant === 'action'\n    const effectiveIsLoading = isBuyOrAction ? false : isLoading\n\n    const outlineBorderLoadingAnimation = useMemo(\n        () =>\n            isLoading && variant === 'outline'\n                ? `${borderPulse} 1.5s ${timingStandard} infinite`\n                : 'none',\n        [isLoading, variant]\n    )\n\n    const buttonContentLoadingAnimation = useMemo(\n        () => getLoadingAnimation(variant, isLoading && !showLoadingDots),\n        [variant, isLoading, showLoadingDots]\n    )\n\n    // minW is set to preserve the button's width when children change. (Only for outline buttons with 'auto' width => when initial children change to loading dots)\n    const minW = width === 'auto' && isLoading ? `${minWidth}px` : '40px'\n\n    const buttonContent = showLoadingDots ? <LoadingDots /> : children\n\n    return {\n        buttonRef,\n        handleAnimationEnd,\n        effectiveIsLoading,\n        outlineBorderLoadingAnimation,\n        buttonContentLoadingAnimation,\n        minW,\n        buttonContent\n    }\n}\n","import {useState} from 'react'\n\n/**\n * Custom hook to manage hover animation state for outline button variant.\n *\n * @returns {{animateOnHoverExit: boolean, handleMouseLeave: function, handleMouseEnter: function}} Object containing the animation state and event handlers.\n */\nexport const useHoverAnimation = () => {\n    const [animateOnHoverExit, setAnimateOnHoverExit] = useState(false)\n\n    const handleMouseLeave = () => {\n        setAnimateOnHoverExit(true)\n    }\n\n    const handleMouseEnter = () => {\n        setAnimateOnHoverExit(false)\n    }\n\n    return {\n        animateOnHoverExit,\n        handleMouseLeave,\n        handleMouseEnter\n    }\n}\n","import {DrawerContent as ChakraDrawerContent, useDrawerContext} from '@chakra-ui/react'\nimport React, {forwardRef, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    durationStandard2,\n    durationStandard1,\n    easeStandardAccelerate,\n    easeStandardDecelerate,\n    delayNone\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\nconst enterTransition = {\n    duration: durationStandard2,\n    ease: easeStandardDecelerate,\n    delay: delayNone\n}\n\nconst enterTransitionFast = {\n    duration: durationStandard1,\n    ease: easeStandardDecelerate,\n    delay: delayNone\n}\n\nconst exitTransition = {\n    duration: durationStandard2,\n    ease: easeStandardAccelerate,\n    delay: delayNone\n}\n\nconst exitTransitionFast = {\n    duration: durationStandard1,\n    ease: easeStandardAccelerate,\n    delay: delayNone\n}\n\nconst defaultMotionProps = {\n    right: {\n        variants: {\n            enter: {x: '0%', transition: enterTransition},\n            exit: {x: '100%', transition: exitTransition}\n        }\n    },\n    left: {\n        variants: {\n            enter: {x: '0%', transition: enterTransition},\n            exit: {x: '-100%', transition: exitTransition}\n        }\n    },\n    bottom: {\n        variants: {\n            enter: {y: '0%', transition: enterTransition},\n            exit: {y: '100%', transition: exitTransition}\n        }\n    },\n    top: {\n        variants: {\n            enter: {y: '0%', transition: enterTransitionFast},\n            exit: {y: '-100%', transition: exitTransitionFast}\n        }\n    }\n}\n\n/**\n * DrawerContent Component\n *\n * A wrapper for the `ChakraDrawerContent` component, providing motion animations based on the placement.\n * * Supports custom \"enter\" and \"exit\" animations using Framer Motion.\n *\n * ### Why use `shouldAnimateExit`?\n * The `DrawerContent` uses a portal to render its modal content. When `onClose()` is triggered,\n * the component unmounts immediately, potentially causing the exit animation to be skipped.\n *\n * Setting `shouldAnimateExit` to `true` ensures the exit animation completes before the component unmounts.\n * This is achieved by delaying the call to `onClose()` using `setTimeout`.\n *\n * @param {boolean} shouldAnimateExit - If true, enables the exit animation and delays `onClose`.\n */\nexport const DrawerContent = forwardRef(({children, shouldAnimateExit, ...restProps}, ref) => {\n    const {placement} = useDrawerContext()\n\n    const motionProps = useMemo(() => {\n        const baseMotionProps = defaultMotionProps[placement]\n\n        return baseMotionProps\n            ? {...baseMotionProps, animate: shouldAnimateExit ? 'exit' : 'enter'}\n            : undefined\n    }, [placement, shouldAnimateExit])\n\n    return (\n        <ChakraDrawerContent ref={ref} motionProps={motionProps} {...restProps}>\n            {children}\n        </ChakraDrawerContent>\n    )\n})\n\nDrawerContent.displayName = 'DrawerContent'\nDrawerContent.propTypes = {\n    ...ChakraDrawerContent.propTypes,\n    shouldAnimateExit: PropTypes.bool.isRequired\n}\n","import {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {CUSTOM_SELECTED_STORE, INVENTORY_ITEMS, STORE_ORDERABLE} from './cnc-constants'\n\n// Parses the custom-selected-store cookie (\"storeId_storeName\", URL-encoded).\n// Splits on the first underscore so store names with underscores are preserved.\nexport const parseCookieStore = (cookieValue) => {\n    if (!cookieValue) return null\n    try {\n        const decoded = decodeURIComponent(cookieValue)\n        const underscoreIndex = decoded.indexOf('_')\n        if (underscoreIndex === -1) return null\n        return {\n            storeId: decoded.slice(0, underscoreIndex),\n            storeName: decoded.slice(underscoreIndex + 1)\n        }\n    } catch {\n        return null\n    }\n}\n\nexport const getStoreStatusClassNames = (store) => {\n    if (!store) return 'not-available'\n    const classes = []\n\n    if (store?.lowStock) {\n        classes.push('low')\n    } else if (store?.inStockFlag) {\n        classes.push('available')\n    } else if (store?.notEligible || store?.noInventory) {\n        classes.push('unavailable')\n    } else {\n        classes.push('not-available')\n    }\n\n    return classes.join(' ')\n}\n\nexport const getFavoriteStore = () => {\n    if (isServer) {\n        return {favStoreId: null, storeInventoryId: null, store: null}\n    }\n\n    const storeDetails = window.localStorage.getItem(CUSTOM_SELECTED_STORE)\n\n    if (!storeDetails) {\n        return {favStoreId: null, storeInventoryId: null, store: null}\n    }\n\n    try {\n        const parsed = JSON.parse(storeDetails)\n        const {id: favStoreId = null, inventoryListId: storeInventoryId = null} = parsed || {}\n\n        return {\n            favStoreId,\n            storeInventoryId,\n            store: parsed\n        }\n    } catch (error) {\n        console.error(\n            `Failed to parse store info from localStorage key \"${CUSTOM_SELECTED_STORE}\":`,\n            error\n        )\n        return {favStoreId: null, storeInventoryId: null, store: null}\n    }\n}\n\nexport const setFavoriteStore = (store) => {\n    if (isServer) return\n\n    try {\n        const serialized = JSON.stringify(store)\n        window.localStorage.setItem(CUSTOM_SELECTED_STORE, serialized)\n    } catch (error) {\n        console.error(\n            `Failed to store store info to localStorage key \"${CUSTOM_SELECTED_STORE}\":`,\n            error\n        )\n    }\n}\n\nexport const clearFavoriteStore = () => {\n    if (isServer) return\n\n    try {\n        window.localStorage.removeItem(CUSTOM_SELECTED_STORE)\n    } catch (error) {\n        console.error(\n            `Failed to remove store info from localStorage key \"${CUSTOM_SELECTED_STORE}\":`,\n            error\n        )\n    }\n}\n\nexport const isFavStoreOrderable = (defaultValue = null) => {\n    if (isServer) return defaultValue\n\n    try {\n        const stored = window.localStorage.getItem(STORE_ORDERABLE)\n        const parsedStored = stored ? JSON.parse(stored) : defaultValue\n        const {store} = getFavoriteStore()\n        return parsedStored === null ? store?.hasStock : parsedStored\n    } catch {\n        return defaultValue\n    }\n}\n\nexport const getInventoryFromSession = (fallback = []) => {\n    if (isServer) return fallback\n\n    try {\n        const item = window.localStorage.getItem(INVENTORY_ITEMS)\n        return item ? JSON.parse(item) : fallback\n    } catch {\n        return fallback\n    }\n}\n\nexport const getStoreInvQuantity = (defaultValue = 0) => {\n    if (isServer) return defaultValue\n\n    try {\n        const item = window.localStorage.getItem(INVENTORY_ITEMS)\n        if (item) {\n            const parsed = JSON.parse(item)\n            return parsed?.[0]?.stockLevel ?? defaultValue\n        }\n\n        const store = window.localStorage.getItem(CUSTOM_SELECTED_STORE)\n        if (store) {\n            const stored = JSON.parse(store)\n            return stored?.availableToSell ?? defaultValue\n        }\n\n        return defaultValue\n    } catch {\n        return defaultValue\n    }\n}\n","import React from 'react'\nimport {Box} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport PropTypes from 'prop-types'\nimport {ChevronDownIcon, InfoIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {SizeSelectorStyles} from '../size-selector.styles'\nimport {CheckIcon} from 'pandora-shared-app/overrides/app/components/icons'\nimport {\n    Text,\n    Menu,\n    MenuButton,\n    MenuList,\n    MenuItem,\n    MenuChakraButton\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nexport const RegionalSize = ({\n    selectedRegionalSize,\n    handleChangeRegionalSize,\n    handleChangeSelectedTypeSize,\n    selectedSizeType,\n    sizeOptions,\n    regionalSizeOptions,\n    sizeTip\n}) => {\n    const sizeOptionsHeader = sizeOptions?.length ? (\n        <Text {...SizeSelectorStyles.sizeOptionsHeader}>{sizeOptions[0].label}</Text>\n    ) : null\n\n    const regionalSizeHeader = regionalSizeOptions?.length ? (\n        <Text {...SizeSelectorStyles.sizeOptionsHeader}>{regionalSizeOptions[0].label}</Text>\n    ) : null\n\n    return (\n        <Box>\n            <Box {...SizeSelectorStyles.regionalSizeBox}>\n                {regionalSizeOptions?.length > 1 ? (\n                    <Menu>\n                        <MenuButton\n                            as={MenuChakraButton}\n                            data-testid=\"regional-size-button\"\n                            {...SizeSelectorStyles.regionalMenuButton}\n                        >\n                            {selectedRegionalSize?.label ?? ''}\n                            <ChevronDownIcon boxSize={3} mb={1} />\n                        </MenuButton>\n                        <MenuList {...SizeSelectorStyles.regionalMenuList}>\n                            {regionalSizeOptions.map((option) => (\n                                <MenuItem\n                                    key={option.key}\n                                    onClick={() => handleChangeRegionalSize(option)}\n                                    color={\n                                        selectedRegionalSize?.key === option.key\n                                            ? 'black'\n                                            : 'black3a'\n                                    }\n                                    data-testid={`regional-option-${option.key}`}\n                                    {...SizeSelectorStyles.regionalMenuItem}\n                                >\n                                    <Text>{option.label}</Text>\n                                    {selectedRegionalSize?.key === option.key && (\n                                        <CheckIcon boxSize=\"3\" data-testid=\"check-icon\" />\n                                    )}\n                                </MenuItem>\n                            ))}\n                        </MenuList>\n                    </Menu>\n                ) : (\n                    regionalSizeHeader\n                )}\n\n                {sizeOptions?.length > 1 ? (\n                    <Menu>\n                        <MenuButton\n                            as={MenuChakraButton}\n                            data-testid=\"size-type-button\"\n                            {...SizeSelectorStyles.sizeOptionsMenuButton}\n                        >\n                            {selectedSizeType.label}\n                            <ChevronDownIcon boxSize={3} mb={1} />\n                        </MenuButton>\n                        <MenuList {...SizeSelectorStyles.regionalMenuList}>\n                            {sizeOptions.map((option) => (\n                                <MenuItem\n                                    key={option.key}\n                                    onClick={() => handleChangeSelectedTypeSize(option)}\n                                    color={\n                                        selectedSizeType.key === option.key ? 'black' : 'black3a'\n                                    }\n                                    data-testid={`size-option-${option.key}`}\n                                    {...SizeSelectorStyles.regionalMenuItem}\n                                >\n                                    <Text>{option.label}</Text>\n                                    {selectedSizeType.key === option.key && (\n                                        <CheckIcon boxSize=\"3\" data-testid=\"check-icon\" />\n                                    )}\n                                </MenuItem>\n                            ))}\n                        </MenuList>\n                    </Menu>\n                ) : (\n                    sizeOptionsHeader\n                )}\n            </Box>\n            {sizeTip && (\n                <Box {...SizeSelectorStyles.sizeTipBox}>\n                    <InfoIcon {...SizeSelectorStyles.infoIcon} />\n                    <Text textStyle=\"caption\">{sizeTip}</Text>\n                </Box>\n            )}\n        </Box>\n    )\n}\n\nRegionalSize.propTypes = {\n    selectedRegionalSize: PropTypes.shape({\n        key: PropTypes.string,\n        label: PropTypes.string\n    }),\n    handleChangeRegionalSize: PropTypes.func.isRequired,\n    handleChangeSelectedTypeSize: PropTypes.func.isRequired,\n    selectedSizeType: PropTypes.shape({\n        key: PropTypes.string,\n        label: PropTypes.string\n    }),\n    regionalSizeOptions: PropTypes.arrayOf(\n        PropTypes.shape({\n            key: PropTypes.string,\n            label: PropTypes.string\n        })\n    ),\n    sizeOptions: PropTypes.arrayOf(\n        PropTypes.shape({\n            key: PropTypes.string,\n            label: PropTypes.string\n        })\n    ),\n    sizeTip: PropTypes.string\n}\n","export const SIZES = {\n    SMALL: 'small',\n    LARGE: 'large'\n}\n\nexport const VARIANTS = {\n    UNDERLINE: 'underline',\n    INLINE: 'inline',\n    NONE: 'none'\n}\n\nexport const DIRECTIONS = {\n    LEFT: 'left',\n    CENTER: 'center'\n}\n\nexport const COLOR_SCHEMES = {\n    LIGHT: 'light',\n    DARK: 'dark',\n    COLOR: 'color'\n}\n\nexport const COLORS = {\n    PRIMARY: 'primary',\n    SECONDARY: 'secondary'\n}\n","import React, {useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Box,\n    Flex,\n    Heading,\n    SimpleGrid,\n    HStack,\n    useMultiStyleConfig\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {IconButton} from '@chakra-ui/react'\nimport {ChevronLeftIcon, ChevronRightIcon} from 'pandora-shared-app/overrides/app/components/icons'\n\nexport const Slider = (props) => {\n    const {title, children} = props\n\n    const sliderRef = useRef(null)\n    const styles = useMultiStyleConfig('Slider')\n\n    const scroll = (direction) => {\n        if (sliderRef.current) {\n            sliderRef.current.scrollBy({\n                left: direction * sliderRef.current.offsetWidth,\n                behavior: 'smooth'\n            })\n        }\n    }\n\n    const handleTouchStart = (e) => {\n        const touch = e.touches[0]\n        sliderRef.current.startX = touch.clientX\n    }\n\n    const handleTouchMove = (e) => {\n        if (!sliderRef.current.startX) return\n        const touch = e.touches[0]\n        const deltaX = touch.clientX - sliderRef.current.startX\n        if (Math.abs(deltaX) > 50) {\n            scroll(deltaX > 0 ? -1 : 1)\n            sliderRef.current.startX = null // Reset to prevent multiple scrolls\n        }\n    }\n\n    return (\n        <Box sx={styles.container}>\n            <Flex {...styles.header}>\n                <Heading {...styles.title}>{title}</Heading>\n                <HStack spacing={2} {...styles.sliderButton}>\n                    {/* Left Chevron */}\n                    <IconButton\n                        icon={<ChevronLeftIcon />}\n                        onClick={() => scroll(-1)}\n                        aria-label=\"Scroll left\"\n                        data-auto=\"btnLeftScroll\"\n                        variant=\"plain\"\n                        {...styles.button}\n                    />\n                    {/* Right Chevron */}\n                    <IconButton\n                        icon={<ChevronRightIcon />}\n                        onClick={() => scroll(1)}\n                        aria-label=\"Scroll right\"\n                        data-auto=\"btnRightScroll\"\n                        variant=\"plain\"\n                        {...styles.button}\n                    />\n                </HStack>\n            </Flex>\n            <Box\n                ref={sliderRef}\n                data-testid=\"slider-container\"\n                data-auto=\"divReczoneSlider\"\n                onTouchStart={handleTouchStart}\n                onTouchMove={handleTouchMove}\n                {...styles.sliderContainer}\n            >\n                <SimpleGrid columns={styles.gridColumns} {...styles.sliderGrid}>\n                    {children}\n                </SimpleGrid>\n            </Box>\n        </Box>\n    )\n}\n\nSlider.propTypes = {\n    title: PropTypes.string,\n    children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n","import React, {useCallback, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport useEinstein from 'pandora-shared-app/overrides/app/hooks/use-einstein'\nimport {useIntl} from 'react-intl'\nimport {\n    SimpleGrid,\n    Box,\n    Flex,\n    useMultiStyleConfig,\n    Skeleton\n} from '@salesforce/retail-react-app/app/components/shared/ui'\n\nimport {Slider} from 'pandora-shared-app/overrides/app/components/slider'\nimport {ProductListSkeleton} from 'pandora-shared-app/overrides/app/components/product-grid/product-list-skeleton'\nimport {normalizeProductData} from 'pandora-shared-app/overrides/app/utils/normalize-product-data'\nimport {\n    ProductTile,\n    useProductTileFlags\n} from 'pandora-shared-app/overrides/app/components/product-tile'\nimport {useProductCapabilities} from 'pandora-shared-app/overrides/app/hooks/use-product-capabilities'\nimport useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'\nimport {\n    useAddItemToWishlist as useAddItemToWishlistHook,\n    useRemoveItemFromWishlist as useRemoveItemFromWishlistHook\n} from 'pandora-shared-app/overrides/app/hooks/use-wishlist-items'\nimport ErrorBoundary from 'pandora-shared-app/overrides/app/components/error-boundary'\n\nexport const RecommendedProductView = ({recommendedCategory, ...restProps}) => {\n    const {getRecommendations, recommendations, isLoading, sendClickSearch, sendClickCategory} =\n        useEinstein()\n    const {formatMessage} = useIntl()\n    const {\n        site: {\n            einsteinAPI: {recommender}\n        }\n    } = useMultiSite()\n    const {\n        category,\n        onProductClick,\n        wishlist,\n        searchQuery,\n        isOpen,\n        addItemToWishlist: addItemToWishlistProp,\n        removeItemFromWishlist: removeItemFromWishlistProp\n    } = restProps\n\n    const styles = useMultiStyleConfig('Slider')\n\n    // Read all tile flags ONCE per rec zone instead of ~18 reads per tile (FIND-6629)\n    const productTileFlags = useProductTileFlags()\n    // Capability computed ONCE per rec zone instead of 12 flag reads per tile (FIND-6629)\n    const {isBuyFromTileAvailable} = useProductCapabilities()\n\n    const addItemToWishlistHook = useAddItemToWishlistHook()\n    const removeItemFromWishlistHook = useRemoveItemFromWishlistHook()\n    // Use props if provided, otherwise use hooks\n    const addItemToWishlist = addItemToWishlistProp || addItemToWishlistHook\n    const removeItemFromWishlist = removeItemFromWishlistProp || removeItemFromWishlistHook\n\n    useEffect(() => {\n        if (recommender) {\n            getRecommendations(recommender, null, false, {categories: [{id: recommendedCategory}]})\n        }\n    }, [recommender])\n\n    const updatedRecommendation = normalizeProductData(\n        recommendations?.recs,\n        productTileFlags.enableGlobalExcludeSetsFromWishlist\n    )\n\n    const handleProductClick = useCallback(\n        (product) => {\n            onProductClick?.(product, searchQuery)\n            if (searchQuery) {\n                sendClickSearch(searchQuery, product)\n            } else if (category) {\n                sendClickCategory(category, product)\n            }\n        },\n        [onProductClick, searchQuery, category, sendClickSearch, sendClickCategory]\n    )\n\n    const handleFavouriteToggle = useCallback(\n        (productId, isFavourite, product) => {\n            const action = isFavourite ? addItemToWishlist : removeItemFromWishlist\n            return action(productId, product)\n        },\n        [addItemToWishlist, removeItemFromWishlist]\n    )\n\n    if (!isOpen && isLoading) {\n        return (\n            <Box {...styles.container} data-testid=\"skeleton-loader\">\n                <Flex {...styles.header}>\n                    <Skeleton flex=\"1\" height=\"5\" variant=\"pulse\" />\n                </Flex>\n                <SimpleGrid columns={styles.gridColumns} {...styles.sliderGrid}>\n                    <ProductListSkeleton limit={5} />\n                </SimpleGrid>\n            </Box>\n        )\n    }\n\n    if (\n        !recommendations ||\n        recommendations.length === 0 ||\n        !updatedRecommendation ||\n        updatedRecommendation.length === 0\n    )\n        return null\n\n    return (\n        <Slider\n            title={formatMessage({\n                id: 'recommendation_slider.heading',\n                defaultMessage: 'You May Also Like'\n            })}\n        >\n            {updatedRecommendation?.map((product, index) => (\n                <Box\n                    key={product.id}\n                    {...styles.productContainer}\n                    data-auto=\"divPlpReczoneProducts\"\n                >\n                    <ErrorBoundary>\n                        <ProductTile\n                            flags={productTileFlags}\n                            data-testid={`sf-product-tile-${product.id}`}\n                            product={product}\n                            index={index}\n                            wishlist={wishlist}\n                            enableFavourite\n                            onClick={handleProductClick}\n                            onFavouriteToggle={handleFavouriteToggle}\n                            section=\"divPlpReczoneProducts\"\n                            isBuyFromTileAvailable={isBuyFromTileAvailable}\n                        />\n                    </ErrorBoundary>\n                </Box>\n            ))}\n        </Slider>\n    )\n}\n\nRecommendedProductView.propTypes = {\n    recommendedCategory: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n    category: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n    onProductClick: PropTypes.func,\n    wishlist: PropTypes.object,\n    searchQuery: PropTypes.string,\n    isOpen: PropTypes.bool,\n    addItemToWishlist: PropTypes.func,\n    removeItemFromWishlist: PropTypes.func\n}\n\nexport default RecommendedProductView\n","import {setExclusionTileFields} from './product-type-utils'\n\n/**\n * Normalizes an array of Einstein product data to a consistent product format.\n * @param {Array} products - The products data array.\n * @param {boolean} [excludeSetsFromWishlist=false] - Kill switch for FIND-5111. While enabled the\n *   raw product type is carried through so tiles can recognise Sets, which `hitType` cannot\n *   express here; while off the output is unchanged.\n * @returns {Array} Normalized products.\n */\nexport const normalizeProductData = (products = [], excludeSetsFromWishlist = false) => {\n    if (!products.length) return []\n\n    const getSalePrice = (price, productPromotions = []) =>\n        productPromotions.find((promo) => promo.promotionalPrice)?.promotionalPrice ?? price\n\n    const findPrimaryImage = (imageGroups = []) =>\n        imageGroups.find((group) => group.viewType === 'main_rect_base')?.images?.[0] ?? null\n\n    const createCustomFields = (product) => ({\n        metalName: product.c_metalName ?? '',\n        metalGroup: product.c_metalGroup ?? '',\n        category: product.c_primaryCategory ?? '',\n        size: product.variants?.[0]?.variationValues?.size ?? null,\n        discount: 0\n    })\n\n    return products\n        .filter((item) => item.price)\n        .map((product) => ({\n            currency: product.currency,\n            hitType: product.type.master ? 'master' : '',\n            ...setExclusionTileFields(product.type, excludeSetsFromWishlist),\n            productId: product.id,\n            productName: product.name,\n            c_extend: {\n                custom: createCustomFields(product),\n                recommendation: {},\n                isLowInventory: false,\n                isNew: false,\n                isEngravable: false,\n                variants: [],\n                productUrl: product.slugUrl,\n                inventory: product.inventory ?? {},\n                lastLowestPrice: product.c_extend?.priceInfo?.lastLowestPrice\n            },\n            representedProduct: {\n                id: product.variants?.[0]?.productId ?? null\n            },\n            price: product.price,\n            salePrice: getSalePrice(product.price, product.productPromotions),\n            pricePerUnit: product.pricePerUnit,\n            orderable: product.orderable,\n            primaryImage: findPrimaryImage(product.imageGroups)\n        }))\n}\n","import SpriteSymbol from \"../../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora_x_patMcGrath_black\",\n  \"use\": \"pandora_x_patMcGrath_black-usage\",\n  \"viewBox\": \"0 0 584.97 54.43\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 584.97 54.43\\\" id=\\\"pandora_x_patMcGrath_black\\\">\\n  <g>\\n    <g>\\n      <path d=\\\"M6.62,34.63h7.63c2.16,0,3.52-.3,4.72-1.03,1.84-1.1,2.94-3.19,2.94-5.57s-1.1-4.47-2.94-5.58c-1.2-.73-2.57-1.03-4.72-1.03h-7.63v13.21ZM0,53.54V15.24h14.47c2.58,0,4.92.41,6.78,1.2,4.62,2.07,7.5,6.51,7.5,11.58s-2.87,9.51-7.5,11.58c-1.85.78-4.19,1.2-6.77,1.2h-7.85v12.74H0Z\\\" />\\n      <path d=\\\"M41.46,32.7l-2.61,6.91h12.65l-2.61-6.91c-1.42-3.78-3.64-9.53-3.64-9.53h-.13s-2.22,5.75-3.65,9.53M56.8,53.54l-2.94-7.75h-17.39l-2.94,7.75h-7.13l15.37-38.3h6.99l15.37,38.3h-7.35Z\\\" />\\n    </g>\\n    <polygon points=\\\"96.25 53.54 81.59 33.64 75.9 26 75.9 36.22 75.9 53.54 69.28 53.54 69.28 15.24 75.96 15.24 90.62 35.14 96.31 42.78 96.31 32.56 96.31 15.24 102.93 15.24 102.93 53.54 96.25 53.54\\\" />\\n    <g>\\n      <path d=\\\"M117.77,47.26h5.78c4.26,0,7.44-.76,9.72-2.31,3.31-2.24,5.14-6.09,5.03-10.56.11-4.46-1.73-8.31-5.03-10.55-2.28-1.56-5.46-2.31-9.72-2.31h-5.78v25.73ZM111.15,53.54V15.24h12.67c5.81,0,10.72,1.38,14.2,4,4.65,3.42,7.22,8.8,7.22,15.15s-2.56,11.73-7.21,15.15c-3.49,2.62-8.4,4-14.21,4h-12.67Z\\\" />\\n      <path d=\\\"M170.01,20.64c-7.74,0-13.37,5.78-13.37,13.75s5.62,13.75,13.37,13.75,13.36-5.78,13.36-13.75-5.62-13.75-13.36-13.75M170.01,54.43c-11.58,0-20.31-8.61-20.31-20.04s8.73-20.04,20.31-20.04,20.31,8.61,20.31,20.04-8.73,20.04-20.31,20.04\\\" />\\n      <path d=\\\"M202.72,34.63h8.51c2.15,0,3.52-.3,4.72-1.03,1.84-1.1,2.94-3.19,2.94-5.57s-1.1-4.47-2.94-5.58c-1.2-.73-2.56-1.03-4.72-1.03h-8.51v13.21ZM218.91,53.54l-7.31-12.74h-8.87v12.74h-6.62V15.24h15.35c2.58,0,4.93.41,6.78,1.2,4.62,2.07,7.5,6.51,7.5,11.58s-2.66,8.99-7.12,11.14l-.23.11,8.29,14.27h-7.76Z\\\" />\\n      <path d=\\\"M244.33,32.7l-2.61,6.91h12.65l-2.61-6.91c-1.42-3.78-3.64-9.53-3.64-9.53h-.13s-2.22,5.75-3.65,9.53M259.67,53.54l-2.94-7.75h-17.39l-2.94,7.75h-7.13l15.37-38.3h6.99l15.37,38.3h-7.35Z\\\" />\\n      <path d=\\\"M171.38,11.35c0-.78-.66-1.37-1.37-1.37-.78,0-1.43.6-1.43,1.37,0,.83.66,1.43,1.43,1.43.71,0,1.37-.6,1.37-1.43\\\" />\\n    </g>\\n    <polygon points=\\\"169.79 0 168.71 8.41 171.24 8.41 170.23 0 169.79 0\\\" />\\n    <path d=\\\"M175.32,11.35c0-.78-.66-1.37-1.37-1.37-.78,0-1.43.6-1.43,1.37,0,.83.66,1.43,1.43,1.43.71,0,1.37-.6,1.37-1.43\\\" />\\n    <polygon points=\\\"176.68 0 173.06 8.41 175.66 8.41 177.12 0 176.68 0\\\" />\\n    <path d=\\\"M164.63,11.35c0,.83.66,1.43,1.37,1.43.78,0,1.43-.6,1.43-1.43,0-.78-.66-1.37-1.43-1.37-.71,0-1.37.6-1.37,1.37\\\" />\\n    <polygon points=\\\"162.83 0 164.3 8.41 166.9 8.41 163.28 0 162.83 0\\\" />\\n  </g>\\n  <polygon points=\\\"329.25 15.65 314.02 31.23 298.79 15.65 295.66 18.78 310.89 34.36 295.66 49.95 298.79 53.08 314.02 37.49 329.25 53.08 332.38 49.95 317.08 34.36 332.38 18.78 329.25 15.65\\\" />\\n  <g>\\n    <path d=\\\"M394.57,17.79c1.12.6,1.95,1.37,2.47,2.3.26.52.37,1.08.34,1.66-.04.58-.28,1.19-.73,1.83-.82,1.2-1.7,2.28-2.61,3.26-.92.97-1.88,1.89-2.89,2.75l-2.13,1.69c-.3.26-.66.53-1.07.81-.41.28-.77.57-1.07.87-.22-.11-.48-.11-.76,0-.28.11-.59.26-.93.45h.06l-.22.11c-2.1,1.31-4.2,2.52-6.29,3.62-2.1,1.1-4.31,1.96-6.63,2.56-.41.11-.8.3-1.15.56-.36.26-.67.66-.93,1.18l-.39.67.06-.06c-.26.41-.51.83-.73,1.26-.22.43-.47.85-.73,1.26-.26.34-.51.73-.73,1.18-.22.45-.45.88-.67,1.29-.19.34-.37.66-.53.96-.17.3-.37.62-.59.96,0,.04-.04.13-.11.28-.19.3-.34.6-.45.9-.11.3-.17.64-.17,1.01.04.19,0,.42-.14.7-.13.28-.25.57-.37.87,0,.07-.05.17-.14.28-.09.11-.14.21-.14.28l-.45-.28c-.3-.19-.61-.31-.93-.37-.32-.06-.68.16-1.1.65-.37-.15-.59-.39-.65-.73-.06-.34-.05-.67.03-1.01.08-.41.16-.81.25-1.21s.22-.8.37-1.21c.04-.15.07-.28.11-.39.04-.11.09-.24.17-.39l.06-.45c.07-.26.16-.51.25-.73.09-.22.29-.43.59-.62.07-.04.13-.11.17-.22.04-.11.07-.21.11-.28l.79-1.97.84-1.97v.06c.6-.6.88-1.14.84-1.63-.04-.49-.19-.96-.45-1.4l.17-.17c.22-.15.43-.26.62-.34.6-.11,1.12-.51,1.57-1.18.07-.07.15-.19.22-.34.07-.07.15-.18.22-.31.07-.13.15-.23.22-.31.19-.26.37-.56.56-.9.19-.34.26-.69.22-1.07.37-.34.66-.7.87-1.1.21-.39.38-.8.53-1.21.15-.3.29-.59.42-.87.13-.28.33-.55.59-.81.07-.19.17-.37.28-.56.11-.19.24-.37.39-.56.22-.34.44-.67.65-1.01.21-.34.35-.71.42-1.12.07-.15.17-.29.28-.42.11-.13.24-.27.39-.42l.51-.56.62-.84c.11-.19.25-.43.42-.73.17-.3.33-.54.48-.73l-3.2,1.01c-.3.11-.54.11-.73,0-.19-.11-.34-.24-.45-.39-.15-.22-.22-.32-.22-.28-.04-.11-.03-.3.03-.56.06-.26.16-.49.31-.67.34-.41.55-.82.65-1.24.09-.41.12-.82.08-1.24.22-.22.43-.41.62-.56.19-.15.43-.22.73-.22.45,0,.92-.09,1.4-.28h-.06l.34-.11c.3-.07.58-.17.84-.28.15-.07.37-.16.65-.25.28-.09.5-.16.65-.2.52-.15.96-.34,1.32-.56.36-.22.7-.54,1.04-.96.67-1.05,1.57-1.31,2.7-.79.3.15.56.22.79.22.56,0,.94.15,1.12.45.07.15.23.25.48.31.24.06.44.03.59-.08v.06c.37-.22.71-.35,1.01-.37.3-.02.62-.03.96-.03h.45c.34-.04.66-.06.98-.06h.93c.86.08,1.68.22,2.44.45.77.22,1.53.51,2.28.84ZM365.35,47.52l.17-.45c-.15.04-.27.05-.37.03-.09-.02-.22-.05-.37-.08-.04,0-.09,0-.17-.03-.08-.02-.13-.03-.17-.03l-.22.45,1.12.11ZM367.99,41.73c-.11-.15-.25-.16-.42-.03-.17.13-.33.32-.48.56-.15.24-.29.49-.42.73-.13.24-.22.42-.25.53l.22.06,1.35-1.85ZM381.53,22.85l-.17.28s-.03.1-.08.2c-.06.09-.08.16-.08.2-.15.22-.29.47-.42.73-.13.26-.31.49-.53.67-.3.26-.57.51-.81.73-.24.22-.46.47-.65.73l-.84.39.17.73.34-.51c-.15.3-.22.64-.22,1.01-.04.04-.07.06-.08.06-.02,0-.05.04-.08.11l-.22.28-2.53,3.71-.62,1.07-.22.28c-.08.15-.15.3-.22.45-.08.15-.11.36-.11.62,0,.04-.07.13-.2.28-.13.15-.25.3-.37.45l-.9,1.01,1.52-.73c.6-.26,1.14-.51,1.63-.76s.97-.5,1.46-.76c1.09-.64,2.15-1.26,3.2-1.88,1.05-.62,2.08-1.26,3.09-1.94.75-.52,1.54-1.07,2.36-1.63.82-.56,1.78-1.25,2.87-2.08.86-.64,1.65-1.33,2.36-2.08.71-.75,1.29-1.52,1.74-2.3.41-.79.28-1.35-.39-1.69-.41-.22-.87-.34-1.38-.34s-1.02.02-1.54.06c-.15,0-.28,0-.39.03-.11.02-.24.03-.39.03-.34.04-.67.07-1.01.08-.34.02-.69.07-1.07.14l-2.02.39c-.75.11-1.34.29-1.77.53-.43.24-.85.67-1.26,1.26l-.62-.28c-.08,0-.18.05-.31.14-.13.09-.22.18-.25.25l.06-.06c-.04.22-.04.39,0,.51,0,.11.06.19.17.22l.84-.62ZM378.38,23.86c.04-.19.11-.34.22-.45s.22-.22.34-.34c.07-.04.12-.07.14-.08.02-.02.08-.23.2-.65l-1.29,1.24-.67.62.17.11.9-.45ZM378.89,26.33l-.45.67c.04-.15.15-.36.34-.62l.11-.06ZM381.64,22.68h.11l-.22.17c.07-.07.11-.13.11-.17Z\\\" />\\n    <path d=\\\"M409.85,31.22c-.15.11-.3.23-.45.37-.15.13-.24.25-.28.37-.19.49-.47.88-.84,1.18-.37.3-.73.62-1.07.96-.04.15-.08.3-.11.45-.04.15-.09.32-.17.51-.08.41-.24.79-.51,1.12-.15.3-.32.41-.51.34-.19-.07-.36-.07-.51,0-.45.22-.89.46-1.32.7-.43.24-.87.5-1.32.76,0,.11,0,.22.03.34.02.11.03.21.03.28l.96-.51c.3.37.43.62.39.73-.04.11-.3.38-.79.79-.19.08-.31.19-.37.34-.06.15-.12.3-.2.45l.79-.11c-.26.49-.5.97-.7,1.46-.21.49-.46.97-.76,1.46-.3.49-.67.96-1.1,1.43-.43.47-.61.98-.53,1.54-.3.15-.46.29-.48.42-.02.13.05.27.2.42.07.04.07.12-.03.25-.09.13-.16.23-.2.31-.19.41-.4.83-.65,1.26-.24.43-.46.85-.65,1.26-.11.22-.15.42-.11.59.04.17.09.35.17.53.19.41.14.8-.14,1.15-.28.36-.67.5-1.15.42-.37-.04-.64.06-.79.28-.15.22-.36.36-.62.39-.19-.26-.34-.52-.45-.76-.11-.24-.26-.48-.45-.7-.15-.22-.24-.45-.28-.67-.04-.22.09-.51.39-.84.22-.3.22-.64,0-1.01-.08-.15-.09-.36-.06-.62.04-.26.11-.53.22-.81.11-.28.26-.55.45-.81.19-.26.39-.47.62-.62.19-.15.38-.28.59-.39.21-.11.46-.26.76-.45-.3,0-.53,0-.7.03-.17.02-.35.03-.53.03.07-.6.29-1.17.65-1.71.36-.54.68-1.08.98-1.6.07-.15.17-.29.28-.42.11-.13.17-.25.17-.37.22-.79.55-1.54.98-2.25.43-.71.93-1.4,1.49-2.08.19-.19.31-.37.37-.53.06-.17-.05-.33-.31-.48-.71.64-1.34,1.33-1.88,2.08-.54.75-1.32,1.37-2.33,1.85.04-.22.13-.51.28-.84l-.9.62-.45.34c.15.08.24.11.28.11.04.04.06.09.06.17.07.19.1.38.08.59-.02.21-.16.4-.42.59-.64.52-1.28,1.07-1.94,1.63-.66.56-1.3,1.12-1.94,1.69-.3.22-.57.44-.81.65-.24.21-.48.42-.7.65-.41.3-.81.58-1.21.84s-.81.54-1.26.84c-.97.71-1.9,1.11-2.78,1.21-.88.09-1.75,0-2.61-.25-.79-.19-1.34-.59-1.66-1.21-.32-.62-.57-1.3-.76-2.05.22-.3.47-.64.73-1.01.26-.37.6-.79,1.01-1.24.08-.3.13-.63.17-.98.04-.36.3-.7.79-1.04.3-.75.8-1.4,1.49-1.97.69-.56,1.26-1.16,1.71-1.8.67-.86,1.43-1.64,2.28-2.33.84-.69,1.58-1.47,2.22-2.33.41-.49.93-.93,1.54-1.32s1.19-.76,1.71-1.1c.82-.52,1.65-1.02,2.47-1.49.82-.47,1.67-.95,2.53-1.43l.17-.11c.22-.15.46-.25.7-.31.24-.06.5-.09.76-.11.26-.02.52-.07.79-.14.26-.07.52-.22.79-.45.22-.22.46-.37.7-.42.24-.06.49-.07.73-.06.24.02.49.05.73.08.24.04.48.04.7,0,.15,0,.28.03.39.08.11.06.22.12.34.2.19.07.39.17.62.28.22.11.43.24.62.39l1.4-1.18c.52-.07,1.01,0,1.46.22.45.22.94.34,1.46.34.19,0,.37.11.53.34s.29.43.37.62c.07.07.05.21-.08.39-.13.19-.27.32-.42.39-.19.11-.37.19-.56.22-.19.04-.37.09-.56.17.07.22.15.43.22.62.07.19.15.39.22.62-.22.19-.44.38-.65.59s-.38.4-.53.59ZM382.32,46.28c.08,0,.13-.02.17-.06v-.11c-.07,0-.11.02-.11.06l-.06.11ZM404,30.6c.26-.19.51-.38.73-.59.22-.21.34-.48.34-.81-.6-.15-1.21-.2-1.83-.14-.62.06-1.26.29-1.94.7-1.01.64-2.02,1.29-3.03,1.97-1.01.67-2,1.4-2.98,2.19l-.59.59c-.21.21-.35.46-.42.76.04.07.02.15-.06.22-.08.08-.15.13-.22.17-.6.3-1.11.65-1.54,1.04-.43.39-.83.81-1.21,1.26-.37.41-.74.83-1.1,1.26-.36.43-.74.85-1.15,1.26-.9.82-1.7,1.69-2.39,2.58-.69.9-1.23,1.95-1.6,3.15.82-.56,1.6-1.1,2.33-1.63.73-.52,1.47-1.05,2.22-1.57.9-.71,1.81-1.41,2.72-2.11.92-.69,1.81-1.47,2.67-2.33.86-.86,1.77-1.66,2.72-2.39.96-.73,1.86-1.53,2.73-2.39.52-.6,1.1-1.15,1.74-1.66.64-.51,1.25-1.02,1.85-1.54ZM387.2,41.62s-.06.04-.06.11h.11v-.06l-.06-.06ZM393.55,33.53c.04.08.05.17.03.28-.02.11,0,.21.08.28.15-.07.24-.11.28-.11,0-.19-.06-.37-.17-.56l-.22.11ZM394.73,31.73s-.08,0-.14.03c-.06.02-.1.03-.14.03,0,.08.04.15.11.22.04,0,.07,0,.08-.03.02-.02.07-.03.14-.03-.04-.04-.06-.11-.06-.22ZM396.14,31.39c.15.08.22.15.22.22.3-.22.47-.41.51-.56l-.73.34ZM397.04,31l.67-.34c-.08-.07-.09-.15-.06-.22l-.62.56ZM397.09,38.19c.34-.19.6-.34.79-.45.19-.11.34-.22.45-.31s.2-.22.25-.37c.06-.15.12-.34.2-.56l-1.69,1.69ZM399.96,29.65s-.09.06-.17.06c0,.07.02.11.06.11h.11v-.17ZM402.26,39.93c.15-.19.24-.38.28-.59.04-.21.09-.4.17-.59-.19.3-.4.6-.65.9-.24.3-.5.66-.76,1.07.26-.22.47-.38.62-.48.15-.09.26-.2.34-.31ZM401.98,38.86c.04-.07.08-.16.14-.25.06-.09.12-.18.2-.25-.04-.04-.08-.06-.11-.06l-.45.45.22.11Z\\\" />\\n    <path d=\\\"M415.07,28.41l.06-.11-2.36.06c-.19.04-.37-.03-.53-.2-.17-.17-.27-.35-.31-.53-.19-.34-.22-.66-.11-.96v-.51l.34-.11c.15-.04.29-.07.42-.08.13-.02.23-.07.31-.14l.34-.28v.06c.3-.11.51-.32.62-.62l2.42-.34-.06.06,1.24-.22.17-.28c.11-.22.22-.37.31-.45.09-.07.08-.28-.03-.62,0-.07.04-.21.11-.39.07-.19.13-.34.17-.45l1.29-1.46c.41-.34.62-.75.62-1.24-.08-.37.06-.68.39-.93.34-.24.71-.37,1.12-.37.71-.04,1.26-.05,1.66-.03.39.02.93.03,1.6.03.26.6.26,1.18,0,1.74-.11.41-.28.77-.51,1.07s-.47.6-.73.9c-.34.34-.63.67-.87,1.01-.24.34-.48.69-.7,1.07.49-.11,1.18-.25,2.08-.42.9-.17,1.8-.33,2.7-.48.9-.15,1.71-.27,2.44-.37.73-.09,1.19-.14,1.38-.14l3.15-.45c.3-.04.59-.07.87-.08s.5,0,.65.08l.06-.06c.26-.19.49-.26.67-.22.19.04.37.09.56.17l.62.17c.15.04.26.07.34.08.07.02.22.03.45.03-.11.11-.27.21-.48.28-.21.07-.38.14-.53.2-.15.06-.26.08-.34.08s-.06,0,.06,0c.45-.07.96-.16,1.52-.25.56-.09,1.03-.17,1.4-.22.37-.06.6-.06.67,0,.07.06-.15.2-.67.42.26-.04.49-.05.67-.03.19.02.07.1-.34.25-.19.08-.74.22-1.66.45-.92.22-1.91.48-2.98.76-1.07.28-2.04.53-2.92.76-.88.22-1.38.36-1.49.39l-6.18,1.18c-.41.08-.81.14-1.18.2-.37.06-.67-.16-.9-.65l-.67.62-.22.22c-.64.22-1.29.39-1.97.51l-.34.45c.07,0,.14,0,.2.03.06.02.06.12,0,.31-.06.19-.2.49-.42.9-.22.41-.58.99-1.07,1.74-.19.22-.42.56-.7,1.01s-.51.84-.7,1.18c-.67,1.05-1.24,2.03-1.69,2.95-.45.92-.99,1.9-1.63,2.95-.08.08-.15.14-.22.2-.08.06-.11.1-.11.14.19.53.15.96-.11,1.29-.26.34-.54.66-.84.96-.22.22-.34.41-.34.56-.22,1.05-.66,2.02-1.29,2.92-.64.9-1.12,1.85-1.46,2.87-.08.19-.14.39-.2.62-.06.22-.12.45-.2.67,0,.11-.03.25-.08.42s-.12.29-.2.37c-.3.34-.56.66-.79.98-.22.32-.22.65,0,.98l-1.12,1.07c-.19-.19-.41-.28-.67-.28s-.52.02-.79.06c-.26.04-.52.05-.79.03-.26-.02-.51-.16-.73-.42.04-.34.08-.68.11-1.04.04-.36.21-.7.51-1.04.04-.07.08-.15.11-.22.04-.07.06-.15.06-.22,0-.49.08-.96.25-1.4.17-.45.38-.89.65-1.32.26-.43.51-.86.76-1.29.24-.43.46-.87.65-1.32.19-.64.41-1.26.67-1.88.26-.62.56-1.23.9-1.83.6-.82,1.15-1.79,1.66-2.89.51-1.1.98-2.09,1.43-2.95.07-.19.25-.52.53-1.01s.59-1.02.93-1.6c.34-.58.68-1.16,1.04-1.74.36-.58.65-1.08.87-1.49l.51-.84h-.06ZM410.8,38.75l-.17-.11c-.11.04-.24.13-.39.28.04,0,.07.02.08.06.02.04.05.06.08.06l.39-.28ZM412.26,35.94c-.08,0-.15-.04-.22-.11l-.28.22.11.06.39-.17ZM413.89,34.43c.07-.34,0-.5-.22-.48-.22.02-.41,0-.56-.08.04.37-.09.58-.39.62-.3.04-.54.15-.73.34l.9.67c0-.3.07-.56.2-.79.13-.22.38-.32.76-.28h.06ZM412.94,33.69l.11.11-.11-.11ZM413.05,33.81s.02.06.06.06l-.06-.06ZM413.84,34.76l.06-.28c-.04.07-.08.14-.14.2-.06.06-.07.12-.03.2l.11-.11ZM415.19,31.84c-.53.19-.83.32-.93.39-.09.08-.22.32-.37.73l1.29-1.12ZM414.68,33.08c-.15,0-.41-.04-.79-.11.15.08.25.13.31.17.06.04.14.08.25.11,0-.04.07-.09.22-.17ZM415.07,28.41l-.45.84c.04-.11.11-.27.22-.48.11-.21.19-.33.22-.37ZM421.14,23.41c.07-.34,0-.5-.22-.48-.22.02-.43,0-.62-.08.04.37-.08.58-.37.62-.28.04-.5.15-.65.34l.67.56s.06,0,.08-.03c.02-.02.05-.03.08-.03,0-.26.07-.49.22-.67.15-.19.39-.26.73-.22h.06ZM420.3,22.85l-.06-.11v.06s.02.06.06.06ZM421.14,23.75l-.06-.28c-.08.15-.11.28-.11.39l.17-.11ZM422.43,20.83c-.53.19-.83.32-.93.39-.09.08-.2.32-.31.73l1.24-1.12ZM421.93,22.06c-.19,0-.43-.04-.73-.11.11.07.21.13.28.17.07.04.15.07.22.11l.22-.17Z\\\" />\\n    <path d=\\\"M470.92,17.96c-.45.37-.62.71-.51,1.01l-.11.28c-.3.45-.58.9-.84,1.35-.26.45-.54.92-.84,1.4-.19.11-.34.26-.45.45.07.15.11.26.11.34-.11.04-.17.08-.17.11-.11.26-.34.58-.67.96l-1.18,1.63c-.34.45-.64.96-.9,1.52l-.73.9c-.08.15-.16.29-.25.42-.09.13-.14.29-.14.48.04.11-.02.22-.17.34-.15.11-.37.34-.65.67-.28.34-.64.85-1.07,1.54-.43.69-.93,1.66-1.49,2.89-.19.22-.34.4-.45.53-.11.13-.21.26-.28.39-.08.13-.14.28-.2.45-.06.17-.14.4-.25.7-.26.3-.44.6-.53.9-.09.3-.23.6-.42.9l-1.01,1.97s-.08.06-.11.06c.04,0-.11.3-.45.9-.34.6-.72,1.3-1.15,2.11-.43.81-.87,1.65-1.32,2.53-.45.88-.77,1.62-.96,2.22.07.26.06.51-.06.73-.11.22-.26.45-.45.67l-.39.51s.04.09,0,.28c-.04.19-.08.42-.14.7-.06.28-.12.58-.2.9-.08.32-.15.59-.22.81-.04.19-.08.38-.14.59-.06.21-.1.4-.14.59-.04.11-.08.19-.11.22-.04.04-.17.09-.39.17.07-.15.15-.37.22-.67l-.67.34c-.04.07-.08.16-.11.25-.04.09-.08.23-.11.42-.08-.11-.13-.19-.17-.22-.04-.04-.06-.09-.06-.17.07-.37.09-.67.06-.9.07-.34.06-.62-.06-.84-.15.11-.25.22-.31.31-.06.09-.12.18-.2.25-.11-.11-.22-.22-.31-.31-.09-.09-.16-.18-.2-.25l-.06.06c-.04-.11-.05-.22-.03-.34.02-.11.03-.22.03-.34.04-.08.05-.15.03-.22-.02-.08,0-.15.03-.22-.08-.07-.11-.17-.11-.28.11-.11.16-.21.14-.28-.02-.08-.05-.15-.08-.22-.19-.22-.06-.39.39-.51-.04-.08-.05-.15-.03-.22.02-.08,0-.15-.08-.22,0-.49.09-1.02.28-1.6.19-.58.4-1.17.65-1.77.24-.6.51-1.18.79-1.74.28-.56.5-1.09.65-1.57.19-.52.42-1.07.7-1.63.28-.56.57-1.1.87-1.63.11-.3.33-.79.65-1.46.32-.67.7-1.2,1.15-1.57.07-.3.18-.59.31-.87.13-.28.35-.53.65-.76l.22-.45c.19-.26.19-.41,0-.45.11-.3.25-.57.42-.81.17-.24.31-.5.42-.76.07-.11.15-.22.22-.31.07-.09.13-.18.17-.25.34-.22.52-.49.56-.79.11-.37.45-.99,1.01-1.85s1.29-1.91,2.19-3.15c.19-.19.3-.34.34-.45.19-.52.44-1.02.76-1.49.32-.47.65-.95.98-1.43l.22-.56c-.3.19-.54.36-.73.51-.19.15-.37.32-.56.51-.3.26-.56.52-.79.76s-.47.5-.73.76l-.62.62c-.26.34-.49.34-.67,0l-.45.56.62-.17c-.15.19-.3.36-.45.51-.15.15-.26.32-.34.51h-.06c-.22.19-.44.37-.65.56-.21.19-.38.39-.53.62-.04-.07-.08-.14-.14-.2-.06-.06-.1-.12-.14-.2-.08.15-.16.28-.25.39-.09.11-.12.21-.08.28.07.19.05.33-.08.42-.13.09-.23.18-.31.25-.15.07-.28.16-.39.25-.11.09-.21.22-.28.37-.11.19-.22.28-.34.28-.22-.04-.38.04-.48.22s-.22.34-.37.45l-.11.11c-.26.52-.5.93-.7,1.21-.21.28-.63.61-1.26.98-.26.15-.45.31-.56.48s-.22.4-.34.7c0,.15-.08.24-.22.28-.22.11-.42.25-.59.42-.17.17-.36.39-.56.67-.21.28-.48.64-.81,1.07-.34.43-.79.96-1.35,1.6-.22.34-.48.67-.76.98-.28.32-.55.63-.81.93-.11.19-.24.28-.39.28-.3.07-.59.15-.87.22-.28.07-.55.07-.81,0-.08-.04-.16-.05-.25-.03-.09.02-.18,0-.25-.03-.26,0-.47-.04-.62-.11-.08-.04-.14-.07-.2-.11-.06-.04-.14-.04-.25,0-.08.04-.14.04-.2,0-.06-.04-.07-.09-.03-.17-.37-.07-.61-.42-.7-1.04-.09-.62.03-1.45.37-2.5,0-.04.03-.09.08-.17.06-.07.08-.15.08-.22.04-.04.11-.21.22-.51.11-.3.22-.64.31-1.01.09-.37.19-.72.28-1.04.09-.32.16-.53.2-.65.19-.41.34-.83.45-1.26.11-.43.26-.85.45-1.26.41-.9.77-1.87,1.07-2.92.04-.07.08-.15.14-.22.06-.07.08-.17.08-.28-.41.22-.75.54-1.01.96-.38.52-.7.96-.98,1.32-.28.36-.57.73-.87,1.12-.3.39-.67.85-1.1,1.38-.43.53-.98,1.22-1.66,2.08-.67.86-1.52,1.95-2.53,3.26-1.01,1.31-2.25,2.96-3.71,4.94-.11.26-.24.51-.39.73-.15.22-.32.45-.51.67l-.34.22s-.08.07-.14.08c-.06.02-.12.07-.2.14-.11.26-.28.49-.51.67-.08.04-.33.47-.76,1.29-.43.82-1.04,1.69-1.83,2.58-.11.08-.24.24-.39.51-.15.26-.33.54-.53.84-.21.3-.42.55-.65.76-.22.21-.47.29-.73.25-.22-.04-.42-.07-.59-.08-.17-.02-.35.06-.53.25l-.62-.51c-.15-.11-.3-.13-.45-.06-.15.07-.32.19-.51.34l-.17-.45c-.07-.22-.06-.39.06-.51.07-.3.19-.57.34-.81.15-.24.32-.5.51-.76-.04-.07-.02-.13.06-.17.07-.04.11-.09.11-.17.07-.15.16-.28.25-.39.09-.11.23-.21.42-.28.15-.07.29-.19.42-.34.13-.15.18-.32.14-.51,0-.19.15-.45.45-.79s.81-.95,1.52-1.83c.71-.88,1.67-2.1,2.87-3.65,1.2-1.55,2.72-3.66,4.55-6.32.26-.22.49-.52.67-.9.07-.07.11-.15.11-.22s.04-.15.11-.22c.34-.19.58-.4.73-.65.15-.24.32-.5.51-.76.07-.11.14-.21.2-.28.06-.07.12-.15.2-.22.11-.07.26-.24.45-.51.19-.26.39-.53.62-.81.22-.28.46-.56.7-.84.24-.28.46-.5.65-.65.15,0,.22-.07.22-.22.22-.22.41-.52.56-.9l.39-.17c.3-.41.61-.82.93-1.24.32-.41.68-.79,1.1-1.12.22-.19.49-.46.79-.81.3-.36.6-.73.9-1.12.3-.39.61-.8.93-1.21.32-.41.61-.79.87-1.12.11-.15.26-.29.45-.42.19-.13.37-.29.56-.48-.08-.19-.08-.34,0-.45.07-.11.21-.24.39-.39.19-.07.34-.18.45-.31.11-.13.26-.16.45-.08.11.08.26.06.45-.06.26-.11.51-.21.73-.28.22-.07.37-.07.45,0,.3.19.62.28.96.28.07,0,.14.02.2.06.06.04.12.08.2.11.07,0,.14-.02.2-.06.06-.04.12-.07.2-.11.15,0,.22.02.22.06.04.15.11.25.22.31s.21.14.28.25c0,.15-.02.32-.06.51-.04.19-.09.37-.17.56-.11.34-.25.68-.42,1.04-.17.36-.31.7-.42,1.04-.3-.07-.51.19-.62.79-.11.6-.41,1.27-.9,2.02l-.06.06c-.19.22-.3.44-.34.65-.04.21-.09.4-.17.59,0,.26-.06.45-.17.56-.11.19-.19.32-.22.39-.04.07-.06.21-.06.39-.04.07-.08.13-.14.17-.06.04-.12.09-.2.17.19.15.25.33.2.53-.06.21-.14.42-.25.65-.08.19-.16.38-.25.59-.09.21-.18.4-.25.59-.37,0-.56.17-.56.51-.08.15-.13.28-.17.39-.04.11-.08.24-.11.39.07.37-.09.66-.51.84-.08.19-.08.34,0,.45.07.11.07.24,0,.39.04.11.02.25-.06.42-.08.17-.15.35-.22.53l.96-.73s.06-.13.06-.28c.07-.15.13-.27.17-.37.04-.09.15-.2.34-.31.15-.07.28-.17.39-.28.11-.11.24-.22.39-.34.3-.37.61-.74.93-1.1.32-.36.66-.7,1.04-1.04,0-.04.09-.09.28-.17.34-.04.52-.17.56-.39-.04-.19.07-.36.34-.51.11-.07.29-.21.53-.39.24-.19.5-.38.76-.59.26-.21.5-.41.7-.62s.35-.4.42-.59c.37-.07.56-.22.56-.45.07-.19.17-.29.28-.31.11-.02.22-.07.34-.14-.08-.19-.08-.32,0-.39.22-.19.46-.37.7-.56.24-.19.44-.43.59-.73,0-.04.06-.1.17-.2.11-.09.31-.27.59-.53.28-.26.66-.63,1.15-1.1.49-.47,1.12-1.1,1.91-1.88.04-.07.21-.24.51-.51.3-.26.64-.58,1.01-.96-.08,0-.09-.02-.06-.06l.28-.17c.41-.37.8-.72,1.15-1.04.36-.32.57-.5.65-.53.04-.04.06-.04.06,0s-.04.09-.11.17l.96-.45c.22-.07.41-.11.56-.11s.32-.02.51-.06c.15-.04.28-.05.39-.03.11.02.24.03.39.03-.04.08-.05.13-.03.17.02.04.03.09.03.17.15,0,.26-.04.34-.11.19-.15.37-.22.56-.22s.37.02.56.06c.41,0,.6.21.56.62,0,.07,0,.16.03.25.02.09.03.18.03.25.11.11.15.22.11.34-.08.19-.09.35-.06.48.04.13.09.27.17.42ZM429.85,45.38c-.08.22.04.39.34.51,0-.26.04-.49.11-.67l-.45.17ZM431.7,43.86v-.06s-.06,0-.06.03c0,.02-.02.03-.06.03l.06.06.06-.06ZM431.87,42.12l.45.22-.11-.51-.34.28ZM436.48,35.72c.04.11.04.21,0,.28-.04.07-.04.15,0,.22.3-.3.54-.6.73-.9l-.73.39ZM437.66,34.65l-.11-.06c-.08.07-.11.13-.11.17s-.02.08-.06.11c-.08.07-.1.15-.08.22.02.08,0,.15-.08.22l.45-.67ZM439.79,32.12c.3-.15.48-.25.53-.31.06-.06.1-.18.14-.37-.19.11-.35.21-.48.28-.13.07-.2.21-.2.39ZM441.93,30.16c-.15-.04-.25-.05-.31-.03-.06.02-.08.12-.08.31l.39-.28ZM442.43,29.26v.06l.06-.06h-.06ZM446.99,29.76s.06.11.06.22c.07-.11.09-.19.06-.22h-.11ZM447.72,32.29c.11-.11.18-.2.2-.25.02-.06,0-.18-.08-.37,0,.19-.04.39-.11.62ZM448.05,30.32v-.11h-.06s-.04.08,0,.11h.06ZM448.95,27.85h-.06l-.11.06.17-.06ZM450.86,23.19l-.06.06.06.06v-.11ZM451.09,53.25s.04-.08.11-.11h-.06s-.08.02-.11.06l.06.06ZM451.09,52.52c.26-.15.47-.3.62-.45l.17-.9c-.19.3-.31.46-.37.48-.06.02-.14-.03-.25-.14-.11.19-.17.37-.17.53v.48ZM451.59,50.38l.06-.06v-.06l-.11.06.06.06ZM451.76,49.37c0,.15.02.26.06.34h.06s.05-.08.03-.11c-.02-.04,0-.07.03-.11l-.11-.11h-.06ZM451.82,48.81s-.04.02,0,.06v.06s.07,0,.08-.03c.02-.02.05-.03.08-.03-.04-.04-.04-.07,0-.11-.04,0-.06,0-.06.03s-.02.03-.06.03h-.06ZM452.32,51.06c-.11.07-.17.21-.17.39,0-.08.02-.14.06-.2.04-.06.07-.12.11-.2ZM452.32,47.35c-.04.22.09.36.39.39-.04-.19-.04-.41,0-.67l-.39.28ZM452.83,30.04s.07-.02.11-.06l-.06-.06s-.04.07-.11.11h.06ZM453.11,48.08v-.17h-.06v.11l.06.06ZM453.62,44.48v.06s.06-.02.06-.06h-.06ZM453.73,43.86l.51.11-.22-.45-.28.34ZM454.4,42.96s.02.06.06.06l.11-.06s-.08-.06-.11-.06l-.06.06ZM454.96,28.3h-.22l-.06.11h.22l.06-.11ZM454.91,42.23l.06-.28h-.06l-.06.28h.06ZM455.19,29.09s-.07,0-.08.03c-.02.02-.05.03-.08.03v.11s.07-.06.11-.06l.06-.11ZM455.19,27.91c.07-.07.11-.12.11-.14,0-.02-.04,0-.11.08.04,0,.04,0,0,.03-.04.02-.04.03,0,.03ZM455.69,40.55c.07-.07.11-.13.11-.17h-.06s-.06.08-.06.11v.06ZM457.72,25.55c-.15.11-.29.22-.42.31-.13.09-.25.2-.37.31l-.28.28s.06,0,.06.03c0,.02.02.03.06.03l.96-.96ZM456.65,37.96c.07-.04.14-.07.2-.11.06-.04.12-.07.2-.11-.04,0-.06,0-.06-.03,0-.02-.02-.03-.06-.03l-.28.22s.04.02,0,.06ZM457.49,34.03c-.07.11-.13.22-.17.34-.04.11-.09.21-.17.28.04,0,.06,0,.06.03s.02.03.06.03l.34-.62-.11-.06ZM457.16,37.01c.07.07.1.15.08.22-.02.07,0,.15.03.22.11-.19.2-.36.25-.51.06-.15.12-.3.2-.45l-.56.51ZM457.6,33.69v.06l.06-.06v-.06l-.06.06ZM458.11,35.77l-.06-.06c-.08.08-.13.14-.17.2-.04.06-.09.1-.17.14v.45l.39-.73ZM458.22,37.23s.06,0,.06-.03.02-.03.06-.03h.06s-.02-.07-.06-.08c-.04-.02-.04-.05,0-.08-.08.04-.1.07-.08.08.02.02,0,.07-.03.14ZM458.5,32.18s-.08.06-.11.06-.06.02-.06.06v.06l.17-.17ZM458.78,35.72l-.17.17.06.11.11-.11v-.17ZM459.18,31.17c-.19.08-.28.14-.28.2s.02.12.06.2c.07-.07.12-.14.14-.2.02-.06.05-.12.08-.2ZM459.63,23.64l.06-.06-.11.06h.06ZM459.85,32.96c.3-.19.47-.32.51-.39.04-.07.06-.21.06-.39-.15.15-.3.27-.45.37-.15.09-.19.23-.11.42ZM463.11,25.66s-.03.05.03.03c.06-.02.08-.05.08-.08l-.11-.11-.11.06.11.11ZM464.57,22.57s-.06,0-.06-.03-.02-.03-.06-.03c-.08.11-.17.23-.28.37s-.21.25-.28.37c.04,0,.07.02.11.06l.56-.73ZM465.25,16.89s-.06-.07-.06-.11c-.11.07-.21.17-.28.28l.34-.17ZM465.7,20.43c.07-.07.11-.13.11-.17l-.06-.06s0,.07-.03.08c-.02.02-.03.05-.03.08v.06Z\\\" />\\n    <path d=\\\"M476.09,42.8c-.22.19-.45.37-.67.53-.22.17-.45.35-.67.53h1.46c-.41.52-.85.93-1.32,1.21-.47.28-.93.57-1.38.87-.11.08-.22.11-.34.11s-.22.04-.34.11c-.64.75-1.39,1.35-2.25,1.8-.86.45-1.71.88-2.53,1.29-.71.34-1.41.59-2.11.76-.69.17-1.4.33-2.11.48-.53.11-1.02.18-1.49.2-.47.02-.93,0-1.38-.08-1.95-.19-2.98-1.16-3.09-2.92-.15-1.87.43-3.73,1.74-5.56.41-.49.81-.96,1.21-1.4.39-.45.74-.94,1.04-1.46.22-.37.6-.82,1.12-1.35.52-.52,1.09-1.07,1.69-1.63.6-.56,1.18-1.1,1.74-1.63s.97-.97,1.24-1.35c.3-.19.61-.37.93-.56.32-.19.65-.39.98-.62.26-.15.51-.3.76-.45.24-.15.48-.37.7-.67.19-.22.42-.44.7-.65.28-.21.55-.4.81-.59.71-.41,1.41-.81,2.11-1.21.69-.39,1.38-.8,2.05-1.21.64-.34,1.22-.51,1.74-.51s.99.09,1.4.28c.52.19,1.01.42,1.46.7.45.28.92.57,1.4.87.19.08.37.28.56.62-1.5.97-3.05,1.74-4.66,2.3-.19-.07-.23-.18-.14-.31.09-.13.23-.28.42-.45.19-.17.37-.33.53-.48.17-.15.25-.26.25-.34-.08,0-.26.08-.56.25-.3.17-.47.25-.51.25-.56.37-1.12.74-1.69,1.1-.56.36-1.14.7-1.74,1.04-.15.11-.3.22-.45.31-.15.09-.26.2-.34.31-.49.56-1.02,1.01-1.6,1.35-.58.34-1.13.69-1.66,1.07-.3.19-.59.38-.87.59-.28.21-.46.52-.53.93,0,.15-.09.3-.28.45-.19.15-.34.28-.45.39-.75.52-1.5,1.11-2.25,1.74-.75.64-1.37,1.33-1.85,2.08-.11.19-.26.39-.45.62-.19.22-.37.39-.56.51-.3.19-.48.41-.53.67-.06.26-.2.49-.42.67-.41.22-.62.47-.62.73s-.04.54-.11.84c-.04.15-.11.3-.22.45-.11.15-.24.36-.39.62.15.04.29.08.42.14.13.06.29.05.48-.03,1.12-.19,2.33-.47,3.62-.84,1.29-.37,2.5-.82,3.62-1.35.97-.45,1.94-.89,2.89-1.32.96-.43,1.94-.87,2.95-1.32.07.07.16.15.25.22.09.07.18.17.25.28ZM458.45,46.62c0,.11.04.19.11.22.15-.04.32-.19.51-.45l-.17-.34c-.3.22-.45.39-.45.51v.06ZM460.98,42.68c-.04.07-.08.13-.11.17-.04.04-.06.09-.06.17-.07.19-.04.28.11.28.19,0,.36-.11.51-.34l-.28-.28h-.17ZM461.65,43.75l-.06.06c-.15.15-.22.26-.22.34,0,.11.04.19.11.22,0,.04,0,.07.03.08.02.02,0,.1-.03.25l.67-.45-.17-.34-.17-.22-.17.06ZM462.49,42.12l-.11.11h.11v-.11ZM465.02,48.64v.17c.11,0,.32-.06.62-.17l.06-.28c-.37.11-.58.21-.62.28h-.06ZM469.4,46.95c-.22.07-.36.15-.39.22-.15.07-.17.13-.06.17.15.04.34.02.56-.06l-.06-.28-.06-.06ZM472.77,31.34s-.06.02-.06.06c0,.11.02.19.06.22.11-.04.34-.19.67-.45l-.06-.34c-.37.26-.58.43-.62.51ZM475.08,31.5c-.11,0-.21.02-.28.06-.08.04-.13.06-.17.06-.07.04-.11.13-.11.28-.04.07-.07.14-.08.2-.02.06-.05.12-.08.2-.04.07-.06.15-.06.22.56-.34.9-.56,1.01-.67,0-.04,0-.11-.03-.22-.02-.11-.08-.17-.2-.17v.06ZM476.93,27.46c-.08.08-.14.13-.2.17s-.1.09-.14.17c-.11.19-.11.28,0,.28.22,0,.45-.11.67-.34l-.17-.28h-.17ZM477.16,28.53l-.06.06c-.22.15-.36.26-.39.34-.08.07-.06.15.06.22-.04.04-.06.07-.06.08,0,.02-.06.1-.17.25l.9-.45v-.34l-.11-.22-.17.06Z\\\" />\\n    <path d=\\\"M488.67,32.46c.41-.34.62-.63.62-.87s-.09-.51-.28-.81c-.19.08-.33.13-.42.17-.09.04-.18.09-.25.17.22-.3.46-.58.7-.84.24-.26.5-.54.76-.84l.17-.22c.19-.26.38-.49.59-.67.21-.19.51-.22.93-.11l-.06-.06s.17,0,.39-.14.37-.29.45-.48v-.06s.02-.07.06-.11v.06c.26,0,.43-.02.51-.06.07,0,.13-.02.17-.06l-.06.06c.07-.07.12-.17.14-.28.02-.11.05-.21.08-.28,0-.15-.04-.26-.11-.34.41-.45.77-.94,1.07-1.46l.22-.51.96.45s.07,0,.08.03c.02.02.05.03.08.03l.17-.11c.15-.52.39-.98.73-1.38.34-.39.69-.74,1.07-1.04.3-.3.6-.58.9-.84.3-.26.56-.54.79-.84l-.56.22.06-.06s-.06.02-.06.06l.11-.11c.19-.22.4-.46.65-.7.24-.24.51-.46.81-.65-.19.15-.29.3-.31.45-.02.15-.03.32-.03.51v.34l.17.11c.52-.19.81-.41.84-.67.04-.26.02-.64-.06-1.12l.79-.39.22.39.51-.28.96-.73c0-.07-.02-.13-.06-.17.22-.15.36-.28.39-.39.19-.34.37-.58.53-.73.17-.15.35-.28.53-.39l.51-.34v.06c1.42-.71,2.83-1.07,4.21-1.07,1.24,0,2.49.26,3.76.79.07.04.17.05.28.03.11-.02.21-.03.28-.03h.28c.37.11.65.27.81.48.17.21.27.42.31.65.04.22.03.45-.03.67-.06.22-.14.39-.25.51.04.26,0,.52-.14.79-.13.26-.29.54-.48.84-.15.15-.3.37-.45.67-.34.07-.55.04-.65-.11-.09-.15-.16-.32-.2-.51-.08-.26-.21-.49-.39-.67-.41-.11-.91-.15-1.49-.11-.58.04-1.19.12-1.83.25-.64.13-1.25.31-1.83.53s-1.08.51-1.49.84c-1.72,1.35-3.43,2.78-5.11,4.3-1.69,1.52-3.26,2.97-4.72,4.35h.06c-.79.67-1.42,1.32-1.91,1.94-.49.62-.97,1.25-1.46,1.88-.3.41-.61.83-.93,1.26-.32.43-.67.85-1.04,1.26-.37.45-.74.95-1.1,1.49-.36.54-.7,1.08-1.04,1.6l-1.63,2.36c-.08.26-.21.51-.39.73,0,.07-.03.14-.08.2-.06.06-.08.12-.08.2v-.06c-.41.52-.71,1.08-.9,1.66-.19.58-.36,1.17-.51,1.77-.08.3-.14.6-.2.9-.06.3-.1.6-.14.9l-.06.28c-.08.3-.06.57.06.81s.26.46.45.65c.19.19.41.31.67.37.26.06.52.03.79-.08,2.06-.71,4.07-1.61,6.04-2.7s4.09-2.6,6.38-4.55c.6-.49,1.05-.94,1.35-1.35l.84-.9h-.06c.52-.41.96-.84,1.32-1.29.36-.45.74-.9,1.15-1.35.11-.19.25-.37.42-.56.17-.19.35-.39.53-.62-.15,0-.34,0-.56.03-.22.02-.41.03-.56.03-.3.04-.6.06-.9.06h-.9c-.75,0-1.46-.1-2.14-.31-.67-.21-1.22-.59-1.63-1.15v-.06s.07-.09.11-.17c.04-.07.09-.15.17-.22.34-1.01.76-1.69,1.26-2.02.51-.34,1.26-.39,2.28-.17.3.04.58.04.84,0,.26-.04.56-.21.9-.51v.06c.19-.11.42-.19.7-.22s.51-.04.7,0c.41.19.89.3,1.43.34.54.04,1.1.04,1.66,0,.15,0,.35,0,.59-.03.24-.02.44-.03.59-.03.34.04.79.06,1.35.06s1.09-.02,1.57-.06c.15,0,.32,0,.51-.03.19-.02.34-.06.45-.14.11-.04.22-.07.34-.11s.22-.06.34-.06.32-.04.62-.11c.26-.07.53-.1.81-.08.28.02.5.07.65.14.3.26.62.44.96.53.34.09.71.18,1.12.25l.84.11c-.11,0-.13.04-.06.11-.52.75-1.19,1.26-1.99,1.54-.81.28-1.64.5-2.5.65-.19.04-.39.09-.62.17-.22.07-.45.21-.67.39v-.06c-.19.04-.45.11-.79.22-.34.11-.68.23-1.04.37-.36.13-.68.25-.98.37-.3.11-.52.21-.67.28l-1.07,2.02c-1.05,1.69-1.93,3.16-2.64,4.44-.71,1.27-1.24,2.47-1.57,3.6,0,.07-.02.14-.06.2-.04.06-.08.12-.11.2-.08.11-.15.22-.22.34-.08.11-.09.22-.06.34-.04.15-.1.32-.2.51-.09.19-.27.37-.53.56v.39c-.04.22-.08.44-.11.65-.04.21-.13.38-.28.53-.19.41-.29.74-.31.98-.02.24.2.42.65.53h-.06c.22.19.34.37.34.56s-.06.39-.17.62v-.06c-.15.19-.37.37-.67.56-.3.19-.62.34-.96.45s-.65.19-.93.22c-.28.04-.48,0-.59-.11-.3-.19-.56-.37-.79-.56-.22-.19-.47-.37-.73-.56v.06c-.19-.22-.28-.56-.28-1.01s.04-.88.11-1.29c0-.19.09-.54.28-1.07.19-.52.37-1.1.56-1.74.15-.41.32-.88.51-1.4.19-.52.34-.99.45-1.4-.94.97-1.85,1.85-2.72,2.64-.88.79-1.56,1.39-2.05,1.8l-.62.56v-.06l-.34.22c-.75.49-1.48.93-2.19,1.32-.71.39-1.48.65-2.3.76-.53.07-1,.14-1.43.2-.43.06-.85.08-1.26.08-1.31,0-2.51-.26-3.6-.79-1.09-.52-2.08-1.39-2.98-2.58-.08-.15-.11-.41-.11-.79-.04-.49-.05-.96-.03-1.4.02-.45.08-.92.2-1.4.19-.9.56-1.87,1.12-2.92.3-.41.58-.86.84-1.35.26-.49.43-.99.51-1.52-.04-.52.09-1.01.39-1.46.3-.45.6-.86.9-1.24.11-.07.22-.19.34-.34s.21-.28.28-.39h.06s.06,0,.06-.03.02-.03.06-.03l-.34.67.62.11c-.08-.26-.02-.54.17-.84h.22l.06-.39c.22-.26.49-.51.79-.76.3-.24.54-.51.73-.81l.39-.73h.17l.28-.17v-.22h-.11l.17-.84c-.67.56-1.22,1.05-1.63,1.46.26-.45.53-.89.81-1.32.28-.43.57-.85.87-1.26-.15.19-.11.43.11.73l.22.45h.11ZM486.2,34.54c-.11.11-.17.24-.17.39l-.28,1.01-.28.39h-.45c.11-.26.23-.5.37-.7.13-.21.27-.46.42-.76.15-.34.39-.67.73-1.01l-.34.67ZM489.35,29.99l.34.56.67-.79.51-.62-.28-.45-1.24,1.29ZM492.61,26.39c.07.15.21.22.39.22l-.34.56-.22-.06.17-.73ZM494.35,24.7s.04-.09.11-.17l-.11.17ZM495.75,23.58l-.51.28h.06c-.34.22-.62.45-.84.67l.67-.79.06-.06c.41-.45.9-.89,1.46-1.32.56-.43,1.2-.81,1.91-1.15l-.11.06.11-.06c-.49.56-.9.97-1.24,1.24-.34.26-.69.54-1.07.84l-.51.28ZM500.14,19.76c.07-.07.16-.14.25-.2.09-.06.21-.12.37-.2l-.62.39ZM503.23,17.85l-.22.45c-.08.08-.14.13-.2.17-.06.04-.18.09-.37.17l-.9.34-.06-.06.84-.45v-.06l.9-.56ZM505.19,17.34c.15,0,.24.02.28.06.22-.07.37-.15.45-.22.07-.07.13-.15.17-.22.04-.11-.08-.34-.34-.67l-.56,1.07Z\\\" />\\n    <path d=\\\"M535.36,29.93c-.82.41-1.6.76-2.33,1.04-.73.28-1.49.57-2.28.87-.94.3-1.8.7-2.58,1.21-.79.51-1.61,1-2.47,1.49-1.39.75-2.77,1.63-4.16,2.64-1.01.75-1.81,1.35-2.39,1.8-.58.45-1.1.89-1.54,1.32-.45.43-.89.94-1.32,1.52-.43.58-1,1.38-1.71,2.39-.37.52-.68,1.07-.93,1.63-.24.56-.68,1.35-1.32,2.36-.3.64-.59,1.17-.87,1.6-.28.43-.74.76-1.38.98-.15-.07-.23-.19-.25-.34-.02-.15-.05-.26-.08-.34-.04-.08-.1-.08-.2-.03-.09.06-.31.23-.65.53l-.84-.56c-.6-.45-.88-.9-.84-1.35-.04.04-.05.05-.03.03.02-.02.07-.1.14-.25.04-.26.21-.6.51-1.01.04,0,.06-.02.06-.06.37-.67.86-1.58,1.46-2.72.6-1.14,1.22-2.29,1.85-3.46.64-1.16,1.23-2.23,1.77-3.2.54-.97.96-1.65,1.26-2.02.11-.15.19-.29.22-.42.04-.13.09-.25.17-.37.34-.34.51-.68.53-1.04.02-.36.22-.7.59-1.04.3-.26.53-.56.7-.9.17-.34.38-.67.65-1.01h.06c-.04-.07-.07-.17-.08-.28-.02-.11,0-.21.08-.28.45-.49.67-1.03.67-1.63-.08-.45.03-.85.31-1.21s.63-.68,1.04-.98c.37-.26.74-.37,1.1-.34.36.04.68.15.98.34.26.15.52.24.79.28,1.46.3,1.61,1.14.45,2.53l-.45.67c-.22.41-.48.81-.76,1.21s-.55.8-.81,1.21l-.56,1.12-1.07,1.8c.75-.67,1.56-1.35,2.44-2.02.88-.67,1.66-1.2,2.33-1.57.67-.37,1.27-.75,1.8-1.12.52-.37,1.16-.73,1.91-1.07.94-.49,1.88-.96,2.84-1.4.96-.45,1.96-.81,3.01-1.07.19-.04.4-.05.65-.03.24.02.4.08.48.2.15.34.25.51.31.51s.25-.09.59-.28c.11.19.23.34.37.45.13.11.23.26.31.45.15.19.16.41.03.67-.13.26-.31.45-.53.56ZM511.43,47.07s.06-.07.06-.11l-.06-.06s-.02.08-.06.11c0,.04.02.06.06.06ZM514.41,38.75c-.08-.04-.11-.07-.11-.11s-.04-.04-.11,0c-.11.04-.24.13-.39.28.04,0,.07.02.11.06.04.04.07.06.11.06l.39-.28ZM515.92,35.94s-.09-.04-.17-.11l-.28.22.11.06.34-.17ZM517.61,34.43c.11-.34.06-.5-.14-.48-.21.02-.38,0-.53-.08,0,.19-.04.32-.11.39-.08.07-.18.14-.31.2-.13.06-.26.1-.39.14-.13.04-.23.11-.31.22l.79.67c.07-.3.17-.56.28-.79.11-.22.34-.32.67-.28h.06ZM516.77,33.69l.11.11-.11-.11ZM516.88,33.81s.02.06.06.06l-.06-.06ZM517.67,34.76l-.06-.28c0,.07-.02.14-.06.2-.04.06-.04.12,0,.2l.11-.11ZM519.07,31.84c-.53.19-.83.32-.93.39-.09.08-.23.32-.42.73l1.35-1.12ZM518.51,33.08c-.15,0-.41-.04-.79-.11.15.08.26.13.34.17.07.04.17.08.28.11,0-.04.06-.09.17-.17ZM519.63,30.55s.06-.02.06-.06h-.39v.06h.34ZM520.7,28.98c0,.07.02.11.06.11l.11-.06-.06-.06h-.11ZM523.28,35.77c.04-.07.07-.15.11-.22.04-.07.06-.15.06-.22l-.22-.11s0,.07-.03.08c-.02.02-.03.05-.03.08l-.06.06.17.34Z\\\" />\\n    <path d=\\\"M552.89,31.22c-.15.11-.3.23-.45.37-.15.13-.24.25-.28.37-.19.49-.47.88-.84,1.18-.37.3-.73.62-1.07.96-.04.15-.08.3-.11.45-.04.15-.09.32-.17.51-.08.41-.24.79-.51,1.12-.15.3-.32.41-.51.34-.19-.07-.36-.07-.51,0-.45.22-.89.46-1.32.7-.43.24-.87.5-1.32.76,0,.11,0,.22.03.34.02.11.03.21.03.28l.96-.51c.3.37.43.62.39.73-.04.11-.3.38-.79.79-.19.08-.31.19-.37.34-.06.15-.12.3-.2.45l.79-.11c-.26.49-.5.97-.7,1.46-.21.49-.46.97-.76,1.46-.3.49-.67.96-1.1,1.43-.43.47-.61.98-.53,1.54-.3.15-.46.29-.48.42-.02.13.05.27.2.42.07.04.07.12-.03.25-.09.13-.16.23-.2.31-.19.41-.4.83-.65,1.26-.24.43-.46.85-.65,1.26-.11.22-.15.42-.11.59.04.17.09.35.17.53.19.41.14.8-.14,1.15-.28.36-.67.5-1.15.42-.37-.04-.64.06-.79.28-.15.22-.36.36-.62.39-.19-.26-.34-.52-.45-.76-.11-.24-.26-.48-.45-.7-.15-.22-.24-.45-.28-.67-.04-.22.09-.51.39-.84.22-.3.22-.64,0-1.01-.08-.15-.09-.36-.06-.62.04-.26.11-.53.22-.81.11-.28.26-.55.45-.81.19-.26.39-.47.62-.62.19-.15.38-.28.59-.39.21-.11.46-.26.76-.45-.3,0-.53,0-.7.03-.17.02-.35.03-.53.03.07-.6.29-1.17.65-1.71.36-.54.68-1.08.98-1.6.07-.15.17-.29.28-.42.11-.13.17-.25.17-.37.22-.79.55-1.54.98-2.25.43-.71.93-1.4,1.49-2.08.19-.19.31-.37.37-.53.06-.17-.05-.33-.31-.48-.71.64-1.34,1.33-1.88,2.08-.54.75-1.32,1.37-2.33,1.85.04-.22.13-.51.28-.84l-.9.62-.45.34c.15.08.24.11.28.11.04.04.06.09.06.17.07.19.1.38.08.59-.02.21-.16.4-.42.59-.64.52-1.28,1.07-1.94,1.63-.66.56-1.3,1.12-1.94,1.69-.3.22-.57.44-.81.65-.24.21-.48.42-.7.65-.41.3-.81.58-1.21.84s-.81.54-1.26.84c-.97.71-1.9,1.11-2.78,1.21-.88.09-1.75,0-2.61-.25-.79-.19-1.34-.59-1.66-1.21-.32-.62-.57-1.3-.76-2.05.22-.3.47-.64.73-1.01.26-.37.6-.79,1.01-1.24.08-.3.13-.63.17-.98.04-.36.3-.7.79-1.04.3-.75.8-1.4,1.49-1.97.69-.56,1.26-1.16,1.71-1.8.67-.86,1.43-1.64,2.28-2.33.84-.69,1.58-1.47,2.22-2.33.41-.49.93-.93,1.54-1.32s1.19-.76,1.71-1.1c.82-.52,1.65-1.02,2.47-1.49.82-.47,1.67-.95,2.53-1.43l.17-.11c.22-.15.46-.25.7-.31.24-.06.5-.09.76-.11.26-.02.52-.07.79-.14.26-.07.52-.22.79-.45.22-.22.46-.37.7-.42.24-.06.49-.07.73-.06.24.02.49.05.73.08.24.04.48.04.7,0,.15,0,.28.03.39.08.11.06.22.12.34.2.19.07.39.17.62.28.22.11.43.24.62.39l1.4-1.18c.52-.07,1.01,0,1.46.22.45.22.94.34,1.46.34.19,0,.37.11.53.34s.29.43.37.62c.07.07.05.21-.08.39-.13.19-.27.32-.42.39-.19.11-.37.19-.56.22-.19.04-.37.09-.56.17.07.22.15.43.22.62.07.19.15.39.22.62-.22.19-.44.38-.65.59s-.38.4-.53.59ZM525.36,46.28c.08,0,.13-.02.17-.06v-.11c-.07,0-.11.02-.11.06l-.06.11ZM547.05,30.6c.26-.19.51-.38.73-.59.22-.21.34-.48.34-.81-.6-.15-1.21-.2-1.83-.14-.62.06-1.26.29-1.94.7-1.01.64-2.02,1.29-3.03,1.97-1.01.67-2,1.4-2.98,2.19l-.59.59c-.21.21-.35.46-.42.76.04.07.02.15-.06.22-.08.08-.15.13-.22.17-.6.3-1.11.65-1.54,1.04-.43.39-.83.81-1.21,1.26-.37.41-.74.83-1.1,1.26-.36.43-.74.85-1.15,1.26-.9.82-1.7,1.69-2.39,2.58-.69.9-1.23,1.95-1.6,3.15.82-.56,1.6-1.1,2.33-1.63.73-.52,1.47-1.05,2.22-1.57.9-.71,1.81-1.41,2.72-2.11.92-.69,1.81-1.47,2.67-2.33.86-.86,1.77-1.66,2.72-2.39.96-.73,1.86-1.53,2.73-2.39.52-.6,1.1-1.15,1.74-1.66.64-.51,1.25-1.02,1.85-1.54ZM530.25,41.62s-.06.04-.06.11h.11v-.06l-.06-.06ZM536.6,33.53c.04.08.05.17.03.28-.02.11,0,.21.08.28.15-.07.24-.11.28-.11,0-.19-.06-.37-.17-.56l-.22.11ZM537.78,31.73s-.08,0-.14.03c-.06.02-.1.03-.14.03,0,.08.04.15.11.22.04,0,.07,0,.08-.03.02-.02.07-.03.14-.03-.04-.04-.06-.11-.06-.22ZM539.18,31.39c.15.08.22.15.22.22.3-.22.47-.41.51-.56l-.73.34ZM540.08,31l.67-.34c-.08-.07-.09-.15-.06-.22l-.62.56ZM540.14,38.19c.34-.19.6-.34.79-.45.19-.11.34-.22.45-.31s.2-.22.25-.37c.06-.15.12-.34.2-.56l-1.69,1.69ZM543.01,29.65s-.09.06-.17.06c0,.07.02.11.06.11h.11v-.17ZM545.31,39.93c.15-.19.24-.38.28-.59.04-.21.09-.4.17-.59-.19.3-.4.6-.65.9-.24.3-.5.66-.76,1.07.26-.22.47-.38.62-.48.15-.09.26-.2.34-.31ZM545.03,38.86c.04-.07.08-.16.14-.25.06-.09.12-.18.2-.25-.04-.04-.08-.06-.11-.06l-.45.45.22.11Z\\\" />\\n    <path d=\\\"M558.12,28.41l.06-.11-2.36.06c-.19.04-.37-.03-.53-.2-.17-.17-.27-.35-.31-.53-.19-.34-.22-.66-.11-.96v-.51l.34-.11c.15-.04.29-.07.42-.08.13-.02.23-.07.31-.14l.34-.28v.06c.3-.11.51-.32.62-.62l2.42-.34-.06.06,1.24-.22.17-.28c.11-.22.22-.37.31-.45.09-.07.08-.28-.03-.62,0-.07.04-.21.11-.39.07-.19.13-.34.17-.45l1.29-1.46c.41-.34.62-.75.62-1.24-.08-.37.06-.68.39-.93.34-.24.71-.37,1.12-.37.71-.04,1.26-.05,1.66-.03.39.02.93.03,1.6.03.26.6.26,1.18,0,1.74-.11.41-.28.77-.51,1.07s-.47.6-.73.9c-.34.34-.63.67-.87,1.01-.24.34-.48.69-.7,1.07.49-.11,1.18-.25,2.08-.42.9-.17,1.8-.33,2.7-.48.9-.15,1.71-.27,2.44-.37.73-.09,1.19-.14,1.38-.14l3.15-.45c.3-.04.59-.07.87-.08s.5,0,.65.08l.06-.06c.26-.19.49-.26.67-.22.19.04.37.09.56.17l.62.17c.15.04.26.07.34.08.07.02.22.03.45.03-.11.11-.27.21-.48.28-.21.07-.38.14-.53.2-.15.06-.26.08-.34.08s-.06,0,.06,0c.45-.07.96-.16,1.52-.25.56-.09,1.03-.17,1.4-.22.37-.06.6-.06.67,0,.07.06-.15.2-.67.42.26-.04.49-.05.67-.03.19.02.07.1-.34.25-.19.08-.74.22-1.66.45-.92.22-1.91.48-2.98.76-1.07.28-2.04.53-2.92.76-.88.22-1.38.36-1.49.39l-6.18,1.18c-.41.08-.81.14-1.18.2-.37.06-.67-.16-.9-.65l-.67.62-.22.22c-.64.22-1.29.39-1.97.51l-.34.45c.07,0,.14,0,.2.03.06.02.06.12,0,.31-.06.19-.2.49-.42.9-.22.41-.58.99-1.07,1.74-.19.22-.42.56-.7,1.01s-.51.84-.7,1.18c-.67,1.05-1.24,2.03-1.69,2.95-.45.92-.99,1.9-1.63,2.95-.08.08-.15.14-.22.2-.08.06-.11.1-.11.14.19.53.15.96-.11,1.29-.26.34-.54.66-.84.96-.22.22-.34.41-.34.56-.22,1.05-.66,2.02-1.29,2.92-.64.9-1.12,1.85-1.46,2.87-.08.19-.14.39-.2.62-.06.22-.12.45-.2.67,0,.11-.03.25-.08.42s-.12.29-.2.37c-.3.34-.56.66-.79.98-.22.32-.22.65,0,.98l-1.12,1.07c-.19-.19-.41-.28-.67-.28s-.52.02-.79.06c-.26.04-.52.05-.79.03-.26-.02-.51-.16-.73-.42.04-.34.08-.68.11-1.04.04-.36.21-.7.51-1.04.04-.07.08-.15.11-.22.04-.07.06-.15.06-.22,0-.49.08-.96.25-1.4.17-.45.38-.89.65-1.32.26-.43.51-.86.76-1.29.24-.43.46-.87.65-1.32.19-.64.41-1.26.67-1.88.26-.62.56-1.23.9-1.83.6-.82,1.15-1.79,1.66-2.89.51-1.1.98-2.09,1.43-2.95.07-.19.25-.52.53-1.01s.59-1.02.93-1.6c.34-.58.68-1.16,1.04-1.74.36-.58.65-1.08.87-1.49l.51-.84h-.06ZM553.85,38.75l-.17-.11c-.11.04-.24.13-.39.28.04,0,.07.02.08.06.02.04.05.06.08.06l.39-.28ZM555.31,35.94c-.08,0-.15-.04-.22-.11l-.28.22.11.06.39-.17ZM556.94,34.43c.07-.34,0-.5-.22-.48-.22.02-.41,0-.56-.08.04.37-.09.58-.39.62-.3.04-.54.15-.73.34l.9.67c0-.3.07-.56.2-.79.13-.22.38-.32.76-.28h.06ZM555.98,33.69l.11.11-.11-.11ZM556.1,33.81s.02.06.06.06l-.06-.06ZM556.88,34.76l.06-.28c-.04.07-.08.14-.14.2-.06.06-.07.12-.03.2l.11-.11ZM558.23,31.84c-.53.19-.83.32-.93.39-.09.08-.22.32-.37.73l1.29-1.12ZM557.73,33.08c-.15,0-.41-.04-.79-.11.15.08.25.13.31.17.06.04.14.08.25.11,0-.04.07-.09.22-.17ZM558.12,28.41l-.45.84c.04-.11.11-.27.22-.48.11-.21.19-.33.22-.37ZM564.19,23.41c.07-.34,0-.5-.22-.48-.22.02-.43,0-.62-.08.04.37-.08.58-.37.62-.28.04-.5.15-.65.34l.67.56s.06,0,.08-.03c.02-.02.05-.03.08-.03,0-.26.07-.49.22-.67.15-.19.39-.26.73-.22h.06ZM563.34,22.85l-.06-.11v.06s.02.06.06.06ZM564.19,23.75l-.06-.28c-.08.15-.11.28-.11.39l.17-.11ZM565.48,20.83c-.53.19-.83.32-.93.39-.09.08-.2.32-.31.73l1.24-1.12ZM564.97,22.06c-.19,0-.43-.04-.73-.11.11.07.21.13.28.17.07.04.15.07.22.11l.22-.17Z\\\" />\\n    <path d=\\\"M581.04,29.54c.79.11,1.54.27,2.25.48.71.21,1.27.68,1.69,1.43-.34.45-.67.88-.98,1.29-.32.41-.59.82-.81,1.24-.37.64-.79,1.26-1.24,1.85-.45.6-.82,1.24-1.12,1.91-.15.3-.36.59-.62.87-.26.28-.51.57-.73.87-.26.37-.51.84-.73,1.4-.26.6-.55,1.19-.87,1.77-.32.58-.63,1.15-.93,1.71-.08.11-.3.24-.67.39.07.41.08.68.03.81-.06.13-.31.38-.76.76.11.26.2.52.25.79.06.26-.1.54-.48.84-.15.15-.22.34-.22.56.15.64-.06,1.27-.62,1.91-.3.3-.4.57-.31.81.09.24.18.5.25.76-.22.37-.42.66-.59.87-.17.21-.33.36-.48.45-.15.09-.33.15-.53.17-.21.02-.46,0-.76-.03-.45-.04-.84-.32-1.18-.84-.34-.52-.47-1.03-.39-1.52.19-.86.37-1.71.56-2.56.19-.84.39-1.69.62-2.56.04-.22.11-.45.22-.67.11-.22.22-.45.34-.67.34-.71.66-1.4.98-2.08.32-.67.66-1.37,1.04-2.08.11-.26.25-.52.42-.79s.33-.52.48-.79c.22-.34.41-.66.56-.98.15-.32.22-.66.22-1.04l-3.65,2.53c-.41.3-.81.57-1.21.81-.39.24-.83.51-1.32.81.11.22.07.45-.14.67-.21.22-.44.43-.7.62-.71.56-1.38,1.17-1.99,1.83-.62.66-1.23,1.32-1.83,1.99-.56.64-1.17,1.24-1.83,1.8-.66.56-1.3,1.1-1.94,1.63-.64.52-1.24.82-1.8.9-.56.07-1.14-.04-1.74-.34-.07-.08-.15-.11-.22-.11s-.15-.02-.22-.06c-1.12-.34-1.52-1.05-1.18-2.13l.34-1.57c.04-.19.08-.37.11-.53.04-.17.09-.33.17-.48l1.35-1.97c.19-.3.39-.61.62-.93.22-.32.43-.66.62-1.04v-.62c0-.15.04-.31.11-.48.07-.17.18-.36.31-.56.13-.21.31-.51.53-.93.19-.3.35-.61.48-.93.13-.32.29-.63.48-.93l3.48-5.95c.41-.71.79-1.42,1.12-2.13.34-.71.73-1.42,1.18-2.14.52-.86,1.08-1.69,1.66-2.5.58-.81,1.15-1.64,1.71-2.5.41-.67.85-1.34,1.32-1.99.47-.66.85-1.36,1.15-2.11.3-.9.86-1.59,1.69-2.08.41-.26.85-.45,1.32-.56.47-.11.93-.22,1.38-.34.04.19.05.36.03.51-.02.15,0,.32.03.51.22-.07.45-.15.67-.22.22-.07.43-.15.62-.22.41.08.63.25.65.53.02.28-.03.59-.14.93-.11.3-.23.58-.37.84-.13.26-.29.53-.48.79-.52.79-1.07,1.56-1.63,2.33s-1.11,1.54-1.63,2.33c-.6.86-1.21,1.7-1.83,2.53s-1.13,1.7-1.54,2.64c0,.15-.11.34-.34.56-.52.53-.94,1.09-1.24,1.69-.3.6-.66,1.2-1.07,1.8-.53.75-1.02,1.51-1.49,2.28-.47.77-.96,1.53-1.49,2.28-.37.53-.72,1.04-1.04,1.54-.32.51-.46,1.04-.42,1.6l-1.29.84c0,.26.07.49.2.67.13.19.05.41-.25.67-.22.19-.42.37-.59.53-.17.17-.35.35-.53.53.04.04.09.11.17.22l.96-.73c.3-.19.53-.44.7-.76.17-.32.48-.55.93-.7.34-.07.66-.26.98-.56.32-.3.63-.6.93-.9.3-.22.54-.47.73-.73.19-.15.33-.29.42-.42.09-.13.2-.23.31-.31.52-.3,1.03-.63,1.52-.98.49-.36.99-.74,1.52-1.15.52-.41,1.07-.8,1.63-1.15.56-.36,1.1-.8,1.63-1.32.19-.19.43-.35.73-.48.3-.13.6-.27.9-.42.19-.11.38-.23.59-.37.21-.13.4-.27.59-.42l2.75-1.97c.15-.11.31-.22.48-.31.17-.09.33-.12.48-.08ZM569.75,25.21l.22.73.73-1.18-.96.45ZM573.34,21.11l-.73-.28c-.08,0-.18.05-.31.14-.13.09-.2.18-.2.25l.06-.06c-.04.22-.04.39,0,.51,0,.11.06.19.17.22l1.01-.79ZM573.85,36.95c.04.07.11.06.22-.06-.04-.04-.05-.07-.03-.11s0-.06-.03-.06c-.08-.04-.15-.02-.22.06,0,.07.02.13.06.17ZM576.32,36.45c-.08.07-.13.14-.17.2-.04.06-.09.12-.17.2l.45-.22-.11-.17ZM578.01,40.16c-.11-.15-.25-.16-.42-.03-.17.13-.33.32-.48.56-.15.24-.28.49-.39.73-.11.24-.19.42-.22.53l.22.06,1.29-1.85ZM579.64,37.46c0-.19.06-.34.17-.45.11-.11.24-.22.39-.34.04-.04.07-.06.11-.08.04-.02.09-.23.17-.65l-1.85,1.85.11.11.9-.45Z\\\" />\\n  </g>\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"dashboard\",\n  \"use\": \"dashboard-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"dashboard\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"m1.3333 0h8c0.73637 0 1.3334 0.59695 1.3334 1.3333v21.333c0 0.7363-0.597 1.3333-1.3334 1.3333h-8c-0.73638 0-1.3333-0.597-1.3333-1.3333v-21.333c0-0.73638 0.59695-1.3333 1.3333-1.3333zm6.6667 21.333v-18.667h-5.3333v18.667h5.3333zm13.333-18.667v2.6667h-5.3333v-2.6667h5.3333zm-6.6666-2.6667h8c0.7363 0 1.3333 0.59695 1.3333 1.3333v5.3333c0 0.73638-0.597 1.3333-1.3333 1.3333h-8c-0.7364 0-1.3334-0.59695-1.3334-1.3333v-5.3333c0-0.73638 0.597-1.3333 1.3334-1.3333zm6.6666 13.333v8h-5.3333v-8h5.3333zm-6.6666-2.6666h8c0.7363 0 1.3333 0.5969 1.3333 1.3333v10.667c0 0.7363-0.597 1.3333-1.3333 1.3333h-8c-0.7364 0-1.3334-0.597-1.3334-1.3333v-10.667c0-0.7364 0.597-1.3333 1.3334-1.3333z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"play\",\n  \"use\": \"play-usage\",\n  \"viewBox\": \"0 0 20 20\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\" fill=\\\"none\\\" id=\\\"play\\\">\\n    <path d=\\\"M18 10L3 18.6603L3 1.33974L18 10Z\\\" stroke=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export const SizeOptionsStyles = {\n    sizeOptionsContainer: {\n        direction: 'column',\n        justify: 'center',\n        align: 'start',\n        spacing: '2'\n    },\n    sizeOptionTextContainer: {\n        direction: 'row',\n        justify: 'space-between',\n        alignItems: 'center',\n        width: '100%'\n    },\n    sizeOptionTextWrapper: {\n        direction: 'row',\n        alignItems: 'flex-start'\n    },\n    sizeOptionButton: {\n        padding: '4',\n        size: 'sm',\n        width: '100%',\n        _active: {\n            borderColor: 'black1'\n        }\n    },\n    sizeOptionText: {\n        color: 'black3a',\n        textTransform: 'none'\n    },\n\n    sizeOptionPriceWrapper: {\n        direction: 'column',\n        spacing: '0',\n        alignItems: 'flex-start',\n        flex: 1,\n        minW: 0\n    },\n\n    sizeOptionValue: (sizeNotOrderable) => ({\n        width: '12',\n        ...(sizeNotOrderable && {\n            color: 'black3a',\n            textDecoration: 'line-through',\n            '&::before': {\n                content: '\"\\\\00a0\"'\n            },\n            '&::after': {\n                content: '\"\\\\00a0\"'\n            }\n        })\n    })\n}\n","import {HTTPNotFound, HTTPError} from '@salesforce/pwa-kit-react-sdk/ssr/universal/errors'\nimport {API_ERROR_MESSAGE} from '@salesforce/retail-react-app/app/constants'\nimport {useIntl} from 'react-intl'\nimport {useCartErrorHandling} from './use-cart-error-handling'\n\nexport const useErrorToast = () => {\n    const {formatMessage} = useIntl()\n    const {getErrorMessage} = useCartErrorHandling()\n\n    return (error) => {\n        const errorMessage = error ? getErrorMessage(error) : formatMessage(API_ERROR_MESSAGE)\n        console.error(errorMessage)\n    }\n}\n\nexport const handleError = (error, itemType) => {\n    const errorStatus = error?.status || error?.response?.status || 500\n    switch (errorStatus) {\n        case 404:\n            throw new HTTPNotFound(`${itemType} Not Found.`)\n        default:\n            throw new HTTPError(errorStatus, `HTTP Error ${errorStatus} occurred.`)\n    }\n}\n","import React, {useState} from 'react'\nimport PropTypes from 'prop-types'\n\nimport {usePdpStaticContent} from 'pandora-shared-app/overrides/app/components/pdp-amplience-static-content'\nimport {Link} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {FullDrawerSheet} from 'pandora-shared-app/overrides/app/components/drawer-sheet'\n\nconst AmplienceLinkInfo = ({\n    contentAssetId,\n    linkText,\n    linkVariant = 'linkUnderline',\n    virtualPagePath,\n    customView,\n    innerFlexGap\n}) => {\n    const [deliveryKey, setDeliveryKey] = useState(null)\n    const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n    const {Component: AmplienceInfo, drawerTitle = ''} = usePdpStaticContent({\n        assetKeys: [deliveryKey],\n        innerFlexGap\n    })\n\n    const toggleDrawer = () => {\n        setIsDrawerOpen((prev) => !prev)\n\n        // we set delivery key only when user opens a drawer for the first time to make sure we don't send request for content if user didn't click a link\n        if (contentAssetId && !deliveryKey) {\n            setDeliveryKey(contentAssetId)\n        }\n    }\n\n    return (\n        <>\n            {customView ? (\n                React.createElement(customView, {onClick: toggleDrawer})\n            ) : (\n                <Link\n                    onClick={toggleDrawer}\n                    textStyle=\"bodySm\"\n                    colorScheme=\"blue\"\n                    variant={linkVariant}\n                    data-auto={`amplience-link-info-${contentAssetId}`}\n                    data-testid={`amplience-link-info-${contentAssetId}`}\n                    mt={8}\n                >\n                    {linkText}\n                </Link>\n            )}\n\n            <FullDrawerSheet\n                isOpen={isDrawerOpen}\n                onClose={toggleDrawer}\n                headerText={drawerTitle}\n                bodyContent={<AmplienceInfo />}\n                virtualPagePath={virtualPagePath}\n            />\n        </>\n    )\n}\n\nAmplienceLinkInfo.propTypes = {\n    contentAssetId: PropTypes.string.isRequired,\n    linkText: PropTypes.string,\n    virtualPagePath: PropTypes.string,\n    linkVariant: PropTypes.string,\n    customView: PropTypes.elementType,\n    innerFlexGap: PropTypes.number\n}\n\nexport default AmplienceLinkInfo\n","export const SizeOptionPriceStyles = {\n    container: {\n        direction: 'column',\n        spacing: '0.5',\n        alignItems: 'flex-start',\n        flex: 1,\n        minW: 0\n    },\n    priceRow: {\n        direction: 'row',\n        spacing: '1',\n        alignItems: 'center',\n        flexWrap: 'wrap'\n    },\n    salePrice: {\n        color: 'pandoraPurple',\n        textStyle: 'caption'\n    },\n    originalPrice: {\n        textDecoration: 'line-through',\n        textStyle: 'caption'\n    },\n    standardPrice: {\n        textStyle: 'caption'\n    },\n    oosPrice: {\n        color: 'black3a',\n        textStyle: 'caption'\n    },\n    oosRow: {\n        position: 'relative'\n    },\n    oosLine: {\n        position: 'absolute',\n        top: '50%',\n        left: 0,\n        right: 0,\n        height: '1px',\n        bg: 'black3a',\n        zIndex: 1\n    },\n    secondaryRow: {\n        direction: 'row',\n        spacing: '0.5',\n        alignItems: 'center',\n        flexWrap: 'wrap'\n    },\n    secondaryText: {\n        color: 'black3a',\n        textStyle: 'caption',\n        textTransform: 'none'\n    },\n    infoIconWrapper: {\n        display: 'inline-flex',\n        alignItems: 'center',\n        zIndex: '1',\n        position: 'relative',\n        cursor: 'pointer'\n    },\n    infoIcon: {\n        boxSize: 2.5,\n        color: 'black3a'\n    },\n    memberTooltipWrapper: {\n        display: 'inline-flex',\n        alignItems: 'center',\n        zIndex: '1',\n        position: 'relative',\n        sx: {'& svg': {boxSize: 2.5}}\n    },\n    skeleton: {\n        width: '50px',\n        height: '14px',\n        borderRadius: 'sm'\n    }\n}\n","import React, {useCallback} from 'react'\nimport PropTypes from 'prop-types'\nimport {\n    Stack,\n    Text,\n    HStack,\n    Box,\n    Skeleton\n} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {InfoIcon} from '@salesforce/retail-react-app/app/components/icons'\nimport {useIntl} from 'react-intl'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {LD_KEYS as SHARED_LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {formatCurrencyDisplay} from 'pandora-shared-app/overrides/app/utils/price'\nimport AmplienceLinkInfo from 'pandora-shared-app/overrides/app/components/amplience-link-info'\nimport MemberPriceTooltip from 'pandora-shared-app/overrides/app/components/product-tile/partials/member-price-tooltip'\nimport {SizeOptionPriceStyles as styles} from './size-option-price.styles'\n\nconst EuPricingIcon = ({onClick}) => (\n    <Box\n        onClick={(e) => {\n            e.stopPropagation()\n            onClick(e)\n        }}\n        {...styles.infoIconWrapper}\n    >\n        <InfoIcon\n            {...styles.infoIcon}\n            data-testid=\"size-option-eu-pricing-icon\"\n            data-auto=\"size-option-eu-pricing-icon\"\n        />\n    </Box>\n)\n\nEuPricingIcon.propTypes = {\n    onClick: PropTypes.func\n}\n\n/**\n * Lightweight inline price display for a single size option.\n * Renders four variants matching the Figma spec:\n * - Standard: single price in black\n * - Sale: discounted price (purple) + original (struck-through)\n * - Member: standard price + member price line below\n * - EU: sale display + \"Original $X (i)\" line below\n *\n * Note: Percentage discount is intentionally NOT shown (Figma spec: save space).\n */\nconst SizeOptionPrice = ({\n    price,\n    originalPrice,\n    lowestPrice,\n    memberPrice,\n    currency,\n    orderable = true,\n    isLoading = false\n}) => {\n    const {formatNumber, formatMessage, locale} = useIntl()\n    const isEUPricingEnabled = useVariant(LD_KEYS.enableEUPricing, false)\n    const showMemberPrice = useVariant(SHARED_LD_KEYS.enableMemberPricing, false)\n    const enableLocalizedCurrencyLabel = useVariant(\n        SHARED_LD_KEYS.enableLocalizedCurrencyLabel,\n        false\n    )\n\n    const formatPrice = useCallback(\n        (value) => {\n            const formatted = enableLocalizedCurrencyLabel\n                ? formatCurrencyDisplay(formatNumber, value, currency, {labelLocale: locale})\n                : formatNumber(value, {\n                      style: 'currency',\n                      currency,\n                      minimumFractionDigits: 2,\n                      maximumFractionDigits: 2\n                  })\n            return formatted.replace(/\\u00A0/g, ' ')\n        },\n        [formatNumber, currency, enableLocalizedCurrencyLabel, locale]\n    )\n\n    if (isLoading) {\n        return (\n            <Stack\n                {...styles.container}\n                data-testid=\"size-option-price-skeleton\"\n                data-auto=\"size-option-price-skeleton\"\n            >\n                <Skeleton {...styles.skeleton} />\n            </Stack>\n        )\n    }\n\n    if (price == null) return null\n\n    const isOnSale = originalPrice > price\n    const hasLowestPrice = isEUPricingEnabled && lowestPrice?.value != null\n    const hasMemberPrice = showMemberPrice && memberPrice?.value != null\n\n    const salePriceStyle = orderable ? styles.salePrice : styles.oosPrice\n    const originalPriceStyle = orderable ? styles.originalPrice : styles.oosPrice\n    const standardPriceStyle = orderable ? styles.standardPrice : styles.oosPrice\n\n    const priceLabel = isOnSale\n        ? formatMessage(\n              {\n                  id: 'size_option.aria.sale_price',\n                  defaultMessage: 'Sale price {price}, original price {originalPrice}'\n              },\n              {price: formatPrice(price), originalPrice: formatPrice(originalPrice)}\n          )\n        : formatMessage(\n              {id: 'size_option.aria.standard_price', defaultMessage: 'Price {price}'},\n              {price: formatPrice(price)}\n          )\n\n    return (\n        <Stack\n            {...styles.container}\n            data-testid=\"size-option-price\"\n            data-auto=\"size-option-price\"\n            role=\"group\"\n            aria-label={priceLabel}\n        >\n            {/* Primary price row */}\n            <Stack {...styles.priceRow} {...(!orderable && styles.oosRow)} aria-hidden=\"true\">\n                {!orderable && <Box {...styles.oosLine} />}\n                {isOnSale ? (\n                    <>\n                        <Text\n                            {...salePriceStyle}\n                            data-testid=\"size-option-sale-price\"\n                            data-auto=\"size-option-sale-price\"\n                        >\n                            {formatPrice(price)}\n                        </Text>\n                        <Text\n                            {...originalPriceStyle}\n                            data-testid=\"size-option-original-price\"\n                            data-auto=\"size-option-original-price\"\n                        >\n                            {formatPrice(originalPrice)}\n                        </Text>\n                    </>\n                ) : (\n                    <Text\n                        {...standardPriceStyle}\n                        data-testid=\"size-option-standard-price\"\n                        data-auto=\"size-option-standard-price\"\n                    >\n                        {formatPrice(price)}\n                    </Text>\n                )}\n            </Stack>\n\n            {/* EU omnibus pricing row */}\n            {hasLowestPrice && (\n                <HStack\n                    {...styles.secondaryRow}\n                    {...(!orderable && styles.oosRow)}\n                    data-testid=\"size-option-eu-price\"\n                    data-auto=\"size-option-eu-price\"\n                    aria-label={formatMessage(\n                        {\n                            id: 'size_option.aria.eu_lowest_price',\n                            defaultMessage: 'Original price {lowestPrice}'\n                        },\n                        {lowestPrice: formatPrice(lowestPrice.value)}\n                    )}\n                >\n                    {!orderable && <Box {...styles.oosLine} />}\n                    <Text {...styles.secondaryText} aria-hidden=\"true\">\n                        {formatMessage({\n                            id: 'size_option.label.originalPrice',\n                            defaultMessage: 'Original'\n                        })}\n                    </Text>\n                    <Text {...styles.secondaryText} aria-hidden=\"true\">\n                        {formatPrice(lowestPrice.value)}\n                    </Text>\n                    <AmplienceLinkInfo\n                        contentAssetId=\"eu-pricing-info\"\n                        customView={EuPricingIcon}\n                    />\n                </HStack>\n            )}\n\n            {/* Member pricing row */}\n            {hasMemberPrice && (\n                <HStack\n                    {...styles.secondaryRow}\n                    {...(!orderable && styles.oosRow)}\n                    data-testid=\"size-option-member-price\"\n                    data-auto=\"size-option-member-price\"\n                    aria-label={formatMessage(\n                        {\n                            id: 'size_option.aria.member_price',\n                            defaultMessage: 'Member price {memberPrice}'\n                        },\n                        {memberPrice: formatPrice(memberPrice.value)}\n                    )}\n                >\n                    {!orderable && <Box {...styles.oosLine} />}\n                    <Text {...styles.secondaryText} aria-hidden=\"true\">\n                        {formatPrice(memberPrice.value)}\n                    </Text>\n                    <Text {...styles.secondaryText} aria-hidden=\"true\">\n                        {formatMessage({\n                            id: 'product_tile.label.member',\n                            defaultMessage: 'Member'\n                        })}\n                    </Text>\n                    <Box {...styles.memberTooltipWrapper} onClick={(e) => e.stopPropagation()}>\n                        <MemberPriceTooltip />\n                    </Box>\n                </HStack>\n            )}\n        </Stack>\n    )\n}\n\nSizeOptionPrice.propTypes = {\n    price: PropTypes.number,\n    originalPrice: PropTypes.number,\n    lowestPrice: PropTypes.shape({\n        value: PropTypes.number,\n        percentage: PropTypes.shape({\n            lowest: PropTypes.string,\n            original: PropTypes.string\n        })\n    }),\n    memberPrice: PropTypes.shape({\n        value: PropTypes.number,\n        type: PropTypes.string\n    }),\n    currency: PropTypes.string.isRequired,\n    orderable: PropTypes.bool,\n    isLoading: PropTypes.bool\n}\n\nexport default SizeOptionPrice\n","import React, {useEffect, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\nimport {SizeOptionsStyles} from './size-options.styles'\nimport {Stack, Text, Button} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport useProductDetail from 'product-details/overrides/app/pages/product-detail/hooks/use-product-detail'\nimport {useProductDetailsLinkAnalytics} from 'pandora-shared-app/overrides/app/hooks/use-product-details-analytics'\nimport {TEALIUM_CONSTANTS} from 'pandora-shared-app/overrides/app/constants'\nimport {getFormattedMeasurementValue, getFormattedSizeName} from './utils'\nimport {isFavStoreOrderable} from 'pandora-shared-app/overrides/app/utils/cnc-store-utils'\nimport SizeOptionPrice from './partials/size-option-price'\n\nconst SizeOptions = ({\n    sizes = [],\n    value = null,\n    onChange,\n    isNotifyMe = false,\n    isClickAndCollect = false,\n    getIsNotifyMeForSize,\n    handleOutOfStockSizeSelection,\n    selectedRegionalSize,\n    sizeDataMap,\n    productType,\n    selectedSizeType,\n    disableOOSVariants = false,\n    sizePriceMap,\n    isPricesLoading = false,\n    currency\n}) => {\n    const intl = useIntl()\n    const {trackLinkEvent} = useProductDetailsLinkAnalytics()\n    const {product} = useProductDetail()\n    const isSizeOrderableForFavStore = isFavStoreOrderable()\n\n    // Refs for each size button to enable scroll-into-view\n    const buttonRefs = useRef({})\n    const selectedName = value?.size?.name ?? value?.name\n\n    // Scroll selected size into view when value changes (e.g., from ring sizer)\n    useEffect(() => {\n        if (selectedName && buttonRefs.current[selectedName]) {\n            // Small delay to ensure drawer animation completes\n            const timeoutId = setTimeout(() => {\n                buttonRefs.current[selectedName]?.scrollIntoView({\n                    behavior: 'smooth',\n                    block: 'center'\n                })\n            }, 100)\n            return () => clearTimeout(timeoutId)\n        }\n    }, [selectedName])\n\n    const renderSizeStatusText = (size) => {\n        if (isClickAndCollect) {\n            return (\n                <Text textStyle={'caption'} {...SizeOptionsStyles.sizeOptionText}>\n                    {intl.formatMessage({\n                        defaultMessage: 'Select to find in store',\n                        id: 'product_view.button.find_in_store'\n                    })}\n                </Text>\n            )\n        }\n        // Check per-variant notify me if available, otherwise use global flag\n        const sizeHasNotifyMe = getIsNotifyMeForSize ? getIsNotifyMeForSize(size.value) : isNotifyMe\n        if (sizeHasNotifyMe) {\n            return (\n                <Text textStyle={'caption'} {...SizeOptionsStyles.sizeOptionText}>\n                    {intl.formatMessage({\n                        defaultMessage: 'Notify me',\n                        id: 'product_view.button.notify_me_size'\n                    })}\n                </Text>\n            )\n        }\n        return (\n            <Text textStyle={'caption'} {...SizeOptionsStyles.sizeOptionText}>\n                {intl.formatMessage({\n                    defaultMessage: 'Sold out',\n                    id: 'product_view.button.sold_out_size'\n                })}\n            </Text>\n        )\n    }\n\n    return (\n        <Stack\n            {...SizeOptionsStyles.sizeOptionsContainer}\n            role=\"listbox\"\n            data-cs-override-id=\"PDP_sizes_overlay\"\n            aria-label={intl.formatMessage({\n                defaultMessage: 'Size Options',\n                id: 'product_view.list.assistive_msg.size_option'\n            })}\n        >\n            {sizes.map((size, index) => {\n                // Disable OOS \"Sold out\" sizes in buy-from-tile (disableOOSVariants=true)\n                // but keep \"Notify me\" and C&C sizes clickable\n                const sizeHasNotifyMe = getIsNotifyMeForSize\n                    ? getIsNotifyMeForSize(size.value)\n                    : isNotifyMe\n                const isOOSAndDisabled =\n                    !size.orderable && disableOOSVariants && !sizeHasNotifyMe && !isClickAndCollect\n\n                return (\n                    <Button\n                        key={size.name}\n                        ref={(el) => (buttonRefs.current[size.name] = el)}\n                        {...SizeOptionsStyles.sizeOptionButton}\n                        role=\"option\"\n                        aria-posinset={index + 1}\n                        aria-setsize={sizes.length}\n                        colorScheme=\"primary\"\n                        variant={'outline'}\n                        data-auto={\n                            !size.orderable && sizeHasNotifyMe && isClickAndCollect\n                                ? 'notifyMeButton'\n                                : 'sizeOptionButton'\n                        }\n                        onClick={() => {\n                            !size.orderable &&\n                                trackLinkEvent(\n                                    product,\n                                    TEALIUM_CONSTANTS.ESTORE_EVENT.PRODUCT_OUT_OF_STOCK\n                                )\n                            const sizeHasNotifyMe = getIsNotifyMeForSize\n                                ? getIsNotifyMeForSize(size.value)\n                                : isNotifyMe\n                            !size.orderable &&\n                            (sizeHasNotifyMe || isClickAndCollect) &&\n                            !isSizeOrderableForFavStore\n                                ? handleOutOfStockSizeSelection(size)\n                                : onChange(size)\n                        }}\n                        isActive={selectedName === size.name}\n                        isDisabled={isOOSAndDisabled}\n                        data-testid={isOOSAndDisabled ? 'size-option-disabled' : 'size-option'}\n                    >\n                        <Stack {...SizeOptionsStyles.sizeOptionTextContainer}>\n                            <Stack {...SizeOptionsStyles.sizeOptionTextWrapper}>\n                                <Text\n                                    textStyle={'caption'}\n                                    sx={SizeOptionsStyles.sizeOptionValue(!size.orderable)}\n                                >\n                                    {getFormattedSizeName(\n                                        size,\n                                        selectedRegionalSize,\n                                        sizeDataMap,\n                                        productType\n                                    )}\n                                </Text>\n                                {!sizePriceMap && !size.orderable && renderSizeStatusText(size)}\n                            </Stack>\n                            {isPricesLoading && (\n                                <Stack {...SizeOptionsStyles.sizeOptionPriceWrapper}>\n                                    <SizeOptionPrice isLoading currency={currency} />\n                                </Stack>\n                            )}\n                            {!isPricesLoading && sizePriceMap?.[size.value] && (\n                                <Stack {...SizeOptionsStyles.sizeOptionPriceWrapper}>\n                                    <SizeOptionPrice\n                                        {...sizePriceMap[size.value]}\n                                        currency={sizePriceMap[size.value].currency || currency}\n                                        orderable={size.orderable}\n                                    />\n                                    {!size.orderable && renderSizeStatusText(size)}\n                                </Stack>\n                            )}\n                            <Text textStyle={'caption'} {...SizeOptionsStyles.sizeOptionText}>\n                                {getFormattedMeasurementValue(\n                                    size,\n                                    selectedSizeType,\n                                    selectedRegionalSize,\n                                    sizeDataMap\n                                )}\n                            </Text>\n                        </Stack>\n                    </Button>\n                )\n            })}\n        </Stack>\n    )\n}\n\nSizeOptions.propTypes = {\n    sizes: PropTypes.arrayOf(\n        PropTypes.shape({\n            name: PropTypes.string.isRequired,\n            value: PropTypes.string,\n            orderable: PropTypes.bool\n        })\n    ).isRequired,\n    value: PropTypes.oneOfType([\n        PropTypes.shape({\n            size: PropTypes.shape({\n                name: PropTypes.string.isRequired\n            }).isRequired\n        }),\n        PropTypes.shape({\n            name: PropTypes.string.isRequired\n        })\n    ]),\n    onChange: PropTypes.func.isRequired,\n    isNotifyMe: PropTypes.bool,\n    getIsNotifyMeForSize: PropTypes.func,\n    handleNotifyMeSize: PropTypes.func,\n    isClickAndCollect: PropTypes.bool,\n    handleOutOfStockSizeSelection: PropTypes.func,\n    selectedRegionalSize: PropTypes.shape({\n        key: PropTypes.string,\n        label: PropTypes.string\n    }),\n    selectedSizeType: PropTypes.shape({\n        key: PropTypes.string,\n        label: PropTypes.string\n    }),\n    sizeDataMap: PropTypes.object,\n    productType: PropTypes.string,\n    disableOOSVariants: PropTypes.bool,\n    sizePriceMap: PropTypes.object,\n    isPricesLoading: PropTypes.bool,\n    currency: PropTypes.string\n}\n\nexport default SizeOptions\n","import {useEffect, useState} from 'react'\nimport {useParams, useLocation} from 'react-router-dom'\nimport {useProducts} from 'pandora-shared-app/overrides/app/hooks/use-products'\nimport {useCategory} from 'pandora-shared-app/overrides/app/hooks/use-category'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {handleError} from './use-error-handling'\nimport {LD_KEYS} from 'product-details/overrides/app/api_keys/ld-keys'\nimport {useUrlMapping} from 'pandora-shared-app/overrides/app/hooks/use-url-mapping'\nimport {buildRedirectUrl} from 'pandora-shared-app/overrides/app/hooks/use-product-search-url-handler'\n\nconst useProductDetail = () => {\n    const location = useLocation()\n    const urlParams = new URLSearchParams(location.search)\n    const {productId} = useParams()\n    const [currentProductId, setCurrentProductId] = useState(productId)\n\n    const enablePdpUrlMappingRedirect = useVariant(LD_KEYS.enablePdpUrlMappingRedirect, false)\n    const {data: urlMapping} = useUrlMapping({}, {enabled: enablePdpUrlMappingRedirect})\n\n    /* eslint-disable no-undef */\n    useEffect(() => {\n        if (typeof globalThis.window !== 'undefined' && urlMapping?.destinationUrl) {\n            globalThis.window.location.href = buildRedirectUrl(urlMapping)\n        }\n    }, [urlMapping])\n    /* eslint-enable no-undef */\n\n    const {\n        product,\n        isProductLoading,\n        isProductFetching,\n        isProductError,\n        productError,\n        isFetchedAfterMount\n    } = useProducts(currentProductId, urlParams, true, true, true)\n    const enableGracefulCsrErrorHandling = useVariant(\n        LD_KEYS.enablePdpGracefulCsrErrorHandling,\n        false\n    )\n\n    // Note: Since category needs id from product detail, it can't be server side rendered atm\n    // until we can do dependent query on server\n    const {\n        data: category,\n        isError: isCategoryError,\n        error: categoryError\n    } = useCategory({\n        parameters: {\n            id: product?.primaryCategoryId,\n            levels: 1\n        }\n    })\n\n    const [primaryCategory, setPrimaryCategory] = useState(category)\n    // This page uses the `primaryCategoryId` to retrieve the category data. This attribute\n    // is only available on `master` products. Since a variation will be loaded once all the\n    // attributes are selected (to get the correct inventory values), the category information\n    // is overridden. This will allow us to keep the initial category around until a different\n    // master product is loaded.\n    useEffect(() => {\n        if (category) {\n            setPrimaryCategory(category)\n        }\n    }, [category])\n\n    useEffect(() => {\n        setCurrentProductId(productId)\n    }, [productId])\n\n    if (isProductError && !urlMapping?.destinationUrl) {\n        if (enableGracefulCsrErrorHandling) {\n            if (!product) {\n                // SSR failed - no product data available, show error page\n                console.error('Product error SSR - no data available')\n                handleError(productError, 'Product')\n            } else {\n                // CSR refetch failed but SSR data exists - show SSR data and log error\n                console.error('Product query failed at CSR but showing SSR data:', productError)\n            }\n        } else {\n            // Old behavior: Always show error page\n            handleError(productError, 'Product')\n        }\n    }\n    if (isCategoryError) {\n        if (enableGracefulCsrErrorHandling) {\n            // Category isn't SSR'd (depends on product data), so just log the error instead of blocking PDP by showing error page.\n            // PDP can work without category data, breadcrumb will keep on showing skeleton but better than page not found.\n            console.error('Category query failed, continuing without category data:', categoryError)\n        } else {\n            handleError(categoryError, 'Category')\n        }\n    }\n\n    return {\n        product,\n        category,\n        primaryCategory,\n        isProductLoading,\n        isProductFetching,\n        isFetchedAfterMount,\n        setCurrentProductId\n    }\n}\n\nexport default useProductDetail\n","import {getConfig} from '@salesforce/pwa-kit-runtime/utils/ssr-config'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {importRemote} from '@module-federation/utilities'\nimport {getAssetUrl} from '@salesforce/pwa-kit-react-sdk/ssr/universal/utils'\nexport const getOrigin = (url) => {\n    return new URL(url).origin\n}\n\nconst MRT_APPS = ['content', 'categorySlotContent', 'plp', 'pdp']\n\n/**\n * Get sandbox origin URL from app config.\n * Add sandboxOrigins to your app config (package.json mobify.app section):\n * {\n *   \"sandboxOrigins\": {\n *     \"content\": \"https://sandboxes-dev-content.sfdc-xxx.exp-delivery.com\",\n *     \"plp\": \"https://sandboxes-dev-plp.sfdc-xxx.exp-delivery.com\",\n *     \"pdp\": \"https://sandboxes-dev-pdp.sfdc-xxx.exp-delivery.com\"\n *   }\n * }\n */\nconst getSandboxOrigin = (remoteApp, config) => {\n    const sandboxOrigins = config?.app?.sandboxOrigins\n    if (!sandboxOrigins) return null\n\n    // categorySlotContent uses the same origin as content\n    const appKey = remoteApp === 'categorySlotContent' ? 'content' : remoteApp\n    return sandboxOrigins[appKey]\n}\n\nexport const getRemoteUrl = async (remoteApp, _appOrigin) => {\n    const appOrigin = _appOrigin\n    const debugLog = (message, data) => {\n        if (\n            process.env.NODE_ENV === 'development' ||\n            window?.localStorage?.getItem('federation-debug')\n        ) {\n            console.group(`🔗 Remote URL Debug [${remoteApp}]: ${message}`)\n            if (data) console.log('Data:', data)\n            console.groupEnd()\n        }\n    }\n\n    try {\n        if (isServer) {\n            debugLog('Server-side rendering, skipping remote URL resolution')\n            return\n        }\n\n        // Check cache first\n        if (\n            window.__remote_url_cache &&\n            /* eslint-disable-next-line */\n            window.__remote_url_cache.hasOwnProperty(remoteApp)\n        ) {\n            debugLog('Using cached remote URL', {\n                cachedUrl: window.__remote_url_cache[remoteApp]\n            })\n            return window.__remote_url_cache[remoteApp]\n        }\n\n        const config = getConfig()\n        debugLog('Got config', {\n            hasConfig: !!config,\n            hasRemoteFileConfig: !!config?.app?.remoteFileConfig,\n            availableRemotes: Object.keys(config?.app?.remoteFileConfig || {})\n        })\n\n        const remoteConfig = config?.app?.remoteFileConfig?.[remoteApp]\n        if (!remoteConfig) {\n            debugLog('Remote config not found', {\n                requestedApp: remoteApp,\n                availableApps: Object.keys(config?.app?.remoteFileConfig || {})\n            })\n            throw new Error(`remoteFileConfig.${remoteApp} is not defined`)\n        }\n\n        debugLog('Found remote config', remoteConfig)\n\n        // Check for sandbox config\n        const sandboxOrigin = getSandboxOrigin(remoteApp, config)\n        debugLog('Sandbox origin check', {\n            sandboxOrigin,\n            hasSandboxOrigin: !!sandboxOrigin\n        })\n\n        const shouldUseAppOrigin =\n            process.env.NODE_ENV === 'production' && MRT_APPS.indexOf(remoteApp) > -1\n\n        // Determine the origin to use:\n        // 1. If sandbox origin is set, use it (highest priority for sandbox testing)\n        // 2. In production: use appOrigin or config URL\n        // 3. In local dev: use config URL (localhost)\n        let origin\n        if (sandboxOrigin) {\n            origin = sandboxOrigin\n        } else if (shouldUseAppOrigin) {\n            origin = appOrigin || getOrigin(remoteConfig.url)\n        } else {\n            origin = getOrigin(remoteConfig.url)\n        }\n        const remoteEntryFileName = remoteConfig.remoteEntryFileName\n\n        // When using sandbox origin, use the proxy to avoid CORS issues\n        // The proxy path is /mobify/proxy/sandbox-{app}/ which forwards to the sandbox origin\n        const appKey = remoteApp === 'categorySlotContent' ? 'content' : remoteApp\n        const useProxy = sandboxOrigin && typeof window !== 'undefined'\n        const fetchUrl = useProxy\n            ? `/mobify/proxy/sandbox-${appKey}/get-asset-url/${remoteEntryFileName}`\n            : `${origin}/get-asset-url/${remoteEntryFileName}`\n\n        debugLog('Fetching asset URL', {\n            origin,\n            remoteEntryFileName,\n            fetchUrl,\n            useProxy\n        })\n\n        const response = await fetch(fetchUrl)\n\n        debugLog('Fetch response', {\n            ok: response.ok,\n            status: response.status,\n            statusText: response.statusText,\n            headers: Object.fromEntries(response.headers.entries())\n        })\n\n        if (!response || !response.ok) {\n            throw new Error(\n                `HTTP error! status: ${response?.status || 'unknown'} - ${\n                    response?.statusText || 'Unknown error'\n                }`\n            )\n        }\n\n        const responseData = await response.json()\n        debugLog('Response data', responseData)\n\n        const {assetUrl, baseUrl} = responseData\n\n        // Cache the results\n        window.__remote_url_cache = window.__remote_url_cache ?? {}\n        window.__remote_url_cache[remoteApp] = assetUrl\n        window.remoteAppsBaseUrl = window.remoteAppsBaseUrl ?? {}\n        window.remoteAppsBaseUrl[remoteApp] = baseUrl\n\n        debugLog('Cached URLs', {\n            assetUrl,\n            baseUrl,\n            cacheSize: Object.keys(window.__remote_url_cache).length\n        })\n\n        return assetUrl\n    } catch (err) {\n        debugLog('Error occurred', {\n            error: err.message,\n            stack: err.stack,\n            remoteApp\n        })\n        throw new Error(`Failed to get the remote URL for ${remoteApp}: ${err.message}`)\n    }\n}\n\nexport const importRemoteApp = async (remoteApp, appOrigin) => {\n    const debugLog = (message, data) => {\n        if (\n            process.env.NODE_ENV === 'development' ||\n            window?.localStorage?.getItem('federation-debug')\n        ) {\n            console.group(`🔗 Import Remote App [${remoteApp}]: ${message}`)\n            if (data) console.log('Data:', data)\n            console.groupEnd()\n        }\n    }\n\n    try {\n        debugLog('Starting import process')\n\n        const config = getConfig()\n        const remoteConfig = config.app.remoteFileConfig[remoteApp]\n\n        if (!remoteConfig) {\n            debugLog('Remote config not found', {\n                requestedApp: remoteApp,\n                availableApps: Object.keys(config?.app?.remoteFileConfig || {})\n            })\n            throw new Error(`remoteFileConfig.${remoteApp} is not defined`)\n        }\n\n        debugLog('Found remote config', remoteConfig)\n\n        if (remoteConfig.scope !== 'shell') {\n            debugLog('Resolving remote URL (non-shell scope)')\n\n            const remoteUrl = await getRemoteUrl(remoteApp, appOrigin)\n            if (!remoteUrl) {\n                debugLog('Failed to resolve remote URL')\n                throw new Error(`Could not resolve remote URL for ${remoteApp}`)\n            }\n\n            // Update the config with the resolved URL\n            const updatedUrl = remoteUrl.replace(`/${remoteConfig.remoteEntryFileName}`, '')\n            remoteConfig.url = updatedUrl\n\n            debugLog('Updated remote config with resolved URL', {\n                originalUrl: remoteConfig.url,\n                resolvedUrl: remoteUrl,\n                updatedUrl\n            })\n        } else {\n            debugLog('Using shell scope, skipping URL resolution')\n        }\n\n        debugLog('Importing remote module', remoteConfig)\n\n        const importedModule = await importRemote(remoteConfig)\n\n        debugLog('Successfully imported remote module', {\n            hasModule: !!importedModule,\n            moduleKeys: importedModule ? Object.keys(importedModule) : []\n        })\n\n        return importedModule\n    } catch (err) {\n        debugLog('Import failed', {\n            error: err.message,\n            stack: err.stack,\n            remoteApp\n        })\n        throw new Error(`Failed to import remote app ${remoteApp}: ${err.message}`)\n    }\n}\n\nexport const importRemoteSpaApp = async (remoteApp) => {\n    const config = getConfig()\n    const remoteConfig = config.app.remoteFileConfig.remoteComponent\n\n    if (!remoteConfig) {\n        throw new Error(`remoteFileConfig is not defined`)\n    }\n\n    const module = await importRemote(remoteConfig)\n\n    if (!module?.[remoteApp]) {\n        throw new Error(`Could not resolve remote URL for ${remoteApp}`)\n    }\n\n    return module?.[remoteApp]\n}\n\nexport const getRemoteAssetUrl = (appName, path) => {\n    const onClient = typeof window !== 'undefined'\n    if (onClient && window.remoteAppsBaseUrl?.[appName]) {\n        return window.remoteAppsBaseUrl[appName] + path\n    }\n    return getAssetUrl(path)\n}\n","export const InputStyle = {\n    input: {\n        color: 'black1',\n        borderColor: 'black4',\n        lineHeight: '6',\n        _focus: {\n            borderColor: 'black1',\n            boxShadow: 'none'\n        },\n        _invalid: {\n            borderColor: 'red100'\n        }\n    },\n    label: {\n        position: 'absolute',\n        transition: '0.2s',\n        pointerEvents: 'none',\n        fontWeight: '400',\n        px: '1',\n        pl: '0'\n    },\n    error: {\n        color: 'red100',\n        fontWeight: '400',\n        letterSpacing: '0rem',\n        fontFamily: 'body',\n        fontSize: '0.6875rem',\n        lineHeight: '4'\n    },\n    checkIcon: {\n        position: 'absolute',\n        boxSize: '5',\n        right: '15px',\n        top: '20px',\n        transform: 'translateY(-50%)'\n    },\n    charLimitText: {\n        textStyle: 'caption',\n        color: 'black3b'\n    },\n    inputBox: {}\n}\n","import React, {useEffect, useState} from 'react'\nimport {\n    Box,\n    FormControl,\n    FormErrorMessage,\n    FormLabel,\n    Input as ChakraInput,\n    Text\n} from '../shared/ui'\nimport {InputStyle} from './input.style'\nimport PropTypes from 'prop-types'\n\n/**\n *\n * @param {string} id - Unique identifier for the field, used for registration with useForm.\n * @param {string} label - Label displayed above the textarea.\n * @param {Function} register - Function from react-hook-form to register the field.\n * @param {Object} errors - Validation errors object from useForm.\n * @param {Object} [rules] - Optional validation rules for the field.\n * @param {Object} [dirtyFields] - Optional object indicating which fields have been modified.\n * @param {string} [defaultValue] - Optional string with default value\n * @param {\"flushed\" | \"outline\"} [variant] - Optional variant value.\n * @param {Element} [rightIcon] - Optional component used as the right icon.\n * @param {boolean} [disabled] - Optional boolean value for diabled field.\n * @param {number} [charLimit] - Optional character limit for the input.\n * @param {\"right\", \"left\", \"center\"} [charLimitAlign] - Optional charLimitAlign\n */\n\nconst Input = ({\n    id,\n    label,\n    register,\n    errors,\n    rules,\n    dirtyFields,\n    defaultValue,\n    variant = 'flushed',\n    rightIcon,\n    disabled,\n    charLimit,\n    charLimitAlign = 'right',\n    marginBottom\n}) => {\n    const [isFocused, setIsFocused] = useState(false)\n    const [charLength, setCharLength] = useState(0)\n    useEffect(() => {\n        if (defaultValue) {\n            setIsFocused(true)\n        }\n    }, [defaultValue])\n\n    const isTouched = isFocused || dirtyFields?.[id] || charLength\n\n    const placeholderFixStyles = {\n        '&:has(input:not(:placeholder-shown)) label[data-floating]': {\n            transform: 'translateY(-65%)',\n            top: 0,\n            fontSize: '2.75',\n            lineHeight: '4'\n        }\n    }\n\n    return (\n        <Box pos=\"relative\" w=\"full\">\n            <FormControl\n                isInvalid={!!errors?.[id]}\n                position=\"relative\"\n                sx={{\n                    ...placeholderFixStyles,\n                    '&:has(input:autofill) label[data-floating]': {\n                        transform: 'translateY(-65%)',\n                        top: 0,\n                        fontSize: '2.75',\n                        lineHeight: '4'\n                    },\n                    '&:has(input:-webkit-autofill) label[data-floating]': {\n                        transform: 'translateY(-65%)',\n                        top: 0,\n                        fontSize: '2.75',\n                        lineHeight: '4'\n                    }\n                }}\n            >\n                <Box mb={!errors?.[id] ? marginBottom : 0}>\n                    <ChakraInput\n                        data-testid={`input-${id}`}\n                        id={id}\n                        type=\"text\"\n                        placeholder={' '}\n                        disabled={disabled}\n                        onInput={(e) => {\n                            setCharLength(e.target.value.length)\n                        }}\n                        variant={variant}\n                        onFocus={() => setIsFocused(true)}\n                        {...register(id, rules)}\n                        {...InputStyle.input}\n                    />\n                    {charLimit && (\n                        <Text textAlign={charLimitAlign} {...InputStyle.charLimitText}>\n                            {charLimit - charLength}/{charLimit}\n                        </Text>\n                    )}\n                </Box>\n                <FormLabel\n                    data-floating\n                    htmlFor={id}\n                    fontSize={isTouched ? '2.75' : 'md'}\n                    transform={isTouched ? 'translateY(-65%)' : 'translateY(0)'}\n                    top={isTouched ? '0' : '15%'}\n                    color={disabled ? 'black4' : 'black1'}\n                    lineHeight={isTouched ? '4' : '6'}\n                    {...InputStyle.label}\n                >\n                    {label}\n                </FormLabel>\n                <FormErrorMessage\n                    as=\"span\"\n                    data-auto={`error-${id}`}\n                    mb={marginBottom}\n                    {...InputStyle.error}\n                >\n                    {errors?.[id]?.message}\n                </FormErrorMessage>\n                {!errors?.[id] && dirtyFields?.[id] && rightIcon}\n            </FormControl>\n        </Box>\n    )\n}\n\nInput.propTypes = {\n    id: PropTypes.string.isRequired,\n    label: PropTypes.string.isRequired,\n    register: PropTypes.func.isRequired,\n    rules: PropTypes.object,\n    errors: PropTypes.object,\n    dirtyFields: PropTypes.object,\n    defaultValue: PropTypes.string,\n    variant: PropTypes.oneOf(['flushed', 'outline']),\n    rightIcon: PropTypes.element,\n    disabled: PropTypes.bool,\n    charLimit: PropTypes.number,\n    charLimitAlign: PropTypes.oneOf(['right', 'left', 'center']),\n    marginBottom: PropTypes.string\n}\n\nexport default Input\n","import {useState, useEffect} from 'react'\nimport {useVariant} from './use-variant'\n\n/**\n * Custom hook to manage the tab functionality in the Product List page\n *\n * @param {Object} params - The hook parameters\n * @param {string} params.categoryDefaultTab - The default tab from useDefaultCategory\n * @param {Function} params.setUserTabPreference - Function to save user tab preference\n * @param {Object} params.TAB_NAMES - Object containing tab name constants\n * @param {boolean} params.isAmplienceLoading - Whether Amplience content is loading\n * @param {Object} params.history - React Router history object for URL manipulation\n *\n * @returns {Object} Tab state and handlers\n */\nconst useProductListTabs = ({\n    categoryDefaultTab,\n    setUserTabPreference,\n    TAB_NAMES,\n    isAmplienceLoading,\n    history\n}) => {\n    const isPlpDefaultCategoryTabEnabled = useVariant(\n        'enable-plp-default-category-tab-preferences',\n        false\n    )\n    const categoryDefaultTabIndex = categoryDefaultTab === TAB_NAMES?.DISCOVER ? 0 : 1\n\n    // Tab index state (0 = Discover, 1 = Shop)\n    const [tabIndex, setTabIndex] = useState(\n        isPlpDefaultCategoryTabEnabled ? categoryDefaultTabIndex : 0\n    )\n    // Content tab state to track current and default tabs\n    const [contentTab, setContentTab] = useState({\n        defaultTab: null,\n        currentTab: null\n    })\n\n    /**\n     * Handle tab switching between Discover and Shop\n     *\n     * @param {number} index - The index of the selected tab\n     */\n    const handleTabSwitch = (index) => {\n        const newTab = index === 1 ? TAB_NAMES.SHOP : TAB_NAMES.DISCOVER\n\n        setTabIndex(index)\n        setContentTab((prevContentTab) => ({\n            ...prevContentTab,\n            currentTab: newTab\n        }))\n\n        // Store user preference\n        setUserTabPreference(newTab)\n\n        // Check if we're in a browser environment\n        const isBrowser = typeof window !== 'undefined'\n\n        // Update URL hash or remove it based on selected tab\n        if (history) {\n            if (index === 0) {\n                // Clears hash from URL without reloading\n                if (isBrowser) {\n                    history.replace(window.location.pathname + window.location.search)\n                } else {\n                    // For test environment\n                    history.replace('/')\n                }\n            } else if (isBrowser) {\n                history.replace(window.location.pathname + window.location.search + '#shop')\n            } else {\n                // For test environment\n                history.replace('/#shop')\n            }\n        }\n    }\n\n    // Effect to handle initial tab selection based on default tab\n    useEffect(() => {\n        if (!isAmplienceLoading && categoryDefaultTab) {\n            const newTabIndex = categoryDefaultTab === TAB_NAMES.SHOP ? 1 : 0\n            setTabIndex(newTabIndex)\n            setContentTab({\n                defaultTab: categoryDefaultTab,\n                currentTab: categoryDefaultTab\n            })\n        }\n    }, [categoryDefaultTab, isAmplienceLoading, TAB_NAMES])\n\n    return {\n        tabIndex,\n        contentTab,\n        handleTabSwitch\n    }\n}\n\nexport default useProductListTabs\n","/*\n * Copyright (c) 2025, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport theme from '@salesforce/retail-react-app/app/components/shared/theme'\nimport logger from '@salesforce/retail-react-app/app/utils/logger-instance'\n\n/**\n * @param {Object} breakpoints\n * @return {string[]} Breakpoint labels ordered from smallest. For example: ['base', 'sm', 'md', 'lg', 'xl', '2xl']\n */\nconst getBreakpointLabels = (breakpoints) =>\n    Object.entries(breakpoints)\n        .sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]))\n        .map(([key]) => key)\n\nconst vwValue = /^\\d+vw$/\nconst pxValue = /^\\d+px$/\nconst emValue = /^\\d+em$/\n\nconst {breakpoints: defaultBreakpoints} = theme\nlet themeBreakpoints = defaultBreakpoints\nlet breakpointLabels = getBreakpointLabels(themeBreakpoints)\n\n/**\n * Helper to create very specific `media` attributes for responsive preload purposes.\n * @param {number} breakpointIndex\n * @return {({min?: string, max?: string} | undefined)}\n * @see {@link https://web.dev/articles/preload-responsive-images#picture}\n */\nconst obtainImageLinkMedia = (breakpointIndex) => {\n    const toMediaValue = (bp, type) => {\n        const val = themeBreakpoints[bp]\n        if (emValue.test(val)) {\n            // em value\n            const parsed = parseFloat(val)\n            return {[type]: type === 'max' ? `${parsed - 0.01}em` : `${parsed}em`}\n        }\n\n        const parsed = parseInt(val, 10)\n        return {[type]: type === 'max' ? `${parsed - 1}px` : `${parsed}px`}\n    }\n\n    const nextBp = breakpointLabels.at(breakpointIndex + 1)\n    const currentBp = breakpointLabels.at(breakpointIndex)\n    if (breakpointIndex === 0) {\n        // first\n        return toMediaValue(nextBp, 'max')\n    } else if (breakpointIndex === breakpointLabels.length - 1) {\n        // last\n        return toMediaValue(currentBp, 'min')\n    }\n    return {...toMediaValue(currentBp, 'min'), ...toMediaValue(nextBp, 'max')}\n}\n\n/**\n * @param {(number[]|string[])} widths\n */\nconst withUnit = (widths) =>\n    // By default, unitless value is interpreted as px\n    widths.map((width) => (typeof width === 'number' ? `${width}px` : width))\n\nconst isObject = (o) => o?.constructor === Object\n\n/**\n * @param {Object} widths\n * @example\n * // returns the array [10, 10, 10, 50]\n * widthsAsArray({base: 10, lg: 50})\n */\nconst widthsAsArray = (widths) => {\n    const biggestBreakpoint = breakpointLabels.filter((bp) => Boolean(widths[bp])).pop()\n    let mostRecent\n    return breakpointLabels.slice(0, breakpointLabels.indexOf(biggestBreakpoint) + 1).map((bp) => {\n        if (widths[bp]) {\n            mostRecent = widths[bp]\n            return widths[bp]\n        }\n        return mostRecent\n    })\n}\n\n/**\n * @param {number} em\n * @param {number} [browserDefaultFontSize]\n */\nconst emToPx = (em, browserDefaultFontSize = 16) => Math.round(em * browserDefaultFontSize)\n\n/**\n * @param {number} vw\n * @param {string} breakpoint\n */\nconst vwToPx = (vw, breakpoint) => {\n    const result = (vw / 100) * parseFloat(themeBreakpoints[breakpoint])\n    const breakpointsDefinedInPx = Object.values(themeBreakpoints).some((val) => pxValue.test(val))\n\n    // Assumes theme's breakpoints are defined in either em or px\n    // See https://chakra-ui.com/docs/features/responsive-styles#customizing-breakpoints\n    return breakpointsDefinedInPx ? result : emToPx(result)\n}\n\n/**\n * @param {string} dynamicSrc\n * @param {number} imageWidth\n * @return {string} Image url having the given width\n * @example\n * // returns https://example.com/image_720.jpg\n * getSrc('https://example.com/image[_{width}].jpg', 720)\n */\nexport const getSrc = (dynamicSrc, imageWidth) => {\n    // 1. remove the surrounding []\n    // 2. replace {...} with imageWidth\n    return dynamicSrc.replace(/\\[([^\\]]+)\\]/g, '$1').replace(/\\{[^}]+\\}/g, imageWidth)\n}\n\n/**\n * @param {string} dynamicSrc\n * @example\n * // Returns 'https://example.com/image.jpg'\n * getSrcWithoutOptionalParams('https://example.com/image.jpg[?sw={width}]')\n */\nconst getSrcWithoutOptionalParams = (dynamicSrc) => dynamicSrc.replace(/\\[[^\\]]+\\]/g, '')\n\nconst padArray = (arr) => {\n    const l1 = arr.length\n    const l2 = breakpointLabels.length\n    if (l1 < l2) {\n        const lastEntry = arr.at(-1)\n        const amountToPad = l2 - l1\n        return [...arr, ...Array(amountToPad).fill(lastEntry)]\n    }\n    return arr\n}\n\n/**\n * @param {string[]|number[]} widths\n * @return {number[]}\n */\nconst convertToPxNumbers = (widths) =>\n    widths\n        .map((width, i) => {\n            if (typeof width === 'number') {\n                return width\n            }\n\n            if (vwValue.test(width)) {\n                const vw = parseFloat(width)\n                const currentBp = breakpointLabels[i]\n                // We imagine the biggest image for the current breakpoint\n                // to be when the viewport is closely approaching the _next breakpoint_.\n                const nextBp = breakpointLabels[i + 1]\n\n                if (nextBp) {\n                    return vwToPx(vw, nextBp)\n                }\n                // We're already at the last breakpoint\n                return widths[i] !== widths[i - 1] ? vwToPx(vw, currentBp) : undefined\n            } else if (pxValue.test(width)) {\n                return parseInt(width, 10)\n            } else {\n                logger.error('Expecting to see values with vw or px unit only', {\n                    namespace: 'utils.convertToPxNumbers'\n                })\n                return 0\n            }\n        })\n        .filter((width) => width !== undefined)\n\n/**\n * Transforms an array of preload link objects by converting the raw `media`\n * property of each entry (with `min` and/or `max` values) into actual media\n * queries using `(min-width)` and/or `(max-width)`.\n * @param {{srcSet: string, sizes: string, media: {min?: string, max?: string}}[]} links\n * @return {{srcSet: string, sizes: string, media: string}[]}\n */\nconst convertImageLinksMedia = (links) =>\n    links.map((link) => {\n        const {\n            media: {min, max}\n        } = link\n        const acc = []\n        if (min) {\n            acc.push(`(min-width: ${min})`)\n        }\n        if (max) {\n            acc.push(`(max-width: ${max})`)\n        }\n        return {...link, media: acc.join(' and ')}\n    })\n\n/**\n * Determines the data required for the responsive `<source>` and `<link rel=\"preload\">\n * portions/elements.\n * @param {string} src\n * @param {(number[]|string[])} widths\n * @returns {{sources: {srcSet: string, sizes: string, media: string}[], links: {srcSet: string, sizes: string, media: string}[]}}\n */\nconst getResponsiveSourcesAndLinks = (src, widths) => {\n    const sizesWidths = withUnit(widths)\n    const l = sizesWidths.length\n    const _sizes = breakpointLabels.map((bp, i) => {\n        return i === 0\n            ? {\n                  media: undefined,\n                  mediaLink: obtainImageLinkMedia(i),\n                  sizes: sizesWidths[i]\n              }\n            : {\n                  media: `(min-width: ${themeBreakpoints[bp]})`,\n                  mediaLink: obtainImageLinkMedia(i),\n                  sizes: sizesWidths.at(i >= l ? l - 1 : i)\n              }\n    })\n\n    const sourcesWidths = convertToPxNumbers(padArray(widths))\n    const sourcesLength = sourcesWidths.length\n    const {sources, links} = breakpointLabels.reduce(\n        (acc, bp, idx) => {\n            // To support higher-density devices, request all images in 1x and 2x widths\n            const width = sourcesWidths.at(idx >= sourcesLength ? sourcesLength - 1 : idx)\n            const {sizes, media, mediaLink} = _sizes.at(idx)\n            const lastSource = acc.sources.at(-1)\n            const lastLink = acc.links.at(-1)\n            const srcSet = [1, 2]\n                .map((factor) => {\n                    const effectiveWidth = Math.round(width * factor)\n                    const effectiveSize = Math.round(width * factor)\n                    return `${getSrc(src, effectiveSize)} ${effectiveWidth}w`\n                })\n                .join(', ')\n\n            if (\n                idx < sourcesLength &&\n                (lastSource?.sizes !== sizes || srcSet !== lastSource?.srcSet)\n            ) {\n                // Only store new `<source>` if we haven't already stored those values\n                acc.sources.push({srcSet, sizes, media})\n            }\n\n            if (lastLink?.sizes !== sizes || srcSet !== lastLink?.srcSet) {\n                // Only store new `<link>` if we haven't already stored those values\n                acc.links.push({srcSet, sizes, media: mediaLink})\n            } else {\n                // If we have already stored those values, update the `max` portion of the related `<link>` data\n                lastLink.media.max = mediaLink.max\n            }\n            return acc\n        },\n        {sources: [], links: []}\n    )\n    return {sources: sources.reverse(), links: convertImageLinksMedia(links)}\n}\n\n/**\n * Resolve the attributes required to create a DIS-optimized `<picture>` component.\n * @param {Object} props\n * @param {string} props.src - Dynamic src having an optional param that can vary with widths. For example: `image[_{width}].jpg` or `image.jpg[?sw={width}&q=60]`\n * @param {(number[] |string[] |Object)} [props.widths] - Image widths relative to the breakpoints, whose units can either be px or vw or unit-less. They will be mapped to the corresponding `sizes` and `srcSet`.\n * @param {Object} [props.breakpoints] - The current theme's breakpoints. If not given, Chakra's default breakpoints will be used.\n * @return {Object} src, sizes, srcSet, media props for your image component\n * @see {@link DynamicImage}\n */\nexport const getResponsivePictureAttributes = ({src, widths, breakpoints = defaultBreakpoints}) => {\n    if (!widths) {\n        return {\n            sources: [],\n            links: [],\n            src: getSrcWithoutOptionalParams(src)\n        }\n    }\n\n    if (breakpoints !== themeBreakpoints) {\n        themeBreakpoints = breakpoints\n        breakpointLabels = getBreakpointLabels(themeBreakpoints)\n    }\n\n    const _widths = isObject(widths) ? widthsAsArray(widths) : widths.slice(0)\n    const {sources, links} = getResponsiveSourcesAndLinks(src, _widths)\n    return {\n        sources,\n        links,\n        src: getSrcWithoutOptionalParams(src)\n    }\n}\n","/*\n * Copyright (c) 2025, Salesforce, Inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport React, {useMemo} from 'react'\nimport {Helmet} from 'react-helmet'\nimport PropTypes from 'prop-types'\nimport {Box, useTheme} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {Img} from '@salesforce/retail-react-app/app/components/shared/ui'\nimport {getResponsivePictureAttributes} from '@salesforce/retail-react-app/app/utils/responsive-image'\nimport {\n    getImageAttributes,\n    getImageLinkAttributes\n} from '@salesforce/retail-react-app/app/utils/image'\nimport {isServer} from '@salesforce/retail-react-app/app/components/image/utils'\n\n/**\n * Responsive image component optimized to work with the Dynamic Imaging Service.\n * Via this component it's easy to create a `<picture>` element with related\n * theme-aware `<source>` elements and responsive preloading for high-priority\n * images.\n * @example Widths without a unit defined as array (interpreted as px values)\n * <DynamicImage\n *   src=\"http://example.com/image.jpg[?sw={width}&q=60]\"\n *   widths={[100, 360, 720]} />\n * @example Widths without a unit defined as object (interpreted as px values)\n * <DynamicImage\n *   src=\"http://example.com/image.jpg[?sw={width}&q=60]\"\n *   widths={{base: 100, sm: 360, md: 720}} />\n * @example Widths with mixed px and vw units defined as array\n * <DynamicImage\n *   src=\"http://example.com/image.jpg[?sw={width}&q=60]\"\n *   widths={['50vw', '100vw', '500px']} />\n * @example Eagerly load image with high priority and responsive preloading\n * <DynamicImage\n *   src=\"http://example.com/image.jpg[?sw={width}&q=60]\"\n *   widths={['50vw', '50vw', '20vw', '20vw', '25vw']}\n *   imageProps={{loading: 'eager'}}\n *   />\n * @see {@link https://web.dev/learn/design/responsive-images}\n * @see {@link https://web.dev/learn/design/picture-element}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/picture}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Responsive_images}\n * @see {@link https://help.salesforce.com/s/articleView?id=cc.b2c_image_transformation_service.htm&type=5}\n */\nconst DynamicImage = ({src, widths, imageProps, as, ...rest}) => {\n    const Component = as ? as : Img\n    const theme = useTheme()\n\n    const [responsiveImageProps, numSources, effectiveImageProps, responsiveLinks] = useMemo(() => {\n        const responsiveImageProps = getResponsivePictureAttributes({\n            src,\n            widths,\n            breakpoints: theme.breakpoints\n        })\n        const effectiveImageProps = getImageAttributes(imageProps)\n        const fetchPriority = effectiveImageProps.fetchPriority\n        const responsiveLinks =\n            !responsiveImageProps.links.length && fetchPriority === 'high'\n                ? [\n                      getImageLinkAttributes({\n                          ...effectiveImageProps,\n                          fetchPriority, // React <18 vs. >=19 issue\n                          src: responsiveImageProps.src\n                      })\n                  ]\n                : responsiveImageProps.links.reduce((acc, link) => {\n                      const linkProps = getImageLinkAttributes({\n                          ...effectiveImageProps,\n                          ...link,\n                          fetchPriority, // React <18 vs. >=19 issue\n                          src: responsiveImageProps.src\n                      })\n                      if (linkProps) {\n                          acc.push(linkProps)\n                      }\n                      return acc\n                  }, [])\n        return [\n            responsiveImageProps,\n            responsiveImageProps.sources.length,\n            effectiveImageProps,\n            responsiveLinks\n        ]\n    }, [src, widths, theme.breakpoints])\n\n    return (\n        <Box {...rest}>\n            {numSources > 0 ? (\n                <picture>\n                    {responsiveImageProps.sources.map(({srcSet, sizes, media}, idx) => (\n                        <source key={idx} media={media} sizes={sizes} srcSet={srcSet} />\n                    ))}\n                    <Component {...effectiveImageProps} src={responsiveImageProps.src} />\n                </picture>\n            ) : (\n                <Component {...effectiveImageProps} src={responsiveImageProps.src} />\n            )}\n\n            {isServer() && responsiveLinks.length > 0 && (\n                <Helmet>\n                    {responsiveLinks.map((responsiveLinkProps, idx) => {\n                        const {href, ...rest} = responsiveLinkProps\n                        return <link key={idx} {...rest} href={href} />\n                    })}\n                </Helmet>\n            )}\n        </Box>\n    )\n}\n\nDynamicImage.propTypes = {\n    /**\n     * Dynamic src having an optional param that can vary with widths. For example: `image[_{width}].jpg` or `image.jpg[?sw={width}&q=60]`\n     */\n    src: PropTypes.string,\n    /**\n     * Image widths relative to the breakpoints, whose units can either be px or vw or unit-less. They will be mapped to the corresponding `sizes` and `srcSet`.\n     */\n    widths: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n    /**\n     * Props to pass to the inner image component\n     */\n    imageProps: PropTypes.object,\n    /**\n     * Override with your chosen image component\n     */\n    as: PropTypes.elementType\n}\n\nexport default DynamicImage\n","import SpriteSymbol from \"../../../../../svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"plug\",\n  \"use\": \"plug-usage\",\n  \"viewBox\": \"0 0 22 28\",\n  \"content\": \"<symbol viewBox=\\\"0 0 22 28\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"plug\\\">\\n    <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"m17.667 8.6665h3.3334c0.3682 0 0.6666 0.29848 0.6666 0.66667v1.3333c0 0.3682-0.2984 0.6667-0.6666 0.6667h-0.6667v3.12c-0.0094 1.401-0.5698 2.7421-1.56 3.7333l-2.6 2.6667c-0.6733 0.6671-1.5616 1.0735-2.5067 1.1466v4.6667c0 0.3682-0.2984 0.6667-0.6666 0.6667h-4c-0.36819 0-0.66666-0.2985-0.66666-0.6667v-4.6667c-0.93979-0.0622-1.8275-0.4541-2.5067-1.1066l-2.6-2.6667c-0.99994-1.001-1.5611-2.3584-1.56-3.7733v-3.12h-0.66667c-0.36819 0-0.66666-0.2985-0.66666-0.6667v-1.3333c0-0.36819 0.29848-0.66667 0.66666-0.66667h3.3333v-7.3333c0-0.36819 0.29847-0.66667 0.66666-0.66667h1.3333c0.36819 0 0.66666 0.29848 0.66666 0.66667v7.3333h8v-7.3333c0-0.36819 0.2984-0.66667 0.6666-0.66667h1.3334c0.3682 0 0.6666 0.29848 0.6666 0.66667v7.3333zm-0.7866 7.68c0.504-0.5011 0.7872-1.1826 0.7866-1.8933v-3.12h-13.333v3.12c-5.7e-4 0.7107 0.28261 1.3922 0.78666 1.8933l2.4 2.4c0.37472 0.3752 0.88308 0.5862 1.4133 0.5867h4.1333c0.5303-5e-4 1.0387-0.2115 1.4134-0.5867l2.4-2.4z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {useIntl} from 'react-intl'\n\nimport {\n    Box,\n    Button,\n    useMultiStyleConfig\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\nimport {\n    MuteIcon,\n    UnmuteIcon,\n    PauseIcon,\n    PlayIcon\n} from 'pandora-shared-app/overrides/app/components/icons'\n\nexport const VideoControls = (props) => {\n    const {\n        isPlaying,\n        isMuted,\n        handleMuteUnmute,\n        handlePlayPause,\n        controlWrapperPosition,\n        audioBtnEnabled,\n        playBtnEnabled,\n        dataCsOverrideId\n    } = props\n    const {formatMessage} = useIntl()\n    const styles = useMultiStyleConfig('VideoControls', controlWrapperPosition)\n\n    const handleKeyDown = (e, handler) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n            e.preventDefault()\n            e.stopPropagation()\n            handler()\n        }\n    }\n\n    return (\n        <Box sx={styles.controlWrapper} data-cs-override-id={dataCsOverrideId ?? ''}>\n            {playBtnEnabled && (\n                <Button\n                    onClick={(e) => {\n                        e.preventDefault()\n                        e.stopPropagation()\n                        handlePlayPause()\n                    }}\n                    onKeyDown={(e) => handleKeyDown(e, handlePlayPause)}\n                    data-auto={'ctrlVideoHeroFullScreen'}\n                    data-testid={'ctrl-video'}\n                    aria-label={\n                        isPlaying\n                            ? formatMessage({\n                                  id: 'video_player.video.is_playing',\n                                  defaultMessage: 'Video is playing'\n                              })\n                            : formatMessage({\n                                  id: 'video_player.video.is_not_playing',\n                                  defaultMessage: 'Video is not playing'\n                              })\n                    }\n                    aria-pressed={isPlaying}\n                    variant=\"action\"\n                    tabIndex=\"0\"\n                    sx={styles.controlIcon}\n                >\n                    {isPlaying ? (\n                        <PauseIcon aria-label=\"VideoPauseIcon\" />\n                    ) : (\n                        <PlayIcon aria-label=\"VideoPlayIcon\" />\n                    )}\n                </Button>\n            )}\n            {audioBtnEnabled && (\n                <Button\n                    onClick={(e) => {\n                        e.preventDefault()\n                        e.stopPropagation()\n                        handleMuteUnmute()\n                    }}\n                    onKeyDown={(e) => handleKeyDown(e, handleMuteUnmute)}\n                    data-auto={'ctrlAudioHeroFullScreen'}\n                    data-testid={'ctrl-audio'}\n                    aria-label={\n                        isMuted\n                            ? formatMessage({\n                                  id: 'video_player.video.is_mute',\n                                  defaultMessage: 'Video is mute'\n                              })\n                            : formatMessage({\n                                  id: 'video_player.video.is_not_mute',\n                                  defaultMessage: 'Video is not mute'\n                              })\n                    }\n                    aria-pressed={!isMuted}\n                    variant=\"action\"\n                    tabIndex=\"0\"\n                    sx={styles.controlIcon}\n                >\n                    {isMuted ? (\n                        <MuteIcon aria-label=\"VideoMuteIcon\" />\n                    ) : (\n                        <UnmuteIcon aria-label=\"VideoUnmuteIcon\" />\n                    )}\n                </Button>\n            )}\n        </Box>\n    )\n}\n\nVideoControls.propTypes = {\n    isPlaying: PropTypes.bool,\n    isMuted: PropTypes.bool,\n    handleMuteUnmute: PropTypes.func,\n    handlePlayPause: PropTypes.func,\n    controlWrapperPosition: PropTypes.shape({\n        right: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.number]),\n        left: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.number]),\n        top: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.number]),\n        bottom: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.number])\n    }),\n    audioBtnEnabled: PropTypes.bool,\n    playBtnEnabled: PropTypes.bool,\n    dataCsOverrideId: PropTypes.string\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, useMultiStyleConfig} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {ImageCard} from '../../image-card'\n\n/**\n * PosterFrame component - Displays poster image while video loads\n * Hidden when video is ready (zIndex changes)\n *\n * @param {string} posterImageUrl - URL of the poster image\n * @param {Object} copyright - Copyright information\n * @param {boolean} isVideoReady - Whether video has loaded\n * @param {boolean} isFirstPanel - Whether this is the first panel\n * @param {boolean} isFMT - Whether this is a Full Media Tile\n * @param {boolean} isLazyLoad - Whether lazy loading is enabled\n */\nexport const PosterFrame = ({\n    posterImageUrl,\n    copyright,\n    isVideoReady,\n    isFirstPanel,\n    isFMT,\n    isLazyLoad\n}) => {\n    const {images} = useMultiStyleConfig('VideoPlayer')\n\n    const imageCardStyle = {\n        ...images,\n        zIndex: isVideoReady ? 0 : 1, // Below video when ready, above when loading\n        backgroundColor: 'transparent'\n    }\n\n    return (\n        <Box sx={imageCardStyle}>\n            <ImageCard\n                src={posterImageUrl}\n                alt=\"\"\n                dataAuto=\"videoPosterFrame\"\n                aspectRatio=\"none\"\n                copyright={copyright}\n                lazyLoadHeight=\"full\"\n                lazyLoadOffset={100}\n                isLazyLoad={isFMT ? false : isLazyLoad}\n                isFirstPanel={isFirstPanel}\n                fetchpriority={isFirstPanel || isFMT ? 'high' : undefined}\n                isPosterFrame={true}\n                shouldPreload={isFirstPanel || isFMT}\n            />\n        </Box>\n    )\n}\n\nPosterFrame.propTypes = {\n    posterImageUrl: PropTypes.string,\n    copyright: PropTypes.object,\n    isVideoReady: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    isFMT: PropTypes.bool,\n    isLazyLoad: PropTypes.bool\n}\n\nPosterFrame.displayName = 'PosterFrame'\n","/**\n * Amplience video profile keys for different device types\n * Used to select appropriate video quality based on device\n */\nexport const AMPLIENCE_VIDEO_PROFILE_KEYS = {\n    MOBILE: 'mp4_480p',\n    DESKTOP: 'mp4_720p'\n}\n\n/**\n * ReactPlayer configuration attributes\n * Prevents right-click context menu and enables inline playback\n */\nexport const VIDEO_CONFIG_ATTRIBUTES = {\n    attributes: {\n        'data-auto': 'videoHeroFullScreen',\n        playsInline: true\n    }\n}\n\n/**\n * Default position for video controls wrapper\n * Responsive positioning for different breakpoints\n */\nexport const CONTROL_WRAPPER_POSITION_DEFAULT = {\n    right: {base: 0, md: 12, xl: 16},\n    bottom: 0\n}\n\n/**\n * Default copyright text position\n */\nexport const COPYRIGHT_TEXT_POSITION_DEFAULT = 'video-controller-right'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactPlayer from 'react-player/lazy'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {Box} from 'pandora-shared-app/overrides/app/components/shared/ui'\nimport {VIDEO_CONFIG_ATTRIBUTES} from '../constants'\n\n/**\n * VideoRenderer component - Renders ReactPlayer for video playback\n * Only renders on client-side to avoid SSR issues\n *\n * @param {string} videoSource - Full video source URL with profile key\n * @param {boolean} isPlaying - Whether video should be playing\n * @param {boolean} isMuted - Whether video should be muted\n * @param {function} onVideoReady - Callback when video is ready\n * @param {function} onVideoError - Callback when video fails to load\n */\nexport const VideoRenderer = ({videoSource, isPlaying, isMuted, onVideoReady, onVideoError}) => {\n    if (isServer || !videoSource) {\n        return null\n    }\n\n    return (\n        <Box\n            sx={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                height: '100%',\n                backgroundColor: 'transparent',\n                // Force ReactPlayer wrapper to be transparent\n                '& .background-video': {\n                    backgroundColor: 'transparent !important',\n                    '& > div': {\n                        backgroundColor: 'transparent !important'\n                    },\n                    '& video': {\n                        backgroundColor: 'transparent'\n                    }\n                }\n            }}\n        >\n            <ReactPlayer\n                controls={false}\n                url={videoSource}\n                playing={isPlaying}\n                muted={isMuted}\n                width=\"100%\"\n                height=\"100%\"\n                className=\"background-video\"\n                loop\n                data-auto=\"videoHeroFullScreen\"\n                config={VIDEO_CONFIG_ATTRIBUTES}\n                onReady={onVideoReady}\n                onStart={onVideoReady}\n                onError={onVideoError}\n            />\n        </Box>\n    )\n}\n\nVideoRenderer.propTypes = {\n    videoSource: PropTypes.string.isRequired,\n    isPlaying: PropTypes.bool.isRequired,\n    isMuted: PropTypes.bool.isRequired,\n    onVideoReady: PropTypes.func.isRequired,\n    onVideoError: PropTypes.func\n}\n\nVideoRenderer.displayName = 'VideoRenderer'\n","import React, {useMemo, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {motion} from 'framer-motion'\nimport LazyLoad from 'react-lazyload'\n\n// UI components\nimport {\n    Box,\n    useMultiStyleConfig,\n    AspectRatio,\n    chakra,\n    useTheme\n} from 'pandora-shared-app/overrides/app/components/shared/ui'\n\n// Components\nimport {CopyrightText} from '../copyright-text'\nimport {MediaError, MISSING_VIDEO} from 'pandora-shared-app/overrides/app/components/media-error'\nimport {VideoControls} from './partials/video-controls'\nimport {PosterFrame} from './partials/poster-frame'\nimport {VideoRenderer} from './partials/video-renderer'\n\n// Hooks\nimport {useVideoSource} from './hooks/use-video-source'\nimport {useVideoControls} from './hooks/use-video-controls'\nimport {useControlAnimation} from './hooks/use-control-animation'\nimport {useBrokenVideoDetection} from './hooks/use-broken-video-detection'\n\n// Constants & Types\nimport {NO_ASPECT_RATIO, StylePropType} from 'pandora-shared-app/overrides/app/utils/types'\nimport {CONTROL_WRAPPER_POSITION_DEFAULT, COPYRIGHT_TEXT_POSITION_DEFAULT} from './constants'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n// Re-export constants for backward compatibility\nexport {AMPLIENCE_VIDEO_PROFILE_KEYS} from './constants'\n\nconst LazyLoadBox = chakra(LazyLoad)\n\n/**\n * VideoPlayer component - Full-screen background video player with poster frame\n *\n * Features:\n * - Responsive video quality (mobile/desktop)\n * - Poster frame image while video loads\n * - Lazy loading support\n * - LCP optimization for first panel\n * - RTL support for controls\n * - Video controls (play/pause, mute/unmute)\n * - Broken video detection (when flag enabled)\n */\nexport const VideoPlayer = ({\n    video,\n    active,\n    onDetectBroken,\n    controlWrapperPosition = CONTROL_WRAPPER_POSITION_DEFAULT,\n    copyrightTextPosition = COPYRIGHT_TEXT_POSITION_DEFAULT,\n    aspectRatio,\n    mediaCss,\n    isFirstPanel = false,\n    isLazyLoad = true,\n    hasFirstPanelAnimatedOnce,\n    audioBtnEnabled = true,\n    playBtnEnabled = true,\n    isFMT,\n    dataCsOverrideId\n}) => {\n    const theme = useTheme()\n    const isRTL = theme.direction === 'rtl'\n    const {container, backgroundVideo, ctrlContainer, lazyLoadContainer} =\n        useMultiStyleConfig('VideoPlayer')\n\n    const isSsrPosterEnabledRaw = useVariant(LD_KEYS.enableGlobalVideoSsrPosterFrame, false)\n    // Freeze after first render — prevents LD evaluation after mount from flipping opacity\n    // on the video layer from undefined to 0, which would make a playing video disappear.\n    const isSsrPosterEnabledRef = useRef(isSsrPosterEnabledRaw)\n    const isSsrPosterEnabled = isSsrPosterEnabledRef.current\n\n    const {videoSrc, computedPosterImage, videoSource, videoProfileKey} = useVideoSource(\n        video,\n        active,\n        aspectRatio\n    )\n    const {isMuted, isPlaying, isVideoReady, handlePlayPause, handleMuteUnmute, handleVideoReady} =\n        useVideoControls(active, isSsrPosterEnabled)\n    const {transition, initialY} = useControlAnimation(isFirstPanel, hasFirstPanelAnimatedOnce)\n\n    // Broken video detection (all logic is LD-gated inside the hook)\n    const {posterOk, isFeatureEnabled, handleBrokenVideoReady, handleBrokenVideoError} =\n        useBrokenVideoDetection(videoSrc, computedPosterImage, videoProfileKey, onDetectBroken)\n\n    // Adjust control wrapper position for RTL layouts\n    const adjustedControlWrapperPosition = useMemo(() => {\n        if (isRTL) {\n            return {\n                left: controlWrapperPosition.right,\n                bottom: controlWrapperPosition.bottom\n            }\n        }\n        return controlWrapperPosition\n    }, [isRTL, controlWrapperPosition])\n\n    // Video layer styling (must be computed before any early return to satisfy rules-of-hooks)\n    const videoLayerSx = useMemo(() => {\n        if (!isSsrPosterEnabled) return backgroundVideo\n        return {\n            ...backgroundVideo,\n            zIndex: 2,\n            opacity: isVideoReady ? 1 : 0,\n            transition: 'opacity 0.4s ease',\n            pointerEvents: isVideoReady ? 'auto' : 'none'\n        }\n    }, [backgroundVideo, isSsrPosterEnabled, isVideoReady])\n\n    // Event handlers\n    const handleContextMenu = (event) => {\n        event.preventDefault()\n    }\n\n    // Combined video ready handler\n    const onVideoReadyHandler = () => {\n        handleVideoReady()\n        if (handleBrokenVideoReady) {\n            handleBrokenVideoReady()\n        }\n    }\n\n    // Render video with optional aspect ratio wrapper\n    const renderVideoWithAspectRatio = () => {\n        const videoContent = (\n            <VideoRenderer\n                videoSource={videoSource}\n                isPlaying={isPlaying}\n                isMuted={isMuted}\n                onVideoReady={onVideoReadyHandler}\n                onVideoError={handleBrokenVideoError}\n            />\n        )\n\n        if (aspectRatio && aspectRatio !== NO_ASPECT_RATIO) {\n            return <AspectRatio ratio={aspectRatio}>{videoContent}</AspectRatio>\n        }\n\n        return videoContent\n    }\n\n    // Early return if no video source\n    if (!videoSrc) {\n        return <MediaError message={MISSING_VIDEO} aspectRatio={aspectRatio} />\n    }\n\n    const shouldLazyLoad = isLazyLoad && !isFirstPanel\n    const {copyright} = video\n\n    const posterProbeRequired = isFeatureEnabled && !(isSsrPosterEnabled && isServer)\n    // With SSR flag: optimistic (posterOk !== false keeps poster visible while probe runs on client)\n    // Without SSR flag: conservative original behaviour (wait for probe to confirm OK)\n    let posterIsValid = true\n    if (posterProbeRequired) {\n        posterIsValid = isSsrPosterEnabled ? posterOk !== false : posterOk === true\n    }\n    const shouldRenderPoster = posterIsValid && Boolean(computedPosterImage)\n\n    return (\n        <Box sx={{...container, ...mediaCss}}>\n            {/* Poster frame */}\n            {shouldRenderPoster && (\n                <PosterFrame\n                    posterImageUrl={computedPosterImage}\n                    copyright={copyright}\n                    isVideoReady={isVideoReady}\n                    isFirstPanel={isFirstPanel}\n                    isFMT={isFMT}\n                    isLazyLoad={isLazyLoad}\n                />\n            )}\n\n            {/* Video player container */}\n            {shouldLazyLoad ? (\n                <LazyLoadBox offset={100} once sx={lazyLoadContainer}>\n                    <Box\n                        sx={videoLayerSx}\n                        onContextMenu={handleContextMenu}\n                        data-testid=\"video-player\"\n                    >\n                        {(active || videoSource) && renderVideoWithAspectRatio()}\n                    </Box>\n                </LazyLoadBox>\n            ) : (\n                <Box sx={videoLayerSx} onContextMenu={handleContextMenu} data-testid=\"video-player\">\n                    {(active || videoSource) && renderVideoWithAspectRatio()}\n                </Box>\n            )}\n\n            {/* Video controls container with animation */}\n            <motion.div\n                style={{...ctrlContainer, ...(isSsrPosterEnabled && {zIndex: 3})}}\n                transition={transition}\n                initial={{y: initialY}}\n                animate={{y: active ? 0 : 65}}\n                data-testid=\"ctrl-container\"\n            >\n                {copyright?.text && (\n                    <CopyrightText\n                        {...copyright}\n                        variant={copyrightTextPosition}\n                        data-auto=\"copyrightText\"\n                    />\n                )}\n                <VideoControls\n                    isFMT={isFMT}\n                    isPlaying={isPlaying}\n                    isMuted={isMuted}\n                    handleMuteUnmute={handleMuteUnmute}\n                    handlePlayPause={handlePlayPause}\n                    controlWrapperPosition={adjustedControlWrapperPosition}\n                    audioBtnEnabled={audioBtnEnabled}\n                    playBtnEnabled={playBtnEnabled}\n                    dataCsOverrideId={dataCsOverrideId ?? ''}\n                />\n            </motion.div>\n        </Box>\n    )\n}\n\nVideoPlayer.propTypes = {\n    video: PropTypes.object.isRequired,\n    isMobile: PropTypes.bool,\n    active: PropTypes.bool,\n    onDetectBroken: PropTypes.func,\n    isFMT: PropTypes.bool,\n    controlWrapperPosition: PropTypes.shape({\n        right: StylePropType,\n        left: StylePropType,\n        top: StylePropType,\n        bottom: StylePropType\n    }),\n    copyrightTextPosition: PropTypes.string,\n    aspectRatio: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    mediaCss: PropTypes.object,\n    isLazyLoad: PropTypes.bool,\n    isFirstPanel: PropTypes.bool,\n    hasFirstPanelAnimatedOnce: PropTypes.bool,\n    audioBtnEnabled: PropTypes.bool,\n    playBtnEnabled: PropTypes.bool,\n    dataCsOverrideId: PropTypes.string\n}\n\nVideoPlayer.displayName = 'VideoPlayer'\n\n/**\n * PropTypes shape definition for video type\n * Used for type validation in parent components\n */\nexport const VideoType = PropTypes.shape({\n    id: PropTypes.string,\n    name: PropTypes.string,\n    endpoint: PropTypes.string,\n    defaultHost: PropTypes.string,\n    mimeType: PropTypes.string\n})\n","import {useState, useEffect, useMemo} from 'react'\nimport {useDeviceType} from '../../../hooks'\nimport {DEVICE} from 'pandora-shared-app/overrides/app/hooks/use-device-type'\nimport {getImageUrl, parseAspectRatio} from 'pandora-shared-app/overrides/app/utils/media'\nimport {\n    getVideoSourceUrl,\n    getPosterImageUrl,\n    getVideoProfileKey,\n    getFullVideoSource\n} from '../utils'\n\n/**\n * Custom hook to manage video source and poster image\n * Handles video URL generation, profile key selection, and poster image\n *\n * @param {Object} video - Video object with defaultHost, endpoint, name, format\n * @param {boolean} active - Whether video should be active\n * @param {number|string} [aspectRatio] - Aspect ratio used to crop the poster\n * @returns {Object} Video source data\n */\nexport const useVideoSource = (video, active, aspectRatio) => {\n    const deviceType = useDeviceType()\n    const [videoData, setVideoData] = useState('')\n\n    // Aprimo ships pre-built renditions, one per device. The device-specific URLs\n    // already include the profile suffix (cdnDesktopUrl → mp4_720p, cdnMobileUrl\n    // → mp4_480p), so they must not have a profile key appended again.\n    const isAprimoVideo = !!(video?.cdnUrl || video?.cdnMobileUrl || video?.cdnDesktopUrl)\n\n    // Generate base video source URL. For Aprimo, pick the rendition matching the\n    // current device and fall back through the remaining renditions; otherwise\n    // build the Amplience URL from host/endpoint/name.\n    const videoSrc = useMemo(() => {\n        const aprimoSrc =\n            deviceType === DEVICE.DESKTOP\n                ? video?.cdnDesktopUrl || video?.cdnUrl || video?.cdnMobileUrl\n                : video?.cdnMobileUrl || video?.cdnUrl || video?.cdnDesktopUrl\n        if (aprimoSrc) return aprimoSrc\n        return getVideoSourceUrl(video)\n    }, [\n        video?.cdnUrl,\n        video?.cdnMobileUrl,\n        video?.cdnDesktopUrl,\n        video?.defaultHost,\n        video?.endpoint,\n        video?.name,\n        deviceType\n    ])\n\n    // Generate poster image URL — Aprimo provides a thumbnail field. The\n    // thumbnail is a native-ratio still, so crop it to the video's aspect ratio\n    // (when one is configured) to stop the object-fit:cover poster layer from\n    // zooming it. With no aspect ratio the raw thumbnail is used as before.\n    const computedPosterImage = useMemo(() => {\n        if (video?.thumbnail) {\n            return parseAspectRatio(aspectRatio)\n                ? getImageUrl({cdnUrl: video.thumbnail, aspectRatio})\n                : video.thumbnail\n        }\n        return getPosterImageUrl(videoSrc)\n    }, [video?.thumbnail, videoSrc, aspectRatio])\n\n    // Determine video profile key\n    const videoProfileKey = useMemo(() => {\n        return getVideoProfileKey(deviceType, video?.format)\n    }, [deviceType, video?.format])\n\n    // Generate full video source with profile key.\n    // Aprimo URLs are pre-built (and device-specific renditions already carry the\n    // profile suffix); skip appending the profile key.\n    const videoSource = useMemo(() => {\n        if (isAprimoVideo && videoData) return videoData\n        return getFullVideoSource(videoData, videoProfileKey)\n    }, [isAprimoVideo, videoData, videoProfileKey])\n\n    // Update video data when active state changes\n    useEffect(() => {\n        if (active && videoSrc) {\n            setVideoData(videoSrc)\n        }\n    }, [videoSrc, active])\n\n    return {\n        videoSrc,\n        computedPosterImage,\n        videoSource,\n        videoProfileKey\n    }\n}\n","import {getVideoUrl} from 'pandora-shared-app/overrides/app/utils/media'\nimport {IMAGE_FORMAT, IMAGE_QUALITY} from 'pandora-shared-app/overrides/app/utils/media'\nimport {AMPLIENCE_VIDEO_PROFILE_KEYS} from './constants'\n\nimport {DEVICE} from 'pandora-shared-app/overrides/app/hooks/use-device-type'\n\n/**\n * Generates video source URL from video data\n * @param {Object} video - Video object with defaultHost, endpoint, name\n * @returns {string|null} Video URL or null if data is incomplete\n */\nexport const getVideoSourceUrl = (video) => {\n    const {defaultHost, endpoint, name} = video\n    if (defaultHost && endpoint && name) {\n        return getVideoUrl({defaultHost, endpoint, name})\n    }\n    return null\n}\n\n/**\n * Generates poster image URL from video source\n * Uses w=auto for responsive optimization\n * @param {string} videoSrc - Video source URL\n * @returns {string|null} Poster image URL or null if videoSrc is not provided\n */\nexport const getPosterImageUrl = (videoSrc) => {\n    if (!videoSrc) return null\n    return `${videoSrc}?w=auto&fmt=${IMAGE_FORMAT}&qlt=${IMAGE_QUALITY}`\n}\n\n/**\n * Determines video profile key based on device type\n * Falls back to video.format if provided\n * @param {string} deviceType - Current device type\n * @param {string|null} videoFormat - Optional video format override\n * @returns {string} Video profile key\n */\nexport const getVideoProfileKey = (deviceType, videoFormat = null) => {\n    if (videoFormat) {\n        return videoFormat\n    }\n    return deviceType !== DEVICE?.DESKTOP\n        ? AMPLIENCE_VIDEO_PROFILE_KEYS?.MOBILE\n        : AMPLIENCE_VIDEO_PROFILE_KEYS?.DESKTOP\n}\n\n/**\n * Generates full video source URL with profile key\n * @param {string} videoData - Base video data URL\n * @param {string} videoProfileKey - Video profile key\n * @returns {string} Full video source URL\n */\nexport const getFullVideoSource = (videoData, videoProfileKey) => {\n    if (!videoData) return ''\n    return `${videoData}/${videoProfileKey}`\n}\n","import {useState, useEffect} from 'react'\n\n/**\n * Custom hook to manage video player controls state\n * Handles play/pause, mute/unmute, and video ready state\n *\n * @param {boolean} active - Whether video should be playing\n * @param {boolean} isSsrPosterEnabled - Whether the SSR poster frame flag is enabled\n * @returns {Object} Video controls state and handlers\n */\nexport const useVideoControls = (active, isSsrPosterEnabled = false) => {\n    const [isMuted, setIsMuted] = useState(true)\n    const [isPlaying, setIsPlaying] = useState(active)\n    const [isPaused, setIsPaused] = useState(false)\n    const [isVideoReady, setIsVideoReady] = useState(false)\n\n    // Sync playing state with active prop when not manually paused.\n    useEffect(() => {\n        if (!isPaused) {\n            setIsPlaying(active)\n        }\n    }, [active, isPaused])\n\n    const handlePlayPause = () => {\n        setIsPlaying(!isPlaying)\n        setIsPaused(true)\n    }\n\n    const handleMuteUnmute = () => {\n        setIsMuted(!isMuted)\n    }\n\n    const handleVideoReady = () => {\n        setIsVideoReady(true)\n    }\n\n    // When the SSR poster flag is on, synchronously derive isPlaying from the active\n    // prop to close the one-render-cycle gap where the effect hasn't fired yet and\n    // ReactPlayer still receives playing=true with muted=false, causing audio bleed.\n    // isMuted is intentionally NOT overridden here: a paused video produces no audio,\n    // so forcing muted=true is unnecessary and would break the user's mute preference\n    // when the video re-enters the viewport.\n    return {\n        isMuted,\n        isPlaying: isSsrPosterEnabled && !active ? false : isPlaying,\n        isPaused,\n        isVideoReady,\n        handlePlayPause,\n        handleMuteUnmute,\n        handleVideoReady\n    }\n}\n","import {useMemo} from 'react'\nimport {\n    durationStandard2,\n    easeStandardDecelerate,\n    delayStandard2,\n    delayExtended4\n} from 'pandora-shared-app/overrides/app/utils/motion'\n\n/**\n * Custom hook to compute control animation properties\n * Handles transition and initial position based on panel position\n *\n * @param {boolean} isFirstPanel - Whether this is the first panel\n * @param {boolean} hasFirstPanelAnimatedOnce - Whether first panel animation completed\n * @returns {Object} Animation transition and initial position\n */\nexport const useControlAnimation = (isFirstPanel, hasFirstPanelAnimatedOnce) => {\n    const transition = useMemo(() => {\n        if (isFirstPanel) {\n            return {duration: 0}\n        }\n        return {\n            ease: easeStandardDecelerate,\n            duration: durationStandard2,\n            delay: isFirstPanel && !hasFirstPanelAnimatedOnce ? delayExtended4 : delayStandard2\n        }\n    }, [isFirstPanel, hasFirstPanelAnimatedOnce])\n\n    const initialY = useMemo(() => {\n        return isFirstPanel ? 0 : 65\n    }, [isFirstPanel])\n\n    return {\n        transition,\n        initialY\n    }\n}\n","import {useState, useEffect, useRef} from 'react'\nimport {isServer} from '@salesforce/retail-react-app/app/utils/utils'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\n\n/**\n * Custom hook to detect broken videos and poster images.\n * All logic is gated behind enablePdpHideBrokenVideoOnMainImages flag.\n *\n * @param {string} videoSrc - Base video source URL\n * @param {string} computedPosterImage - Poster image URL\n * @param {string} videoProfileKey - Video profile key (mp4_480p, mp4_720p)\n * @param {function} onDetectBroken - Callback to notify parent when media is broken\n * @returns {Object} Health status and handlers\n */\nexport const useBrokenVideoDetection = (\n    videoSrc,\n    computedPosterImage,\n    videoProfileKey,\n    onDetectBroken\n) => {\n    const enablePdpHideBrokenVideoOnMainImages = useVariant(\n        LD_KEYS.enablePdpHideBrokenVideoOnMainImages,\n        false\n    )\n\n    // Health state for poster & video\n    // null = unknown/not checked yet, true = ok, false = broken\n    const [posterOk, setPosterOk] = useState(null)\n    const [videoOk, setVideoOk] = useState(null)\n\n    // Poster probe (works even before the player is active)\n    useEffect(() => {\n        if (!enablePdpHideBrokenVideoOnMainImages) return\n        if (isServer) return\n\n        if (!computedPosterImage) {\n            setPosterOk(false)\n            return\n        }\n        let cancelled = false\n        const img = new Image()\n        img.onload = () => {\n            if (!cancelled) setPosterOk(true)\n        }\n        img.onerror = () => {\n            if (!cancelled) setPosterOk(false)\n        }\n        img.src = computedPosterImage\n        return () => {\n            cancelled = true\n        }\n    }, [enablePdpHideBrokenVideoOnMainImages, computedPosterImage])\n\n    // Video probe (pre-check the actual stream URL without mounting player)\n    useEffect(() => {\n        if (!enablePdpHideBrokenVideoOnMainImages) return\n        if (isServer) return\n\n        if (!videoSrc) {\n            setVideoOk(false)\n            return\n        }\n        const vUrl = `${videoSrc}/${videoProfileKey}`\n        let disposed = false\n        const v = document.createElement('video')\n        v.preload = 'metadata'\n        const ok = () => {\n            if (!disposed) setVideoOk(true)\n        }\n        const ko = () => {\n            if (!disposed) setVideoOk(false)\n        }\n        v.addEventListener('canplay', ok, {once: true})\n        v.addEventListener('error', ko, {once: true})\n        v.src = vUrl\n        try {\n            v.load()\n        } catch (_) {\n            // ignore\n        }\n        return () => {\n            disposed = true\n            v.removeEventListener('canplay', ok)\n            v.removeEventListener('error', ko)\n            v.src = ''\n        }\n    }, [enablePdpHideBrokenVideoOnMainImages, videoSrc, videoProfileKey])\n\n    // Keep the latest onDetectBroken without re-running the effect due to identity changes\n    const onDetectBrokenRef = useRef(onDetectBroken)\n    useEffect(() => {\n        onDetectBrokenRef.current = onDetectBroken\n    }, [onDetectBroken])\n\n    // Notify parent when health changes\n    useEffect(() => {\n        if (!enablePdpHideBrokenVideoOnMainImages) return\n        const cb = onDetectBrokenRef.current\n        if (!cb) return\n\n        // Only consider video health (or missing videoSrc) to decide \"broken\".\n        const probesReady = videoOk !== null || !videoSrc\n        if (!probesReady) return\n\n        const broken = !videoSrc || videoOk === false\n        cb(broken, {\n            poster: posterOk === false, // informational\n            video: videoOk === false\n        })\n    }, [enablePdpHideBrokenVideoOnMainImages, videoOk, posterOk, videoSrc])\n\n    // Handler for ReactPlayer onReady event (backup detection)\n    const handleBrokenVideoReady = enablePdpHideBrokenVideoOnMainImages\n        ? () => setVideoOk(true)\n        : undefined\n\n    // Handler for ReactPlayer onError event (backup detection)\n    const handleBrokenVideoError = enablePdpHideBrokenVideoOnMainImages\n        ? () => setVideoOk(false)\n        : undefined\n\n    return {\n        posterOk,\n        videoOk,\n        isFeatureEnabled: enablePdpHideBrokenVideoOnMainImages,\n        handleBrokenVideoReady,\n        handleBrokenVideoError\n    }\n}\n","const IS_STORYBOOK = Boolean(\n    typeof window !== 'undefined' && (window?.__STORYBOOK_CLIENT_API__ || window?.__STORYBOOK_API__)\n)\n\nexport const isStorybook = () => IS_STORYBOOK\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"pandora-logo\",\n  \"use\": \"pandora-logo-usage\",\n  \"viewBox\": \"0 0 671 137\",\n  \"content\": \"<symbol xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 671 137\\\" fill=\\\"none\\\" id=\\\"pandora-logo\\\">\\n    <path d=\\\"M15.431 87.1561H34.6284C40.0586 87.1561 43.4958 86.4065 46.5125 84.5599C51.1382 81.7809 53.9172 76.5336 53.9172 70.5367C53.9172 64.5398 51.1565 59.2742 46.5125 56.5135C43.4958 54.6669 40.0586 53.9172 34.6284 53.9172H15.431V87.1744V87.1561ZM-1.22498 134.747V38.3582H35.1769C41.6675 38.3582 47.573 39.4004 52.2352 41.3749C63.8633 46.5674 71.1035 57.7384 71.1035 70.5184C71.1035 83.2984 63.8633 94.4511 52.2169 99.6619C47.573 101.636 41.6675 102.679 35.1769 102.679H15.431V134.747H-1.22498Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M103.117 82.2928L96.5354 99.6802H128.367L121.785 82.2928C118.201 72.7855 112.606 58.3052 112.606 58.3052H112.277C112.277 58.3052 106.683 72.7855 103.099 82.2928M141.732 134.747L134.345 115.239H90.5934L83.207 134.747H65.2711L103.958 38.3582H121.547L160.234 134.747H141.732Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M240.991 134.747L204.096 84.6696L189.78 65.4174V134.747H173.124V38.3582H189.926L226.84 88.436L241.156 107.67V38.3582H257.794V134.747H240.991Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M295.146 118.932H309.681C320.414 118.932 328.403 117.031 334.126 113.118C342.445 107.469 347.071 97.797 346.796 86.5528C347.071 75.3452 342.445 65.6551 334.126 60.0056C328.403 56.0929 320.395 54.1915 309.681 54.1915H295.146V118.951V118.932ZM278.508 134.747V38.3582H310.394C325.003 38.3582 337.362 41.832 346.138 48.414C357.858 57.0254 364.293 70.555 364.293 86.5528C364.293 102.551 357.839 116.08 346.138 124.673C337.362 131.255 325.003 134.729 310.394 134.729H278.508V134.747Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M426.621 51.9426C407.131 51.9426 392.98 66.4961 392.98 86.5528C392.98 106.61 407.131 121.163 426.621 121.163C446.111 121.163 460.262 106.61 460.262 86.5528C460.262 66.4961 446.111 51.9426 426.621 51.9426ZM426.621 136.978C397.477 136.978 375.501 115.294 375.501 86.5528C375.501 57.8116 397.477 36.1277 426.621 36.1277C455.764 36.1277 477.741 57.7933 477.741 86.5528C477.741 115.312 455.764 136.978 426.621 136.978Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M530.378 87.1561C535.808 87.1561 539.246 86.4065 542.262 84.5599C546.888 81.7809 549.649 76.5336 549.649 70.5367C549.649 64.5398 546.888 59.2742 542.244 56.4952C539.227 54.6486 535.79 53.899 530.36 53.899H508.932V87.1561H530.378ZM549.685 134.747L531.274 102.679H508.95V134.747H492.294V38.3582H530.927C537.435 38.3582 543.323 39.4004 547.985 41.3749C559.613 46.5674 566.853 57.7384 566.853 70.5184C566.853 83.2984 560.143 93.153 548.936 98.5466L548.351 98.8208L569.193 134.729H549.667L549.685 134.747Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M613.658 82.2928L607.076 99.6802H638.907L632.325 82.2928C628.742 72.7855 623.147 58.3052 623.147 58.3052H622.818C622.818 58.3052 617.223 72.7855 613.64 82.2928M652.272 134.747L644.886 115.239H601.134L593.748 134.747H575.812L614.499 38.3582H632.088L670.775 134.747H652.272Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M430.076 28.5767C430.076 26.6204 428.431 25.1212 426.621 25.1212C424.665 25.1212 423.019 26.6204 423.019 28.5767C423.019 30.6793 424.665 32.1785 426.621 32.1785C428.413 32.1785 430.076 30.6793 430.076 28.5767Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M426.072 0L423.366 21.172H429.729L427.188 0H426.072Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M440.004 28.5767C440.004 26.6204 438.359 25.1212 436.549 25.1212C434.592 25.1212 432.947 26.6204 432.947 28.5767C432.947 30.6793 434.592 32.1785 436.549 32.1785C438.34 32.1785 440.004 30.6793 440.004 28.5767Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M443.423 0L434.3 21.172H440.845L444.538 0H443.423Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M413.11 28.5767C413.11 30.6793 414.755 32.1785 416.565 32.1785C418.521 32.1785 420.167 30.6793 420.167 28.5767C420.167 26.6204 418.521 25.1212 416.565 25.1212C414.773 25.1212 413.11 26.6204 413.11 28.5767Z\\\" fill=\\\"currentColor\\\" />\\n    <path d=\\\"M408.557 0L412.268 21.172H418.796L409.691 0H408.557Z\\\" fill=\\\"currentColor\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {createContext, useContext, useState, useCallback, useRef, useEffect} from 'react'\nimport PropTypes from 'prop-types'\n\nconst StructuredDataContext = createContext({\n    schemas: {},\n    schemasRef: {current: {}},\n    hasMountedRef: {current: false},\n    registrationsRef: {current: new Map()},\n    register: () => {},\n    unregister: () => {}\n})\n\nconst mergeSchemaEntries = (entries) => {\n    if (entries.length === 0) return null\n    if (entries.length === 1) return entries[0]\n\n    const merged = {...entries[0]}\n    for (let i = 1; i < entries.length; i++) {\n        const incoming = entries[i]\n        Object.keys(incoming).forEach((prop) => {\n            if (Array.isArray(merged[prop]) && Array.isArray(incoming[prop])) {\n                merged[prop] = [...merged[prop], ...incoming[prop]]\n            } else {\n                merged[prop] = incoming[prop]\n            }\n        })\n    }\n    return merged\n}\n\nconst buildMergedSchemas = (registrations) => {\n    const schemasByKey = {}\n\n    for (const [, pageSchemas] of registrations) {\n        Object.entries(pageSchemas).forEach(([key, schema]) => {\n            if (!schema) return\n            if (!schemasByKey[key]) {\n                schemasByKey[key] = []\n            }\n            schemasByKey[key].push(schema)\n        })\n    }\n\n    const merged = {}\n    Object.entries(schemasByKey).forEach(([key, entries]) => {\n        merged[key] = mergeSchemaEntries(entries)\n    })\n\n    return merged\n}\n\nexport const StructuredDataProvider = ({children}) => {\n    const [schemas, setSchemasState] = useState({})\n    const schemasRef = useRef({})\n    const registrationsRef = useRef(new Map())\n    const hasMountedRef = useRef(false)\n\n    const rebuildSchemas = useCallback(() => {\n        const merged = buildMergedSchemas(registrationsRef.current)\n        schemasRef.current = merged\n        setSchemasState(merged)\n    }, [])\n\n    const register = useCallback(\n        (id, pageSchemas) => {\n            registrationsRef.current.set(id, pageSchemas)\n            rebuildSchemas()\n        },\n        [rebuildSchemas]\n    )\n\n    const unregister = useCallback(\n        (id) => {\n            registrationsRef.current.delete(id)\n            rebuildSchemas()\n        },\n        [rebuildSchemas]\n    )\n\n    useEffect(() => {\n        hasMountedRef.current = true\n    }, [])\n\n    return (\n        <StructuredDataContext.Provider\n            value={{schemas, schemasRef, hasMountedRef, registrationsRef, register, unregister}}\n        >\n            {children}\n        </StructuredDataContext.Provider>\n    )\n}\n\nStructuredDataProvider.propTypes = {\n    children: PropTypes.node\n}\n\nexport const useStructuredData = (pageSchemas) => {\n    const idRef = useRef(Symbol())\n    const {schemasRef, registrationsRef, register, unregister} = useContext(StructuredDataContext)\n\n    if (pageSchemas) {\n        registrationsRef.current.set(idRef.current, pageSchemas)\n        schemasRef.current = buildMergedSchemas(registrationsRef.current)\n    }\n\n    useEffect(() => {\n        if (pageSchemas) {\n            register(idRef.current, pageSchemas)\n        }\n\n        return () => {\n            unregister(idRef.current)\n        }\n    }, [JSON.stringify(pageSchemas)])\n}\n\nexport const useStructuredDataSchemas = () => {\n    const {schemas, schemasRef, hasMountedRef} = useContext(StructuredDataContext)\n    return hasMountedRef.current ? schemas : schemasRef.current\n}\n","import React from 'react'\nimport {Helmet} from 'react-helmet'\nimport {useCspNonce} from 'pandora-shared-app/overrides/app/contexts/csp-nonce'\nimport {useVariant} from 'pandora-shared-app/overrides/app/hooks/use-variant'\nimport {LD_KEYS} from 'pandora-shared-app/overrides/app/api_keys/ld-keys'\nimport {useStructuredDataSchemas} from './structured-data-context'\n\nexport const StructuredData = () => {\n    const isEnabled = useVariant(LD_KEYS.enableStructuredDataJson, false)\n    const nonce = useCspNonce()\n    const schemas = useStructuredDataSchemas()\n\n    if (!isEnabled) return null\n\n    const validSchemas = Object.entries(schemas).filter(([, value]) => Boolean(value))\n\n    if (!validSchemas.length) return null\n\n    return (\n        <Helmet>\n            {validSchemas.map(([key, schema]) => (\n                <script key={`structured-data-${key}`} type=\"application/ld+json\" nonce={nonce}>\n                    {JSON.stringify(schema).replace(/</g, '\\\\u003c')}\n                </script>\n            ))}\n        </Helmet>\n    )\n}\n\nexport {StructuredDataProvider, useStructuredData} from './structured-data-context'\n","export const buildWebSiteSchema = (appOrigin) => {\n    if (!appOrigin) return null\n\n    return {\n        '@context': 'https://schema.org',\n        '@type': 'WebSite',\n        '@id': `${appOrigin}/#website`,\n        url: appOrigin,\n        name: 'Pandora',\n        publisher: {\n            '@type': 'Organization',\n            '@id': `${appOrigin}/#organization`\n        },\n        potentialAction: {\n            '@type': 'SearchAction',\n            target: {\n                '@type': 'EntryPoint',\n                urlTemplate: `${appOrigin}/search?q={search_term_string}`\n            },\n            'query-input': 'required name=search_term_string'\n        }\n    }\n}\n","import SpriteSymbol from \"../../../../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n  \"id\": \"social-TikTok\",\n  \"use\": \"social-TikTok-usage\",\n  \"viewBox\": \"0 0 24 24\",\n  \"content\": \"<symbol viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"social-TikTok\\\">\\n<path d=\\\"M19.8761 10.3454C18.3276 10.3487 16.8173 9.86531 15.5585 8.96358V15.2501C15.5581 16.4144 15.2022 17.5509 14.5385 18.5075C13.8748 19.464 12.9348 20.1952 11.8443 20.603C10.7538 21.0109 9.5647 21.0761 8.43612 20.7899C7.30755 20.5037 6.29327 19.8797 5.52893 19.0014C4.76459 18.1232 4.28663 17.0324 4.15898 15.8752C4.03133 14.7179 4.26007 13.5492 4.81461 12.5254C5.36915 11.5017 6.22306 10.6717 7.26212 10.1463C8.30118 9.62104 9.47586 9.42551 10.6291 9.5859V12.7468C10.1018 12.5808 9.53549 12.5856 9.01111 12.7606C8.48674 12.9356 8.03106 13.2719 7.70915 13.7213C7.38724 14.1707 7.21556 14.7103 7.21861 15.2631C7.22167 15.8159 7.39931 16.3536 7.72617 16.7995C8.05302 17.2453 8.51239 17.5765 9.03867 17.7457C9.56495 17.9149 10.1312 17.9135 10.6567 17.7417C11.1821 17.5698 11.6398 17.2364 11.9645 16.789C12.2891 16.3415 12.4641 15.8029 12.4644 15.2501V2.96533H15.5585C15.5567 3.22701 15.5791 3.4883 15.6253 3.74588C15.7329 4.32004 15.9564 4.86622 16.2823 5.35106C16.6081 5.83589 17.0294 6.24919 17.5204 6.56569C18.2193 7.02728 19.0385 7.27305 19.8761 7.2724V10.3454Z\\\" fill=\\\"black\\\" />\\n</symbol>\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"64\":\"pages-page-not-found\",\"77\":\"pages-checkout-payment-processing\",\"128\":\"icons-bnpl\",\"197\":\"pages-registration\",\"215\":\"pages-reset-password\",\"291\":\"pages-account\",\"312\":\"pages-social-login-redirect\",\"339\":\"pages-home\",\"385\":\"pages-checkout\",\"438\":\"icons-feature\",\"505\":\"pages-account-wishlist\",\"540\":\"pages-store-locator\",\"650\":\"pages-checkout-one-click\",\"674\":\"icons-pictogram\",\"683\":\"icons-collaboration\",\"729\":\"pages-login\",\"766\":\"icons-payment\",\"788\":\"pages-cart\",\"826\":\"icons-social-media\",\"875\":\"pages-product-detail\",\"877\":\"pages-confirmation\",\"928\":\"pages-product-list\",\"930\":\"pages-login-redirect\"}[chunkId] || chunkId) + \".js?app=plp\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 792;","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => {\n\t\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n\t};\n\tvar uniqueName = \"product-list\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"@chakra-ui/react\", \"2.10.10\", () => (() => (__webpack_require__(69155))), 1);\n\t\t\tregister(\"@ebay/nice-modal-react\", \"1.2.13\", () => (() => (__webpack_require__(18807))), 1);\n\t\t\tregister(\"@launchdarkly/react-sdk\", \"4.1.17\", () => (() => (__webpack_require__(15085))), 1);\n\t\t\tregister(\"@loadable/component\", \"5.16.7\", () => (() => (__webpack_require__(67072))), 1);\n\t\t\tregister(\"@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader\", \"5.1.1\", () => (() => (__webpack_require__(8332))), 1);\n\t\t\tregister(\"@salesforce/commerce-sdk-react\", \"5.1.1\", () => (() => (__webpack_require__(24270))), 1);\n\t\t\tregister(\"@salesforce/pwa-kit-react-sdk/ssr/universal/hooks\", \"3.17.1\", () => (() => (__webpack_require__(4738))), 1);\n\t\t\tregister(\"@salesforce/retail-react-app/app/contexts\", \"0\", () => (() => (__webpack_require__(49949))), 1);\n\t\t\tregister(\"@salesforce/retail-react-app/app/hooks/use-current-customer\", \"9.1.1\", () => (() => (__webpack_require__(10061))), 1);\n\t\t\tregister(\"@salesforce/retail-react-app/app/hooks/use-navigation\", \"9.1.1\", () => (() => (__webpack_require__(51047))), 1);\n\t\t\tregister(\"@tanstack/react-query\", \"4.44.0\", () => (() => (__webpack_require__(54184))), 1);\n\t\t\tregister(\"framer-motion\", \"10.18.0\", () => (() => (__webpack_require__(14046))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/components/amplience/wrapper\", \"0.0.1\", () => (() => (__webpack_require__(1747))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/components/onetrust\", \"0.0.1\", () => (() => (__webpack_require__(91379))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/add-to-cart\", \"0.0.1\", () => (() => (__webpack_require__(88738))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/amplience\", \"0.0.1\", () => (() => (__webpack_require__(13401))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/mfe-registry\", \"0.0.1\", () => (() => (__webpack_require__(22542))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/product-list-data\", \"0.0.1\", () => (() => (__webpack_require__(2110))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/scroll-area\", \"0.0.1\", () => (() => (__webpack_require__(30026))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/tealium\", \"0.0.1\", () => (() => (__webpack_require__(8264))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/contexts/wish-list\", \"0.0.1\", () => (() => (__webpack_require__(39066))), 1);\n\t\t\tregister(\"pandora-shared-app/overrides/app/hooks/use-auth-modal\", \"0.0.1\", () => (() => (__webpack_require__(34342))), 1);\n\t\t\tregister(\"react-dom\", \"18.3.1\", () => (() => (__webpack_require__(43144))), 1);\n\t\t\tregister(\"react-helmet\", \"6.1.0\", () => (() => (__webpack_require__(93285))), 1);\n\t\t\tregister(\"react-hook-form\", \"7.88.0\", () => (() => (__webpack_require__(80824))), 1);\n\t\t\tregister(\"react-intl\", \"5.25.1\", () => (() => (__webpack_require__(5340))), 1);\n\t\t\tregister(\"react-router-dom\", \"5.3.4\", () => (() => (__webpack_require__(33664))), 1);\n\t\t\tregister(\"react\", \"18.3.1\", () => (() => (__webpack_require__(14041))), 1);\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map(p=>{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&\"u\"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e<t;r++}\n}\nvar rangeToString = (range) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a<range.length;a++){e--,n+=\"u\"==(typeof(t=range[a]))[0]?\"-\":(e>0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?\"not(\"+o()+\")\":1===t?\"(\"+o()+\" || \"+o()+\")\":2===t?g.pop()+\" \"+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\\((.+)\\)$/,\"$1\")}\n}\nvar satisfy = (range, version) => {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:\"\";if(n>=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if(\"s\"!=g&&\"n\"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else\"s\"!=g&&\"n\"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();\n}\nvar exists = (scope, key) => {\n\treturn scope && __webpack_require__.o(scope, key);\n}\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar eagerOnly = (versions) => {\n\treturn Object.keys(versions).reduce((filtered, version) => {\n\t\t\tif (versions[version].eager) {\n\t\t\t\tfiltered[version] = versions[version];\n\t\t\t}\n\t\t\treturn filtered;\n\t}, {});\n};\nvar findLatestVersion = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key];\n};\nvar findSatisfyingVersion = (scope, key, requiredVersion, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key, eager) => {\n\tvar versions = eager ? eagerOnly(scope[key]) : scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion, eager) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \")\" + (eager ? \" for eager consumption\" : \"\") + \" of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar fail = (msg) => {\n\tthrow new Error(msg);\n}\nvar failAsNotExist = (scopeName, key) => {\n\treturn fail(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n}\nvar warn = /*#__PURE__*/ (msg) => {\n\tif (typeof console !== \"undefined\" && console.warn) console.warn(msg);\n};\nvar init = (fn) => (function(scopeName, key, eager, c, d) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then && !eager) {\n\t\treturn promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], key, false, c, d));\n\t}\n\treturn fn(scopeName, __webpack_require__.S[scopeName], key, eager, c, d);\n});\n\nvar useFallback = (scopeName, key, fallback) => {\n\treturn fallback ? fallback() : failAsNotExist(scopeName, key);\n}\nvar load = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\twarn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))\n\treturn get(findLatestVersion(scope, key, eager));\n});\nvar loadStrictVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);\n\tif (satisfyingVersion) return get(satisfyingVersion);\n\tif (fallback) return fallback();\n\tfail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key, eager, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\treturn get(scope[key][version]);\n});\nvar loadSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\twarn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar loadStrictSingletonVersion = /*#__PURE__*/ init((scopeName, scope, key, eager, requiredVersion, fallback) => {\n\tif (!exists(scope, key)) return useFallback(scopeName, key, fallback);\n\tvar version = findSingletonVersionKey(scope, key, eager);\n\tif (!satisfy(requiredVersion, version)) {\n\t\tfail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\t}\n\treturn get(scope[key][version]);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t44252: () => (loadSingletonVersion(\"default\", \"@loadable/component\", true, [1,5,15,3], () => (() => (__webpack_require__(67072))))),\n\t10970: () => (loadSingletonVersion(\"default\", \"react-dom\", true, [1,18,2,0], () => (() => (__webpack_require__(43144))))),\n\t71128: () => (loadSingletonVersion(\"default\", \"react\", true, [1,18,2,0], () => (() => (__webpack_require__(14041))))),\n\t97133: () => (loadSingletonVersion(\"default\", \"framer-motion\", true, [1,10,12,9], () => (() => (__webpack_require__(14046))))),\n\t49159: () => (loadSingletonVersion(\"default\", \"@tanstack/react-query\", true, [1,4,28,0], () => (() => (__webpack_require__(54184))))),\n\t83281: () => (loadSingletonVersion(\"default\", \"react-router-dom\", true, [1,5,3,4], () => (() => (__webpack_require__(33664))))),\n\t40009: () => (loadSingletonVersion(\"default\", \"@salesforce/commerce-sdk-react\", true, [4,5,1,1], () => (() => (__webpack_require__(24270))))),\n\t94212: () => (loadSingletonVersion(\"default\", \"@salesforce/retail-react-app/app/contexts\", true, [4,9,1,1], () => (() => (__webpack_require__(49949))))),\n\t75878: () => (loadSingletonVersion(\"default\", \"@launchdarkly/react-sdk\", true, [1,4,1,9], () => (() => (__webpack_require__(15085))))),\n\t89722: () => (loadSingletonVersion(\"default\", \"@salesforce/retail-react-app/app/hooks/use-current-customer\", true, [4,9,1,1], () => (() => (__webpack_require__(10061))))),\n\t74342: () => (loadSingletonVersion(\"default\", \"react-helmet\", true, [1,6,1,0], () => (() => (__webpack_require__(93285))))),\n\t37020: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/tealium\", true, [4,0,0,1], () => (() => (__webpack_require__(8264))))),\n\t87486: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/components/onetrust\", true, [4,0,0,1], () => (() => (__webpack_require__(91379))))),\n\t81672: () => (loadSingletonVersion(\"default\", \"react-intl\", true, [1,5,25,1], () => (() => (__webpack_require__(5340))))),\n\t59012: () => (loadSingletonVersion(\"default\", \"@salesforce/pwa-kit-react-sdk/ssr/universal/hooks\", true, [4,3,17,1], () => (() => (__webpack_require__(4738))))),\n\t98595: () => (loadSingletonVersion(\"default\", \"@chakra-ui/react\", true, [1,2,10,9], () => (() => (__webpack_require__(69155))))),\n\t76718: () => (loadSingletonVersion(\"default\", \"@salesforce/commerce-sdk-react/hooks/useAuthorizationHeader\", true, [4,5,1,1], () => (() => (__webpack_require__(8332))))),\n\t19894: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/amplience\", true, [4,0,0,1], () => (() => (__webpack_require__(13401))))),\n\t25708: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/scroll-area\", true, [4,0,0,1], () => (() => (__webpack_require__(30026))))),\n\t30406: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/mfe-registry\", true, [4,0,0,1], () => (() => (__webpack_require__(22542))))),\n\t61414: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/add-to-cart\", true, [4,0,0,1], () => (() => (__webpack_require__(88738))))),\n\t51134: () => (loadSingletonVersion(\"default\", \"@salesforce/retail-react-app/app/hooks/use-navigation\", true, [4,9,1,1], () => (() => (__webpack_require__(51047))))),\n\t81699: () => (loadSingletonVersion(\"default\", \"react-hook-form\", true, [1,7,43,9], () => (() => (__webpack_require__(80824))))),\n\t66762: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/wish-list\", true, [4,0,0,1], () => (() => (__webpack_require__(39066))))),\n\t29528: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/contexts/product-list-data\", true, [4,0,0,1], () => (() => (__webpack_require__(2110))))),\n\t39826: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/components/amplience/wrapper\", true, [4,0,0,1], () => (() => (__webpack_require__(1747))))),\n\t17073: () => (loadSingletonVersion(\"default\", \"pandora-shared-app/overrides/app/hooks/use-auth-modal\", true, [4,0,0,1], () => (() => (__webpack_require__(34342))))),\n\t42508: () => (loadSingletonVersion(\"default\", \"@ebay/nice-modal-react\", true, [1,1,2,13], () => (() => (__webpack_require__(18807)))))\n};\nvar initialConsumes = [44252,10970,71128,97133,49159,83281,40009,94212,75878,89722,74342,37020,87486,81672,59012,98595,76718,19894,25708,30406,61414,51134,81699,66762];\ninitialConsumes.forEach((id) => {\n\t__webpack_require__.m[id] = (module) => {\n\t\t// Handle case when module is used sync\n\t\tinstalledModules[id] = 0;\n\t\tdelete __webpack_require__.c[id];\n\t\tvar factory = moduleToHandlerMapping[id]();\n\t\tif(typeof factory !== \"function\") throw new Error(\"Shared module is not available for eager consumption: \" + id);\n\t\tmodule.exports = factory();\n\t}\n});\nvar chunkMapping = {\n\t\"121\": [\n\t\t44252,\n\t\t10970\n\t],\n\t\"792\": [\n\t\t71128,\n\t\t97133,\n\t\t49159,\n\t\t83281,\n\t\t40009,\n\t\t94212,\n\t\t75878,\n\t\t89722,\n\t\t74342,\n\t\t37020,\n\t\t87486,\n\t\t81672,\n\t\t59012,\n\t\t98595,\n\t\t76718,\n\t\t19894,\n\t\t25708,\n\t\t30406,\n\t\t61414,\n\t\t51134,\n\t\t81699,\n\t\t66762\n\t],\n\t\"834\": [\n\t\t29528,\n\t\t39826\n\t],\n\t\"961\": [\n\t\t17073,\n\t\t42508\n\t]\n};\nvar startedInstallModules = {};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tif(!startedInstallModules[id]) {\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tstartedInstallModules[id] = true;\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t\t}\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"__LOADABLE_LOADED_CHUNKS__\"] = self[\"__LOADABLE_LOADED_CHUNKS__\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// module factories are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(42995)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","DEFAULT_LOCALE","MAX_CACHE_AGE","STALE_WHILE_REVALIDATE","DEFAULT_SEARCH_PARAMS","limit","offset","sort","refine","DEFAULT_LIMIT_VALUES","DEFAULT_ORDERS_SEARCH_PARAMS","DEFAULT_BONUS_PRODUCT_SEARCH_PARAMS","RECENT_SEARCH_LIMIT","RECENT_SEARCH_KEY","RECENT_SEARCH_MIN_LENGTH","PRODUCT_LIST_IMAGE_VIEW_TYPE","PRODUCT_LIST_SELECTABLE_ATTRIBUTE_ID","HOME_SHOP_PRODUCTS_CATEGORY_ID","HOME_SHOP_PRODUCTS_LIMIT","CAT_MENU_DEFAULT_ROOT_CATEGORY","DEFAULT_SHIPMENT_ID","PRODUCT_BADGE_DETAILS","propertyName","label","defineMessage","id","defaultMessage","type","value","color","cssColorGroups","beige","black","blue","brown","green","grey","gray","silver","navy","orange","pink","purple","red","white","yellow","gold","miscellaneous","FILTER_ACCORDION_SATE","API_ERROR_MESSAGE","INVALID_TOKEN_ERROR_MESSAGE","FEATURE_UNAVAILABLE_ERROR_MESSAGE","HOME_HREF","urlPartPositions","PATH","QUERY_PARAM","NONE","TOAST_MESSAGE_ADDED_TO_WISHLIST","options","one","other","pluralType","TOAST_MESSAGE_ALREADY_IN_WISHLIST","TOAST_MESSAGE_REMOVED_ITEM_FROM_CART","TOAST_ACTION_VIEW_WISHLIST","TOAST_MESSAGE_REMOVED_FROM_WISHLIST","TOAST_MESSAGE_STORE_INSUFFICIENT_INVENTORY","EINSTEIN_RECOMMENDERS","ADD_TO_CART_MODAL","CART_RECENTLY_VIEWED","CART_MAY_ALSO_LIKE","PDP_COMPLETE_SET","PDP_MIGHT_ALSO_LIKE","PDP_RECENTLY_VIEWED","EMPTY_SEARCH_RESULTS_TOP_SELLERS","EMPTY_SEARCH_RESULTS_MOST_VIEWED","SHIPPING_COUNTRY_CODES","ACTIVE_DATA_ENABLED","REMOVE_UNAVAILABLE_CART_ITEM_DIALOG_CONFIG","dialogTitle","confirmationMessage","primaryActionLabel","primaryActionAriaLabel","onPrimaryAction","noop","STORE_LOCATOR_IS_ENABLED","STORE_LOCATOR_NUM_STORES_PER_REQUEST_API_MAX","LOGIN_TYPES","PASSWORD","PASSWORDLESS","SOCIAL","INVALID_TOKEN_ERROR","USER_NOT_FOUND_ERROR","PAYMENT_METHOD_TYPES","CARD","PAYPAL","VENMO","PAYMENT_GATEWAYS","STRIPE","ADYEN","SETUP_FUTURE_USAGE","ON_SESSION","OFF_SESSION","symbol","_node_modules_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default","use","viewBox","content","_node_modules_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default","add","_svg_baker_runtime_browser_symbol_js__WEBPACK_IMPORTED_MODULE_0___default","_svg_sprite_loader_runtime_browser_sprite_build_js__WEBPACK_IMPORTED_MODULE_1___default","MISSING_IMAGE","MISSING_VIDEO","MISSING_MEDIA","MediaError","props","message","aspectRatio","container","alert","icon","title","useMultiStyleConfig","search","useLocation","vse","URLSearchParams","get","AlertBox","useMemo","React","Alert","status","variant","sx","height","AlertIcon","boxSize","AlertTitle","fontSize","Text","maxWidth","NO_ASPECT_RATIO","AspectRatio","ratio","Box","width","displayName","propTypes","PropTypes","removeInvisibleChars","str","replace","trim","Provider","useProductListContextData","createContext","name","errorMessage","ProductListDataProvider","children","isProductSearchFetching","setIsProductSearchFetching","useState","isRequired","createIconComponent","passProps","localizationAttributes","toLowerCase","match","toUpperCase","component","forwardRef","ref","_theme$components","_theme$components$Ico","theme","useTheme","intl","useContext","IntlContext","Object","keys","length","_props","intlProp","otherProps","_objectWithoutProperties","_excluded","Error","forEach","key","formatMessage","baseStyle","components","Icon","_extends","xlinkHref","carouselConfig","breakpoints","slidesPerView","slidesPerGroup","spaceBetween","loopAdditionalSlides","inGridCarouselConfig","loop","confirmationSheetCarouselConfig","cachedId","TYPE_STRATEGIES","RECOMMENDATION_TYPES","ITEM","getTypeSpecificParams","product","_product$master","productId","master","masterId","isReady","_product$master2","CATEGORY","recommendedCategory","categoryId","Array","isArray","KEYWORD","query","PERSONALIZED","userId","_product$master3","_product$master4","GLOBAL","IN_GRID_LAYOUT","CAROUSEL_CONFIG_STRATEGIES","default","resolveCarouselConfig","layout","LAYOUT_CACHE_POLICIES","CACHE_POLICIES","RETAINED","LAYOUT_MAX_PRODUCTS","RecommendedProductsComponent","_ref","recommender","wishlist","addItemToWishlist","removeItemFromWishlist","isPdp","category","enableFavourite","hideSwatches","dataSlotId","uniqueId","personalisationType","section","instanceId","recommendationType","recommenderEngine","recommenderEngineProp","onEmpty","_useEinstein","useEinstein","getRecommendations","recommendations","einstein","_excluded2","styles","setStoryRef","isIntersecting","useIntersectionObserver","threshold","enablePdpNewRecommendationsApi","useVariant","LD_KEYS","pdpRecommenderEngine","useStringVariant","pdpRecommendationEngine","enableBrDiscoveryFallback","enableBrDiscoveryFallbackRecommendations","enablePdpRecommendationsFindingMethodSplit","resolvedProductId","shouldUseNewRecommendationsApi","RECOMMENDER_ENGINES","BLOOMREACH","channelName","resolvedType","isBloomreachEngine","usid","useUsid","brVisitorIdRaw","getCookie","BR_UID_COOKIE","getBrAnonymousVisitorId","window","generate","buf","Uint32Array","crypto","getRandomValues","Date","now","undefined","encodedBrVisitorId","encodeURIComponent","visitorId","pageUrl","location","href","recommendationParams","buildRecommendationParams","enabled","cachePolicy","strategy","componentProps","_objectSpread","recommenderId","newRecommendations","metadata","isLoading","isLoadingRecommendations","useRecommendations","trackView","trackClick","trackAddToCart","isBloomreachAddTrackingEnabled","useRecommendationsTracking","useEffect","categories","productConfig","_recommendations$recs","maxProducts","capped","productIDs","slice","map","rec","_rec$product","filter","Boolean","join","recs","_rec$product2","isEinsteinEngine","EINSTEIN","ProductCarouselPlaceholder","productFindingMethod","resolveProductFindingMethod","ProductCarousel","onProductClick","productClickHandler","clickedProduct","searchQuery","sendViewProduct","sendClickSearch","sendClickCategory","onAddToCart","skipBloomreachAddToCartPixel","disableInfiniteScroll","showBuyFromTile","RecommendedProducts","RecommendedProductsOptimized","memo","prevProps","nextProps","_prevProps$product","_nextProps$product","productIdSame","recommenderSame","isPdpSame","categorySame","typeSame","engineSame","wishlistSame","layoutSame","uniqueIdSame","personalisationTypeSame","DRAWER_VARIANT","LEARN_MORE","PARTIAL","FULL","DRAWER_WIDTHS","DRAWER_SPACING","HEADER_HEIGHT","HEADER_TOP_PADDING","CLOSE_BUTTON_MARGIN_TOP","DESKTOP_SIDE_MARGIN","MOBILE_SIDE_MARGIN","ACCESSIBILITY_DEFAULTS","CLOSE_ARIA_LABEL","drawerContentStyles","base","xl","customDrawerStyle","overlayDrawerStyle","bg","backdropFilter","zIndex","contentAreaStyles","display","msOverflowStyle","scrollbarWidth","headerStyles","justify","align","marginBottom","spacing","paddingTop","headingStyles","as","fontWeight","letterSpacing","textTransform","flex","paddingRight","marginTop","closeButtonStyles","size","minWidth","_focus","outline","outlineColor","outlineOffset","flexShrink","contentStyles","lineHeight","listStyleType","listStylePosition","paddingLeft","marginLeft","textDecoration","borderBottom","borderColor","_hover","fontStyle","borderCollapse","backgroundColor","padding","textAlign","border","borderLeft","borderRadius","fontFamily","overflowX","useDolCommonParams","site","locale","useMultiSite","isOrgIdShortCodeSideIdParametersDisabled","disableGetCustomerBasketsOrganisationIdShortCodeSiteIdParameters","isDolQ3MigrationEnabled","enableGlobalDolQ3ChannelMigration","app","commerceAPI","parameters","organizationId","shortCode","getConfig","source","siteId","organisationId","CopyrightText","text","dataAuto","direction","textStyle","copyrightText","validatePassword","hasMinChars","hasUppercase","test","hasLowercase","hasNumber","hasSpecialChar","TEALIUM_CONSTANTS","OTHER","MENU","VISUAL_MENU","BOTTOM_MENU","GEO","PLATFORM","EXPERIENCE","CUSTOMER","STATUS","LOGGED_IN","NOT_LOGGED_IN","USER_DEVICE_TYPE","MOBILE","DESKTOP","CONTENT","COMMERCIAL","SEARCH","SEARCH_RESULTS","SEARCH_RESULTS_COMBINED","SEARCH_METHOD","MANUAL_SUBMIT","SUGGESTED_PRODUCT","SUGGESTED_CATEGORY","SUGGESTED_TERM","SEARCH_ENGINE","SALESFORCE","FILTER","FILTER_TYPE","ADAPTIVE","PRIMARY","FILTER_AND_SORT_ENGINE","ESTORE_EVENT","PRODUCT_LISTING_VIEW","PRODUCT_LISTING_WISHLIST_ADD","PRODUCT_LISTING_WISHLIST_REMOVE","PRODUCT_DETAIL_VIEW","PRODUCT_SORT_CHANGED","PRODUCT_FILTERS_CHANGED","PRODUCT_OUT_OF_STOCK","PRODUCT_DETAILS_CLICKED","PRODUCT_SIZE_GUIDE_VIEWED","PRODUCT_DETAILS_NOTIFY_ME_SUBMITTED","RECOMMENDATION_VIEWED","RECOMMENDATION_CLICKED","INTERNAL_SEARCH","INTERNAL_SEARCH_CLICKED","INTERNAL_SEARCH_ZERO_RESULTS","PRODUCT_ADD_TO_CART","CART_CREATED","CART_UPDATED","ENGRAVING_ADD_TO_CART","ERROR","ENGRAVING_EDITOR_OPEN","ENGRAVING_EDITOR_CLOSE","PROMISE_ENGINE_MESSAGE_SHOWN","BUTTON_CLICKED","PLP_AUTOLOAD","SIZE_SELECTOR_OPENED","GEMMA_ENTRY_POINT_CLICK","STORE","BUTTON_TYPE","STORELOOKUP","SHOPSEARCH","CALLSTORE","STOREDETAILS","CLOSESTORELOOKUP","SELECTSTORE","CHANGESTORE","SEARCHAGAIN","USE_LOCATION","ACCESSPOINTS","CHANGESTOREGEMINI","CHECKAVAILABILITY","DELIVERY_METHOD_PE","PROMISE_ENGINE","PE_OPENED","PE_ZIPCODE_APPLIED","PAGENAMES","PRODUCT_LIST","PRODUCT_PLP","PRODUCT_OVERVIEW","CONTENT_HOMEPAGE","PRODUCT_DETAILS","PRODUCT","PRODUCT_VIEW","PAGETYPE","PRODUCT_CATEGORY","CONTENT_HOME","PAGE_CONTENT","MARKETING","ERROR_TYPE","DRAWER","EVENTS","VIEW","CLOSE","TYPES","SHOP_THE_LOOK","IDLE_USER_OVERLAY","QA","SIZE_SELECTOR","SIZE_GUID","CLICK_AND_COLLECT","COUNTRY_SELECTOR","PROMOTION_DETAILS","BUTTON_ID","SIZE_GUIDE_GET_STARTED","SIZE_GUIDE_COMPLETED","SIZE_GUIDE_MEASURE_FINGER","LOAD_MORE","RING_SIZER_QR","SOURCE_PARAM_KEY","SOURCE_PARAM_VALUE","TRAFFIC_SOURCE","FEATURE_NAME","FEATURE_STEP","QR_VISIBLE","QR_INTERACTION","LANDING","VIRTUAL_PAGE_NAME","QR_EXPOSURE","LANDING_QR","TRY_ON","VIRTUAL_PAGE_URL","THEME_COLOR","DEFAULT_SITE_TITLE","TAB_NAMES","SHOP","DISCOVER","AMPLIENCE_HP_HEADER_KEY","AMPLIENCE_KEYS","HOME","PLP","PDP","INHERITANCE","AMPLIENCE_STATIC_CONTENT_KEYS","FOOTER_LINKS","FOOTER_ASSURANCES","NAVIGATION_CONTENT","TRANSLATIONS","EXPLORE_PROMPT_SLOT","AMPLIENCE_PERSONALIZATION_KEYS","PROMOTION_TYPES","TEXT","PROGRESS_BAR","COUNTDOWN_TIMER","TICKER","PRODUCT_TILE_IMAGE_WIDTHS","md","lg","TEMPLATE_CATEGORY_SFRA_REDIRECT","COMMON_GROUPS","SUGGEST","CART","WIDGET","COMMON_ACTION_TYPES","CLICK","CLICK_ADD","QUICK_VIEW","SUBMIT","WIDGET_VIEW","WIDGET_CLICK","WIDGET_ADD","PIXEL_CONSTANTS","EVENT_TYPES","HOME_PAGE_VIEW","VIEW_PRODUCT","VIEW_CATEGORY","VIEW_SEARCH","VIEW_CONVERSION","ADD_TO_CART","HOME_PAGE","SEARCH_RESULT","CONVERSION","EVENT","ADDTOCART","GROUP","ACTION_TYPE","QUICKVIEW","WIDGETVIEW","WIDGETCLICK","WIDGETADD","REMOTE_COMPONENT_EVENTS","PVA_MODAL_SHOW","PVA_MODAL_CLOSE","PVA_MODAL_PROCESSING","PVA_MODAL_READY","ENGRAVING_APP_READY","BRACELET_EDITOR_APP_READY","PVA_NAVIGATE","MONETATE_CUSTOM_EVENTS","PVA_FAB_SHOW","COLOR_FILTERS","clear","multicolor","multi","turquoise","champagne","ITEMS_WITH_BORDER","EMPH_PRODUCT_INDEX_BASE","EMPH_PRODUCT_INDEX_NO_CONTENT","EMPH_PRODUCT_INDEX_ONE_SLOT","IMAGE_CONF","bgColor","quality","imgType","PRODUCT_MAIN_IMAGE_WIDTHS","ErrorBoundary","Component","constructor","super","this","state","hasError","getDerivedStateFromError","componentDidCatch","error","info","console","componentStack","render","fallbackComponent","FallbackComponent","__WEBPACK_DEFAULT_EXPORT__","useProductSearchV2","apiOptions","queryOptions","appConfig","appOrigin","useAppOrigin","getUserPriceContext","useUserPriceSegment","basePath","pathname","rawSourceFlag","defaultSearchSourceFlag","isPreviewMode","useEffectiveDateTime","sourceFlag","isBloomreachEnabled","isContextEnabled","isSegContextEnabled","isSsrPriceContextFixEnabled","enableGlobalSsrPriceContextCookieHandling","enableProductSearchOn404","enablePlpProductSearch404Redirect","enableBrAbTesting","enableSearchRefUrl","enablePlpScrollRestoration","isSearchEnabled","dolQ3Headers","getDolChannelHeaders","searchProvider","getSearchProviderHeaderValue","proxyPath","dolAPI","apiParams","brCookie","useCookie","allowTracking","selectedDnt","useConsent","brCookieValue","hasPersonalizationAvailable","document","cookie","refUrlRef","useRef","prevLocationKeyRef","locationKey","current","isServer","getRefUrl","refUrl","defaultParams","defaultSearchRequestOptions","url","referrerUrl","allowedParamKeys","productSearchParamKeys","getCustomKeys","allowedParameters","pick","omitNullable","restWithoutReferrerUrl","queryKeyParams","queryKey","queryKeyHelpers","productSearch","req","res","useServerContext","data","urlMapping","useUrlMapping","isQueryEnabled","isCgidManual","urlSegment","method","_asyncToGenerator","_ref2","path","restOptions","cookieValue","getRawCookieValue","headers","getParsedCookieValue","failSafe","redirectResult","handleUrlMappingParams","refinements","canonicalBRRefinementsMapper","destinationUrl","redirect","redirectUrl","buildRedirectUrl","statusCode","resourceId","catKey","updatedArray","skipCredentials","_document$cookie$matc","brCookieAtRequestTime","RegExp","isPersonalizedAtRequestTime","response","getApiData","queryParams","transformBRSearchResponse","customerSegment","_x","apply","arguments","setLdContextAttr","queryResult","useInfiniteQuery","baseUrl","getCustomApiPaths","PRODUCT_SEARCH_V2","targetEnvironment","initialPageParam","getNextPageParam","lastPage","allPages","total","nextOffset","defaultProductQueryOptions","requiredParameters","throwIfProductSearch404","searchText","isCmsOwnedSearch","_queryResult$error","_queryResult$error2","_queryResult$error2$r","productSearchErrorStatus","HTTPNotFound","REFINEMENT_DISALLOW_LIST","useCustomProductSearch","restParams","_refine","categorySegment","enableNewDolContract","isUrlMappingLoading","pageNumber","customer","useCurrentCustomer","searchParams","shouldWaitForUrlMapping","enableCrawlablePaginatedPlpUrls","enablePlpPageNumberFix","startingOffset","keepPreviousData","select","pages","restProps","firstOffset","pageParams","startPage","Math","floor","hits","flatMap","attributeId","includes","_startPage","useProductSearch","isRefetched","isRegistered","isFetchedAfterMount","refetch","useCustomProducts","ids","useProducts","isProductOrderable","_product$inventory","variationAttributes","some","attr","hasSizeVariations","_product$variationAtt","_sizeAttr$values","sizeAttr","find","values","orderable","inventory","usePasswordReset","_getConfig$app$login","showToast","useToast","useIntl","config","login","resetPassword","resetPasswordLandingPath","landingPath","callbackURI","getPasswordlessCallbackUrl","getPasswordResetTokenMutation","useAuthHelper","AuthHelpers","GetPasswordResetToken","resetPasswordMutation","ResetPassword","getPasswordResetToken","email","mutateAsync","user_id","mode","callback_uri","token","newPassword","pwd_action_token","new_password","onSuccess","position","_x2","LOCALIZED_PROGRESS_BAR_KEYS","LOCALIZED_APPROACHING_DISCOUNT_KEYS","overlayLocalizedText","localized","localizedKeys","overlay","useCurrentBasket","customerId","useCustomerId","_useCustomerBaskets","useCustomerBaskets","basketsData","restOfQuery","handlePageShow","event","persisted","addEventListener","removeEventListener","currentBasket","_basketsData$baskets","_basketsData$baskets2","baskets","basket","basketId","shopperBasket","refetchShopperBasket","useBasket","lastModified","enrichedBasket","approachingDiscounts","c_approachingDiscounts","promotionProgressBarInformation","c_promotionProgressBarInformation","filteredItems","filterProductItems","productItems","derivedData","hasBasket","totalItems","reduce","acc","item","quantity","selectOptimizedCategoryData","enableRestrictedFields","description","pageTitle","pageDescription","pageKeywords","thumbnail","parentCategoryId","parentCategoryTree","onlineSubCategoriesCount","c_slugURL","c_relSlugURL","c_adaptiveFilterData","c_isDiscoverTabDefault","c_hideFromBreadcrumb","c_showInMenu","c_template","c_PLPorRedirect","c_alternativeUrl","c_additionalTracking","c_bubbleImageUrl","c_visualNavigation","c_visualNavigationRecirculation","c_metadata","c_pndCategoryBanner","c_promotionID","c_contentAssetID","useCartErrorHandling","getErrorMessage","_error$errors$","_error$errors$2","errors","code","TealiumScript","tealium","account","profile","script","baseURL","environment","isUpdatedUtagDataSet","setIsTealiumInitialized","initialDataObject","useTealium","nonce","useCspNonce","utag_cfg_ovrd","noview","csp_nonce","utag_data","utagAsyncScript","createElement","src","async","setAttribute","headElement","head","firstHeadScript","getElementsByTagName","insertBefore","Helmet","defer","TealiumProvider","_customer$addresses","_customer$addresses$","_customer$addresses2","_customer$addresses2$","setIsUpdatedUtagDataSet","isTealiumInitialized","isVisualNavigationTriggered","setIsVisualNavigationTriggered","isAdaptiveFilterTriggered","setIsAdaptiveFilterTriggered","loqateEnabled","enablePdpCncLoqateStoreSearch","enableTealiumRefetchCustomer","enableTealiumPdpViewCurrentData","firstName","getInitialDataObject","isMobile","lib","Fr","isCncAbtestApp","process","preferredCurrency","lastName","creationDate","c_masterCRMID","c_crmLoyaltyData","addresses","city","postalCode","initialDataObjectRef","waitForTealium","Promise","resolve","checkTealiumLoaded","_window","utag","setTimeout","link","useCallback","dataObject","restArgs","then","view","expand","isGuest","customerType","useCustomerType","useCustomer","ProductFetcher","gridData","setProductToDisplay","fetchProductById","setFetchProductById","setShouldRefetch","shouldRefetch","onProductSearchResult","setPromotionalPricing","setVariantPromotionalPricing","cgid","pids","updatedRestParams","isFetching","productSearchResult","productsForPricing","promotionalPricing","usePromotionalPricing","variantPromotionalPricing","useVariantPromotionalPricing","productData","excludeSetsFromWishlist","enableGlobalExcludeSetsFromWishlist","stableData","promotionalPrices","JSON","stringify","stableVariantData","variantPromotionalPrices","isComplete","displayedProducts","_productData$data","transformedProducts","_product$c_extend","_product$c_extend$pri","_promotionPriceInfo$p","_promotionPriceInfo$p2","_product$variants","_product$variants$","_product$variants$$va","_product$c_extend2","_product$c_extend2$pr","_product$variants2","_product$variants2$","price","promotionPriceInfo","c_extend","priceInfo","promotionPrice","isPriceTesting","promoDetails","standardPriceTest","salePrice","productPromotions","promo","promotionalPrice","getSalePrice","originalPrice","currency","hitType","setExclusionTileFields","productName","custom","metalName","c_metalName","metalGroup","c_metalGroup","c_primaryCategory","variants","variationValues","discount","recommendation","isLowInventory","isNew","isEngravable","productUrl","slugUrl","lastLowestPrice","representedProduct","pricePerUnit","primaryImage","findImage","imageGroups","stableProductSearchResult","prevDisplayedProducts","_imageGroup$images","imageGroup","group","viewType","images","product_fetcher","ProductList","products","displayLimit","isShopTheLook","isInGrid","flags","isBuyFromTileAvailable","index","ProductTileWrapper","navigate","product_list","ProductGrid","columns","style","productToDisplay","setIsLoading","useSearchParams","params","useParams","isSearch","gridPromotionalPricing","setGridPromotionalPricing","gridVariantPricing","setGridVariantPricing","handlePromotionalPricingUpdate","pricing","handleVariantPricingUpdate","productTileFlags","useProductTileFlags","useProductCapabilities","useCategoryFromCache","withApiFallback","Grid","templateColumns","rowGap","isHydrated","ProductListSkeleton","EmptySearchResults","product_grid","isAbsoluteURL","useAppOriginConfig","pwaKitAppOrigin","filterHidden","trail","v","isHiddenFromBreadcrumb","useBreadcrumbs","showBreadcrumbs","_urlMapping$resourceT","_urlMapping$resourceT2","directUse","isCategoryResource","resourceType","call","candidateResourceId","cachedCategory","categoryWithTree","useCategory","parentTrail","visible","homeBreadcrumb","hookConfig","authenticatedMethod","useAuthorizationHeader","wrappedMethod","pageParam","useReactInfiniteQuery","hasAllKeys","RingSizerIcon","fill","xmlns","d","fillRule","clipRule","ring_sizer_icon","getProductFindingMethod","getQrParams","isFromQr","findingMethod","MOBILE_ONLY_DISPLAY","DESKTOP_ONLY_DISPLAY","MOBILE_ONLY_FLEX","DESKTOP_ONLY_FLEX","RingSizerEntry","ringSizerModule","hasDesktopContent","mobileTitle","mobileDescription","mobileButtonText","mobileButtonAriaLabel","mobileImageSrc","desktopTitle","desktopDescription","desktopImageSrc","imageAlt","handleGetStartedClick","enableQRCode","qrCodeUrl","setQrRef","handleQrClick","useRingSizerEntry","enablePdpRingSizerQRCode","enableTrackingFix","enablePdpRingSizerTrackingFix","enableRingSizerRefactoring","enablePdpRingSizerRefactoring","enableRingSizerUiEnhancements","enablePdpRingSizerUiEnhancements","enableQrCodeTracking","enablePdpRingSizerQrCodeTracking","isDesktop","useBreakpointValue","ssr","openRingSizer","isRingSizerOpen","useRingSizerContext","pendingOpenRef","hasTrackedQrExposureRef","hasTrackedMobileLandingRef","qrObserverOptions","isQrVisible","estore_event","virtual_page_name","virtual_page_url","feature_name","feature_step","finding_method","user_device_type","traffic_source","extractMobileContent","extractDesktopContent","extractImageData","image","buildImageSrc","DEVICE_WIDTHS_FOR_IMAGE_OPTIMIZATION","buildLegacyImageSrc","mobileWidth","existingFindingMethod","URL","origin","set","toString","checkHasDesktopContent","button_id","hasMobileContent","hasDesktopOutput","Flex","gap","mt","StaticContentImage","alt","Button","onClick","flexDirection","alignItems","p","mb","justifyContent","QRCodeSVG","level","copyright","desktop","mobile","imageAltText","components_ring_sizer_entry","finger_sizer_entry_ESTORE_EVENT","FingerSizerEntry","fingerSizerModule","enableNewEntryPointsTracking","enablePdpRingSizerNewEntryPointsTracking","openFingerSizer","useFingerSizerContext","desktopRichText","RichTextEditor","StaticContentBody","drawerBodyContent","flexGap","innerFlexGap","hasRingSizerModule","enablePdpRingSizer","aprimoPrimary","selectGlobalAprimoDamPrimary","headingPb","max","Skeleton","isLoaded","itemIdx","_item$_meta","_meta","deliveryId","String","contentFields","idx","_content$type","_content$_meta","body","contentKey","pb","renderTextContent","_content$_meta2","ContentLink","linkData","renderLinkContent","renderParagraphContent","_content$_meta3","_content$_meta7","imgSrc","_content$aprimoImg","_content$aprimoImg$ap","aprimoCdnUrl","aprimoImg","aprimoData","cdnUrl","amplienceImage","hasAmplience","defaultHost","getImageUrl","qWidth","endpoint","getImageSrc","alttext","renderVideoContent","_resolved$aprimoData","_content$_meta4","videoMedia","video","aprimoVideo","resolved","getVideoDataDesktopPreferred","VideoPlayer","active","audioBtnEnabled","playBtnEnabled","renderRingSizerEntry","_content$_meta5","_ringSizerModule$_met","renderFingerSizerEntry","_content$_meta6","_fingerSizerModule$_m","FingerSizerFlow","static_content_body","useNavigationCallback","controllerPath","getPipelineUrl","useVariationParams","isProductPartOfSet","isProductPartOfBundle","controlledVariationValues","allParams","productParams","usePDPSearchParams","columnGap","mx","rest","ChakraGrid","toast","useChakraToast","action","duration","isClosable","toastConfig","onClose","py","Spacer","CloseButton","useStyleConfig","IconButton","CloseIcon","CspNonceContext","MiniCartCallToAction","totalCount","darkTheme","_memoizedMiniCartData","_memoizedMiniCartData2","onViewCartClick","CONTROLLER_PATH","CART_SHOW","onCheckoutClick","CHECKOUT_BEGIN","miniCartCheckoutPreference","usePreferences","PREFERENCE_KEYS","checkoutButtonDisable","enableViewBagLottieLoader","showLottie","isViewBagLoading","handleViewBagClick","useViewBagLoader","onViewCart","memoizedMiniCartData","isDisableCheckout","preferenceValue","Stack","flexWrap","ViewBagButtonContent","textStyles","outlineButtonText","UseProductCarouselData","categoryID","setProducts","processedIDs","processProductIDs","productError","UseCustomProducts","searchError","UseCustomProductSearch","enableCarouselPromotionalPricing","enableProductCarouselPromotionalPricing","legacyHits","legacyPromotionalPricing","legacyVariantPromotionalPricing","carouselProductIds","h","resolvedPrices","useResolvedPrices","enablePdpPricingAndMemberDisplay","pricesData","useProductsPrice","updatedProducts","transformed","transformProduct","hasProductPromotions","dolPrice","c_price","productIds","isPricesDataFetching","entries","_p$sales","_p$list","salesPrice","sales","listPrice","list","promotions","appliedPromotions","min","memberPrice","PdpLink","activeProduct","handleClick","renderProductContent","isProductEmphasised","useNavigation","urlObj","pathSegments","split","noLocaleSlugPath","navigationPath","addEmphasizedParam","isEmphasized","separator","NavLink","e","preventDefault","to","pdpVariant","pdp_link","SequentialSelectorStyles","backgroundPosition","backgroundSize","backgroundRepeat","pl","scrollSnapType","scrollBehavior","scrollSnapAlign","background","paddingX","paddingY","ImageTabBar","activeIndex","onTabClick","HStack","_product$imageGroups","img","isActive","opacity","_focusVisible","boxShadow","VStack","Img","disBaseLink","itemNumber","image_tab_bar","SequentialSizeSelectorDrawer","setOpenDrawer","onConfirmMultiSizeSelection","combinedSelectedSizesLabel","isClickAndCollect","openBuyBoxDrawer","hideFindYourSizeButton","resetShowStorePickupFlag","openedFromAtbFlow","showStorePickupIfNoSizeSelected","disableOOSVariants","onDrawerClose","isOpen","isOpenProp","onRequestClose","isNotifyMe","onNotifyMeClick","_products$activeIndex","_products$activeIndex2","_Object$values$","_Object$values$2","_activeProduct$variat3","_activeProduct$variat4","showSizeSelectWarning","setShowSizeSelectWarning","isDrawerOpenInternal","setIsDrawerOpenInternal","isSizeGuideActive","setIsSizeGuideActive","setActiveIndex","selectedSizes","setSelectedSizes","isSizeGuideDrawerOpen","setIsSizeGuideDrawerOpen","isControlled","isDrawerOpen","closeDrawer","activeSizeTable","normalizeSizeTable","c_sizeTable","activeSizeTableId","c_sizeTableId","isUsOrCaSite","favStoreId","isSizeOrderableForFavStore","getFavoriteStore","disableOOSForActiveProduct","isNotifyMeForActiveProduct","enablePdpNotifyMe","getIsNotifyMeForSize","regionalSizeOptions","getRegionalSizeOptions","sizes","names","sizeTypeOptions","getMeasurementOptions","measurements","enableRegionalSizeDerivedState","enablePdpRegionalSizeDerivedState","legacyRegionalSize","setLegacyRegionalSize","el","legacySizeType","setLegacySizeType","userRegionalSizeKey","setUserRegionalSizeKey","userSizeTypeKey","setUserSizeTypeKey","selectedRegionalSize","selectedSizeType","enableSizeGuide","enablePdpSizeGuide","enablePdpSetBundleSizeGuide","ringSizeGuideButtonSx","sizeGuideMessage","isLastStep","confirmButtonRef","handleSizeSelect","selectedSize","matchedVariant","prev","handleOutOfStockSizeSelection","selectedName","_activeProduct$variat","_activeProduct$variat2","_activeProduct$varian","_v$variationValues","handleDrawerClose","useLayoutEffect","timeoutId","scrollIntoView","behavior","block","clearTimeout","rightIcon","ChevronRightIcon","w","FullDrawerSheet","headerText","sheetType","bodyPadding","bodyContent","AnimatePresence","motion","div","initial","x","animate","exit","transition","ease","px","pt","StaticRulerIcon","mr","RegionalSize","handleChangeRegionalSize","handleChangeSelectedTypeSize","sizeOptions","sizeTip","SizeOptions","onChange","sizeDataMap","productType","colorScheme","handleConfirmSizeSelection","anyOosSelected","selection","shouldOpenBuyBoxForOOS","isStoreLookupFlow","wasFromAtbFlow","SizeGuideDrawer","handleDrawerBack","sizeTableData","filterSizeTable","sizeTableFull","digitalSizeGroup","c_digitalSizeGroup","sequential_size_selector","BuyBoxStyles","my","panel","withCursor","cursor","flexBox","flexItem","flexGrow","pr","callOutBox","callOutFlex","callOutIconBox","header","listBox","ml","dividerBox","linkSection","btn","lodLabel","statusText","textColor","listItem","isSoldOut","normalizedStatus","_before","left","top","LoqateSuggestionsStyles","right","borderTop","maxHeight","overflowY","StorePickupStyles","heading","locatorSearchButton","dividerText","postCodeContainer","input","WebkitTextFillColor","selectStoreButton","storeItemBox","noStoreMessageBox","StorePickUp","submitHandler","locationHandler","isDeliveryOption","isError","resetGeoLocation","hasNoStores","storePrefs","loqateSuggestions","loqateSuggestionResolved","onLoqateInputChange","onLoqateSuggestionSelect","onLoqateClear","onNoStoresReset","_site$clickAndCollect","_errors$postalCode","storePostalCodeRegex","clickAndCollect","showSuggestions","setShowSuggestions","suggestionsRef","skipNextInputEffect","prevInputRef","register","handleSubmit","formState","dirtyFields","setError","clearErrors","watch","setValue","useForm","csId","inputValue","handleFindInStores","_data$postalCode","inputChanged","handleSuggestionClick","suggestion","Description","handleClickOutside","contains","target","inputLabel","validationRules","required","pattern","hasSuggestions","postCodeContainerSx","InfoIcon","radius","distanceUnit","FormattedMessage","onSubmit","CS_LOQATE_OVERRIDE_IDS","searchInput","Input","defaultValue","rules","List","suggestions","ListItem","Id","findStores","store_pickup","DELIVERY_ESTIMATE_MESSAGES","defineMessages","deliveryTraffic","deliveryOption","deliveryTime","deliveryTo","deliveryTimeSoldOut","enterPostcodeLink","enterPostcode","standard","express","oos","notifyMe","unavailable","sthTwoDay","PE_METHOD_LABELS","PE_METHOD_MAP","nextday","DELIVERY_ESTIMATE_SHIPPING_FALLBACK","twoDay","DELIVERY_ESTIMATES_KEY","STH_LOD_MESSAGING_KEYS","shipToHome","shipToHomeEngraving","resolveProductType","enabledTypes","_product$custom","isDiamondCarat","c_diamondCaratWeight","diamondCaratWeight","isEngraving","DeliveryHeader","StaticShippingIcon","DeliveryListText","highlight","DeliveryHeaderView","enableDeliveryOptions","postCode","deliveryMessages","onEnterPostcode","deliveryEstimates","useLocalStorage","notifyMeHeader","peHeaderMessage","linkText","shipToZipCode","delivery_header_view","DeliveryListView","deliveryDates","availableShippingMethods","enablePdpPudoShippingEstimates","sthDeliveryLevels","useJsonVariant","enablePdpSthDeliveryLevels","isStandardSthEnabled","isTwoDaySthEnabled","isExpressSthEnabled","anySTHLevelActive","peMethodLabels","useDeliveryMessages","pudoShippingMethod","fallbackMessage","_deliveryMessages$sta","_deliveryMessages$sth","_deliveryMessages$exp","sthContent","items","_deliveryMessages$key","internalKey","formattedDate","collection","itemType","shippingMethod","_item$itemType","obj","hasOwn","getValue","fallbackMsg","push","delivery_list_view","LODMessaging","isSTH","enableLoDMessageEnhancement","LoDMessages","CNC_LOD_MESSAGING_KEYS","lod_messaging","CallOutMessage","hideCallOutMessage","togglehideCallOutMessage","stopPropagation","calculatePromiseFlag","isLDEnabled","preferences","getPrefValue","fallback","_preferences$find","_preferences$find$pre","_p$preferenceKeys","preferenceID","preferenceKeys","abTestingUse","launchPromiseEngineABTesting","ldSegmentID","disablePromiseEngineLDSegmentID","contextCookie","parsedExpSegGrp","parse","decodeURIComponent","segment_id","DeliveryEstimate","openNotifyMe","isProductLoading","toggleIsDrawerOpen","setPostCode","enablePromiseEngineUtagTracking","trackLinkEvent","useProductDetailsLinkAnalytics","hasSubmittedRef","isPromiseEngineEnabled","isDeliveryCalloutEnabled","setFlags","enablePdpEstimatedDeliveryCallout","enablePdpOnlineDeliveryOptions","updatedFlags","shouldUpdate","isPEFlag","isCallout","usePromiseEngineFlags","memoizedProduct","isClickable","enablePdpSthLodMessaging","lodSTHMessage","enrichedItems","useDeliveryEstimatesPayload","bundledItems","bundledProducts","setItems","associatedProducts","bundle","enabledTypesForPromiseEngine","excludedProductsForPromiseEngine","enabledShippingMethodsForPromiseEngine","excludedProductIds","grouped","getEnrichProducts","excludedProduct","Set","enabledProductType","lineId","_item$product","has","lineID","itemID","deliveryServices","submitZipCode","isDeliveryEstimateError","deliveryEstimateError","shouldFetchToken","closeModal","_site$clickAndCollect3","_site$l10n2","fetchDeliveryEstimates","deliveryEstimatesData","useDeliveryEstimates","_appConfig$commerceAP","_appConfig$commerceAP2","_appConfig$dolAPI","deliveryEstimateUrl","DELIVERY_ESTIMATES","mutate","sendZipCode","isPending","isEstimatesLoading","useOAuthMutation","channeltype","channelname","payload","cached","setCached","setState","setDeliveryDates","hasHydratedFromCache","prefetchToken","useB2CTokenPrefetch","shouldFetchDates","_enrichedItems$","_cached$items","fetchEstimates","postcode","_site$clickAndCollect2","market","countryCode","shipToCountry","transformedItems","_site$l10n","transformDeliveryData","formatter","Intl","DateTimeFormat","day","month","year","timeZone","itemTypeObj","deliveryService","estimatedDeliveryDateTSMax","estimatedDeliveryDate","iso","format","l10n","defaultLocale","finalDeliveryEstimates","requestIdleCallback","useDeliveryEstimatesManager","prevStateRef","prevState","transitionedToSuccess","handlePanelClick","formData","virtualPagePath","rightIconBox","StaticChevronRightIcon","delivery_estimate","getStoreStatus","availabilityMessages","rule","STOCK_RULES","r","StoreAvailability","productIsCncEligible","clickAndCollectButtonRef","hasSizes","isSizeSelected","selectedStore","enablePdpDeliverModuleLayoutShift","isPrimaryProduct","enablePdpCncLodMessaging","trackEvent","useClickAndCollectAnalytics","storeName","STORE_AVAILABILITY_MESSAGES","lodCnCMessage","clickAndCollectEngraving","storeAvailabilityStatus","useStoreAvailabilityStatus","inventoryItems","INVENTORY_ITEMS","inventoryStatusFromSession","inventoryListId","inventoryId","CnCNotAvailable","noStoreSelected","baseOrderable","hasStock","baseLowStock","lowStock","sessionOrderable","sessionLowStock","isOrderable","isLowStock","handleTrafficLightsSizeLogic","hasLowStock","noSizeSelected","getAvailabilityStatus","storeNameDisplay","changeStore","selectStore","handleOnStoreClick","isPreloaded","PinIcon","store_availability","POSTAL_CODE_DELIMITER","useSearchStore","urlParams","currentLocation","enableShortPostalCodeLookup","enablePostalCodeDelimiterTrim","enableCncTwoTierRadiusFallback","enablePdpCncTwoTierRadiusFallback","dolChannelHeaders","useDolChannelHeaders","storeSearchUrl","STORES_SEARCH","shouldFetch","latitude","longitude","hasTwoTierRadius","defaultRadius","extendedRadius","dolParams","maxStoreCount","maxDistance","country","extendedDolParams","extendedQueryKey","searchResult","_searchResult$data","filteredData","store","isFranchiseStore","clickAndCollectParticipant","staleTime","cacheTime","defaultStoreData","isDefaultFetching","isDefaultError","defaultError","useCustomQuery","shouldExtend","extendedStoreData","isExtendedFetching","isExtendedError","extendedError","useExtendedResult","activeDolParams","storeData","isStoreLoading","isStoreError","storeError","searchDetails","range","StoresListStyles","stockMessage","cta","stockToggleBox","stockText","listInnerBox","paddingInlineEnd","addressSection","unit","minW","storeStatus","radio","_checked","StoreListItems","selectStoreHandler","stores","onStoreInfoClick","onStorePhoneClick","setSelectedStore","storeAvailabilityMesages","a","b","className","storeListItem","address1","address2","stateCode","phone","rel","storeLocationUrl","distance","disabled","handleStoreSelect","selectStorePrefix","getCtaMessage","notAvailableCta","selectedStoreCta","selectStoreCta","store_list_items","StoresList","postcalCode","searchAgainHandler","onStoreSelect","_storeData$data","showAvailableStocks","toggleShowAvailableStocks","allStores","storesWithStock","storesToShow","count","Checkbox","isChecked","checked","stores_list","toItems","Items","buildSearchBody","types","Countries","Limit","Types","fetchLoqateSuggestions","signal","fetch","ok","json","_x3","_x4","_x5","fetchLoqateCoordinates","_item$Location","_item$Location2","addressID","lat","Number","Location","Latitude","lng","Longitude","isFinite","_x6","_x7","_x8","_x9","_x0","useLoqateSearch","_appConfig$loqateAPI","loqateAPI","enablePdpCncLoqateSearchTypes","setSuggestions","debounceRef","abortRef","startRequest","abort","controller","AbortController","fetchSuggestions","selectSuggestion","_ref4","coords","_x1","clearSuggestions","StoreSelector","onConfirmStoreSelection","resetStoreInvCheck","drawerRef","setActiveStore","postcodeFromSession","setPostcodeInSession","CACHED_STORE_POSTAL_CODE","loqateCoordsFromSession","setLoqateCoordsInSession","CACHED_STORE_LOQATE_COORDS","effectivePostcode","effectiveLoqateCoords","setPostcode","loqateCoords","setLoqateCoords","pendingLoqateCoords","setPendingLoqateCoords","selectedSuggestion","setSelectedSuggestion","searchLabel","setSearchLabel","isDataLoaded","setIsDataLoaded","trackingEvent","setTrackingEvent","noStoresBannerResetEnabled","enablePdpCncNoStoresBannerReset","isLocationReady","getLocation","resetLocation","geoLocationError","useGeolocation","useStorePreferences","effectiveLocation","searchMeta","suggestionText","Type","store_search_type","store_search_zip","store_search_city","handleLocationSubmit","catch","err","handleSearchAgain","handleStoreDrawerClose","handleConfirmStore","currentStore","setCookie","CUSTOM_SELECTED_STORE","setFavoriteStore","handleStorePhoneClick","handleStoreInfoClick","handleLoqateInputChange","handleNoStoresReset","handleLoqateSuggestionSelect","rawValue","normalizedPostalCode","_storeData$data2","footerContent","finalFocusRef","renderBodyContent","store_selector","BuyBox","isDrawerOpenNew","onOpen","enableCnC","hideDeliveryAndCnC","activeStore","resolvedStore","useCncStoreResolver","enablePdpCncCartStoreRestore","resolveConfig","shouldResolve","cookieStore","readSearchedPostalCode","localStorage","getItem","SEARCHED_POSTAL_CODE","parsed","storeFromLocalStorage","parseCookieStore","storeId","setResolvedStore","shouldSearch","removeItem","matched","isResolving","hasStoreInCookie","clearFavoriteStore","renderCnCDrawer","deliverEstimateProps","renderDeliveryEstimate","buy_box","isOrderableBundleOrSet","normalizedProducts","combinedSelectedSizes","every","selected","selectedVariant","sizeValue","areAllSizesNotOrderable","checkOrderableBundleOrSet","getSelectedBundleChildProducts","_selected$variant","getSelectedSetChildProducts","_selected$variant2","PlpRoutingWrapper","MemoryRouter","initialEntries","initialIndex","Route","warn","getProductStockStatus","mainProduct","_activeProduct$invent","isRecommendationVariant","productInStock","getSimpleProductOrderable","_product$c_extend2$in","addToBagButton","BuyFromTile","productForTracking","setAddToCartError","isDisabled","isFromPlp","selectedVariantId","buttonText","plpSizeSelector","isNotifyMeCta","_product$productType","_product$productType2","_product$variationAtt2","_product$custom2","_productToUse$product","_productToUse$product2","submitAddItemToCart","isAddingItem","useDolBasketMutation","openAddToCartModal","useAddToCartModalContext","useAddToCartAnalytics","handleAnalyticsEvent","usePixelAnalytics","isBloomreachPixelEnabled","enableGlobalBloomreachPixelTracking","isEnhancedPixelEnabled","enablePdpBloomreachPixelEnhanced","plpFetchError","setPlpFetchError","setSelectedSize","openSizeDrawer","setOpenSizeDrawer","closeSizeDrawer","setCloseSizeDrawer","pendingDrawerOpen","setPendingDrawerOpen","productIdForStore","setProductIdForStore","currentProductIdRef","setCombinedSelectedSizes","setCombinedSelectedSizesLabel","openMultiSizeDrawer","setOpenMultiSizeDrawer","closeMultiSizeDrawer","setCloseMultiSizeDrawer","shouldFetchFullProduct","setShouldFetchFullProduct","hasAutoOpenedDrawer","setHasAutoOpenedDrawer","isNotifyMeOpen","setIsNotifyMeOpen","isNotifyMeFormSubmitted","setIsNotifyMeFormSubmitted","selectedVariantForNotifyMe","setSelectedVariantForNotifyMe","addStoreInfoToItem","inventoryList","isResultSuccessful","result","handleApiError","statusMessage","mapProductForTracking","_selectedVariant$vari","_productForTracking$c","baseCustom","trackBloomreachAddToCart","prod_collection_id","pid","prodId","sku","sku_id","notifyMePlacement","enableDrawerPlacementFix","enableNotifyMe","isBundleOrSet","needsNotifyMeData","shouldFetchProduct","productIdToFetch","fullProduct","isLoadingFullProduct","isProductFetching","isFetchingFullProduct","isProductError","isFullProductError","fullProductError","isActuallyLoading","hasRealFullProductData","prices","normalizedFullProduct","productToUse","enablePdpBuyFromTile","enablePlpBuyFromTile","hasSizeVariants","productToCheck","isProductABundleOrSet","bundled","multiSizeVariantProducts","childProduct","shouldShowMultiSizeSelector","sizeDrawerProduct","enablePdpSizeSelectorPricing","enableBuyBox","enablePdpCncExcludeFindInStore","enablePdpCncForDiscontinued","isClickAndCollectEnabled","getProductCnCStatus","enablePdpCnCProductSets","excludeFindInStore","enableCncForDiscontinued","isProductAvailable","excludePGC","excludeSet","excludeDiscontinued","baseAvailability","isDiscontinued","isSneakPeekProduct","isSneakPeek","isNonPurchasable","isSet","giftCardType","isPGCGiftCard","checkProductAvailable","isCncEligible","_product$custom4","customValue","availableForFindInStore","prefixedValue","c_availableForFindInStore","rootValue","isAvailableForFindInStore","_product$custom5","availableForInStorePickup","c_availableForInStorePickup","isAvailableForInStorePickup","showCnC","shouldShowBuyFromTile","_productToUse$custom4","_productToUse$product3","_productToUse$product4","buyFromTileEnabled","isProductExcluded","_product$stylingStudi","_product$stylingStudi2","nonPurchasable","c_engravable","child","stylingStudio","braceletBuilder","isEnabled","_productToUse$custom5","isProductInStock","isNotifyMeEnabled","shouldHideSimple","shouldHideSimpleProduct","_productToUse$custom","shouldHideForAllSizesOOS","_productToUse$custom2","allSizesOOS","shouldHideForChildOOS","_productToUse$custom3","_child$variationAttri","_child$variationAttri2","_child$inventory","s","isBuyBoxDrawerOpen","closeBuyBoxDrawer","useBuyBoxDrawer","isFindYourSizeBtnEnabled","hasNoSelectedSize","openSizeSelector","triggerStoreInventoryFetch","storeInventoryId","setIsBuyBoxDrawerOpen","openBuyBoxFromCnC","setAtbFlag","handleBuyBoxToggle","shouldOpenDrawer","getChildItems","createDolItemsFromChildren","childItems","bundleItem","itemId","bundledProductItems","childProd","setItem","sendBundleOrSetAnalytics","_productToUse$price","_productToUse$price$s","sendAddToCart","_childProd$price","_childProd$price$sale","findVariantBySize","_variant","sizeIndex","findIndex","createDolItem","dolItem","handleCartItemWithSize","variantId","storeOverride","storeToUse","dolItems","_product$price","_product$price$sales","itemsAdded","_productForTracking$v","mappedProduct","handleCartItem","productIdToAdd","_product$price2","_product$price2$sales","validateBundleOrSetSelection","handleInvalidBundleOrSetSelection","childProductIds","handleSuccessfulBundleOrSetAdd","_ref3","selectedQuantity","validateAndPrepareChildItems","handleCartItemBundleOrSet","validationResult","handleStoreRowSelect","handleConfirmStoreSelection","storeFromParam","_result","_result2","handleNotifyMeClose","handleNotifyMeBack","handleMultiSizeDrawerClose","getNotifyMeImageSequence","imageSequence","imageSrc","replaceAll","getNotifyMeNameDetails","_variant$custom","_variant$custom$metal","_productToUse$custom6","_productToUse$custom7","_variant$custom2","_variant$custom2$meta","_productToUse$custom8","_productToUse$custom9","nameDetails","c_nameDetails","shortDescription","handleNotifyMeClick","_variant$custom3","productWithSize","handleOOSSimpleProduct","_productToUse$custom1","_productToUse$custom0","handlePlpClick","resetPlpState","usePlpProductHandler","pendingPlpAction","setPendingPlpAction","lastFetchedVariantId","setLastFetchedVariantId","_productData$productT","_productData$productT2","_productData$inventor","isBundleProduct","isSetProduct","normalizedChildProducts","shouldReturn","currentVariantId","needsRefetch","prevProductIdRef","isProductChange","productToOpen","_ref6","_productToOpen$varian","variantProduct","_v$variationValues2","productForAnalytics","variantForModal","isNotifyMeForSize","_productData$variatio","_productData$variatio2","_productData$variatio3","_productData$custom","_variant2","_v$variationValues3","sizeFromValue","_v$productId","at","shouldOpenCnC","_productData$variants","variantForNotifyMe","prepareChildItems","prepareDolItems","handleOnMultiSizeSelect","variantIds","_selection$variant","hasValidSelection","validateAndShowErrorBundleNSet","isFavStoreOrderable","notLoading","_productToUse$price2","_productToUse$price2$","_childProd$price2","_childProd$price2$sal","_productData$custom2","_productData$variants2","_ref8","_productToUse$custom10","_productToUse$invento","getNotifyMeProductImg","_selectedVariantForNo","mainRectImage","_mainRectImage$disBas","buttonStatus","_sizeDrawerProduct$va","_sizeDrawerProduct$im","_product$imageSequenc","_sizeDrawerProduct$cu","shouldRenderSizeSelector","SizeSelectorDrawer","productSizes","onSizeSelect","setCloseDrawer","productImg","placement","_productToUse$custom11","drawerComponent","NotifyMe","isNotifyMeDrawerOpen","secondaryProductName","discontinued","isEarlyAccess","variations","c_size","onAddToCartModalOpen","isFromPdpRecZone","closeSizeSelector","buy_from_tile","ProductTileContent","originalProduct","dynamicImageProps","isInWishlist","handleFavouriteClick","handleVariantClick","isHovered","handleMouseEnter","handleMouseLeave","currentImage","setCurrentImage","startXRef","_useBreakpointValue","_originalProduct$hero2","_originalProduct$seco2","_originalProduct$prim2","restWithoutCgid","inGridColSpan","isEUPricingEnabled","enableOptimisticNavigation","enablePlpPdpImageSync","enableProductImageCarousel","isAskedForHeroImage","setRef","isInteresting","imageWidth","showAddToBag","showNotifyMe","showView","handleViewClick","_event$nativeEvent","_event$nativeEvent2","nativeEvent","stopImmediatePropagation","pdpPath","getPdpPath","cleanPath","_price$lowestPrice","imageComponent","ImageTileCarousel","secondaryImageSrc","secondaryImageAlt","collabBadge","ImageTile","itemScope","productTileEmphasised","shouldRenderSwatches","_mainProduct$variants","_mainProduct$variatio","hasVariants","shouldHide","isRecZoneWithSize","Swatches","blacklabel","itemProp","badge","CaratMessage","availableColors","ColorMessage","Price","minPrice","maxPrice","originalMinPrice","discountPercentage","loading","showLowestPrice","lowestPrice","showMemberPrice","oosLabel","activeId","sectionPrefix","productTileCsId","_originalProduct$hero","_originalProduct$seco","_originalProduct$prim","imageToPreload","heroImage","secondaryImage","Image","decoding","transformImageUrl","q","sw","GridItem","emphasizedWrapper","emphasizedGrid","emphasizedGridItem","colStart","colSpan","totalPrice","pickDisplayedMinPrice","useMemberRange","memberRangeMin","isEffectiveRangePromo","rangePromoDisplayMin","sfccMinPrice","ProductTile","_activeProduct$promot","_customPrice$min","_customPrice$min$sale","_activeProduct$enhanc","_activeProduct$enhanc2","_activeProduct$enhanc3","_activeProduct$enhanc4","_activeProduct$enhanc5","_activeProduct$enhanc6","onFavouriteToggle","directImageUrl","activeCurrency","useCurrency","isFavouriteLoadingRef","setIsHovered","setSelectedVariant","enableNewEarlyAccessJourney","enableStandardPriceTest","enablePlpPriceRangeDisplay","enableMemberPricing","enablePlpFindingMethod","enableCarouselLowestPriceFallback","isCustomerLoggedIn","client","useLDClient","isClient","setIsClient","login_status","promotion_id","imageUrl","productToTileMapping","includeVariants","currentSection","_enhancedPricing$prom","_product$c_extend$pro","_product$c_extend2$pr2","_product$c_extend2$pr3","_product$c_extend2$pr4","_product$type","_product$c_extend3","_product$c_extend4","_product$primaryImage","_product$primaryImage2","_product$secondaryIma","_product$secondaryIma2","_product$c_extend5","_product$c_extend5$cu","_product$c_extend6","_product$c_extend6$cu","_product$c_extend7","_product$c_extend8","_product$c_extend8$cu","_product$c_extend9","_product$c_extend9$re","_product$c_extend0","_product$c_extend0$cu","_product$c_extend1","_product$c_extend10","_product$c_extend10$p","_product$c_extend11","_product$c_extend12","_product$c_extend13","_product$c_extend14","_product$c_price","enhancedPricing","getEnhancedPrice","isProductASet","_priceInfo$salePrice","_priceInfo$salesPrice","_priceInfo$promotionP","_priceInfo$originalPr","_priceInfo$listPrice","_priceInfo$salePrice2","_priceInfo$promotionP2","recommendationPrice","recommendationListPrice","finalProductUrl","productUrlBuilder","baseMapping","metalGroupId","enhancedMin","enhancedMax","enhancedPriceType","_product$c_extend16","_product$c_extend15","_product$c_extend15$v","variantEnhancedPricing","getVariantEnhancedPrice","dolListPriceWhenResponded","legacyListPrice","variantListPrice","refinedMainProduct","_wishlist$customerPro","customerProductListItems","isWaitingForPromotionalPrice","displayPrice","isOnSale","onSale","discountPercent","customPrice","isRangePrice","hasRangePromo","promotionPrices","promoMinPrice","rangeDiscountPercentage","memberRangeDiscount","computeMemberRangePricing","_memberPrice$min","refinedPrice","track","MemoizedProductTile","product_tile","AmplienceContext","PREVIEW_PARAM_KEYS","PREVIEW_RESET_COOKIE","PREVIEW_CLEAR_PENDING_COOKIE","LEGACY_PREVIEW_COOKIE_KEYS","readPreviewCookie","raw","useQueryParam","clientParams","GetCombinedParams","hash","hashParamsString","startsWith","queryString","hashParams","serverParams","decodeCookieValue","useCookieValue","_req$headers","parseCookieHeader","part","AmplienceContextProvider","segment","setSegment","forceUpdate","setForceUpdate","history","useHistory","isCommercePreviewEnabled","enableContentCommercePreviewToolbar","isMounted","setIsMounted","deliveryKey","contentId","global","realtime","localeId","effectiveDateTimeRaw","siteDateRaw","timestampRaw","sourceCodeRaw","customerGroupRaw","previewCookiesEnabled","cookieEffectiveDateTime","cookieSourceCode","cookieCustomerGroup","explicitEffectiveDateTime","resetMarker","clearPendingMarker","isPreviewResetPending","vseTimestamp","getTimestampFromVse","effectiveDateTimeParam","sourceCodeParam","customerGroupParam","previewEffectiveDateTime","setPreviewEffectiveDateTime","previewSourceCode","setPreviewSourceCode","previewCustomerGroup","setPreviewCustomerGroup","previewStatus","setPreviewStatus","isPreviewNavigationRef","initialPreviewRef","effectiveDateTime","sourceCode","customerGroup","updatePreviewContext","currentUrl","setOrDelete","val","delete","deleteCookie","assign","resetPreviewContext","updateSegment","newSegment","cm_p13n","userSegment","pushSegment","currentPushSegment","_window$cm_p13n","vseCookie","globalCookie","urlVseParam","urlGlobalParam","updateUrlWithCookies","normalizedHash","newUrl","redirectToVisualization","visualizationUrl","urlChanged","handleTabClose","dolClient","useDolApi","contextValue","RESET_SEGMENT","trackSearchEvents","useProductListInteractions","urlState","analytics","useWishList","useAddItemToWishlist","useRemoveItemFromWishlist","handleProductClick","usePageUrls","_limit","pageCount","ceil","buildUrlSet","_","useLoadOnView","isInView","hasLoaded","setHasLoaded","hasLoadedRef","useSsrSafeAnimation","animationProperty","DIM_VARIANTS","ContentDim","radialDotAnimation","mediaConfig","controlWrapperPosition","bottom","copyrightTextPosition","mediaCss","FullScreenMediaTileMedia","desktopImg","mobileImg","desktopVideo","mobileVideo","aprimoDesktopImg","aprimoMobileImg","aprimoDesktopVideo","aprimoMobileVideo","mediaType","hasFirstPanelAnimatedOnce","isFirstPanel","isVideo","isFMT","componentIndex","media","Media","isLazyLoad","diImageType","VideoType","AprimoAssetType","AprimoVideoType","CopyrightType","collaborationIcons","disney","DisneyPandoraIcon","DisneyPandoraWhiteIcon","HpPandoraIcon","HpPandoraBlackIcon","harrypotter","StarWarsIcon","StarWarsBlackIcon","starwars","StarWarsCollectorsIcon","unicef","PandoraUnicefBlackIcon","PandoraUnicefWhiteIcon","PandoraUnicefBlackBlueIcon","PandoraUnicefWhiteBlueIcon","klarna","KlarnaBlackIcon","KlarnaWhiteIcon","afterpay","AfterpayBlackIcon","AfterpayWhiteIcon","clearpay","ClearpayBlackIcon","ClearpayMintIcon","ClearpayWhiteIcon","mandalorian","MandalorianBlackIcon","MandalorianWhiteIcon","marvel","MarvelPandoraBlackIcon","MarvelPandoraWhiteIcon","mypandora","MyPandoraBlackIcon","MyPandoraWhiteIcon","pandorabridgerton","PandoraBridgertonBlackIcon","PandoraBridgertonWhiteIcon","pixar","PixarBlackIcon","PixarWhiteIcon","PandoraMeFestivalBlackIcon","PandoraMeFestivalWhiteIcon","PandoraMeHorizontalBlackIcon","PandoraMeHorizontalWhiteIcon","GotPandoraBlackIcon","GotPandoraWhiteIcon","gameofthrones","PandoraDiamondsBlackIcon","PandoraDiamondsWhiteIcon","PandoraDiamondsBlackFrIcon","PandoraDiamondsWhiteFrIcon","PandoraNetflixBlackIcon","PandoraNetflixWhiteIcon","strangerthings","PandoraPatMcGrathBlackIcon","PandoraPatMcGrathWhiteIcon","CollaborationLogo","collabLogo","sxProp","IconComponent","boxStyle","box","EyebrowText","ContentPromoMessage","PromoVariants","DEFAULT","marginRight","EARLY_ACCESS","ADDED_MESSAGING","MAXIMUM_ESCALATION","promoHeaderStyle","minHeight","collabLogoStyle","svg","PromoHeaderRow","eyebrow","promoMessage","promoVariant","containerRef","contentRef","promoRef","isColumnDirection","setIsColumnDirection","updateWrap","_promoRef$current","_contentRef$current","promoHeight","offsetHeight","eyebrowHeight","timeoutRef","debouncedUpdate","rafId","requestAnimationFrame","cancelAnimationFrame","FullScreenMediaTileTitle","textColorBlack","titleStyle","grid","gridItem","motionStylesVariants","hidden","y","delay","durationExtended1","easeStandard","delayStandard2","easeStandardDecelerate","delayExtended4","Heading","readyToAnimate","MotionBox","FullScreenMediaTile","panelNumber","promoVariantBlock","overlayAndTextColor","ctaRef","ctaBgWidth","setCtaBgWidth","ctaWrapper","ctaStyle","linkStyle","ctaBgStyle","mediaProps","setHasFirstPanelAnimatedOnce","ctaMotionDiv","transitionValue","durationStandard2","initialValue","animateValue","ctaBgMotionDiv","delayExtended3","delayStandard1","initialMotionValue","_ctaRef$current","offsetWidth","handleAnimationComplete","FullScreenContent","onAnimationComplete","rootStyles","contentMeta","schema","LinkType","MotionHeading","chakra","MotionText","KcpFeatureTileMsg","isHeading","motionInitial","motionWhileInView","xTransition","opacityTransition","delayNone","MotionComponent","whileInView","defaultTextStyles","compactTextStyles","KcpFeatureTileMsgLine1","useCompactStyle","KcpFeatureTileMsgLine2","useOpacityAnimation","delayAfter","delayExtended1","wrapperStyles","gridStyles","KcpFeatureTileDescription","KcpFeatureTileCta","scaleY","transformOrigin","easeEmphasizedDecelerate","delayExtended2","button","KcpFeatureTileTermsAndConditionsItem","KcpFeatureTileTermsAndConditionsLink","linkTheme","hasAuthoredValue","KcpFeatureTileTermsAndConditions","hasVideoControls","_data$termsLink","hasTermsStatements1","termsStatements1","hasTermsStatements2","termsStatements2","hasTermsStatements3","termsStatements3","hasTermsLink","termsLink","hasFirstColumnContent","hasSecondColumnContent","hasBothTermsColumns","firstColumn","column","rightColumn","safeMotionInitial","themeValue","DARK_THEMES_MAP","sale","THEMES_MAP","mapContentThemeToDimVariant","normalizedTheme","isDarkTheme","_Object$values","CHAR_LIMITS","SUMMER_SALE_IMAGE_THEME","SUMMER_SALE_VIDEO_THEME","KCP_FEATURE_TILE_CONTROL_WRAPPER_POSITION","AMPLIENCE_HOST","AMPLIENCE_ENDPOINT","makeImage","diImage","mimeType","makeVideo","SUMMER_SALE_MEDIA_BY_THEME","KcpFeatureTile","msgLine1","msgLine2","KCPTheme","termsAndConditions","dateTime","isSsrPosterEnabledRaw","enableGlobalVideoSsrPosterFrame","isSsrPosterEnabled","isSummerSale","effectiveTheme","kcpFeatureTileSummerSaleMedia","isSummerSaleTheme","useKcpSummerSaleMedia","heightValue","hasLodBanner","useLodBannerPresence","isLodBannerPresent","setIsLodBannerPresent","lodBanner","querySelector","useCompactMsg1","useCompactMsg2","useCompactTextStyles","msg1","msg2","currentBreakpoint","isMsg1Long","isMsg2Long","countdownText","isCountdownExpired","timeUntilEnd","getTime","includeSeconds","clientRemainingTime","useCountdown","useKcpFeatureTileCountdown","rawDimVariant","displayMsgLine1","msg1Key","customCSS","innerContainer","FeatureTileContent","__css","centerSection","mediaLayer","contentLinkStyle","useImageAnimation","dependencies","condition","controls","useAnimation","scale","start","durationQuick2","isStorybookEnv","isStorybook","EntryPointsLinkItem","setSelectedItemIndex","linkNumber","useEntryPointsLinkItem","scrollYProgress","useScroll","actualIsPointerDevice","useMediaQuery","isPointerDevice","useMotionValueEvent","latest","textRef","lines","setLines","underlineLine","textNode","firstChild","nodeType","Node","TEXT_NODE","measure","createRange","selectNodeContents","getBoundingClientRect","getClientRects","observer","ResizeObserver","observe","disconnect","onMouseEnter","span","line","transform","timingStandard","EntryPointLink","delayQuick1","yTransition","durationStandard1","motionTransition","MotionOverlay","EntryPointsImageOverlay","dataTestId","EntryPointImageTemplate","dataCsOverrideId","ImageCard","lazyLoadHeight","lazyLoadOffset","EntryPointsItemImage","selectedIndex","entryPointsLinkData","linkStyles","_data","getImageLink","EntryPointsFixedImage","colSpanFixedImage","colStartFixedImage","colStartItemImage","EntryPointsTile","_data$kcpAssurance","_data$kcpAssurance2","kcpAssuranceText","kcpAssurance","kcpAssuranceIcon","rawKCPTheme","isBlueSaleEnabled","kcpEntryPointsBlueSaleTheme","isBlueSaleTheme","assuranceIconColor","selectedItemImage","selectedItemIndex","refs","desktopImageRef","selectedItemImageRef","desktopImageControls","selectedItemImageControls","desktopFixedImage","entryPointsItems","useEntryPointsTile","itemsContainer","_selectedEntryPoint$l","setIsInView","activationSetRef","desktopImageUrl","desktopCopyright","generateConsistentImageUrl","largeImage","eyebrowText","entryPoints","uuids","uuidv4","itemActive","selectedEntryPoint","selectedImageUrl","altText","selectedAltText","selectedCopyright","smallImage","browserCompatibleHeight","itemsGridItem","Assurance","iconColor","withDefaultText","iconVariant","ICON_VARIANTS","PICTOGRAM","fixedImageGridItem","fixedImageContainer","itemImageGridItem","itemImageContainer","imageLinkStyles","useConsistentImageUrl","imageData","imageKey","titleLinkTransition","defaultTransition","decelerateTransition","motionBoxTransitionConfig","initialMotionValues","titleLinkMotionInitial","buttonTestIds","playId","muteId","SmallImageCard","MIN_WIDTH","LargeImageCard","largeMedia","containerStyles","InsetMediaTile","sm","hasAnimated","setHasAnimated","resolvedVideo","inView","useInView","triggerOnce","titleLinkMotionAnimate","animateMotionValues","staticStyles","contentLinkContainer","flexContent","paddingBottom","largeMediaBox","largeMediaMotionBox","imageContainer","PromoTileTexts","modulePage","tabName","tealiumLink","enableBraceletEditorPLP","isStudioTile","useMFERegistry","remoteApp","remoteComponentId","remoteAppId","parseDescription","customClickHandler","_window$pcp","_window$pcp$braceletE","pcp","braceletEditor","showModal","linkRegex","parts","lastIndex","exec","_match$","_match","substring","FULL_WIDTH_LAYOUT","gridTemplateColumns","textColSpan","textColStart","imageColSpan","imageColStart","textOrder","imageOrder","HALF_WIDTH_LAYOUT","swiperModules","Autoplay","PromoInsetTile","isHalfWidthInGrid","productImagesCarousel","context","promoTileRef","isFullWidth","prepSlides","slide","autoPlayConfig","disableOnInteraction","pauseOnMouseEnter","transitionProps","transitionConfig","memoizedSwiperModules","order","startColor","endColor","Carousel","modules","slides","renderSlide","onSwiper","swiper","autoplay","autoPlay","showControls","showPlayPause","animatedCarousel","animatedCarouselTransitions","PageCoverLcp","imageUrls","getPageCoverImageUrls","sources","entry","fallbackEntry","screenSize","artDirectionSources","containerStyle","BREAKPOINT_VALUES","srcSet","fetchPriority","LEGACY_BREAKPOINT_VALUES","aspectRatioString","TABLET","sanitizeUrlForCSS","LEGACY_IMAGE_STYLE","PageCoverLegacy","_imageUrls$mobile2","_imageUrls$tablet2","_imageUrls$desktop2","_data$image","_data$image2","_imageUrls$mobile3","imageClassName","flagOpts","urls","tablet","responsiveCSS","_imageUrls$mobile","_imageUrls$tablet","_imageUrls$desktop","mobileUrl","tabletUrl","desktopUrl","dangerouslySetInnerHTML","__html","PageCover","enablePlpHeroLcp","isSmallScreen","textStyleValue","combinedStyles","FeatureVideo","_data$video","_data$video2","_data$video3","_data$video4","_data$video5","_data$video6","_data$video7","_data$video8","_data$link","_data$link2","_data$link3","_data$link4","isFullWidthInGrid","videoData","colSpanValue","colStartValue","videoContainer","descriptionGrid","descriptionContainer","collabLogoContainer","ExplorePrompt","isTabletOrLarger","hasImage","hasAnyImageMedia","hasVideo","hasAnyVideoMedia","collabNode","collaborationContainer","titleNode","messageNode","mediaNode","mediaBox","ctaNode","ctaContainer","tabIndex","ctaButton","root","innerGrid","textColumn","textStack","mobileLayout","QuestionItem","question","answer","isFirst","isLast","meta","onToggle","useDisclosure","tabNamePart","AccordionItem","accordionItem","isExpanded","AccordionButton","questionContainer","AccordionPanel","answerContainer","styleProps","role","headingTextStyleMapping","headingColSpan","questionsColSpan","questionsPropType","LegacyFaqStructuredData","questions","faqSchema","buildFAQSchema","useStructuredData","ResolvedFaqStructuredData","menuCategories","useMenuCategories","flatCategories","flattenCategoryTree","resolvedQuestions","resolveFaqAnswerText","MultipleQandA","isFaqAnswerIntegrityEnabled","enableGlobalWebSiteSchema","Accordion","allowMultiple","testId","openIconTestId","closedIconTestId","DESCRIPTION_TEXT_STYLE","PlpDescription","showCollabLogo","showSmall","plpDescription","logo","AspectRatioSkeleton","Controller","swiperModulesWithFade","EffectFade","INTERSECTION_OPTIONS","renderMediaSlide","_uuids$current","renderDescriptionSlide","_descriptionGrid$swip","isSSR","isFirstSSR","getColStartPosition","reverseOrientation","getColStartHeader","getColStartDescription","getColStartMedia","SMALL_GRID_MARGIN_X","DEFAULT_GRID_MARGIN_X","IN_GRID_MARGIN_X","PlpStories","storyChapter","firstSwiper","setFirstSwiper","secondSwiper","setSecondSwiper","hasMultipleChapters","useIsClient","headerGrid","mediaGrid","handleSlideChange","hasLoadedOnce","resume","pause","templateAreas","getTemplateAreas","gridTemplateRows","colSpanHeader","colSpanMedia","colSpanDescription","gridMarginX","getGridMarginX","headingTextStyle","area","colStartHeader","colStartMedia","grabCursor","stop","control","onSlideChange","TIME_DURATION","showProgress","showCounter","swiperStyle","colStartDescription","noSwiping","allowTouchMove","slideStyle","effect","fadeEffect","crossFade","resolveCategoryName","_result$searchPhraseS","metadataArray","searchPhraseSuggestions","c_searchMetadata","categoryMetadata","ID","cleanedIds","headerTextStyle","ShopTheLookHeaderSection","application","_gridBreakpoints$appl","_gridBreakpoints$appl2","APPLICATION","PLP_LINK_AND_SHEET","gridBreakpoints","collaborationLogo","ShopTheLookMediaSection","isSheetOnly","isAddToBagEnabled","setIsOpen","partialDrawerStyle","hasShoppableProducts","showBagButton","isClickableTileEnabled","enablePlpStlClickableTile","isTileClickable","marginX","contentMediaConfig","handleOpen","handleClose","handleProductsLoad","loadedProducts","indicatorPosition","INDICATOR_POSITION","TOP_LEFT","formattedProducts","_product$representedP","_product$c_extend$cus","_product$c_extend2$cu","_product$c_extend3$cu","_product$c_extend4$cu","_product$image","master_id","bonus","metal","material","pricebook_id","image_url","distribution_method","final_price_ex_tax","final_price_inc_tax","ShopTheLookBagButton","PartialDrawerSheet","ShopTheLookDrawerBody","bodyContentStyle","onProductsLoad","customStyle","headerOverlap","ShopTheLookDescriptionSection","showDescription","enableContentBlockTracking","studioProductIDs","shouldShowDescription","isEffectivelyEmpty","hasNoProducts","isContentBlockVariant","contentType","CONTENT_TYPE","CONTENT_BLOCK","MAIN_IMAGE_VIEW_TYPE","findPrimaryImage","_product$imageGroups$","_product$imageGroups$2","_product$c_imageSeque","c_imageSequence","toSingleValue","mapDolProductToTile","_dolPrice$sales","_dolPrice$min","_dolPrice$min$sales","_dolPrice$list","_dolPrice$min2","_dolPrice$min2$list","resolvePrices","c_pndBadge","c_collabFlag","c_nonPurchasable","c_status","c_isSneakPeekProduct","c_isNotifyMe","buildCustomFields","c_gcType","c_slugUrl","DOL_PRODUCTS_EXPAND","DOL_PRODUCTS_EXPAND_WITH_VARIANTS","IS_STORYBOOK","ShopTheLookProductsGridSection","displayState","setDisplayState","productGrid","categoryBtn","totalProducts","setTotalProducts","categoryName","setCategoryName","productsGrid","isGridBreakpoint","isAwaitingBreakpoint","isDolProductGridEnabled","enableContentShopTheLookDolProductGridRefactored","interactions","processedProductIDs","productGridData","stlProductGridData","useShopTheLookProductGridData","withVariants","isPidsMode","isCategoryMode","isSuccess","isSearchSuccess","isSearchError","productsResult","isProductsSuccess","isProductsError","PRODUCTS","mapDolProductsResponse","extractDolProducts","hasContent","isSettled","resolvedTotalProducts","resolvedCategoryName","shouldShowProductGrid","shouldShowCategoryButton","hasNoCategoryButton","PLP_PRODUCT_GROUP","colStartProducts","ShopTheLookProductSkeletonGrid","ShopTheLookProductGrid","handleProductSearchResult","buttonStyle","bagButton","bagButtonIconOnly","baseSx","buttonSx","leftIcon","BagIcon","iconSpacing","gridRowGap","gridColumnGap","rows","responsiveColumns","columnValue","totalTiles","from","ProductTileSkeleton","ROW_GAP","showSkeleton","ShopTheLook","_getGridConfig$applic","_getGridConfig$applic2","getShopTheLookApplication","isHalfWidth","isSheetOnlyProductGroup","enableContentShopTheLookAddToBag","getGridConfig","templateRows","ASPECT_RATIO_NUMBER","RenderImage","ImageType","MEDIA_ASPECT_RATIO","animationVariants","RenderCard","subHeading","disableAnimation","_card$info","_card$info2","card","num","ImageCarouselType","showOnlyOnMobile","RenderCarousel","imageCarousel","shouldRender","processedSlides","templateAreaTop","gridTemplateRowsTop","templateAreaBottom","gridTemplateRowsBottom","styleBottomGrid","colSpanHeading","colStartHeading","colSpanItem2","colStartItem2","colSpanItem3","colStartItem3","showOnlyOnDesktop","RenderGrid","item1","item2","item3","has3rdItem","colSpanItem1","colStartItem1","RenderText","getTemplateColumns","columnCount","CraftAndQuality","ImagePlaceholder","Center","EntryCard","hideDescription","CARD_LAYOUT","CAROUSEL","CARD_ASPECT_RATIO","CARD_IMAGE_WIDTH","isGridLayout","GRID","VARIANTS","CARD_ASPECT_RATIO_VALUE","details","ContentMetaType","EntryCardsHeader","subheader","linkColorScheme","getEntryCardsKcpThemeStyle","SIZES","LARGE","UNDERLINE","COLOR_SCHEMES","LIGHT","COLORS","desktopBreakpoint","GRID_TEMPLATE_COLUMNS","CAROUSEL_STYLE","timingEmphasizedDecelerate","EntryCards","enableGalleryLayout","cards","cardCount","hasCards","showHeader","useEntryCards","desktopSlidesPerView","getDesktopSlidesPerView","hasOverflow","carouselTheme","getCarouselConfig","headerContent","carouselWrapper","TOP_RIGHT","THEME","gridWrapper","mediaColSpan","contentColSpan","columnStarts","mediaLeft","mediaRight","contentLeft","contentRight","containerPaddingY","mediaInnerMarginX","buttonPadding","flexBoxStyle","textAreaStyle","mediaBoxStyle","textBoxStyle","TextAndMedia","h2Heading","richText","mediaCaption","buttonWidth","mediaColStart","contentColStart","ContentMediaType","ParagraphSection","_paragraphSection$gri","_paragraphSection$gri2","paragraphSection","CTASection","_ctaSection$grid","_ctaSection$grid2","ctaSection","btnWidth","ArticleSection","pageSections","TextAndMediaSection","textAndMedia","renderSection","SingleQandAQuestion","answerHint","ArrowRightIcon","ContentBlockSubheading","ContentBlockDescription","ContentBlockLink","colors","black3b","ContentBlockImage","ContentBlock","ProductListSkeletonGrid","ProductBlock","withPadding","SingleQandA","_answerType$_meta","_answerType$_meta$sch","_answerType$contentBl","handleQuestionClick","answerHeader","answerType","productBlock","useSingleQandA","isContentBlock","endsWith","drawerContent","contentBlock","contentBlockProps","wrapWithScrollArea","captionVariants","tabUnderlineTransition","durationQuick1","TabList","tabs","activeTabIndex","tabsWrapper","tabListOuter","tabList","tab","tabIndicator","layoutId","tabUnderline","TabCaption","activeTab","_activeTab$cta","captionWrapper","TabbedGuide","disableTabbedGuide","setSwiperInstance","handleTabClick","useTabNavigation","setActiveTabIndex","swiperInstance","scrollTabIntoView","_tab$closest","_tab$closest$parentEl","offsetParent","scrollContainer","closest","parentElement","containerRect","tabRect","scrollLeft","scrollTo","slideTo","mediaGridItemProps","rowStart","leftColumn","headingWrapper","speed","componentsMapping","EditorialLink","IN_GRID_AWARE_SCHEMAS","AmplienceWrapper","skeleton","useMappedComponent","inGridProps","activeThreshold","module","exports","TOKEN_TTL_SECONDS","TOKEN_EXPIRY_BUFFER_MS","TOKEN_STALE_TIME_MS","hasImageData","node","_node$diImage","_node$aprimoData","hasAprimoImageData","_node$aprimoData2","_media$aprimoImg","_media$aprimoImg$apri","_media$aprimoDesktopI","_media$aprimoDesktopI2","_media$aprimoMobileIm","_media$aprimoMobileIm2","_media$aprimoVideo","_media$aprimoVideo$ap","_media$aprimoDesktopV","_media$aprimoDesktopV2","_media$aprimoMobileVi","_media$aprimoMobileVi2","hasVideoData","_node$aprimoData3","hasAprimoVideoData","_node$aprimoData4","amplienceVideo","buildMediaData","VIDEO_TYPE","IMAGE_TYPE","getMobileMediaData","getImageDataMobilePreferred","amplienceMobile","amplienceDesktop","amplienceNonResponsive","getVideoDataMobilePreferred","getDesktopMediaData","getImageDataDesktopPreferred","amplienceImg","ATTACH_FLAG","lastPayload","_event$detail","detail","SIDE1_TRACKING","SIDE2_TRACKING","getReportingTemplate","template","templatesData","templates","templateData","t","reportingName","getSideText","sideData","_sideData$text","cleanedText","waitForBasketSync","refetchBasket","queryClient","useQueryClient","shouldCleanBloomreachSuffix","enableCleanBloomreachSuffixFromDataLayer","enableEarlyAccessTracking","enablePdpNewEarlyAccessTracking","enableCartStateTracking","isDOLResponse","enablePDPDOLResponse","enableEngravingTrackingListenerEvent","isAtbBackgroundBasketRefetchEnabled","enableGlobalAtbBackgroundBasketRefetch","enableFlexibleSetAnalytics","enablePdpFlexibleSetAnalytics","engravingTemplatesData","useCartStateProducts","_refetchedResult$data","_refetchedResult$data2","_currentBasket$produc2","sizeGuideApplied","platform","productsOverride","lastViewed","lastClicked","refetchedResult","refetchedBasked","flexibleAtb","getFlexibleSetAtbOverrides","isFeatureEnabled","isFlexibleSet","customization","getProductCustomization","effectiveFindingMethod","extractProductDetails","isClickAndCollectProduct","_basket$productItems","product_quantity","c_fromStoreId","cartData","_currentBasket$produc","cartTotalQuantity","cartTotalPrice","orderTotal","productTotal","extractCartData","customerData","customer_crm_id","customer_email_id","customer_first_name","customer_last_name","customer_city","customer_zip","customer_creationDate","login_recall","account_type","customerAddress","extractCustomerData","promotionData","extractPromoData","isNewBasket","events","_engravingTemplatesDa","_engravingTemplatesDa2","templatesValue","engravingData","extractEngravingTrackingDataV2","engravableSides","matchingItems","productItem","engravingServiceItem","c_isEngravingService","isEngravingService","c_engravedLineItemUUID","engravedLineItemUUID","engraveData","rawEngravingData","c_engravingData","engraving","engraving_fee","engraving_category","i","c_engravingDimensions","_dims$SISMA","_dims$SISMA$SIDE_CONF","dims","SISMA","SIDE_CONFIG","sides","getEngravableSides","extractEngravingTrackingData","side1Text","side1","side2Text","side2","engravingFee","engravingCategory","getEngravingCategoryData","hasSide1","hasSide2","side1Template","reportingTemplate","side2Template","side_1","side_2","productTrackingData","convertProductData","promotionId","size_guide_applied","member_price_applied","cartState","buildCartState","buildOverrideProducts","overrideProduct","trackingData","abtest_segments","promos","last_viewed","last_clicked","cart_state","ProgressBarContainer","swiperRef","progressBarsRef","totalSlides","progressBar","_swiperRef$current","onAutoplayTimeLeft","timeLeft","_swiper$params","_swiper$params$autopl","realIndex","progress","resetProgressBars","bar","on","off","_swiperRef$current2","_swiperRef$current2$s","ProgressBar","segments","motionProps","ChakraMotionDiv","progressWidth","inactiveBar","activeBar","Controls","_swiperRef$current4","_swiperRef$current4$s","_swiperRef$current5","_swiperRef$current5$s","DARK","displayControls","numbers","isBeginning","setIsBeginning","isEnd","setIsEnd","updateState","handlePrev","slidePrev","handleNext","_swiperRef$current3","slideNext","prevClass","nextClass","PrevIcon","NextIcon","SWIPER_ACTION","PlayPauseBtn","isSliderRunning","setIsSliderRunning","playPauseBtn","_swiper$autoplay","running","handleAutoplayStart","handleAutoplayStop","handlePlayPause","_swiper$autoplay2","_swiper$autoplay3","PauseIcon","PlayIcon","AnimatedSlide","animatedTransitions","headingStyle","_breakpoints$BREAKPOI","_breakpoints$BREAKPOI2","_breakpoints$BREAKPOI3","_container$headerCaro","DEFAULT_AUTO_PLAY","customIndicator","BOTTOM_LEFT","suppressClickAfterDrag","resolvedAutoPlay","BREAKPOINTS","BASE","MD","XL","useCarouselInit","_swiperRef$current$sw","_swiperRef$current$sw2","isPressing","handleTouchStart","handleTouchEnd","swiperElement","useSwiperTouchEvents","useDragClickSuppression","DRAG_CLICK_THRESHOLD","pointerStart","shouldSuppressClick","handlePointerDown","clientX","clientY","handlePointerUp","hypot","handleClickCapture","renderedSlides","SwiperSlide","showTitle","CAROUSEL_CLASS","CONTAINER","headerCarousel","HEADER","Swiper","BODY","propName","componentName","useRegistrationFields","form","prefix","autoComplete","placeholder","password","validate","acceptsMarketing","_config$app","_config$app$dolAPI","dolCommonParams","getTokenWhenReady","useAccessToken","isDwsidHeaderEnabled","enableDwsidHeader","isBasketTraceEnabled","enableBasketTrace","setIsAddingItem","addItemResponse","setAddItemResponse","addItemError","setAddItemError","cartUrl","DOL_CARTS","dolParamLocale","channelType","accessToken","dwsidCookie","Authorization","sfdc_dwsid","credentials","forceRefetch","_freshBasket","_freshBasket2","freshBasket","createBasketBody","createBasketResponse","refetchError","readValue","stored","newValue","valueToStore","dispatchEvent","CustomEvent","clearValue","handleCustomEvent","useDelayedOnClose","animationDuration","shouldAnimateExit","setShouldAnimateExit","handleOnClose","QueryClient","EMPTY_KEYS","freeze","pickPersonalizedAmplienceResponse","_data$responses$","responses","_entry$content","_entry$content$_meta","_entry$content$_meta$","_entry$content2","_entry$content2$_meta","fetchContent","absoluteKeys","fetchViaPost","fetchItemById","fetchItemByKey","siteScoped","requestKeys","useFetchAmplienceContent","stableDolClient","processedKeys","p13nKey","cacheKeys","useQuery","queryFn","refetchOnMount","refetchOnWindowFocus","initialData","getQueryData","staleWhileRevalidate","_getConfig","_getConfig$app","disablePlpDoubleLocaleRemoval","urlSegmentWithoutLocalePrefix","mapUrlSegment","removeLocalePrefix","removeParameters","isNonCategoryRoute","apiPath","URL_MAPPING","requestParams","dolQueryKey","usePdpStaticContent","assetKeys","drawerLink","setDrawerLink","drawerTitle","setDrawerTitle","setDrawerBodyContent","allRelatedProducts","setAllRelatedProducts","clusterName","getClusterFromSite","prefixedAssetKeys","validAssetKeys","cmsData","contentArray","firstContent","allContentItems","_content$contentBody","contentBody","contentBodyItems","allRelated","partials_usePdpStaticContent","cleanProductId","shouldClean","productSearchItem","getCustomField","field","_c_extend$custom","productIdToUse","parseInt","parseFloat","getPromotionIds","promotionIds","promotion","useWishListAnalytics","trackEvents","wishlistEventData","createCustomerProductListItem","useShopperCustomersMutation","trackWishListEvents","listId","public","priority","deleteCustomerProductListItem","wishlistItem","EinsteinAPI","host","einsteinId","isProduction","_buildBody","realm","instanceType","clientUserAgent","navigator","userAgent","_constructEinsteinProduct","altId","altIdType","variationGroup","simple","productIdforEinstein","_constructEinsteinItem","_constructEinsteinBasket","_constructEinsteinCartItem","einsteinFetch","_this","_response","logger","namespace","additionalProperties","responseJson","keysToCamel","args","_this2","isDNTEnabled","sendViewSearch","searchResults","_this3","_searchResults$hits","showProducts","_this4","sendViewCategory","_this5","_searchResults$hits2","_this6","sendViewReco","recommenderDetails","_this7","__recoUUID","recommenderName","sendClickReco","_this8","sendViewPage","_this9","sendBeginCheckout","_this0","sendCheckoutStep","stepName","stepNumber","_this1","_this10","getRecommenders","_this11","_this12","getZoneRecommendations","zoneName","_this13","api","useCommerceApi","einsteinAPI","getUsidWhenReady","getEncUserIdWhenReady","useEncUserId","effectiveDnt","useDNT","einsteinInstance","setRecommendations","fetchRecProductDetails","reco","_reco$recs","shopperProducts","getProducts","allImages","perPricebook","_products$data","_products$data2","getEventUserParameters","cookieId","isTrackingDisabled","userParameters","concat","_ref13","renderRefactoredRecommendation","_ref14","enablePdpHydrationCleanup","enablePdpAggregateRatings","enableGiftCardTabLinks","enablePdpBloomreachPixel","enablePdpBloomreachEngageIdentifier","enableProductImagePreload","selectPdpRecommenderCompleteTheLook","selectPdpRecommenderSimilarProducts","selectPdpRecommenderRecentlyViewed","enablePdpDeliverySection","enableLowStockMessage","enablePdpCaratWeightInfoLink","enablePdpEngravingAssurance","enablePdpEngravingModal","enableRatingAndReviews","enableDiamondPDPAssurance","enablePdpBundlePriceSum","enablePriceForAddToBagButton","enableSkeletonAfterClickingOnRecZoneForSpa","enableLoyaltyPdp","enableAssurances","enableBraceletEditorPDP","enableEngraving","enablePdpGiftCardTabs","enablePdpAddToBag","enableRemovingGalleryAndCarouselImageDuplications","enablePdpDropAHintWhatsappShare","enablePdpDropAHintInstagramShare","enablePdpDropAHintSmsShare","enablePdpGiftPackagingAssurance","enablePdpWarrantyAssurance","enablePdpReturnAssurance","enablePdpShippingAssurance","enablePdpDropAHintAssurance","enablePdpAddToWishlist","enablePdpPagePerformance","enablePdpAmplienceVideo","enablePdpDesktopLightboxView","enableBnplAssurance","enableBnplStaticAssurance","enablePdpDropAHintMessageValidation","enableSetProductPriceCalculation","enableHiddingReviewsWithThreshold","enablePDPGiftCardCurrencyValues","enableRestrictedCampaignPDPRedirect","enablePdpDirectAtbFromSizeSelector","enablePdpStickyCncStoreCheck","enableProductFindingMethodTracking","enableLoadingBraceletEditorOnlyWhenEligible","enableBraceletEditor","enablePdpSpaNavigation","enablePdpRecommendationsAddToWishlist","enableEUPricing","enableNewCnCTrigger","enableGlobalRecommendationsTracking","enableSkeletonWhileProductLoading","enablePdpHideBrokenVideoOnMainImages","enablePdpCombinedVariantSelectorView","enableAddToBagLoadingStateImprovements","enablePdpNotifyMeCorrectProductData","enableBraceletEditorMfeRegistry","enableEngravingEditorMfeRegistry","enablePartOfSetAtbTracking","enablePdpPartOfSet","partOfSetRecommendationSource","enablePdpSafeAreaInsets","enablePdpGracefulCsrErrorHandling","enablePdpCsrProductQueryRefetch","enablePdpHeroImageStability","enablePdpGalleryImageStability","enablePdpSizeSelectorTracking","enablePdpPriceSegmentCache","enablePdpLazyCarouselImages","enablePdpBrowserTranslationProtection","enablePdpUrlMappingRedirect","enablePdpSelectiveHydration","enablePdpDetailsDrawer","enablePdpViewDetailsChevron","enablePdpYotpoConsent","enablePdpContent","enablePdpCarbonFootprint","enablePdpCarouselIndicatorEnhancement","enableDecidePdpImageCarouselImprovedSwipe","enableDecidePdpCarouselFixHorizontalOverflow","enableDecidePdpImageCarouselSwipeAnimation","enablePdpAtbProcessingFeedback","enablePdpManufacturerInformation","selectPdpRecommenderZoneCompleteTheLook","selectPdpRecommenderZoneSimilarProducts","selectPdpRecommenderZoneRecentlyViewed","enablePdpZoneRecommendations","enablePdpMemberPricingAnalytics","enablePdpProductSchema","enableDrawerOpenDirectionFix","enablePdpRelocateViewDetails","enablePdpScrollToReviewsFix","enablePdpSchemaDisambiguatingFields","enablePdpHideCarbonFootprintInfo","enablePdpSchemaJewelleryAttributes","enablePdpEngravingCrossProductFix","enablePdpFlexibleSetVariantSelector","enablePdpCombinedVariantThreeLetterLabel","enableLocalizedCurrencyLabel","enableStylingStudioAtbProductData","setIsViewBagLoading","resetLoading","SAME_AS","buildOrganizationSchema","logoUrl","sameAs","parentOrganization","useProductsInventory","inventoryIds","inventoryUrl","INVENTORY_SEARCH","itemIds","isDefaultInventory","getInventoryMap","inventoryMap","isInventoryMapLoading","isInventoryMapSuccess","isInventoryMapError","inventoryMapError","STALE_TIME_MS","csrFetchedProducts","__csrFetchedProducts","fetchSingleProductDetails","includeInventory","includePrice","enableNewProductsPricingAPI","enableNewProductsInventoryAPI","enableNewProductExperience","enableImageSyncForDetailedShotOnly","enableSkeletonOverlayTransition","enableStaleTimeForProductsRequest","enablePdpProductIdValidation","enablePdpCsrSpaReturnFix","disablePdpGetProductsOrganisationIdShortCodeSiteIdParameters","productsUrl","productDetailUrl","placeholderData","getPlaceholderProductData","effectiveIsFetchedAfterMount","primaryInventoryIds","secondaryInventoryIds","getSecondaryInventoryIds","priceProductIds","getProductPriceIds","primaryInventoryMap","INVENTORY_EXPAND_ALL","secondaryInventoryMap","finalProduct","transformScapiToDol","buildProduct","helpers","createMultiStyleConfigHelpers","SUGGESTION_RHYTHM","TEXT_SUGGESTIONS_WIDTH","CONTENT_PADDING","SLIDE_OFFSET_BEFORE","EDGE_TO_EDGE","SearchFlyout","defineMultiStyleConfig","inputGroup","resize","whiteSpace","wordWrap","minH","charLimitMessage","suggestionsWrapper","defaultSuggestionWrapper","productCarouselWrapper","flexBasis","overflow","textSuggestionsWrapper","exploreAllWrapper","exploreAllButton","designAudit","me","pe","maxW","ms","ps","paramKeys","useMFERegistryContext","updateConfig","unregister","configRef","isCurrentlyRegistered","handleUnregister","transformPayloadDep","_trackTransformPayload","transformPayload","stableConfig","MFERegistryProvider","registry","setRegistry","registeredRef","_mountedAt","existing","next","registryCount","_remountOnProductChange","_remountKey","mfeProps","RemoteStudioPlaceholder","toRelativePath","isVariant","_product$promotions","_product$promotions2","primaryCategory","calloutMsg","backorderable","preorderable","preOrderable","stockLevel","ats","availableToSell","inputJson","_inputJson$selectedRe","_inputJson$keywordRed","searchUrl","searchMetadata","searchMetaDataRefine","transformedProduct","productVariants","_product$recommendati","_product$recommendati2","availableMetals","transformedRefinements","refinement","_refinement$values","priceData","itemCount","end","seoFriendlyUrl","hitCount","c_seoFriendlyRefinementUrl","filteredValues","presentationId","transformedSelectedRefinements","selectedRefinements","originalQuery","selectedSortingOption","c_searchUrl","c_searchRedirect","keywordRedirect","restrictedCampaignData","c_restrictedCampaignData","c_contentAssetId","contentAssetId","c_redirectUrl","c_promotionId","sortingOptions","enableSneakPeekPDP","enablePdpPlatinumPlatedInfo","enablePdpPlatinumCareInstructions","enableLoadingBraceletEditorWhenOos","isAddToBagAvailable","enableAddToBag","isDeliverySectionAvailable","enableDeliverySection","isLoyaltySectionAvailable","enableLoyaltySection","_product$custom3","isEngravingAvailable","enableEngravingButton","isBundle","isStylingStudioAvailable","enableOosCheck","isBraceletBuiderEnabled","hasEntryPoint","isBNPLAvailable","_product$custom6","isPartOfSetAvailable","enablePartOfSet","_product$custom7","isPartOfSet","isPlatinumPlatedInfoAvailable","enablePlatinumPlatedInfo","_product$custom8","_product$custom8$meta","metalGroupDefault","isPlatinumCareInstructionsAvailable","enablePlatinumCareInstructions","_product$custom9","_product$custom9$meta","useVariants","fallbackValue","PARSE_OPTIONS","parseBooleans","parseNumbers","parseRefine","searchParamsObj","searchParamsObjCopy","arrayFormat","arrayFormatSeparator","encode","searchParamsStr","curr","useOrigin","fromXForwardedHeader","Spinner","thickness","emptyColor","OUT_OF_STOCK","UNFULFILLABLE","useDerivedProduct","pickupInStore","onVariationChange","_product$inventory2","_product$type2","showLoading","isProductABundle","stepQuantity","minOrderQuantity","initialQuantity","lowestStockLevelProductName","isStandardProduct","variationParams","useVariationAttributes","setQuantity","useSelectedStore","isOutOfStock","unfulfillable","selectedStoreInventory","getInventoryById","inventories","inv","selectedStoreStockLevel","selectedStoreLowestStockLevelProductName","isSelectedStoreOutOfStock","selectedStoreUnfulfillable","currentStockLevel","currentLowestStockLevelProductName","currentIsOutOfStock","currentUnfulfillable","inventoryMessages","showInventoryMessage","inventoryMessage","PasswordRequirement","isValid","iconStyles","CheckCircleIcon","PasswordRequirements","pwValidations","effectiveDate","withoutMilliseconds","toISOString","isNaN","resolveExplicitReferrer","currentHref","__BR_EXPLICIT_CURRENT_URL__","__BR_EXPLICIT_PRIOR_URL__","referrer","hasExecutedRef","siteConfig","pixel","domain_key","setInitialPageView","isDeferredPixelLoadingEnabled","isPixelInitialized","usePixel","isExplicitReferrerEnabled","enableBrExplicitReferrer","isPendingPayloadUpdateEnabled","enablePixelPendingPayloadUpdate","getKeyByLocaleId","waitForPixel","checkPixelLoaded","_window$BrTrk","_window$BrTrk2","BrTrk","getTracker","withExplicitReferrer","explicit_referrer","handlePageViewEvent","_window$BrTrk3","payloadWithReferrer","__BR_PRIOR_REFERRER__","logPageView","ptype","sid","orig_ref_url","prod_id","prod_name","cat_id","cat","cat_crumb","search_term","is_conversion","basket_value","cartTotal","order_id","orderId","cart","tracker","finalPayload","br_data","logEvent","logAddToCartEvent","catalogs","logSuggestSubmitEvent","aq","userQuery","logSuggestClickEvent","log","waitForPixelTrackEvents","interval","setInterval","clearInterval","prepareSearchTerm","suggestionType","searchTermFromUrl","MultiSiteContext","buildUrl","originalFn","siteRef","localeRef","alias","uniqueIDs","mergeCarouselConfig","customConfig","defaultConfig","defaultCarouselConfig","mergedBreakpoints","_defaultConfig$breakp","_customConfig$breakpo","duplicateOnceIfNeeded","force","shouldDuplicate","CurrencyContext","language","country_code","getCustomerData","crmLoyaltyData","accountBalance","abtestSegments","abtest_id","segment_control","cncSegment","getCncAbtestSegment","site_id","experience","customer_loyalty_tier","tierLevel","customer_loyalty_pendingpoints","pendingPoints","customer_loyalty_availablepoints","availablePoints","customer_loyalty_pointsAmount","conversionAmount","CLUSTER_MAPPING","ANZ","BRIS","CHINA","EAEU","LAPAC","NAM","NOEU","SOEU","STARTER","WEEU","LATAM","cluster","siteIds","isNonEmptyString","buildClusterDeliveryKey","baseKey","cookieHeader","cookieName","decoded","getUsid","base64","padded","repeat","jsonPayload","atob","c","charCodeAt","decodeJwt","sub","sizeTableTypeMap","Rings","Bracelets","Necklaces","sizeTable","ean","longDescription","primaryCategoryId","masterProductId","c_components","assurances","c_assurances","careInstructions","c_careInstructions","badgeDetails","c_badges","compatibility","c_compatibility","collabFlag","subCategory","c_subCategory","countryofOrigin","c_countryofOrigin","c_color","c_metalGroupDefault","materialGroup","c_materialGroup","materialGroupDefault","c_materialGroupDefault","uspShort","c_uspShort","importantInformationShort","c_importantInformationShort","importantInformationLong","c_importantInformationLong","handFinished","c_handFinished","handFinishedInformationShort","c_handFinishedInformationShort","depth","c_Depth","c_Width","c_Height","colorDefault","c_colorDefault","stoneName","c_stoneName","Collection","c_Collection","hasBundlePriceSum","isEarlyAccessProduct","c_isEarlyAccessProduct","storeThreshold","c_storeThreshold","c_isPartOfSet","hideCarbonFootPrintInfo","c_hideCarbonFootPrintInfo","createCustomFields","c_recommendations","variantCollectionName","c_variantCollectionName","sizeTableId","pageMetaTags","c_braceletBuilderInclusion","c_braceletBuilderEntryPoint","createStylingStudioField","iconCache","Map","loadingStates","ICON_CATEGORIES","COLLABORATION","SOCIAL_MEDIA","BNPL","FEATURE","PAYMENT","ICON_LOAD_ERRORS","NETWORK_ERROR","PARSE_ERROR","TIMEOUT_ERROR","UNKNOWN_ERROR","loadIconCategory","timeout","retries","onLoadStart","onLoadEnd","onError","loadingPromise","loadIconCategoryInternal","iconSet","startTime","performance","timeoutPromise","reject","importPromise","getImportPromise","iconModule","race","loadTime","errorType","getErrorType","toFixed","__webpack_require__","bind","preloadIconCategories","allSettled","getCachedIconCategory","isIconCategoryLoading","clearIconCache","getIconCacheStats","cachedCategories","loadingCategories","cacheSize","loadingCount","useScrollArea","ScrollAreaProvider","scrollAreaSelector","XL_MEDIA_QUERY","useResponsivePlacement","setPlacement","matchMedia","matches","mql","ResetPasswordFields","fields","useResetPasswordFields","Field","reset_password_fields","ResetPasswordForm","submitForm","clickSignIn","_form$formState$error","Fragment","isSubmitSuccessful","BrandLogo","getValues","chunks","isSubmitting","reset_password","enableEnrichment","enableGlobalCartStateEnrichment","enableDolAuthHeaderInjection","isBrowser","missingIds","getMissingBaseIds","FILTERED_BASKET_ITEM_KEYS","stripVariantSuffix","localeCompare","chunkArray","arr","buildQueryParams","chunkIds","results","useQueries","queries","retry","settleSignature","dataUpdatedAt","ts","seedTick","setSeedTick","seededAny","_result$data","setQueryData","createCustomAPIPaths","PREFERENCES","DOL_PREFERENCES","EMAIL_SUBSCRIBE","PRODUCT_SEARCH","CONTENT_ASSET","CONTENT_SLOTS","TRADING_BANNER","SEARCH_SUGGESTION","DATA","DOL_DATA","CUSTOMERS","USER_PRICE_CONTEXT","DROP_A_HINT","NOTIFY_ME","PRODUCT_PROMOTIONS","RECOMMENDATIONS","getCustomerApiPaths","createCustomerAPIPathsWithParams","CUSTOMER_PRODUCT_LISTS","CUSTOMER_PRODUCT_LIST_ITEMS","CUSTOMER_BASKETS","buildErrorPageUrl","errorPagePath","currentPath","localeMatch","replacePlaceholders","remToPx","rem","rootFontSize","isHomePage","isPdpPage","isPlpPage","AMPLIENCE_FIELDS","APRIMO_FIELDS","resolveTrackedAsset","aprimoAsset","fileName","amplienceAsset","getAssetInfo","addFrom","asset_id","asset_name","getTrackedAssets","collect","found","asset","addCollection","_entry$textAndMedia","initialNavCategories","__INITIAL_NAV_CATEGORIES__","storeInitialNavCategories","levels","isRootNavigation","categoriesTree","Infinity","rootCategory","flatten","DEFAULT_VALUE","UseTrackTealiumEvent","useTrackTealiumEvent","_contentMeta$schema","content_id","content_name","content_type","pop","useAnalytics","DIRECTIONS","LEFT","linkDataWithContentType","linkProps","useContentLinkLogic","cleanedLinkData","cleanLinkData","ctaAction","isCategoryCacheEnabled","enableCmsActionCategoryCache","enablePlpMainContent","parsedData","parseIdFromValue","isCategoryCta","categoryData","isCategoryLoading","productQuery","useProduct","router","reloadDocument","noAction","buildProductUrl","categoryUrl","buildCategoryUrl","buildBasicCmsAction","useCmsAction","class","open","shouldHandleClick","Link","version","isAbsolute","noHref","StylePropType","_objectDestructuringEmpty","canonicalRefinementsMapper","copySourceParams","sourceQuery","pushUniqueRefineKeys","param","paramKey","carat","variantSizeKeys","filteredSizes","fromEntries","sizeKey","sizeInfo","innerCircumference","innerDiameter","wristSize","imperial","labelSingular","metric","wheatsheaf","urlPath","NON_CATEGORY_ROUTES","disableDoubleLocale","normalizedPath","PasswordlessEmailConfirmation","email_confirmation","LOGIN_VIEW","REGISTER_VIEW","PASSWORD_VIEW","EMAIL_VIEW","LOGIN_ERROR","CREATE_ACCOUNT_FIRST_ERROR_MESSAGE","AuthModal","_getConfig$app$login$","_form$control2","_form$control2$fields","initialView","initialEmail","onLoginSuccess","onRegistrationSuccess","isPasswordlessEnabled","isSocialEnabled","idps","prevAuthType","usePrevious","currentView","setCurrentView","LoginRegisteredUserB2C","Register","loginType","setLoginType","passwordlessLoginEmail","setPasswordlessLoginEmail","authorizePasswordlessLogin","AuthorizePasswordless","passwordlessConfigCallback","passwordless","callbackURL","mergeBasket","useShopperBasketsMutation","handlePasswordlessLogin","redirectPath","userid","PASSWORDLESS_ERROR_MESSAGES","msg","_baskets$baskets","_baskets$baskets$","_baskets$baskets$$pro","username","createDestinationBasket","_ref5","_e$response","_ref7","reset","_form$control","_form$control$fieldsR","_fieldsRef$initialFie","initialField","fieldsRef","focus","loggingIn","registering","_customer$data","onBackToSignInClick","Modal","closeOnOverlayClick","ModalOverlay","ModalContent","ModalCloseButton","ModalBody","LoginForm","clickCreateAccount","handlePasswordlessLoginClick","handleForgotPasswordClick","RegisterForm","useAuthModal","social","METAL_FILTERS","platinum","anodized","PDP_EXPOSED_PRODUCT","PDP_SHEET","colSpanProducts","VIDEO_CONTROLS_LANE_WIDTH","childKey","recurse","buildParentCategoryTree","stopAtRoot","parents","currentId","unshift","parentId","possibleParent","_possibleParent$categ","EMPTY_PAYLOAD","PixelScript","initialPayload","account_id","debug","test_data","allowFunctional","allowPersonalisation","scriptRef","trackedPayloadRef","setPixelInitialized","loadHandlerRef","cleanupPixel","parentNode","removeChild","initializePixel","acct_id","lang","appendChild","handleLoad","checkBloomreachReady","isPayloadReplaced","useSortUrls","CHANNEL_NAME_ALLOWLIST","plp","pdp","pva","pageContext","explicitContext","resolveChannelContext","noopView","SKIP_DRAWER_TRAKING_TYPES","CONDITIONALLY_TRACKED_TYPES","useDrawerTracking","useFullUrl","skipTracking","retainTracking","trackDrawerView","trackDrawerClose","useDrawerAnalytics","getBaseUrl","firstPath","secondPath","getFullUrl","_aprimoNode$aprimoDat","amplienceNode","aprimoNode","hasAprimo","chosen","asset_type","formatContentData","_content$_meta4$schem","_block$link","content_parent_id","content_child_id","content_placement","click_text","click_type","content_product_id","copy_type","chapter","_content$_meta8","_content$_meta8$schem","_chapter$link","assetInfo","virtual_page_path","content_loaded","dismissMethod","dismiss_method","hasTrackedRef","enableClosingDrawerTracking","handleCloseWithTracking","includeDismissMethod","useLoginFields","onClient","WishListProvider","enable","_productLists$data","createCustomerProductList","_useCustomerProductLi","useCustomerProductLists","queryConfig","isXEnvironmentHeaderEnabled","baseRequestParams","productLists","useWishListCustom","RegistrationFields","inputProps","registration_fields","policy","ChakraLink","terms","SizeChartEntry","sizeChartModule","showSizeChart","showTable","hasTextContent","SizeGuideStyles","tableContainer","tableHeading","tableData","tabletSection","tabletMultiEntryRow","SizeGuideTable","sizeTableConfig","globalSizeTableConfig","productTypes","columnLabels","necklace","centimeters","inches","bracelet","br","braceletSize","wristSizeCm","braceletSizeCm","ring","us","uk","eu","TableContainer","Table","tableLayout","Thead","Tr","tableHeadingSortOrder","_columnLabels$type","Th","Tbody","columnName","_regionData","regionData","columnParent","_sizeTableConfig$tabl","_sizeTableConfig$tabl2","_size$names","configKey","_sizeTableConfig$tabl3","_sizeTableConfig$tabl4","_size$measurements","_size$measurements$wr","_size$measurements2","_size$measurements2$c","displayValue","_regionData2","_regionData3","valueFrom","valueTo","_regionData4","_regionData5","_regionData6","_regionData7","Td","size_guide_table","isSizeChartField","_field$type","isRingSizerField","_field$type2","isFingerSizerField","_field$type3","isEntryModuleField","_field$type4","SizeGuideContent","isTablet","normalizedDigitalSizeGroup","assetKey","PdpStaticContent","extractSizeChartModule","contentHasRingSizerModule","hasFingerSizerModule","contentHasFingerSizerModule","isFingerOnlyState","partitioned","regularItems","nonSizeChartFields","f","trailingChart","chooseSizeButton","entryFieldCount","entryFields","otherFields","size_guide_content","PlusThinIcon","clipPath","MinusThinIcon","rx","ArrowOne30Icon","CreditCardSVG","getDigitX","groupIndex","digitIndex","ry","stroke","strokeWidth","vectorEffect","credit_card_svg","RingSizerStyles","ringSizerContentText","creditCardContainer","creditCardOuterContainer","creditCardInnerContainer","creditCardTextHeight","creditCardSliderButton","ccHeightSliderTrack","ringRadiusContainer","ringPreface","ringCircle","ringCircleInner","ringSizeValue","ringCircleArrow1","ringCircleArrow2","ringCircleArrow3","ringCircleArrow4","ringSizeDialContainer","ringSizeList","unitToggle","regionalMenuButton","_active","regionalMenuList","regionalMenuItem","controlContainer","footerContainer","footerMeasureContainer","RingSizerMeasurementDrawer","isRingSizerMeasurementDrawerOpen","cardHeightPxMm","ringSizerTable","onComplete","availableSizeNames","_ringSizerTable$ringI","isPrefaceActive","setIsPrefaceActive","availableSet","isIndexAvailable","regionKey","initialRingIndex","middle","lowerIndex","higherIndex","ringIndex","setRingIndex","prevOpenRef","wasOpen","pxPerMm","animationCancelled","animateTo","startIndex","targetIndex","step","currentIndex","availableIndex","findNearestAvailableIndex","skipAnimation","globalThis","regionalSizeHeader","handleOnBack","isNestedDrawer","bodyStyles","onTouchStart","PI","borderWidth","sizeObj","regionalMenuContainer","Menu","MenuButton","MenuChakraButton","ChevronDownIcon","MenuList","option","MenuItem","CheckIcon","Slider","SliderTrack","SliderThumb","StaticChevronLeftIcon","getCurrentCandidates","handleSelectSize","labels","mmInnerDiameter","sizeName","normalizedSize","footerStyles","footerHeight","sizeDialPosition","ring_sizer_measurement","clamp","RingSizerDrawer","isRingSizerDrawerOpen","selectedRegionalSizeProp","initialSelectedRegionalSize","handleChangeRegionalSizeProp","CARD_HEIGHT_MIN","CARD_HEIGHT_MAX","initialCardHeight","round","cardHeight","setCardHeight","setIsRingSizerMeasurementDrawerOpen","isBaselineDrawerOpen","setIsBaselineDrawerOpen","hasTrackedTryOnRef","n","metricNum","parseAndSortRingSizes","firstSizeNames","internalSelectedRegion","setInternalSelectedRegion","canMeasure","CARD_CONTAINER_MIN_HEIGHT","useInlineFooter","setUseInlineFooter","bodyRef","checkViewportHeight","availableHeight","innerHeight","onMinus","onPlus","onSliderChange","goToMeasurement","baselineClose","baselineBack","measurementClose","measurementBack","measurementComplete","instructionId","renderFooterControls","isInline","components_ring_sizer","FingerSizerContent","fingerSizer","sizeChart","onRingSizerComplete","autoOpenRingSizer","onAutoOpenConsumed","closeRingSizer","isRingSizerEnabled","isFingerSizerOpen","closeFingerSizer","localRegionalSize","setLocalRegionalSize","SizeGuideDrawerWithProvider","RingSizerProvider","FingerSizerProvider","size_guide","useNavLink","_href","updatedHref","NavSPALink","SPALink","exact","majorStr","major","fetchPriorityPropName","ensureFetchPriority","defineProperty","enumerable","getImageAttributes","_fetchPriority$toLowe","_props$loading","_props$loading$toLowe","_props$decoding","_props$decoding$toLow","imageProps","loadingStrategy","getImageLinkAttributes","_props$loading2","_props$loading2$toLow","_props$fetchPriority","_props$fetchPriority$","imageSizes","imageSrcSet","createLogger","packageName","margin","mediaWidth","mediaData","IMAGE_CONTAINER_PROPS","COVER_IMAGE_PROPS","objectFit","currentProduct","_window$location","_currentProduct$maste","cartTotals","buildCartTotals","currentProductBaseId","_item$productId","baseProductId","isCurrentProduct","cachedData","dolProduct","_dolProduct$variants","_matchingVariant$vari","itemFindingMethod","c_productFindingMethod","matchingVariant","rawSize","product_size","fallbackFindingMethod","buildFallbackCartItem","price_number","gift_status","carat_weight","useCartState","enrichmentRev","sheetWidth","breakpoint","_image$breakpoint","_image$breakpoint$diI","_image$breakpoint2","_image$breakpoint2$di","_ringSizerModule$imag","triggerPref","rawPrefs","maximumStoreCount","defaultSearchRadius","extendedSearchRadius","_item$preferenceValue","setImageWidth","isAprimoUrl","widthMatch","heightMatch","currentWidth","currentHeight","newHeight","setImageWidthAuto","PreloadLinks","preloadUrl","importance","SkeletonPlaceholder","ImageRenderer","onLoad","fetchpriority","bgImage","forceRenderPlaceholder","isLcpOptimized","isPosterFrame","shouldPreload","useImageWidth","deviceType","breakpointWidth","getDeviceWidth","generatePreloadUrl","generateImageSrc","shouldLazyLoad","LazyLoad","once","NotifyMeForm","submitNotifyMe","notifyMeResponse","useNotifyMe","_product$variationVal","recipientEmail","productSize","maxLength","isValidEmail","notify_me_form","NotifyMeStyles","NotifyMeSuccess","notify_me_success","notify_me","all","isDolIntegrationEnabled","enableCategoryRestrictedFieldsOptimization","enableCategorySkipHydrate","isCategoryIdDefined","salesforceResult","useCategoryFromSdk","skipDehydrate","dolResult","currentFormat","targetFormat","sfrm","bgcolor","useBracketSyntax","append","AmexSymbol","BrandLogoSymbol","CVVSymbol","DiscoverSymbol","LocationSymbol","MastercardSymbol","PaypalSymbol","SocialPinterestSymbol","VisaSymbol","AmexIcon","AccountIcon","BasketIcon","ChevronLeftIcon","ChevronUpIcon","CVVIcon","DashboardIcon","DiscoverIcon","GridIcon","FigmaLogo","FilterIcon","FileIcon","FlagCAIcon","FlagUSIcon","FlagGBIcon","FlagFRIcon","FlagITIcon","FlagCNIcon","FlagJPIcon","GithubLogo","HamburgerIcon","HeartIcon","HeartSolidIcon","LikeIcon","LockIcon","focusable","LocationIcon","PaypalIcon","PlugIcon","PlusIcon","MastercardIcon","ReceiptIcon","SearchIcon","SocialFacebookIcon","SocialInstagramIcon","SocialPinterestIcon","SocialTwitterIcon","SocialTikTokIcon","SocialYoutubeIcon","StoreIcon","SignoutIcon","UserIcon","VisaIcon","VisibilityIcon","VisibilityOffIcon","CheckSiteLocatorIcon","ChevronViewBox","StaticWarrantyIcon","StaticReturnIcon","StaticGiftPackagingIcon","StaticEngravingIcon","StaticCrossIcon","StaticPaperPlaneIcon","StaticRedCrossIcon","StaticGreenCheckIcon","StaticPinkCheckIcon","StaticPlayIcon","StaticChevronDownIcon","StaticChevronUpIcon","StaticDiamondIcon","StaticImportantInfoIcon","StaticHandWithHeartIcon","StaticCirclesIcon","StaticHeartUnfilledIcon","StaticSparklesIcon","StaticCreditCardIcon","LiveChatIcon","CalendarWithCheckPictogram","GiftPictogram","HandWithHeartPictogram","StorePictogram","TruckPictogram","LoyaltyPictogram","WarrantyPictogram","ReturnPictogram","defaultBtnViewBox","TruckPrimary","StorePrimary","HandWithHeartPrimary","CalendarPrimary","LoyaltyPrimary","WarrantyPrimary","ReturnPrimary","MuteIcon","UnmuteIcon","PandoraLogo","DisneyPandoraViewBox","StarWarsViewBox","PandoraMeHorizontalViewBox","MarvelViewBox","PandoraDiamondsViewBox","GotViewBox","MandalorianViewBox","ClearpayViewBox","KlarnaViewBox","AfterpayViewBox","PixarViewBox","MyPandoraViewBox","PandoraBridgertonViewBox","PandoraMeFestivalViewBox","PandoraUnicefWithBlueViewBox","PandoraUnicefViewBox","HpPandoraViewBox","PandoraNetflixViewBox","PandoraPatMcGrathViewBox","FooterBrandLogoIcon","DEVICE","MOBILE_MAX_WIDTH","TABLET_MAX_WIDTH","useDeviceType","setDeviceType","updateDeviceType","innerWidth","isExternal","ReactRouterLink","StoreLocatorContext","selectedStoreId","_useStores","useStores","hasSelectedStore","TOO_MANY_LOGIN_ATTEMPTS_ERROR_MESSAGE","TOO_MANY_PASSWORD_RESET_ATTEMPTS_ERROR_MESSAGE","TOKEN_BASED_AUTH_FEATURE_UNAVAILABLE_ERRORS","PASSWORDLESS_FEATURE_UNAVAILABLE_ERRORS","PASSWORD_RESET_FEATURE_UNAVAILABLE_ERRORS","TOO_MANY_REQUESTS_ERROR","getAppOrigin","getEnvBasePath","getAuthorizePasswordlessErrorMessage","getPasswordResetErrorMessage","getLoginPasswordlessErrorMessage","countdownMessages","days","hours","minutes","seconds","promotionEndDate","remainingTime","setRemainingTime","updateTimer","timeUnits","countdownTimer","endDate","timeDiff","formattedTime","contactUsMessage","RouteLink","borderIn","keyframes","borderOut","opacityPulse","borderPulse","black4","dotAnimation","fadeOut","enter","PinkOverlay","useDrawerContext","useModalContext","buildBreadcrumbSchema","breadcrumbs","itemListElement","resolveContentType","_item$_meta2","formatContentItems","formatContentItem","_assetInfo$asset_id","_assetInfo$asset_name","_item$_meta3","_item$_meta4","_item$_meta5","_item$cta","_item$link","_item$cta2","_item$link2","_item$cta3","_item$link3","includeCopyHeader","copyTextSources","copy_text","hasAssetData","cta_type","cta_type_id","cta_text","processArticleHubData","_category$categories","article","assetId","UrlMapper","lastUrlSegment","fetchUrlMapping","getUrlMapping","useUrlMapper","UrlMapperProvider","shopperSeo","access_token","skipEmptyString","urlMapper","PixelProvider","setInitialPayload","auth_key","enableDeferredPixelLoading","hasInitializedRef","hasInitialPayload","hasConsent","shouldLoadPixel","UserPriceContext","userPriceContext","fetchUserPriceContext","reqCookie","safeErrorMessage","UserPriceSegmentProvider","disablePlpUserPriceContextOrganisationIdShortCodeSiteIdParameters","enablePlpXEnvironmentHeaderForUserPriceContext","_response$headers","normaliseSegmentCookie","isControl","customQualifiers","segGroup","MultiSiteProvider","initialSite","initialLocale","setSite","setLocale","CurrencyProvider","initialCurrency","setCurrency","FeatureFlagsContext","FeatureFlagsProvider","useFeatureFlags","getUserLocation","setLocation","setLoading","errorMessages","geolocation","unsupportedBrowser","permission","permissions","getCurrentPosition","locationRetrievalFailed","geolocationPermissionDenied","permissionQueryFailed","use_geo_location","GEO_LOCATION_ERROR_KEYS","sourceEnums","bloomreach","salesforce","searchProviderEnums","sourceKey","useDolQ3","retryOnMount","formatCurrencyDisplay","formatNumber","labelLocale","decimalLocale","resolvedDecimalLocale","numberPart","minimumFractionDigits","maximumFractionDigits","percentage","shouldForwardProp","prop","isValidMotionProp","CascadeItem","shouldAnimate","localeShortCode","removeSiteLocaleFromPath","parseInlineFormatting","elements","nextOpenBracket","indexOf","nextCloseBracket","nextOpenParen","nextCloseParen","typeValue","hrefValue","titleStart","lastIndexOf","flushLists","unorderedList","orderedList","parsedContent","parseRichText","currentUnorderedList","currentOrderedList","isFirstElement","pushElement","element","trimmedLine","STUDIO_BRACELET_TYPE","PRODUCT_TYPE_SET","PRODUCT_TYPE_KEYS","isSetProductType","first","isFlexible","services","_rec$type","isStudioComposition","styling_studio","getStudioCompositionCounts","counts","braceletCount","charmCount","_item$product2","isBreadcrumbFixEnabled","handleFavouriteToggle","isFavourite","enableXEnvironmentHeaderForGetCustomerBaskets","enableGlobalDolGetCustomerBasketIntegration","useCustomerBasketsFromSdk","dolApiOptions","selectCallback","_data$baskets","_basket$items","STORE_ORDERABLE","available","low","updatedItem","getProductIds","getVariantsIds","bundleProduct","getBundleProductIds","setProduct","getSetProductIds","pickMasterOrOwnId","_p$master","getProductType","bp","isChild","variantInventory","inventoriedVariants","buildWithVariants","bundleWrapper","bundledProduct","buildWithBundledProducts","buildWithSetProducts","priceProperty","priceValue","getProductsPricesMap","_price$lastLowestPric","_price$lastLowestPric2","transformedPrice","getImageViewType","imageParts","plpImageWidth","getCurrentPlpImageWidth","viewportWidth","dpr","devicePixelRatio","cssWidth","getBreakpointWidth","effectiveDpr","initialProductData","plpQueryKey","plpQueries","getQueriesData","page","_page$hits","hit","getProductFromQueryCache","getImageSequence","isHero","viewTypeIndex","preloaded","plpImageSrc","hasDetailedShot","resolveSiteFromUrl","hostname","getPathnameAndSearch","getParamsFromPath","sites","getSites","siteUrl","getSubdomain","getDefaultSite","defaultSite","siteAliases","getSiteByReference","pathMatcher","searchMatcherForSite","searchMatcherForLocale","getConfigMatcher","pathMatch","searchMatchForSite","searchMatchForLocale","groups","allSites","localesIds","localeAliases","supportedLocales","locales","searchPatternForSite","pathPattern","searchPatternForLocale","getLocaleByReference","resolveLocaleFromUrl","subdomain","loopAddBlankSlides","freeMode","resistanceRatio","MAXIMUM_PRODUCTS","SPACE_BETWEEN","SMALL","MEDIUM","CAROUSEL_BREAKPOINT","MODULE_PAGE","HOMEPAGE","ENTRY_CARDS_KCP_THEMES","DEFAULT_KCP_THEME_STYLE","descriptionColor","darkThemeStyle","KCP_THEME_STYLES","ENTRY_CARDS_KCP_THEMES_BLACK_FRIDAY","ENTRY_CARDS_KCP_THEMES_CYBER_MONDAY","ENTRY_CARDS_KCP_THEMES_SALE","ENTRY_CARDS_KCP_THEMES_BLUE_SALE","normalizeEntryCardsKcpTheme","shouldLoop","CAROUSEL_BREAKPOINT_SMALL","CAROUSEL_BREAKPOINT_MEDIUM","CAROUSEL_BREAKPOINT_LARGE","CAROUSEL_BREAKPOINT_X_LARGE","createIcon","EmptyHeartIcon","MenuIcon","MoreIcon","RemoveMinicartIcon","PersonIcon","RightCaretSmallIcon","LeftCaretSmallIcon","DownCaretSmallIcon","MinusIcon","CalendarIcon","GiftIcon","TruckIcon","HandsHeartIcon","DragHandleIcon","ReturnIcon","PaperPlaneIcon","CreditIcon","rounded","layerStyles","cardBordered","ccIcon","foundations_sizes","headingCommonStyles","bodyCommonStyles","foundations_textStyles","headingXl","headingLg","headingMd","headingSm","bodyLg","bodyMd","bodySm","caption","headingXlLight","headingLgLight","headingMdLight","headingSmLight","rtlConfig","listStyle","_after","getColorScheme","success","warning","base_alert","subtle","borderStyle","button_style","primary","_disabled","emphasized","timingStandardDecelerate","animation","animateOnHoverExit","defaultProps","drawer_style","footer","full","partial","dialog","learnMore","mdSize","input_style","addon","xs","filled","_placeholder","focusBorderColor","_app","headerWrapper","zIndices","sticky","Header","logoContainer","navListContainer","transparent","commonDrawerStyles","RACDrawer","subscribe","subscribeField","subscribeButtonContainer","subscribeHeading","subscribeMessage","localeSelector","localeDropdown","localeDropdownOption","bottomHalf","horizontalRule","socialIcons","checkout_footer","creditCardIcon","customerService","social_icons_styles","textOverflow","LoadingDots","_SFProductTile$baseSt","favIcon","imageWrapper","rating","badgeGroup","product_tile_styles_container","favIconWithBackground","swatch","outer","inner","bgRepeat","bgSize","imageTileDesktop","imageTileContainer","imageTileMobileContainer","imageTileMobileWrapper","MemberPriceTooltip","triggerButton","m","drawerText","drawerList","styleType","signUpLink","CarouselStepIndicator","activeStep","inactiveStep","SearchDrawer","flyoutHeading","createLinkStyles","decorationColor","hoverColor","textDecorationColor","textDecorationThickness","textUnderlineOffset","createUnderlineStyles","createTextWithLinksStyles","linkColor","createMessageTextStyles","TradeBanner","overflowWrap","hyphens","skeletonContainer","messageContainer","learnMoreButton","messageText","progressBarSx","mainFlex","progressBarContainer","messageTextComponent","progressGoalText","learnMoreButtonComponent","verticalAlign","progressComponent","progressBarColor","fusia","pointerEvents","BLEED_MARGIN","BLEED_PADDING","dark","inGrid","partOfSet","HeroBanner","wrapper","borderBottomColor","u","skeletonStack","skeletonHeading","skeletonText","noOfLines","skeletonHeight","VisualNavigation","navList","navItem","visualNavImg","visualNavText","ContentTabs","_selected","spaces","tabSpace","bracketLeft","bracketRight","tabPanelWrapper","FilterBar","textWrap","chip","scrollArea","searchResultCount","pill","isolation","pillBadge","productCount","alignSelf","FilterDrawer","accordion","accordionButton","boxSizing","colorButton","plate","RecirculationNavigator","SearchResultHeader","headingMarginBottom","noResultText","lazyLoadContainer","backgroundVideo","ctrlContainer","VideoControls","defaultRight","controlIcon","controlWrapper","isRTL","carouselHeaderSelector","carouselBodySelector","carouselControlsSelector","pageMarginX","bleedMarginX","bleedPaddingX","desktopGutter","desktopSubheaderWidth","isHomepage","WebkitLineClamp","WebkitBoxOrient","fontVariantNumeric","fontFeatureSettings","TITLE_CLASS","_props$theme","_props$theme$sizes","underline","backgroundImage","variantStyles","labelBackgroundColor","isLabelHidden","labelTextColor","HALF_WIDTH_TEMPLATE_COLUMNS","INGRID_DESCRIPTION_MARGIN_X","DEFAULT_DESCRIPTION_MARGIN_X","INGRID_MEDIA_MARGIN_X","gridColumn","IdleUserOverlay","overlayStyle","black1","pandoraPink","ctaLinkStyle","insetInlineEnd","definePartsStyle","corner","radial","cyberMonday","blackFriday","hexToRGBA","hex","alpha","inset","gradients","yKeyframes","xKeyframes","getDotStyles","radialDotColor","content_dim_style_baseStyle","h3","linkItemStyles","getEntryPointsLinkItemStyles","objectPosition","halfWidthDesktop","plp_stories_style_XL_MEDIA_QUERY","gridTemplateAreas","mediaItem","space","Panel","isFixedPanel","ErrorAlert","ContentVisualization","errorAlert","containerBackgroundColor","isGridSpot","containerMarginX","gridPaddingX","gridPaddingY","hasBothColumns","nonHyphenatedText","WebkitHyphens","Toolbar","backIcon","icons","previewIconClose","previewIconInitial","previewIcon","borderBottomWidth","sectionTitle","paddingInlineStart","infoContainer","infoIcon","popoverBody","infoBox","defineStyleConfig","linkUnderline","linkSubdued","linkTextOnlyUnderline","hexWithOpacity","hexColor","padStart","WHITE_COLOR","BLACK_COLOR","TRANSPARENT","OPACITY_100","UNDERLINE_HEIGHT","LIGHT_THEME","COLOR_SECONDARY","SECONDARY","DEFAULT_COLOR","DEFAULT_SIZE","DEFAULT_VARIANT","NewLink","_props$theme$colors","_props$theme2","_props$theme2$colors","_props$theme3","_props$theme3$sizes","colorValue","underlineValue","_props$theme4","_props$theme4$colors","WebkitBoxDecorationBreak","boxDecorationBreak","OPACITY_020","small","large","_props$theme5","_props$theme5$colors","_props$theme6","_props$theme6$colors","_props$theme7","_props$theme7$sizes","_props$theme8","_props$theme8$colors","textOpacity","underlineOpacity","disabledOpacity","inline","_props$theme9","_props$theme9$colors","_props$theme0","_props$theme0$sizes","_props$theme1","_props$theme1$colors","none","getGridBoxWidth","numColumns","extraMargins","extraGutters","cols","gutter","modal","modalHeader","closeIcon","modalBody","overscrollBehavior","levelContainer","levelOneItems","logInLink","levelTwoWrapper","levelTwoItems","menuItem","sectionContainer","sectionName","NavListItem","DropdownMenu","headerHeight","menu","innerMenu","h1","h2","li","ul","ol","counterReset","counterIncrement","commonTextCss","ArticlesHub","articlesGrid","DefaultSuggestions","linkLabel","linkHeader","LodBanner","willChange","sliderWrapper","slideItem","slideItemActive","carouselItem","wordBreak","alignContent","scrollPaddingInline","WebkitOverflowScrolling","gallery_styles","heroContainer","gallery","listContainer","motion_swipe_styles","pagination","flexDir","paginationButton","touchAction","ProductViewStyles","productDetailStack","swatchContainer","detailsContainer","customText","buttonCTA","productDetailGrid","productDetailGridItemRight","productDetailGridItemLeft","scrollParent","ProductPricePromo","studioPlaceholder","childProductListWrapper","childProductListContainer","childProductName","childProductPrice","childProductQuantity","childProductListImage","badgeRatingContainer","PartOfSet","gridItemLeft","gridItemRight","heroImageMobile","contentWrapper","descriptionDesktop","descriptionMobile","ctaSectionCompact","buyButton","borderLeftColor","overrides","fontSynthesis","textRendering","WebkitFontSmoothing","MozOsxFontSmoothing","A","fonts","kcp","imageBackground","shadows","hide","auto","docked","dropdown","banner","idleOverlay","popover","skipLink","tooltip","Badge","notification","Container","Drawer","FormLabel","dialogContainer","Popover","popper","normal","fullWidth","Radio","_indeterminate","Select","Tooltip","Progress","filledTrack","_first","_last","subline","App","Breadcrumb","motionBox","Search","iconButton","suggestionsContainer","categorySuggestionContainer","categoryFlyoutSuggestionContainer","suggestionTitle","flyoutSuggestionTitle","suggestionSubTitle","suggestionPriceTitle","tags","productImage","isStickyHeader","Footer","borderTopRight","borderBottomRight","subscribeInputContainer","linkStacks","accordionHeader","bottomGrid","brandLogoGridItem","justifySelf","brandLogoContainer","brandLogo","brandLogoLink","siteLocatorCopyrightGridItem","flexContainer","copyrightMessageText","socialIconsGridItem","localeSpecificContent","borderInlineEnd","borderInlineEndColor","livechat","CheckoutFooter","LinksList","headingLink","vertical","horizontal","listItemSx","NestedAccordion","nestedAccordion","internalButton","internalButtonIcon","leafButton","LocaleSelector","selectedButtonIcon","selectedButton","selectedText","selectedIcon","optionButton","optionText","OfflineBanner","SocialIcons","Pagination","SwatchGroup","swatchGroup","swatchLabel","swatchesWrapper","swatchButton","circle","square","ImageGallery","heroImageGroup","heroImageSkeleton","thumbnailImageGroup","thumbnailImageItem","thumbnailImageSkeleton","sliderContainer","sliderGrid","productContainer","gridColumns","sliderButton","LocaleMenu","menuList","localeText","menuFlex","menuContent","menuItemFlex","DragButton","MiniCart","miniCartPopover","miniCartHeaderText","minicartFooterText","miniCartFooter","miniCartText","primaryTextColor","secondaryTextColor","saleTextColor","netPriceText","Navigation","IncentiveBanner","basePopover","basePopoverArrow","basePopoverHeader","basePopoverHeaderText","basePopoverCloseButton","incentiveBannerPopoverContent","incentiveList","incentiveListItem","incentiveListIcon","incentiveButtonWrapper","incentiveButton","SiteLocator","allowToggle","accordionContent","flexFlow","regionBox","regionText","columnSpan","headerTextStyles","Country","accordionPanel","countryContainer","countryLink","localeList","localeListItem","localeLink","LiveChat","bgGradient","rotatingBg","textContainer","iconWrapper","placeItems","paragraph","dots","collapsed","expanded","Gallery","ProductImage","center","cover","MotionSwipe","Indicators","steps","below","semanticTokens","semanticColors","app_theme","extendTheme","fontSizes","getThemeWithRTL","LazyIcon","iconName","fallbackIcon","showLoadingSpinner","loadingSize","onLoadError","iconProps","setIconSet","loadedIconSet","loadIcon","createLazyIcon","LazyIconComponent","FlexiblePaymentPictogram","FlexibleDeliveryPictogram","FlexiblePaymentPrimary","FlexibleDeliveryPrimary","useIconPreloader","preload","RECOMMENDATION_PATHS","CACHE_POLICY_QUERY_OPTIONS","COMMON_REQUIRED_FIELDS","requiredFields","missingCommon","missingSpecific","CONFIGS","subPath","enableRecommendationTabs","enablePlpRecommendationTabs","recommendationsBasePath","createRecommendationConfig","validation","_appConfig$targetEnvi","bloomreachEnvironment","xEnvironment","visitorid","typeSpecificId","isQueryLoading","isQueryError","queryError","DefaultButtonAssurance","assuranceData","defaultLink","defaultTitle","setIsDrawerOpen","assets","isTruncated","LinkAssurance","linkDirection","linkVariant","INLINE","handleCloseDrawer","ICONS_MAP","Calendar","Gift","Truck","Store","Return","PaperPlane","Credit","ShippingSVG","WarrantySVG","ReturnSVG","bnpl","diamond","ENTRY_POINTS_ICON_MAP","PICTOGRAM_ICONS_MAP","shipping","pickup","returns","loyalty","warranty","gift","packaging","payment","delivery","SMALL_ICONS_MAP","DYNAMIC","ALIGNMENT_MAP","twoLineEllipsis","alignment","iconSize","textSize","withButton","withLinkAndDrawer","SelectedIcon","renderContentWithIcon","isGridSpotContentEnabled","removePlpEmphasisedTile","isPromotionBR","enablePlpScrollRestorationFix","enablePromotionalPricingCacheFix","enablePdpCustomizationTracking","enablePlpDuplicateViewGuard","enablePlpUpTo5InGridModules","enablePlpRefactoredRecommendation","enablePlpAvoidDuplicateCategorySsrCall","enablePlpBrowserTranslationProtection","enableUrlNormalizationRedirect","removePrimaryCategoryBadRefinement","enableItemListSchema","enableCollectionPageSchema","enableNewsletterSignup","enableGlobalOrganizationSchema","enableGlobalOpenGraphTags","enableGhbEngagementTracking","enableGlobalUserSignInSignOut","enableNavListSsrFix","enableGlobalMenuL1SpacingFix","enableTradingBannerLearnMore","enableXEnvironmentHeaderForCreateAndDeleteCustomerProductList","disableCreateAndDeleteCustomerProductListOrganisationIdShortCodeSiteIdParameters","enableXEnvironmentHeaderForTradingBanner","disableTradingBannerOrganisationIdShortCodeSiteIdParameters","enablePdpNoToastError","enableOneTrustBannerTransition","enableSlasTokenDntFix","enableDntConsentForceRender","enablePva","enablePvaEntryPoint","enablePvaFullPage","enablePvaMonetateTrigger","enablePvaPageVisibility","enableGlobalDolChannelMigrationContent","selectPdpRecommenderConfirmationSheet","enableGlobalIdleUserOverlay","selectGlobalIdleUserOverlayTimings","enableSmartErrorPage","enableShopperContextPutOn404","enableGlobalNavigationContent","enableContentLastOrderDateBanner","enableGlobalFooterAssurance","enableContentFooterAssurancesFlexibleIcons","enableGlobalAmplienceFooterLinks","enableGlobalArFooterButton","enablePromotionProgressBarQualificationFlag","enablePromotionGrantedMessageFix","enablePdpSetProductTracking","enablePlpBundleGiftsetTracking","enableGlobalSearchDrawerFullUrlTracking","enablePromotionalBarConfirmationSheet","enableConfirmationSheetProductNameFix","enableConfirmationSheetEinsteinEngine","enableGlobalPvaFabIconUiUpdate","enablePvaFabLoadingAnimation","enableBreadcrumbsTrailingSlashSupport","enableBreadcrumbFixes","enableBreadcrumbSchemaJsonLd","enablePlpStandardPriceTest","enableShopTabDefault","enableOmnibusPercentageDisplay","enableOriginalPercentageDisplayWithOmnibus","enableDrawerPinkOverlay","enableEinsteinRecoTracking","enableGlobalBloomreachRecoTracking","disablePdpSendAHintOrganisationIdShortCodeSiteIdParameters","enableGlobalTradingBannerSsrSkeleton","enablePvaFabStickyOffset","enablePvaBasketRefetchOnAtb","enableIslandArchitecture","enableGlobalMobileScrollOptimization","enableDynamicManifest","enableStructuredDataJson","enableGlobalLaunchDarklyObservabilityPlugin","enableGlobalGuardedRolloutExposureTracking","enableSkipTranslationsWarning","enableGlobalSignUpIconReposition","enableGlobalLaunchDarklyClientSdk","enableTapperCsp","enableFetchByDOL","isAutoSuggestionsDataEnabled","isPrimaryColorSkuFilterEnabled","enablePageLevelContexts","isAdvancedAnalyticsEnabled","isNewRatingContainerEnabled","enableSecondaryColorSkuFilter","isAmplienceContentEnabled","isGoogleAnalyticsDebugEnabled","enableAmplienceTrackingSlots","enableOmnitureStagingServer","isInteractionToNextPaintEnabled","isCustomImageLazyLoadingEnabled","enableWebVitalsTracking","enableOmnitureC40Config","isPrimaryNavigationContainerEnabled","enableNewFooter","enableOptimizedImageDelivery","enableSharedPromotionCards","enableAdjustPixelTracking","isPandoraIdCookieEnabledAsia","enableStoryblokContent","enablePrimaryNavigationContent","isWishListIconUpdated","enableHotjarTracking","enableSubsetFonts","enableDolProdForPromotions","enablePdpBuyBox","enableGlobalRecommendationsTraking","enablePdpFindingMethodTracking","enableRefetchAllQueries","enableEmptyResponseHandling","enablePdpRecImageOptimization","enablePdpAdditionalDetailsCrawler","enablePdpVseParamForwarding","enableSearchSuggestionsPromotionalPrices","enableDeferAnalyticsScripts","enableUrlMappingErrorGuard","enableSearchSuggestionsDebounce","enablePdpDatalayerNoCategoryFix","enablePlpPageSortFallback","enableGlobalSearchSuggestionImageFit","enablePlpFilterBarRedesign","enableGlobalSearchFlyoutDesignAudit","enableGlobalNewBagIconCountBadge","defaultCountryCode","defaultPostalCode","DOL_PROXY_PREFIXES","isDolProxyPath","getSsrDolHeaders","env","DOL_API_KEY","dolFetch","fetchContentItem","hubHeader","doFetch","fetchContentViaPost","hubParam","hubQuery","requests","getDolApi","enableDolContentChannelMigration","dol","targetAmplienceHub","getDolConfig","getDefaultParameters","getHubParameter","hubName","getHubHeader","hubname","fetchItem","FEATURES_MAP","propHandleOutOfStockSizeSelection","_productSizes$5","drawerKey","setDrawerKey","setIsNotifyMeDrawerOpen","featurePiority","setFeaturePriority","newProductId","setNewProductId","ringSizerCompleted","setRingSizerCompleted","setAutoOpenRingSizer","translateAttr","sizeVariants","shouldShowPrices","sizePriceMap","isPricesLoading","useSizePricing","buildSizePriceMap","shouldDisplaySizePrices","findYourSizeButtonRef","setFindYourSizeButtonRef","skipClickAndCollect","replaceState","handleSizeChange","_productSizes$","featureDrawer","hasAnyNotifyMe","featureToUse","feature","_productSizes$3","resolveProductSizeFromRingSizer","_productSizes$4","direct","normalize","candidates","handleRingSizerComplete","sizeWithGuideFlag","findYourSizeButton","translate","SizeSelectorStyles","sizeSelectorButton","sizeGuideButton","_productSizes$2","size_selector","getAppOriginConfig","rebuildPathWithParams","extraParams","updateSearchParams","paramStr","newParams","categoryUrlBuilder","encodeURI","relCategoryUrlBuilder","searchUrlBuilder","searchTerm","createUrlTemplate","localeConfig","showDefaults","showDefaultsConfig","isDefaultSite","isDefaultLocale","querySite","queryLocale","isQuery","pathSite","pathLocale","isHomeWithDefaultSiteAndLocale","sitePath","localePath","pathName","AmplienceAssetType","cdnMobileUrl","cdnDesktopUrl","MediaContent","mediaInput","extractedData","inputMediaType","parseAspectRatio","_img$diImage","_img$diImage2","pointOfInterest","isVideoActive","fullScreenStyle","intersectionThreshold","hasResponsiveMedia","mobileMediaData","desktopMediaData","nonResponsiveMediaInput","pricesUrl","isPricesDataError","pricesError","PRODUCT_TILE_FLAGS","ldFlags","enablePlpOosMessaging","formLabel","helpText","inputRef","hidePassword","setHidePassword","PasswordIcon","passwordIconLabel","inputType","_inputProps","FormControl","isInvalid","InputGroup","InputRightElement","opt","FormErrorMessage","IDP_CONFIG","apple","AppleIcon","google","GoogleIcon","SocialLogin","authorizeIDP","AuthorizeIDP","redirectURI","buildRedirectURI","isIdpValid","idp","onSocialLoginClick","setSessionJSONItem","hint","ChakraSkeleton","LoginFields","hideEmail","login_fields","StandardLogin","setShowPasswordView","Divider","resetField","standard_login","PasswordlessLogin","_setLoginType","showPasswordView","handlePasswordButton","trigger","domForm","checkValidity","reportValidity","passwordless_login","useDeepCompareEffect","callback","currentDependenciesRef","isEqual","PARTIAL_HYDRATION_ENABLED","fetchOAuthTokenFromSSR","_appConfig$customAPI","tokenUrl","customAPI","queryStringified","_errorDetails","errorDetails","restApiOptions","useCustomMutation","staticBody","apiOptionsUpdated","useMutation","mutationKey","mutationFn","variables","dynamicBody","useCustomLazyQuery","initialOptions","setQueryParams","refetchRef","mergedOptions","_token","finalBody","prefetchQuery","watchOnlineStatus","win","unsubscribe","shallowEquals","getSessionJSONItem","sessionStorage","clearSessionJSONItem","isPlainObject","k","$1","__HYDRATING__","ACCOUNT_SHOW","WISHLIST_SHOW","LOGIN","CREATE_ACCOUNT","LOGOUT","RURL_PDP","refineKeyMapper","pmid","refineIdMapperBR","parametersArray","decodedValue","refinedString","existingEntryIndex","existingValuesArray","newValuesArray","mergedValues","disableKeyMapping","mappedKey","parseFormattedPrice","NaN","priceString","formatPriceRange","pmin","pmax","prefRefinementsMapper","refineQueries","refineObj","prefKey","valueKey","prefn","prefv","prefnKey","attribute","priceRange","priceSegment","sortRefinementsMapper","srule","sortBRRefinementsMapper","brSelectedOption","sortValue","addMissingMinMaxParam","BackButton","responsivePlacement","syncPlacement","defaultPlacement","shouldAnimateBackExit","handleBackWithAnimation","animateExit","handleBack","mobileHeightStyles","returnFocusOnClose","DrawerOverlay","DrawerContent","DrawerHeader","casing","renderDrawerBody","conditionalStyles","DrawerBody","DrawerFooter","useLimitUrls","useBoolVariation","useStringVariation","useJsonVariation","onFlagChange","useReducer","variation","mainEntity","acceptedAnswer","AVAILABILITY","getAvailability","_hit$c_extend","_hit$c_extend$invento","_hit$c_extend2","_hit$c_extend3","_hit$c_extend3$invent","formatPrice","numeric","buildAbsoluteUrl","buildItemListSchema","seo","_hit$c_extend4","_hit$image","offers","priceCurrency","availability","metaDescription","numberOfItems","buildCollectionPageSchema","itemList","shift","getCookieAttributes","isInIframe","self","parseJsonField","shouldLookup","rootCategoryQuery","categoryFromCache","resolveFromTree","rootCategoryData","flat","resolvedId","resolvedPluralId","isCacheLoading","shouldFallback","fallbackQuery","carouselModules","wishlistProp","addItemToWishlistProp","removeItemFromWishlistProp","enablePrefetchedProducts","prefetchedProductData","wishlistData","addItem","fetchedData","hookResult","rawProducts","renderProductTile","carouselArgs","finalProducts","_carouselArgs$breakpo","_carouselArgs$breakpo2","ProductCarouselSkeleton","drag","dragTransition","bounceStiffness","bounceDamping","dragElastic","dragConstraints","hidePinkOverlay","onDismiss","showOverlayOnDrag","setShowOverlayOnDrag","pendingDismissMethodRef","resolvedDismissMethod","useMotionValue","dragControls","useDragControls","dragMotionProps","dragListener","onDragStart","onDragEnd","drawerY","onPointerDown","MEDIA_QUERIES","BREAKPOINT_ORDER","findPageCoverImage","amplienceContent","_amplienceContent$con","slotContent","pageCover","_module$_meta","_module$_meta$schema","shouldConvert","customFindingMethod","_product$price2$appli","_product$price3","_product$price4","_product$price5","_product$price5$min","_product$price6","_product$price6$appli","_product$price7","_product$price8","_product$price9","_product$price9$list","_product$price0","_product$imageSequenc2","_product$custom6$mate","_product$custom7$meta","_targetPrice$value2","targetPrice","promoWithPriceBook","pricebook","pricebookId","cleanedProductId","cleanedMasterId","product_bonus","product_bundle_id","product_carat_weight","product_category","product_collection","product_discount","product_early_access","product_gift_status","product_giftset_id","product_id","product_image_url","product_isBundled","product_master_id","product_material","product_metal","product_name","product_price","product_price_number","product_pricebook_id","product_promotion_id","getProductSize","product_subCategory","product_url","spin_360","isPartofset","emphasized_tile","_product$custom0","arrayFields","numberFields","internalProductKey","_product$price1","_product$price1$appli","_product$price10","_product$price10$appl","_product$price11","_product$price12","_product$price13","_product$price13$min","INCLUDE_PRODUCTS_DATA_EVENTS","_finding_method","updatedUtagData","buildProductsArray","_product$productType3","_product$productType4","_product$productType5","_product$productType6","isChildOfBundle","isChildOfSet","childItem","childProductDetails","extractChildProductDetails","parentProductId","_product$c_price$appl","_product$c_price2","_product$c_price3","_product$c_price3$min","_mainImageGroup$image","_mainImageGroup$image2","_product$c_stoneGroup","_product$c_Collection","_product$c_materialGr","_product$c_materialGr2","_product$c_metalGroup","_product$c_metalGroup2","_targetPrice$value","_product$variationAtt3","_product$variationAtt4","mainImageGroup","mainImage","cleanedParentId","c_stoneGroup","useRecommendationsAnalytics","trackRecommendationLinkEvent","estoreEvent","eventData","RingSizerContext","close","SAFE_DEFAULTS","MemberPriceDrawerContent","onSignUpClick","brand","primaryColor","secondaryColor","privacyPolicyColor","subdued","bodyBg","danger","charcoalBlack","ironsideLightGrey","overlayGray","grayBorder","offWhite","shadowBlack","pandoraPink40","pandoraPurple","pandoraRed","pandoraPromo","pandoraPressed","pandoraBlue","pandoraSplashBlue","black2","black3a","black5","blackBubbleBorder","red20","red60","red100","yellow20","yellow40","yellow100","green20","green40","green60","green100","magenta60","magenta100","loyaltySilver","loyaltyGold","lightPink","newColors","contentSubdued","lightGray","lightRed","lightBlue","lightGreen","PAGE_TYPE_SPECIFIC_FIELDS","debounce","cleanedBrData","clearIrrelevantPageFields","brData","newPtype","cleanedData","pageType","updateBrData","leading","trailing","createDebouncedLogEvent","eventType","actionType","trackerArgs","logWidgetViewEvent","logWidgetClickEvent","logWidgetAddEvent","DataTypes","HOMEMETA","badgeMap","pandoradiamonds","pandoradiamondsfrench","pandorame","pandoramefestival","starwarscollectorsedition","pandoraforunicef","pandoraforunicefwithblue","pandoranetflixlandscape","netflix","patmcgrath","Badger","Favourite","showBackground","shouldRenderFavourite","isSetTile","DynamicImage","widths","ImageTileDesktop","imageLoading","renderDynamicImage","currentStep","float","activeColor","inactiveColor","activeWidth","inactiveWidth","ImageTileMobile","touches","onTouchMove","deltaX","abs","setIsMobile","checkMobile","imageTileProps","imageTileMobileProps","onMouseLeave","EuPricingContent","_lowestPrice$percenta","_lowestPrice$percenta2","_memberPrice$default","outOfBundlePrice","netPriceValue","netPriceMsg","isOutOfStockOnline","lowestPricePercentage","lowest","originalPercentage","original","isPriceRange","isRangePromo","showLowestPriceMessage","SwatchButton","isSelected","swatchStyles","baseMetal","SwatchList","DISABLED_PROMOTIONAL_PRICING","hasNextPage","fetchNextPage","isFetchingNextPage","componentType","isContextFlagEnabled","segmentUpdateCompleted","enableQueryAfterDelay","setEnableQueryAfterDelay","shouldWaitForSegmentUpdate","timer","usePromotionalProductsQuery","combined","_priceData$default","_priceData$default$sa","_priceData$default2","_priceData$default2$l","_priceData$memberPric","_product$c_extend2$la","_product$c_extend2$la2","promotionalData","_promotionalData$last","_promotionalData$last2","dolListPriceOrNull","lastLowestPricePercentage","isPromotional","preferenceId","enforceDol","skip","isDOL","preferenceParam","customeApiPath","c_prefId","getUrl","forceShop","pathAndQuery","queryIndex","remainingParams","forceShopTab","resolveFaqLinkToken","_parseIdFromValue","openBracket","closeBracket","openParen","closeParen","idValue","quoteStart","getVariantValueSwatch","variationValue","_filterImageGroups","_filterImageGroups$","_filterImageGroups$$i","filterImageGroups","buildVariantValueHref","existingParams","isVariantValueOrderable","memoKey","variationAttribute","_variationAttribute$v","selectedValue","keysToCheck","CustomCloseIcon","_variant$variationVal","_priceEntry$list","priceEntry","sizePrices","firstPrice","firstOriginalPrice","getFormattedMeasurementValue","_sizeDataMap$size$val","_sizeDataMap$size$val2","_measurement$unit","measurement","rangeValue","getFormattedSizeName","_sizeDataMap$size$val3","_sizeDataMap$size$val4","showUnit","_data$unit","remote_add_to_cart","useRemoteAddToCart","appId","parentProduct","isPvaBasketRefetchEnabled","remoteHandleAddToCart","productSelectionValues","_productSelectionValu","_productSelectionValu2","trackingProducts","tracking","_id","_pid","optionItems","enrichedProductData","formatRemoteAppName","logFederationDebug","_window$localStorage","combinedMessage","trace","groupEnd","FederationErrorBoundary","errorInfo","retryCount","stack","highestTimeoutId","handleRetry","handleFallback","reload","SafeRemoteComponentLoader","readyEvent","readySelector","readyTimeoutMs","enableFabLoading","setComponent","setRetryCount","remoteContainerRef","createLoadPromise","_RemoteComponent$prel","RemoteComponent","lazy","importRemoteApp","getRemoteComponent","loadRemoteComponent","loadPromise","hasComponent","handleLoadSuccess","handleLoadError","MutationObserver","dispatchReadyEvent","fallbackTimeout","childList","subtree","Suspense","originalOnError","onerror","originalOnUnhandledRejection","onunhandledrejection","lineno","colno","_error$message","_error$message2","_error$message3","_error$message4","_error$message5","_error$stack","reason","productFromHook","handleAddToCart","cubicBezier","easeStandardAccelerate","durationExtended2","disableEcommerce","tealiumEnabled","tealiumAccount","tealiumEnvironment","lowInventoryThreshold","loyaltyEnabled","blrSortingOptions","bnplFeatureEnabled","bnplInstallments","bnplMessagingConfig","engravingServiceProductId","minimumCaratWeight","pndCertificatePrefix","enablePromiseEngine","enableLODMessaging","enableSTHLODMessaging","enableCCLODMessaging","sizeOptionsHeader","regionalSizeBox","sizeOptionsMenuButton","sizeTipBox","getDisplayVariationValues","attributeValue","normalizeSetBundleProduct","childProducts","getUpdateBundleChildArray","childProductSelections","_bundle$bundledProduc","itemsToBeUpdated","bundleChild","_childSelection$varia","_childSelection$produ","childSelection","_childProduct$product","_childProduct$product2","selectedProductId","getPriceData","opts","_variantWithLowestPri2","_variantWithLowestPri3","isASet","isMaster","currentPrice","variantWithLowestPrice","_variantWithLowestPri","_findLowestPrice","findLowestPrice","tieredPrices","maxTieredPrice","highestTieredPrice","tier","filteredTiered","tiered","closestTieredPrice","isRange","tieredPrice","priceMax","filters","_imageGroups$filter","selectedAttributeId","selectedAttributeValue","typeFilter","attributeFilter","_product$type3","smallestPromotionalPrice","getSmallestValByProperty","filtered","prevValue","wishLists","currentWishlist","ldContextAttr","DISABLED_VARIANT_PROMOTIONAL_PRICING","isVariantContextFlagEnabled","priceSegmentUpdateCompleted","enableVariantsQueryAfterDelay","setEnableVariantsQueryAfterDelay","shouldQueryWaitForSegmentUpdate","needsPricing","_promotionalData$prom","_variant$c_extend","_variant$c_extend$pro","_variant$c_extend2","_variant$c_extend2$pr","_variant$c_extend2$pr2","_variant$c_extend2$pr3","_variant$c_extend2$pr4","hasStandardPriceTest","queryType","_batchResults$find","enableCacheFix","eligibleProducts","promotionsUrl","fetchedProductIds","setFetchedProductIds","allPromotionalData","setAllPromotionalData","currentResourceIdRef","isInitialMount","updateCounter","lastProductCount","productsToFetch","validProductIds","batchSize","_queryResult$data","newProductIds","newPromotionalData","currentProductCount","hasChanges","currentProductIds","newFetchedIds","combinedData","_queryResult$data2","_queryResult$data2$pr","batchResults","executeMethod","postApiData","mutations","mutationMethod","post","apiMethod","deleteMethod","mutationName","getCacheUpdates","cacheUpdateMatrix","mutation","fn","cacheUpdates","updateCache","CNC_ABTEST_ID","CNC_ABTEST_COUNTRIES","CNC_ABTEST_SEGMENTS","useData","dataType","c_type","useBloomreachSortingOptions","isFetched","getSlugPath","useDefaultCategory","isMainSlotConfigured","isPlpDefaultCategoryTabEnabled","isShopTabDefaultEnabled","shopParam","discoverParam","findCategoryIdByUrl","targetUrl","useExactMatch","normalizePath","isMatch","slugPath","searchCategories","cats","decodeURI","getDefaultTab","lastCategory","defaultTab","setDefaultTab","getUserTabPreference","userPreference","setUserTabPreference","_category$parentCateg","hasShopHash","hasDiscoverQueryParam","constants","TA","notifyMeUrl","notifyMeSending","notifyMeError","STORE_EVENTS","EVENT_HANDLERS_MAP","getShopSearchData","getStoreDetailsSearchData","dataEvent","store_lookup_message","store_search_range","store_search_results","store_search_items","international_store_ids","eventName","eventDataHandler","dataLayerData","page_name","getInternationalStoreId","tokens","stockMap","true","false","storesCount","storeSearchItems","default_store","PERSONALIZATION_PLATFORM","_metadata$widget","_metadata$widget2","trackViewReco","trackClickReco","useEinsteinRecoTracking","recoUUID","hasValidRecommenderDetails","trackBloomreachViewReco","trackBloomreachClickReco","trackAddToCartReco","trackBloomreachAddToCartReco","isBloomreachRecoTrackingEnabled","useBloomreachRecoTracking","widget","wrid","requestId","rid","wid","wty","hasValidWidgetDetails","item_id","isTealiumEnabled","isEinsteinTrackingSupported","isBloomreachTrackingSupported","bloomreachWrid","trackedRecZonesRef","trackedBloomreachWridRef","isFreshViewportEntry","personalization","personalization_platform","personalisaton_type","personalisation_recommender","addedProduct","FingerSizerContext","ConfirmationSheetCallToAction","isShowContinueShopping","partials_ConfirmationSheetCallToAction","ConfirmationSheetProgressBar","approachingDiscountValue","formattedAmount","confirmation_sheet_progress_bar","ConfirmationSheetBubbleBar","amount","qualifyingAmount","stepArray","Circle","confirmation_sheet_bubble_bar","isProductABundleOrSetOrGC","imgParams","StudioCompositionSummary","orderedItems","summaryParts","gridGap","overscrollBehaviorX","_item$product3","_item$product4","use_product_wishlist","useProductWishList","wishlistLoading","setWishlistLoading","isWishlistLoading","handleAddToWishlist","getProductName","VariationAttributes","variationAttributeValues","char","getItemKey","ProductItem","getVariationAttributes","itemKey","AddToCartModal","_product$setProducts","_product$setProducts2","enableNewCtaDesign","isDrawerPerfOptimized","isAStudioComposition","isBubbleBarActive","useBubles","normalizeData","discountMsg","promotionGrantedCallout","callout","discountThresholdFormatted","thresholdAmountFormatted","thresholdAmount","discountThreshold","promotionQualifyingAmount","buttonTrackingData","LightweightDrawer","pinkOverlay","containerProps","borderTopWidth","isCentered","add_to_cart_modal","AddToCartModalProvider","setData","openModal","modalData","setIsIntersecting","observerRef","handleIntersection","IntersectionObserver","unobserve","priorReferrer","nativeReferrer","optimizedIcons","require","ConsentContext","allowPerformance","bannerClosed","updateDnt","dwAnalyticsCapture","OneTrustScript","defaultDnt","onetrust","oneTrustConsentURLMapping","consentURLMapping","oneTrustDataDomainScript","dataDomainScript","lastSentDntRef","updateDntIfChanged","newDnt","isSlasTokenDntFixEnabled","isDntConsentForceRenderEnabled","setAllowTracking","setAllowPerformance","setAllowFunctional","setAllowPersonalisation","setBannerClosed","forceRender","isOneTrustTransitionEnabled","useOTBannerTransition","STYLE_ID","retryShowBanner","showBanner","getElementById","classList","applyStyles","textContent","styleElement","remove","oneTrustElement","consentCookieMapping","OptanonWrapper","dataLayer","otEvent","latestEvent","activeGroups","OnetrustActiveGroups","_window$OneTrust","_window$OneTrust$IsAl","otActiveGroups","hasFunctionalConsent","hasPerformanceConsent","dntPromise","hasPersonalisationConsent","sendCookieOptinOptoutData","OneTrust","IsAlertBoxClosed","handleConsentChange","loadOneTrustScript","dw","ac","_capture","consentValue","IMAGE_FORMAT","IMAGE_QUALITY","numerator","denominator","getVideoUrl","resolveImageDescriptor","aprimo","legacy","fit","descriptor","resolvedCdnUrl","numericRatio","baseWidth","resolvedHost","resolvedEndpoint","resolvedName","resolvedPoi","imageOutput","poi","amplienceDescriptor","aprimoDescriptor","ENTER_EASING","EXIT_EASING","panelTransition","enterDuration","PLACEMENT_STYLES","defaultWidth","defaultMaxWidth","shown","overlayBlur","panelSx","mounted","setMounted","entered","setEntered","innerRaf","outerRaf","onKeyDown","createPortal","FocusLock","backfaceVisibility","messages","renderSkeletonProductTile","carouselArgsLoading","SLIDES_PER_VIEW","accordionButtonTextStyle","hover","useAccordionItemState","hasHoverSupport","ChakraAccordionButton","ChakraAccordionItem","ChakraAccordionPanel","getLoadingVariant","buttonRef","handleAnimationEnd","effectiveIsLoading","outlineBorderLoadingAnimation","buttonContentLoadingAnimation","buttonContent","useLoadingAnimation","setMinWidth","showLoadingDots","setShowLoadingDots","getLoadingAnimation","animations","useHoverAnimation","setAnimateOnHoverExit","dynamicWhiteSpace","ChakraButton","onAnimationEnd","enterTransition","enterTransitionFast","exitTransition","defaultMotionProps","baseMotionProps","ChakraDrawerContent","underscoreIndex","storeDetails","serialized","parsedStored","CENTER","COLOR","sliderRef","scroll","scrollBy","touch","startX","SimpleGrid","RecommendedProductView","addItemToWishlistHook","useAddItemToWishlistHook","removeItemFromWishlistHook","useRemoveItemFromWishlistHook","updatedRecommendation","normalizeProductData","_productPromotions$fi","_imageGroups$find","_imageGroups$find$ima","recommended_products","SizeOptionsStyles","handleError","_error$response","errorStatus","HTTPError","AmplienceLinkInfo","customView","setDeliveryKey","AmplienceInfo","toggleDrawer","amplience_link_info","SizeOptionPriceStyles","priceRow","standardPrice","oosPrice","oosRow","oosLine","secondaryRow","secondaryText","infoIconWrapper","memberTooltipWrapper","EuPricingIcon","SizeOptionPrice","SHARED_LD_KEYS","hasLowestPrice","hasMemberPrice","salePriceStyle","originalPriceStyle","standardPriceStyle","priceLabel","size_option_price","_value$size","useProductDetail","currentProductId","setCurrentProductId","enableGracefulCsrErrorHandling","isCategoryError","categoryError","setPrimaryCategory","buttonRefs","_buttonRefs$current$s","renderSizeStatusText","sizeHasNotifyMe","isOOSAndDisabled","sizeNotOrderable","handleNotifyMeSize","size_options","MRT_APPS","getRemoteUrl","_appOrigin","debugLog","_config$app2","_config$app3","_config$app4","_config$app4$remoteFi","__remote_url_cache","hasOwnProperty","cachedUrl","hasConfig","hasRemoteFileConfig","remoteFileConfig","availableRemotes","remoteConfig","_config$app5","requestedApp","availableApps","sandboxOrigin","getSandboxOrigin","sandboxOrigins","hasSandboxOrigin","shouldUseAppOrigin","remoteEntryFileName","useProxy","fetchUrl","responseData","assetUrl","remoteAppsBaseUrl","_window2","_window2$localStorage","_config$app6","scope","remoteUrl","updatedUrl","originalUrl","resolvedUrl","importedModule","importRemote","hasModule","moduleKeys","InputStyle","_invalid","charLimit","charLimitAlign","_errors$id","isFocused","setIsFocused","charLength","setCharLength","isTouched","pos","ChakraInput","onInput","onFocus","htmlFor","useProductListTabs","categoryDefaultTab","isAmplienceLoading","categoryDefaultTabIndex","setTabIndex","contentTab","setContentTab","currentTab","newTabIndex","handleTabSwitch","newTab","prevContentTab","getBreakpointLabels","vwValue","pxValue","emValue","defaultBreakpoints","themeBreakpoints","breakpointLabels","obtainImageLinkMedia","breakpointIndex","toMediaValue","nextBp","currentBp","vwToPx","vw","emToPx","em","browserDefaultFontSize","getSrcWithoutOptionalParams","dynamicSrc","convertImageLinksMedia","links","getResponsivePictureAttributes","_widths","o","biggestBreakpoint","mostRecent","widthsAsArray","getResponsiveSourcesAndLinks","sizesWidths","withUnit","l","_sizes","mediaLink","sourcesWidths","convertToPxNumbers","l1","l2","lastEntry","amountToPad","padArray","sourcesLength","lastSource","lastLink","factor","effectiveWidth","effectiveSize","getSrc","reverse","responsiveImageProps","numSources","effectiveImageProps","responsiveLinks","responsiveLinkProps","dynamic_image","isPlaying","isMuted","handleMuteUnmute","handleKeyDown","handler","PosterFrame","posterImageUrl","isVideoReady","imageCardStyle","AMPLIENCE_VIDEO_PROFILE_KEYS","VIDEO_CONFIG_ATTRIBUTES","attributes","playsInline","CONTROL_WRAPPER_POSITION_DEFAULT","VideoRenderer","videoSource","onVideoReady","onVideoError","ReactPlayer","playing","muted","onReady","onStart","LazyLoadBox","onDetectBroken","videoSrc","computedPosterImage","videoProfileKey","useVideoSource","setVideoData","isAprimoVideo","getVideoSourceUrl","getPosterImageUrl","getVideoProfileKey","videoFormat","getFullVideoSource","handleVideoReady","useVideoControls","setIsMuted","setIsPlaying","isPaused","setIsPaused","setIsVideoReady","initialY","useControlAnimation","posterOk","handleBrokenVideoReady","handleBrokenVideoError","useBrokenVideoDetection","setPosterOk","videoOk","setVideoOk","cancelled","onload","vUrl","disposed","ko","load","onDetectBrokenRef","cb","poster","adjustedControlWrapperPosition","videoLayerSx","handleContextMenu","onVideoReadyHandler","renderVideoWithAspectRatio","videoContent","posterIsValid","shouldRenderPoster","onContextMenu","__STORYBOOK_CLIENT_API__","__STORYBOOK_API__","StructuredDataContext","schemas","schemasRef","hasMountedRef","registrationsRef","buildMergedSchemas","registrations","schemasByKey","pageSchemas","merged","incoming","mergeSchemaEntries","StructuredDataProvider","setSchemasState","rebuildSchemas","idRef","Symbol","StructuredData","useStructuredDataSchemas","validSchemas","buildWebSiteSchema","publisher","potentialAction","urlTemplate","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","notFulfilled","fulfilled","j","splice","getter","__esModule","getPrototypeOf","ns","create","def","getOwnPropertyNames","definition","chunkId","promises","g","Function","prototype","done","needAttach","scripts","getAttribute","charset","nc","onScriptComplete","doneFns","toStringTag","nmd","paths","S","initPromises","initTokens","I","initScope","initToken","uniqueName","factory","eager","versions","activeVersion","scriptUrl","importScripts","currentScript","tagName","parseVersion","rangeToString","satisfy","findSingletonVersionKey","eagerOnly","versionLt","useFallback","scopeName","fail","failAsNotExist","loadSingletonVersion","promise","init","requiredVersion","exists","getInvalidSingletonVersionMessage","installedModules","moduleToHandlerMapping","chunkMapping","startedInstallModules","consumes","onFactory","installedChunks","installedChunkData","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"ignoreList":[],"sourceRoot":""}