├── Badge └── Badge.tsx ├── ClickToReveal └── ClickToReveal.tsx ├── DateSelector └── Components │ └── DateSelector │ └── DateSelector.tsx ├── Divider └── Divider.tsx ├── Expandable ├── Expandable.tsx ├── formats │ ├── DisplayDefault │ │ └── DisplayDefault.tsx │ ├── DisplayLimitLines │ │ └── DisplayLimitLines.tsx │ ├── DisplayLimitTable │ │ └── DisplayLimitTable.tsx │ └── DisplayLimitText │ │ └── DisplayLimitText.tsx └── withExpandableBody │ ├── hooks │ └── useExpandContentTransition.ts │ └── index.tsx ├── Flexbox ├── Components │ ├── Col.tsx │ ├── Grid.tsx │ └── Row.tsx ├── Layouts │ └── TwoArea.tsx ├── classNames.ts └── createProps.ts ├── Link └── Link.tsx ├── LoadingSpinner └── LoadingSpinner.tsx ├── Mobile └── SideNavMenu │ ├── InPageNav │ └── InPageNav.tsx │ └── SideNavMenu.tsx ├── NPS ├── NPSSurvey.tsx └── NPSSurveyModal │ ├── ConfirmitURLBuilder │ └── ConfirmitURLBuilder.ts │ ├── NPSSurveyModal.tsx │ └── translations │ ├── en.ts │ └── fr.ts ├── Navigation ├── Navigation │ ├── Header │ │ ├── Header.tsx │ │ └── Title │ │ │ └── Title.tsx │ ├── ItemLink │ │ └── ItemLink.tsx │ ├── LinkTitle │ │ └── LinkTitle.tsx │ └── Navigation.tsx └── SyncedNav │ ├── ItemLink │ └── ItemLink.tsx │ ├── SyncedNav.tsx │ └── utils │ └── dataFormatting.ts ├── PercentageBar └── PercentageBar.tsx ├── README.md ├── Screenshot.png ├── SelectableCards ├── SelectableCards.tsx └── components │ ├── SelectableCard │ └── index.tsx │ └── SelectableItem │ └── index.tsx ├── StepIndicator ├── Step.tsx └── StepIndicator.tsx ├── StoreStatusMessage └── StoreStatusMessage.tsx ├── StyledTable └── StyledTable.tsx ├── SuccessConfirmation ├── SuccessBody │ └── SuccessBody.tsx ├── SuccessConfirmation.tsx └── SuccessTitle │ └── SuccessTitle.tsx ├── SvgIcons ├── Android │ └── Android.tsx ├── Apple │ └── Apple.tsx ├── ArrowUp │ └── ArrowUp.tsx ├── AtoZ │ └── AtoZ.tsx ├── Back │ └── Back.tsx ├── BestBuyLogo │ └── BestBuyLogo.tsx ├── BestBuyLogoWhite │ └── BestBuyLogoWhite.tsx ├── Blog │ └── Blog.tsx ├── Bookmark │ └── Bookmark.tsx ├── Car │ └── Car.tsx ├── Caret │ └── Caret.tsx ├── Cart │ └── Cart.tsx ├── CartEmpty │ └── CartEmpty.tsx ├── CheckMarkAnimated │ └── CheckmarkAnimated.tsx ├── Checkmark │ └── Checkmark.tsx ├── CheckmarkLogo │ └── CheckmarkLogo.tsx ├── ChevronDown │ └── ChevronDown.tsx ├── ChevronLeft │ └── ChevronLeft.tsx ├── ChevronRight │ └── ChevronRight.tsx ├── ChevronUp │ └── ChevronUp.tsx ├── Clear │ └── Clear.tsx ├── Close │ └── Close.tsx ├── DeliveryIcon │ └── DeliveryIcon.tsx ├── Email │ └── Email.tsx ├── FeaturedDeals │ └── FeaturedDeals.tsx ├── FeedbackStarEmpty │ └── FeedbackStarEmpty.tsx ├── FeedbackStarFull │ └── FeedbackStarFull.tsx ├── FeedbackTextBubbleWarning │ └── FeedbackTextBubbleWarning.tsx ├── Filter │ └── Filter.tsx ├── GeekSquad │ ├── GeekSquad.tsx │ └── GeekSquadOrange.tsx ├── HaulAway │ └── HaulAway.tsx ├── Info │ └── Info.tsx ├── LatestAndGreatest │ └── index.tsx ├── LocationFilled │ └── LocationFilled.tsx ├── LowestPrice │ └── LowestPrice.tsx ├── MarketplaceLogo │ └── MarketplaceLogo.tsx ├── Menu │ └── Menu.tsx ├── MinusCircle │ └── MinusCircle.tsx ├── Monitor │ └── Monitor.tsx ├── NotRecommended │ └── NotRecommended.tsx ├── Offer │ └── Offer.tsx ├── Phone │ └── Phone.tsx ├── PlusCircle │ └── PlusCircle.tsx ├── ProductPlaceholder │ └── ProductPlaceholder.tsx ├── QuickStorePickup │ └── QuickStorePickup.tsx ├── Recommended │ └── Recommended.tsx ├── Search │ └── Search.tsx ├── Social │ ├── Facebook.tsx │ ├── Instagram.tsx │ ├── Linkedin.tsx │ ├── Pinterest.tsx │ ├── Twitter.tsx │ └── Youtube.tsx ├── Store │ └── Store.tsx ├── Survey │ └── Survey.tsx ├── TextBubble │ └── TextBubble.tsx ├── ThumbsDown │ └── ThumbsDown.tsx ├── ThumbsUp │ └── ThumbsUp.tsx ├── Trash │ └── Trash.tsx ├── Unavailable │ └── Unavailable.tsx ├── Verified │ └── Verified.tsx ├── Warning │ └── Warning.tsx ├── WarrantyShield │ └── WarrantyShield.tsx ├── ZoomIn │ └── ZoomIn.tsx └── ZoomOut │ └── ZoomOut.tsx ├── SystemWideAlert └── SystemWideAlert.tsx ├── Tooltip └── Tooltip.tsx ├── actions ├── errorActions │ └── index.ts └── navigationActions │ └── index.ts ├── business-rules ├── entities │ ├── Cart.ts │ ├── CartStatus.ts │ ├── Checkout.ts │ ├── ManufacturerWarranty.ts │ ├── OrderStatus.ts │ ├── PaymentType.ts │ ├── ServicePlanBenefit.ts │ ├── errors │ │ ├── BadRequestError.ts │ │ ├── ConnectionError.ts │ │ ├── HttpRequestError.ts │ │ ├── InternalServerError.ts │ │ ├── NotFoundError.ts │ │ ├── StatusCode.ts │ │ ├── UnauthorizedError.ts │ │ └── index.ts │ └── index.ts └── use-cases │ ├── CartAdder.ts │ ├── CartPriceFormatter.ts │ ├── CartRefiller │ ├── GuestCartRefiller.ts │ ├── UserCartRefiller.ts │ └── index.ts │ ├── CartRemover.ts │ ├── CartUpdater.ts │ └── cartMerger.ts ├── button ├── ButtonAppearanceEnum.ts ├── button.tsx └── index.tsx ├── categories └── redux │ └── index.ts ├── client ├── Decide │ ├── actions │ │ ├── addOnsActions │ │ │ └── index.ts │ │ ├── availabilityActions │ │ │ └── index.ts │ │ ├── basketActions │ │ │ └── index.ts │ │ ├── bazaarVoiceJSActions │ │ │ └── index.ts │ │ ├── businessContactActions │ │ │ └── index.ts │ │ ├── geekSquadMembershipActions │ │ │ └── index.ts │ │ ├── geekSquadMembershipDialogActions │ │ │ └── index.ts │ │ ├── gspActions │ │ │ └── index.ts │ │ ├── healthContactActions │ │ │ └── index.ts │ │ ├── marketplaceActions │ │ │ └── index.ts │ │ ├── offerActions │ │ │ └── index.ts │ │ ├── productActions │ │ │ ├── cellPhonePlan.ts │ │ │ ├── customerReviews.ts │ │ │ ├── index.ts │ │ │ ├── product.ts │ │ │ ├── productMedia.ts │ │ │ └── utils │ │ │ │ └── normalizeMediaApiResponse.ts │ │ ├── productFinderActions │ │ │ └── index.ts │ │ ├── productListActions │ │ │ └── index.ts │ │ ├── productLoadActions │ │ │ └── index.ts │ │ ├── productRelatedProductsActions │ │ │ └── index.ts │ │ ├── productSellersActions │ │ │ └── index.ts │ │ ├── productVariantActions │ │ │ └── index.ts │ │ ├── recommendationActions │ │ │ └── index.ts │ │ ├── sellerActions │ │ │ └── index.ts │ │ ├── storesActions │ │ │ └── index.ts │ │ ├── storesStatusActions │ │ │ └── index.ts │ │ └── upgradeEligibilityCheckActions │ │ │ ├── normalizeUpgradeEligibilityMetadataResponse.ts │ │ │ └── upgradeEligibilityCheck.ts │ ├── components │ │ ├── BoughtAlsoBought │ │ │ ├── BoughtAlsoBought.tsx │ │ │ ├── ProductCard.tsx │ │ │ ├── index.ts │ │ │ ├── style-e6dfd56c4de1e.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── BreadcrumbPlaceholder │ │ │ ├── index.tsx │ │ │ ├── style-38f0d651cc39d.css │ │ │ └── style.css │ │ ├── CellPhonePlanPrice │ │ │ ├── CellPhoneMonthlyPayment │ │ │ │ ├── index.tsx │ │ │ │ ├── style-564955dc6db57.css │ │ │ │ └── style.css │ │ │ ├── CellPhonePlanMessage │ │ │ │ ├── index.tsx │ │ │ │ ├── style-5633392609e97.css │ │ │ │ └── style.css │ │ │ ├── CellPhonePlanPricePlaceHolder │ │ │ │ ├── index.tsx │ │ │ │ ├── style-d22577a943ed.css │ │ │ │ └── style.css │ │ │ ├── CellPhonePriceDown │ │ │ │ ├── index.tsx │ │ │ │ ├── style-0b60018ef417.css │ │ │ │ └── style.css │ │ │ ├── index.tsx │ │ │ ├── style-2f32e60b44804.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── hasCents.ts │ │ ├── ChildProductHeader │ │ │ ├── index.tsx │ │ │ ├── style-83b37bebe04df.css │ │ │ └── style.css │ │ ├── DeviceFingerprint │ │ │ └── index.tsx │ │ ├── EnterPostalCode │ │ │ ├── index.tsx │ │ │ ├── styles-895f3471f3e49.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── GeoLocation │ │ │ ├── index.tsx │ │ │ ├── style-d40f90c6718cb.css │ │ │ └── style.css │ │ ├── GspPlan │ │ │ ├── index.tsx │ │ │ ├── styles-497bfe95912f9.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── KeyConsiderations │ │ │ ├── components │ │ │ │ └── Attribute │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-1fcbf5b2ce65.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── index.tsx │ │ │ ├── style-25c5b6a0b9eb4.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── util │ │ │ │ └── index.ts │ │ ├── LocateByPostalCodeAndGeoLocation │ │ │ ├── index.tsx │ │ │ ├── style-261e8c8df3776.css │ │ │ └── style.css │ │ ├── MediaGallery │ │ │ ├── Image.tsx │ │ │ ├── MediaGallery.tsx │ │ │ ├── SliderButtons.tsx │ │ │ ├── Video.tsx │ │ │ ├── assets │ │ │ │ ├── Navigation-MediaExpand.svg │ │ │ │ └── Thumbnail-MediaPlay.svg │ │ │ ├── style-7fb3fa27dd1c6.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils.ts │ │ ├── NoVerifiedPurchaserMessage │ │ │ ├── index.tsx │ │ │ ├── style-57e00e6f902b4.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── OptionBox │ │ │ ├── OptionBox.tsx │ │ │ ├── OptionBoxText.tsx │ │ │ ├── styles-41973717e10ff.css │ │ │ └── styles.css │ │ ├── Policy │ │ │ ├── index.tsx │ │ │ ├── style-7297919d67d33.css │ │ │ └── style.css │ │ ├── PostalCodeSubmit │ │ │ ├── index.tsx │ │ │ ├── style-4d24ca490f23f.css │ │ │ └── style.css │ │ ├── ProductDetailsBrief │ │ │ ├── ProductDetailsBrief.tsx │ │ │ ├── components │ │ │ │ ├── SimpleProductDetailsBrief │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-e436da931555e.css │ │ │ │ │ └── style.css │ │ │ │ └── SimpleProductDetailsBriefPlaceholder │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-ae3fe45118db3.css │ │ │ │ │ └── style.css │ │ │ ├── style-a919c6b9a8121.css │ │ │ └── style.css │ │ ├── ReviewsSortDropdown │ │ │ ├── index.tsx │ │ │ ├── style-a5e5884850e6c.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ReviewsToolbar │ │ │ ├── index.tsx │ │ │ ├── style-7f05befdd0765.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── SellerPolicy │ │ │ ├── index.tsx │ │ │ ├── style-4256ca9808799.css │ │ │ └── style.css │ │ ├── Tabs │ │ │ ├── HorizontalTabs.tsx │ │ │ ├── TabItem.tsx │ │ │ ├── Tabs.tsx │ │ │ ├── VerticalTabs.tsx │ │ │ ├── style-1d86478f04abb.css │ │ │ ├── style.css │ │ │ └── utils.ts │ │ ├── TermsAndConditions │ │ │ ├── TermsAndConditions.tsx │ │ │ ├── index.ts │ │ │ ├── style-68ec753867744.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── VerticalDivider │ │ │ ├── index.tsx │ │ │ ├── style-b66cc1da3b227.css │ │ │ └── style.css │ │ ├── WarrantyBenefitsMessage │ │ │ ├── index.tsx │ │ │ ├── styles-206c1c9661548.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── WarrantyOptions │ │ │ ├── WarrantyOptions.tsx │ │ │ ├── WarrantyOptionsLoader.tsx │ │ │ ├── index.ts │ │ │ ├── styles-3284808316244.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ └── WriteReviewButton │ │ │ ├── WriteReviewButton.tsx │ │ │ ├── style-905176af99539.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ └── messages.ts │ ├── constants │ │ └── Seller │ │ │ └── index.ts │ ├── pages │ │ ├── AddonsPage │ │ │ ├── AddonsPage.tsx │ │ │ ├── components │ │ │ │ ├── MainContent │ │ │ │ │ ├── RequiredPartsButtonsLoader.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-165d1d948e566.css │ │ │ │ │ └── styles.css │ │ │ │ ├── ProductAddonSection │ │ │ │ │ ├── ProductAddonSection.tsx │ │ │ │ │ └── ProductAddonSectionLoader.tsx │ │ │ │ ├── RequiredPartsLineItem │ │ │ │ │ ├── RequiredPartsLineItem.tsx │ │ │ │ │ ├── styles-28708ebd05649.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── RequiredPartsOptIn │ │ │ │ │ ├── RequiredPartsOptIn.tsx │ │ │ │ │ ├── styles-631576991214b.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── RequiredProducts │ │ │ │ │ ├── RequiredProducts.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── RequiredProductsLoader │ │ │ │ │ └── index.tsx │ │ │ ├── index.ts │ │ │ ├── selectors │ │ │ │ └── index.ts │ │ │ ├── styles-62792ec7b946c.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── transformToMarkup.ts │ │ ├── BasketPage │ │ │ ├── CartPage.tsx │ │ │ ├── components │ │ │ │ ├── CheckoutButtons │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-8dcad89505ff1.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── CheckoutFlowSelector │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-7c51052fcfa5.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── EmptyCart │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-ce30ffb36fcc8.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── LineItem │ │ │ │ │ ├── FreeItem │ │ │ │ │ │ ├── FreeItems.tsx │ │ │ │ │ │ ├── styles-861af5d55d9f4.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── LineItem.tsx │ │ │ │ │ ├── ParentProduct │ │ │ │ │ │ ├── ParentProduct.tsx │ │ │ │ │ │ ├── QuantityStepper │ │ │ │ │ │ │ └── QuantityStepper.tsx │ │ │ │ │ │ ├── styles-043079b9ed67.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── PromotionItems │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles-6510209fddcfd.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── RequiredPartsItem │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles-20da90d2dae7b.css │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── Status │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── SubTotal │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles-51fefa2409f9b.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── styles-907db45a0fee1.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── LinkButton │ │ │ │ │ ├── LinkButton.tsx │ │ │ │ │ ├── styles-d26527f69bf7a.css │ │ │ │ │ └── styles.css │ │ │ │ ├── OrderPromoItems │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-f9f39a5e6395a.css │ │ │ │ │ └── styles.css │ │ │ │ ├── ProductCard │ │ │ │ │ └── ProductCardPrice │ │ │ │ │ │ ├── ProductCardPrice.tsx │ │ │ │ │ │ ├── styles-2c6019203ac14.css │ │ │ │ │ │ └── styles.css │ │ │ │ ├── ProductList │ │ │ │ │ ├── ProductList.tsx │ │ │ │ │ ├── styles-d56616b954a91.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductListLink │ │ │ │ │ ├── ProductListLink.tsx │ │ │ │ │ ├── styles-21669ae293626.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── RemovedItemMessaging │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SaveForLaterButton │ │ │ │ │ ├── SaveForLaterButton.tsx │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SaveForLaterCard │ │ │ │ │ ├── MainProduct │ │ │ │ │ │ ├── MainProduct.tsx │ │ │ │ │ │ ├── styles-6311f9c34a237.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── MoveToCartButton │ │ │ │ │ │ ├── MoveToCartButton.tsx │ │ │ │ │ │ ├── styles-86d54841233f.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── RemoveSavedItemButton │ │ │ │ │ │ ├── RemoveSavedItemButton.tsx │ │ │ │ │ │ ├── styles-c07980651a24e.css │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── SaveForLaterCard.tsx │ │ │ │ │ ├── styles-91e415cdbadef.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── TermsAndConditions │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-835ad76886b13.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ └── VendorItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-de1b23e4262c2.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── constants │ │ │ │ └── constants.ts │ │ │ ├── index.ts │ │ │ ├── selectors │ │ │ │ └── index.tsx │ │ │ ├── styles-3e19733ea8452.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ ├── hasQPUableItem │ │ │ │ └── index.ts │ │ │ │ └── termsChecked.ts │ │ ├── BenefitsPage │ │ │ ├── BenefitsPage.tsx │ │ │ ├── style-93fdefb6f6a98.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── BusinessContactPage │ │ │ ├── BusinessContactConfirmation.tsx │ │ │ ├── BusinessContactForm.tsx │ │ │ ├── BusinessContactPage.tsx │ │ │ ├── components │ │ │ │ └── CallUsCard │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-54ccc079fc81b.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── style-b6b25ce3e3bcb.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── helper.ts │ │ ├── CreateProductReviewPage │ │ │ ├── CreateProductReviewPage.tsx │ │ │ ├── components │ │ │ │ ├── ReviewForm │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-0f0578c2b120b.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ReviewGuidelines │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-8c0295c35c47.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ReviewStarRate │ │ │ │ │ ├── ReviewStarRate.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-2d258e8f07449.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ReviewSubmitConfirmation │ │ │ │ │ ├── ReviewSubmitConfirmation.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-742f3700b277a.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ └── ReviewedProduct │ │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── style-9fce4313659f5.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── CreateSellerReviewPage │ │ │ ├── CreateSellerReviewPage.tsx │ │ │ ├── components │ │ │ │ └── ReviewForm │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-04ab200ffa37e.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── index.ts │ │ │ ├── style-25cff2ac91f7d.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── GeekSquadMembershipPage │ │ │ ├── GeekSquadMembershipConfirmation.tsx │ │ │ ├── GeekSquadMembershipForm.tsx │ │ │ ├── GeekSquadMembershipPage.tsx │ │ │ ├── styles-176bd9ad461cd.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── helper.ts │ │ ├── HealthContactPage │ │ │ ├── HealthContactConfirmation.tsx │ │ │ ├── HealthContactForm.tsx │ │ │ ├── HealthContactPage.tsx │ │ │ ├── style-66d035b054fcb.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── InHomeConsultationSignUpPage │ │ │ ├── InHomeConsultationSignUpConfirmation.tsx │ │ │ ├── InHomeConsultationSignUpForm.tsx │ │ │ ├── InHomeConsultationSignUpPage.tsx │ │ │ ├── styles-79ffa675dc31c.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── helper.ts │ │ ├── InjectedPage │ │ │ ├── InjectedPage.tsx │ │ │ ├── index.ts │ │ │ └── marketingFormDomainWhitelistHandler.ts │ │ ├── ManufacturerWarrantyPage │ │ │ ├── ManufacturerWarrantyPage.tsx │ │ │ ├── style-176d815745ad5.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── MarketplaceSignUpPage │ │ │ ├── FormOptions.ts │ │ │ ├── MarketplaceSellerSignUpPage.tsx │ │ │ ├── MarketplaceSignUpConfirmation.tsx │ │ │ ├── components │ │ │ │ ├── CompanyInfo.tsx │ │ │ │ ├── LegalPolicies.tsx │ │ │ │ ├── OperationalDetail.tsx │ │ │ │ ├── PrimaryContactInfo.tsx │ │ │ │ ├── ProductInfo.tsx │ │ │ │ ├── SellerOnboardingHeader.tsx │ │ │ │ ├── styles-1bf432bb4b4dd.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── constants.ts │ │ │ ├── serializeToSalesforceObject.ts │ │ │ ├── styles-267c9a23fc0b3.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── helper.ts │ │ ├── MobileActivationPage │ │ │ ├── MobileActivationInquiryConfirmation.tsx │ │ │ ├── MobileActivationPage.tsx │ │ │ ├── components │ │ │ │ ├── ActivationProgressHeader │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-7f5f35f79e32b.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── CitySelector │ │ │ │ │ ├── CitySelector.tsx │ │ │ │ │ ├── styles-ece592b6f1ca4.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── Controllers │ │ │ │ │ ├── Controllers.tsx │ │ │ │ │ ├── styles-815775b8fc1ed.css │ │ │ │ │ └── styles.css │ │ │ │ ├── CustomerDetails │ │ │ │ │ ├── CustomerDetails.tsx │ │ │ │ │ ├── CustomerDetailsForm.tsx │ │ │ │ │ ├── styles-baca6d01c6f52.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── EligibilityResult │ │ │ │ │ ├── BalanceResult.tsx │ │ │ │ │ ├── DenyResult.tsx │ │ │ │ │ ├── EligibilityResult.tsx │ │ │ │ │ ├── EligibilityResultContainer.tsx │ │ │ │ │ ├── EligibilityResultControllers.tsx │ │ │ │ │ ├── NoBalanceResult.tsx │ │ │ │ │ ├── NotEligibleResult.tsx │ │ │ │ │ ├── styles-fee99e3339428.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── IconInfoItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-ed0d96cd4b7df.css │ │ │ │ │ └── styles.css │ │ │ │ ├── MobileActivationLineItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-b6545f3065db6.css │ │ │ │ │ └── styles.css │ │ │ │ ├── MobileActivationPlanOffer │ │ │ │ │ └── MobileActivationPlanOffer.tsx │ │ │ │ ├── MobileActivationStepsGuide │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-14662ef1aff0f.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── MobileActivationType │ │ │ │ │ ├── ActivationOption.tsx │ │ │ │ │ ├── Carrier.tsx │ │ │ │ │ ├── MobileActivationType.tsx │ │ │ │ │ ├── RenderControllers.tsx │ │ │ │ │ ├── SelectableCardsContainer.tsx │ │ │ │ │ ├── styles-4792d45e95877.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ └── StoreSelector │ │ │ │ │ ├── StoreSelector.tsx │ │ │ │ │ ├── styles-0982e786f3399.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── styles-546da1aafda1d.css │ │ │ ├── styles.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── utils │ │ │ │ └── helper.ts │ │ ├── ProductDetailPage │ │ │ ├── Product.ts │ │ │ ├── ProductDetailPage.tsx │ │ │ ├── components │ │ │ │ ├── ActivationGiftCard │ │ │ │ │ ├── ActivationGiftCard.tsx │ │ │ │ │ ├── style-b5b7acdb84137.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── BlueShirtChat │ │ │ │ │ ├── brands.ts │ │ │ │ │ ├── components │ │ │ │ │ │ └── ChatStatus │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── styles-7fe08c2918ec9.css │ │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-0cff97f401ff4.css │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ │ └── withBrandAssetsConfig.tsx │ │ │ │ ├── BundleOverview │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-90cdd5537c991.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── CellPhonePlanOffer │ │ │ │ │ └── CellPhonePlanOffer.tsx │ │ │ │ ├── CorrectionNotice │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-2491f17ab2c3a.css │ │ │ │ │ └── style.css │ │ │ │ ├── CustomerReviewItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-435a761e60314.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── CustomerReviewsList │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-8d449f903612.css │ │ │ │ │ └── style.css │ │ │ │ ├── DeliveryAvailability │ │ │ │ │ ├── DefaultWhiteGoodsDeliveryDateMessage.tsx │ │ │ │ │ ├── DeliveryAvailability.tsx │ │ │ │ │ ├── WhiteGoodsDeliveryMessage.tsx │ │ │ │ │ ├── style-0f75f79a6bd9d.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── DeliveryNotice │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-10f4042631f23.css │ │ │ │ │ └── style.css │ │ │ │ ├── ExploreReviewsButton │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-a4080d43ab98a.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── FlexBanner │ │ │ │ │ ├── components │ │ │ │ │ │ ├── FlexBannerContent │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── FlexBannerImage │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-62b474a8054b6.css │ │ │ │ │ └── style.css │ │ │ │ ├── GeekSquadMembershipDialog │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-8493a7d73c371.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── GranularRatings │ │ │ │ │ ├── GranularRatings.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── style-55f63567da51.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── MarketplaceSellerInformation │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-6c54f1d3a19e2.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── MessageBox │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-823df5187e0d4.css │ │ │ │ │ └── style.css │ │ │ │ ├── MobileOfferDetails │ │ │ │ │ ├── MobileOfferDetails.tsx │ │ │ │ │ ├── components │ │ │ │ │ │ └── MobilePlansInquiryButton │ │ │ │ │ │ │ ├── MobilePlansInquiryButton.tsx │ │ │ │ │ │ │ ├── style-407a199803ddb.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── style-2627aa749456a.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── OpenBoxOffer │ │ │ │ │ ├── OpenBoxOffer.tsx │ │ │ │ │ ├── OpenBoxOfferPure.tsx │ │ │ │ │ ├── getRecommendedData.ts │ │ │ │ │ ├── style-67b479320428a.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductAvailability │ │ │ │ │ ├── BrownGoodsDeliveryMessage.tsx │ │ │ │ │ ├── LowInventory.tsx │ │ │ │ │ ├── NearbyStores.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-dcb7d3969bd81.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductBody │ │ │ │ │ └── index.tsx │ │ │ │ ├── ProductDetailPlaceholder │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-68e2a3769b32a.css │ │ │ │ │ └── style.css │ │ │ │ ├── ProductDetailTab │ │ │ │ │ ├── ConstituentContainer.tsx │ │ │ │ │ ├── ProductDetailTab.tsx │ │ │ │ │ ├── components │ │ │ │ │ │ ├── BazaarvoiceQuestionsTab │ │ │ │ │ │ │ ├── BazaarVoiceQuestionsTab.tsx │ │ │ │ │ │ │ ├── QuestionsList.tsx │ │ │ │ │ │ │ ├── styles-56fdd2edddf32.css │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ ├── DetailsAndSpecs │ │ │ │ │ │ │ ├── DetailsAndSpecs.tsx │ │ │ │ │ │ │ ├── style-c38d2f5a56baa.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ ├── FromTheManufacturer │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ └── FlixMedia │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── MoreInformation │ │ │ │ │ │ │ ├── MoreInformation.tsx │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ └── ProductDescription │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ ├── style-fe72ec9a6d186.css │ │ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ │ ├── style-03e64773d21f9.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ ├── ProductSpecs │ │ │ │ │ │ │ ├── ProductSpecItem.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── style-71d77a9279174.css │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── ProductWhatsIncluded │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── style-91606e57d964a.css │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── ReturnPolicy │ │ │ │ │ │ │ ├── BundleReturnPolicy │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ ├── style-12bfba44fdf27.css │ │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ │ └── ProductReturnPolicy │ │ │ │ │ │ │ │ ├── ProductReturnPolicy.tsx │ │ │ │ │ │ │ │ ├── ReturnPolicySpecs.tsx │ │ │ │ │ │ │ │ ├── style-672908383d13a.css │ │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ └── ReviewsTab │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── style-778c60bd51e77.css │ │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── style-fd103004373bb.css │ │ │ │ │ ├── style.css │ │ │ │ │ ├── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ │ └── withWarrantySpecs.tsx │ │ │ │ ├── ProductFooter │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-a7cb848b0eb7f.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductHeader │ │ │ │ │ ├── ProductHeader.tsx │ │ │ │ │ ├── styles-d2260f0d13592.css │ │ │ │ │ ├── styles.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductLineItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-2018755099959.css │ │ │ │ │ └── styles.css │ │ │ │ ├── ProductOfferDetails │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-afff4edb9fb5f.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductSizeVariants │ │ │ │ │ ├── DropdownSizeVariant.tsx │ │ │ │ │ ├── PillSizeVariantNoPrice.tsx │ │ │ │ │ ├── PillSizeVariantWithPrice.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-64d80ea5707fb.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductStateActions │ │ │ │ │ └── index.tsx │ │ │ │ ├── ProductToolbar │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-1e10a4fd36859.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ProductWarranties │ │ │ │ │ └── ProductWarranties.tsx │ │ │ │ ├── ReviewFeedback │ │ │ │ │ ├── ReviewFeedback.tsx │ │ │ │ │ ├── ReviewFeedbackButton.tsx │ │ │ │ │ ├── style-fc789a16afd2b.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── ReviewsAggregation │ │ │ │ │ ├── components │ │ │ │ │ │ ├── RatingsSummary │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── style-251ce0fbc7cd7.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ └── RecommendationSummary │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── style-159c7a84efc63.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-798e941bc913f.css │ │ │ │ │ └── style.css │ │ │ │ ├── SaleMessageBox │ │ │ │ │ └── index.tsx │ │ │ │ ├── ShowcaseBanner │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-1670864de008e.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SoldByBestBuy │ │ │ │ │ ├── SoldByBestBuy.tsx │ │ │ │ │ ├── style-77c3edca7d287.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SpecialOffers │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-e03751774c4ca.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SupportContent │ │ │ │ │ ├── SupportContent.tsx │ │ │ │ │ ├── style-b392d860a0892.css │ │ │ │ │ └── style.css │ │ │ │ ├── TargettedContent │ │ │ │ │ ├── TargettedContent.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Variants │ │ │ │ │ ├── Variants.tsx │ │ │ │ │ ├── components │ │ │ │ │ │ ├── VariantHeader.tsx │ │ │ │ │ │ ├── VariantTextPillBox │ │ │ │ │ │ │ ├── VariantTextPill.tsx │ │ │ │ │ │ │ ├── VariantTextPillBox.tsx │ │ │ │ │ │ │ ├── style-a7861902706ad.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── translations │ │ │ │ │ │ │ │ └── messages.ts │ │ │ │ │ │ ├── VariantThumbnailBox │ │ │ │ │ │ │ ├── VariantThumbnail.tsx │ │ │ │ │ │ │ ├── VariantThumbnailBox.tsx │ │ │ │ │ │ │ ├── style-55fbaaa926fa.css │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── style-39cc1d8f7c87c.css │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── style-b2f442e6b61c7.css │ │ │ │ │ └── style.css │ │ │ │ └── WarrantyBenefits │ │ │ │ │ ├── WarrantyBenefits.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── style-f33e619f7c8fa.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── index.ts │ │ │ ├── style-b31fd2d3ff121.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ ├── utils │ │ │ │ ├── bazaarVoiceAnalytics.ts │ │ │ │ ├── formatDateForDeliveryMessage.ts │ │ │ │ ├── getTargettedContent.ts │ │ │ │ ├── isDateToday.ts │ │ │ │ ├── isDateTomorrow.ts │ │ │ │ ├── isSamePdp.ts │ │ │ │ └── isSyndicated.ts │ │ │ └── vendorScripts.ts │ │ ├── ProductOffersPage │ │ │ ├── index.tsx │ │ │ ├── style-a09460cd09f19.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductReviewVerificationPage │ │ │ ├── ProductReviewVerification.tsx │ │ │ ├── ProductReviewVerificationPage.tsx │ │ │ ├── VerificationPlaceHolder │ │ │ │ ├── VerificationPlaceHolder.tsx │ │ │ │ ├── style-2f81d3a8659ea.css │ │ │ │ └── style.css │ │ │ ├── index.tsx │ │ │ ├── style-2e4a1fddcadd3.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ │ └── messages.ts │ │ │ └── useRequestUserId.ts │ │ ├── ProductReviewsPage │ │ │ ├── ProductReviewsPage.tsx │ │ │ ├── index.ts │ │ │ ├── style-dc0ea01d31c2f.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductSellersPage │ │ │ ├── ProductSellersPage.tsx │ │ │ ├── components │ │ │ │ ├── ProductSeller.tsx │ │ │ │ ├── ProductSellerPlaceholder │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-85c789be6cde3.css │ │ │ │ │ └── style.css │ │ │ │ ├── ProductSellersPlaceholder │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-18fc41b232f41.css │ │ │ │ │ └── style.css │ │ │ │ ├── style-d7b17f4e78de5.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── index.ts │ │ │ ├── style-aa357fa86ff93.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── SellerProfilePage │ │ │ ├── SellerProfilePage.tsx │ │ │ ├── components │ │ │ │ ├── SellerFeedbackItem │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-6d1dd83afb298.css │ │ │ │ │ ├── style.css │ │ │ │ │ └── translations │ │ │ │ │ │ └── messages.ts │ │ │ │ ├── SellerProfilePlaceholder │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-fe206bcfd4ec2.css │ │ │ │ │ └── style.css │ │ │ │ └── SellerReviews │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-f37fa3e494bb1.css │ │ │ │ │ └── style.css │ │ │ ├── index.ts │ │ │ ├── style-6ea593cdd46c3.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── SellerReviewsPage │ │ │ ├── SellerReviewsPage.tsx │ │ │ ├── index.ts │ │ │ ├── style-5e97d897c0c02.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ └── StoreLocatorPage │ │ │ ├── components │ │ │ ├── ProductDetailsBriefPlaceholder │ │ │ │ ├── index.tsx │ │ │ │ ├── style-5a4992a9c4229.css │ │ │ │ └── style.css │ │ │ ├── StoreHoursTable │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-f0b49a33ae631.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── StoreResultsPlaceholder │ │ │ │ ├── index.tsx │ │ │ │ ├── style-e503245d6891.css │ │ │ │ └── style.css │ │ │ └── StoresListItem │ │ │ │ ├── index.tsx │ │ │ │ └── translations │ │ │ │ └── messages.ts │ │ │ ├── index.tsx │ │ │ ├── models.ts │ │ │ ├── style-4a5fb1a3b3316.css │ │ │ ├── style.css │ │ │ ├── translations │ │ │ └── messages.ts │ │ │ └── utils │ │ │ ├── calculateCurbsideHours │ │ │ └── index.ts │ │ │ ├── convertStoreHoursToMap │ │ │ └── index.ts │ │ │ ├── formatHoursForUI │ │ │ └── index.ts │ │ │ ├── getStoreCurbsideHours │ │ │ └── index.ts │ │ │ └── getWeekDayIndex │ │ │ └── index.ts │ ├── providers │ │ ├── CartProvider │ │ │ ├── ApiBasketProvider.ts │ │ │ └── ApiCartProvider.ts │ │ ├── CellPhonePlanPricingProvider │ │ │ └── ApiCellPhonePlanPricingProvider.ts │ │ ├── CellPhoneUpgradeEligibiltyProvider │ │ │ ├── ApiCellPhoneUpgradeEligibilityProvider.ts │ │ │ └── carrierMetaDataCache.ts │ │ ├── CustomerReviewsProvider │ │ │ ├── ApiCustomerReviewsProvider.ts │ │ │ └── customerReviewsCache.ts │ │ ├── MarketplaceSignUpProvider │ │ │ └── index.ts │ │ ├── MediaProvider │ │ │ ├── ApiMediaProvider.ts │ │ │ └── mediaCache.ts │ │ ├── ProductListIdCookieProvider │ │ │ └── ProductListIdCookieProvider.ts │ │ ├── ProductListProvider │ │ │ └── ProductListProvider.ts │ │ ├── ProductProvider │ │ │ ├── ApiProductProvider.ts │ │ │ ├── productCache.ts │ │ │ └── recommendationDataMapper.ts │ │ ├── ProductRelationshipProvider │ │ │ ├── ApiProductRelationshipProvider.ts │ │ │ ├── compareProductVariant.ts │ │ │ └── productRelationshipAPIInstrumentation.ts │ │ ├── RelatedProductsProvider │ │ │ └── APIRelatedProductsProvider.ts │ │ ├── SellerProvider │ │ │ ├── ApiSellerProvider.ts │ │ │ └── sellerCache.ts │ │ ├── SellerReviewsProvider │ │ │ └── ApiSellerReviewsProvider.ts │ │ ├── SpecialOffersProvider │ │ │ ├── ApiSpecialOffersProvider.ts │ │ │ └── index.ts │ │ ├── StoresStatusProvider │ │ │ └── ApiStoresStatusProvider.ts │ │ ├── WebToCaseSignUpProvider │ │ │ └── index.ts │ │ ├── WebToLeadSignUpProvider │ │ │ └── index.ts │ │ └── index.ts │ ├── reducers │ │ ├── addOnsPageReducer │ │ │ ├── index.ts │ │ │ └── warrantyBenefitsMessageAdapter.ts │ │ ├── bazaarVoiceJSReducer │ │ │ └── index.ts │ │ ├── cartPageReducer │ │ │ └── index.ts │ │ ├── eligibilityCheckReducer │ │ │ └── index.ts │ │ ├── geekSquadMembershipDialogReducer │ │ │ └── index.ts │ │ ├── gspReducer │ │ │ └── index.ts │ │ ├── productListReducer │ │ │ └── index.ts │ │ ├── productReducer │ │ │ └── index.ts │ │ ├── productRelatedProductsReducer │ │ │ └── index.ts │ │ ├── productSellersReducer │ │ │ └── index.ts │ │ └── sellerReducer │ │ │ └── index.ts │ ├── store │ │ └── selectors │ │ │ ├── cartPageSelectors │ │ │ └── index.ts │ │ │ ├── cartSelectors │ │ │ └── index.ts │ │ │ ├── geekSquadMembershipDialog │ │ │ └── index.ts │ │ │ ├── gspSelectors │ │ │ └── index.ts │ │ │ ├── productListSelectors │ │ │ └── index.ts │ │ │ ├── productSelectors │ │ │ └── index.ts │ │ │ ├── productServicesSelectors │ │ │ └── index.ts │ │ │ └── requiredProducts │ │ │ └── index.ts │ └── utils │ │ ├── getProductListId │ │ └── index.ts │ │ ├── getStoresSortedByAvailabilityAndDistance │ │ └── index.ts │ │ ├── isCartEmpty │ │ └── index.ts │ │ └── validatePostalCode │ │ └── index.ts ├── actions │ ├── adActions │ │ └── index.ts │ ├── appActions │ │ └── index.ts │ ├── brandActions │ │ └── index.ts │ ├── configActions │ │ └── index.ts │ ├── dynamicContentActions │ │ └── index.ts │ ├── emailUsActions │ │ └── index.ts │ ├── errorActions │ │ └── index.ts │ ├── flyerActions │ │ └── index.ts │ ├── globalContentActions │ │ └── index.ts │ ├── helpActions │ │ └── index.ts │ ├── homeActions │ │ └── index.ts │ ├── inHomeConsultationActions │ │ └── index.ts │ ├── injectedPageActions │ │ └── index.ts │ ├── navigationActions │ │ └── index.ts │ ├── notificationActions │ │ └── index.ts │ ├── npsSurveyActions │ │ └── index.ts │ ├── offersActions │ │ └── index.ts │ ├── routingActions │ │ └── index.ts │ ├── searchActions │ │ ├── index.ts │ │ └── sponsoredProducts.ts │ ├── sideNavigationActions │ │ └── index.ts │ ├── storeMessageActions │ │ └── index.ts │ ├── translationsActions │ │ └── index.ts │ └── userActions │ │ └── index.ts ├── components │ ├── ABTestAdSlot │ │ ├── index.tsx │ │ ├── style-5fa807304aa3b.css │ │ └── style.css │ ├── Advertisement │ │ ├── AdLoader.tsx │ │ ├── AdSlot.tsx │ │ ├── AdSlotUtils.ts │ │ ├── GooglePublisherTag.ts │ │ ├── index.tsx │ │ ├── styles-2f44af454260a.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ ├── AdvertisementList │ │ ├── index.tsx │ │ ├── style-795ec2eae9c6b.css │ │ └── style.css │ ├── AgeGate │ │ ├── AgeGate.tsx │ │ ├── components │ │ │ ├── AgeGatePortal │ │ │ │ └── index.tsx │ │ │ └── DateInput │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-9734b3d71db1a.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── index.tsx │ │ ├── styles-102918f146c7e.css │ │ ├── styles.css │ │ ├── translations │ │ │ └── messages.ts │ │ └── utils │ │ │ └── validators │ │ │ └── index.ts │ ├── AnchorNav │ │ ├── index.tsx │ │ ├── style-55810c972c62.css │ │ └── style.css │ ├── App │ │ ├── index.tsx │ │ ├── style-fecac253a9133.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── BackButton │ │ ├── index.tsx │ │ ├── style-298afd60449d5.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── Background │ │ ├── index.tsx │ │ ├── style-20051c230d034.css │ │ └── style.css │ ├── BadgeWrapper │ │ ├── index.tsx │ │ ├── style-458ebdf7f438b.css │ │ └── style.css │ ├── BreadcrumbList │ │ ├── index.tsx │ │ ├── style-607d7f7892678.css │ │ └── style.css │ ├── CategoryIconList │ │ ├── components │ │ │ └── CategoryIcon │ │ │ │ ├── index.tsx │ │ │ │ ├── style-565693076d333.css │ │ │ │ └── style.css │ │ ├── index.tsx │ │ ├── style-da31b72dc3c4d.css │ │ └── style.css │ ├── ContactUs │ │ ├── components │ │ │ ├── AgentOffline │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-5fd6a67e1cc7c.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── CallUs │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-84eb75af43415.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── ContactBlock │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-ac80ab48529e.css │ │ │ │ └── styles.css │ │ │ ├── EmailUs │ │ │ │ ├── index.tsx │ │ │ │ ├── style-24fab9c867c04.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── LiveChat │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-44224c30d9e7.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ └── StatusColor │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-e1b9d4dc46201.css │ │ │ │ └── styles.css │ │ ├── index.tsx │ │ ├── styles-5ffd84c25e305.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ ├── CriteoSponsoredProducts │ │ ├── hooks │ │ │ ├── useCriteoProductAds.ts │ │ │ └── useCriteoSponsoredProductList.ts │ │ └── index.tsx │ ├── Dropdown │ │ ├── index.tsx │ │ ├── style-e62850791959e.css │ │ └── style.css │ ├── DynamicContent │ │ ├── ContentContainer │ │ │ ├── index.tsx │ │ │ ├── style-601a2acbc7285.css │ │ │ └── style.css │ │ ├── components │ │ │ └── HtmlContent │ │ │ │ └── index.tsx │ │ ├── helpers │ │ │ ├── buildRouteLinkProps.ts │ │ │ ├── componentParsers │ │ │ │ ├── barBanner.ts │ │ │ │ ├── categoryIconList.ts │ │ │ │ ├── columnContent.ts │ │ │ │ ├── featureBanner.ts │ │ │ │ ├── heroBanner.ts │ │ │ │ ├── imageBlock.ts │ │ │ │ ├── linkEvent.ts │ │ │ │ ├── merchItem.ts │ │ │ │ ├── offerItem.ts │ │ │ │ ├── prodListingBanner.ts │ │ │ │ ├── sectionImage.ts │ │ │ │ ├── singleButton.ts │ │ │ │ ├── skuList.ts │ │ │ │ ├── slideShowFeatureBanner.tsx │ │ │ │ ├── storyBanner.ts │ │ │ │ ├── storyRow.ts │ │ │ │ ├── textBlock.ts │ │ │ │ ├── timeline.tsx │ │ │ │ └── titleBanner.ts │ │ │ └── getBackgroundSizing.ts │ │ ├── index.tsx │ │ ├── style-16fa2fae2c5b6.css │ │ └── style.css │ ├── EmbeddedVideo │ │ ├── index.tsx │ │ ├── style-07d3920991839.css │ │ └── style.css │ ├── Error │ │ ├── InternalServerError.tsx │ │ ├── NotFound.tsx │ │ ├── index.tsx │ │ ├── style-e5cb3f52c732.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── ErrorBoundary │ │ ├── ErrorBoundary.tsx │ │ └── index.tsx │ ├── ExpandableList │ │ ├── index.tsx │ │ ├── style-2ac2c0e3b2685.css │ │ └── style.css │ ├── FeatureToggle │ │ ├── FeatureToggleHOC.tsx │ │ └── index.tsx │ ├── FilterBar │ │ ├── SortDropdown │ │ │ ├── index.tsx │ │ │ ├── style-b4f77a40f844c.css │ │ │ └── style.css │ │ ├── index.tsx │ │ ├── style-8a6b198900976.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── Footer │ │ └── index.tsx │ ├── ForegroundImage │ │ ├── index.tsx │ │ ├── style-59f36a0d7bdb8.css │ │ └── style.css │ ├── GeeksquadChat │ │ └── index.tsx │ ├── GlobalContent │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── HeadTags │ │ └── index.tsx │ ├── Header │ │ └── index.tsx │ ├── Help │ │ ├── HelpCategory │ │ │ ├── index.tsx │ │ │ ├── styles-0e599a49358b5.css │ │ │ └── styles.css │ │ └── HelpCategoryBox │ │ │ ├── index.tsx │ │ │ ├── styles-c7cedc7d4a319.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ └── messages.ts │ ├── Image │ │ ├── index.tsx │ │ ├── style-5acd1d0b97e26.css │ │ └── style.css │ ├── ImageBlock │ │ ├── index.tsx │ │ ├── style-ddd5f7374afb1.css │ │ └── style.css │ ├── ImageGallery │ │ ├── index.tsx │ │ ├── style-ebe6adf3025e7.css │ │ └── style.css │ ├── InjectedContent │ │ ├── index.tsx │ │ ├── style-9341f571a42a4.css │ │ └── style.css │ ├── Link │ │ ├── index.tsx │ │ ├── styles-5ff5e15c25a16.css │ │ └── styles.css │ ├── MarketplaceSeller │ │ ├── index.tsx │ │ ├── style-894778f3a9ce3.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── MerchBanner │ │ ├── index.tsx │ │ ├── style-4a6db15d7e1e3.css │ │ └── style.css │ ├── MessageBox │ │ ├── index.tsx │ │ ├── style-85b26c28123b2.css │ │ └── style.css │ ├── OverallRatingSummary │ │ ├── index.tsx │ │ ├── style-9a1283877fe7c.css │ │ └── style.css │ ├── PageContent │ │ ├── index.tsx │ │ ├── style-7ce55744a724b.css │ │ └── style.css │ ├── PencilBanner │ │ ├── index.tsx │ │ ├── styles-05b43dfd30927.css │ │ └── styles.css │ ├── Picture │ │ └── index.tsx │ ├── PillList │ │ ├── index.tsx │ │ ├── styles-2f1ff3cd11a26.css │ │ └── styles.css │ ├── Portal │ │ └── index.tsx │ ├── Price │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── ProdListingBanner │ │ ├── index.tsx │ │ ├── styles-72f7529a71fde.css │ │ └── styles.css │ ├── ProductAvailability │ │ ├── components │ │ │ ├── AvailabilityIcon │ │ │ │ ├── index.tsx │ │ │ │ ├── style-7421a30c51c2b.css │ │ │ │ └── style.css │ │ │ ├── AvailabilityPlaceHolder │ │ │ │ ├── index.tsx │ │ │ │ ├── style-fc5ade5dd25c7.css │ │ │ │ └── style.css │ │ │ ├── Shipping │ │ │ │ ├── index.tsx │ │ │ │ ├── style-b27666f89efbd.css │ │ │ │ └── style.css │ │ │ └── ShippingMessage │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-e25965176fea7.css │ │ │ │ ├── styles.css │ │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── index.tsx │ │ ├── style-c4085ccec3cc9.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── ProductCost │ │ ├── ProductPrice │ │ │ ├── index.tsx │ │ │ ├── style-a9cfaa6d4aeb5.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductPricing │ │ │ ├── index.tsx │ │ │ ├── style-ab2a5438ca23.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductSaleEndDate │ │ │ ├── index.tsx │ │ │ ├── style-478764f4851ce.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ └── ProductSaving │ │ │ ├── index.tsx │ │ │ ├── style-0944d42f73b6b.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ └── messages.ts │ ├── ProductFinder │ │ ├── ProductFinder.tsx │ │ ├── ProductFinderOptions.ts │ │ ├── ProductFinderOptionsBuilder.ts │ │ ├── assets │ │ │ ├── bell-white.svg │ │ │ ├── bell.svg │ │ │ ├── fido-white.svg │ │ │ ├── fido.svg │ │ │ ├── koodo-white.svg │ │ │ ├── koodo.svg │ │ │ ├── rogers-white.svg │ │ │ ├── rogers.svg │ │ │ ├── sasktel-white.svg │ │ │ ├── sasktel.svg │ │ │ ├── telus-white.svg │ │ │ ├── telus.svg │ │ │ ├── virgin-mobile-white.svg │ │ │ └── virgin-mobile.svg │ │ ├── components │ │ │ ├── AddToCartButton.tsx │ │ │ ├── CarrierSelector.tsx │ │ │ ├── ColourVariantOption.tsx │ │ │ ├── Header.tsx │ │ │ ├── ImageGallery.tsx │ │ │ ├── OptionsHeader.tsx │ │ │ ├── PhoneOption.tsx │ │ │ ├── PickupStore.tsx │ │ │ ├── PlanSelector.tsx │ │ │ ├── PlanSelectorButtonLabel.tsx │ │ │ └── Price.tsx │ │ ├── data │ │ │ └── pickup-stores.ts │ │ ├── hooks │ │ │ └── FetchHook.ts │ │ ├── index.tsx │ │ ├── styles-0c0e06dadf545.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ ├── ProductImage │ │ ├── index.tsx │ │ ├── style-e86fa614b3def.css │ │ └── style.css │ ├── ProductImageSlider │ │ ├── index.tsx │ │ ├── styles-5a906737b6aee.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ ├── ProductListing │ │ ├── EndOfResults │ │ │ ├── index.tsx │ │ │ ├── style-3b9fb9beb1601.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── LoadMore │ │ │ ├── index.tsx │ │ │ ├── style-73a0c762e3ab6.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductItem │ │ │ ├── index.tsx │ │ │ ├── style-df3d8c985a72.css │ │ │ └── style.css │ │ ├── ProductListItem │ │ │ ├── index.tsx │ │ │ ├── style-c2bf30d842703.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── ProductListPlaceHolder │ │ │ ├── index.tsx │ │ │ ├── style-3aa08b738ea67.css │ │ │ └── style.css │ │ ├── index.tsx │ │ ├── style-1116f18cdb84e.css │ │ └── style.css │ ├── PromoBanner │ │ ├── index.tsx │ │ ├── style-f2549e7a6be55.css │ │ └── style.css │ ├── QueueItLoader │ │ └── index.tsx │ ├── SectionTitle │ │ ├── index.tsx │ │ ├── style-7a4590be6242d.css │ │ └── style.css │ ├── SingleButton │ │ ├── components │ │ │ └── VideoModal │ │ │ │ ├── index.tsx │ │ │ │ ├── style-93a031dc6c1b4.css │ │ │ │ └── style.css │ │ ├── index.tsx │ │ ├── styles-152319368d67.css │ │ └── styles.css │ ├── SlideShow │ │ └── index.tsx │ ├── Snackbar │ │ ├── index.tsx │ │ ├── style-a133ceb03358b.css │ │ └── style.css │ ├── StarRate │ │ ├── FeedbackStar.tsx │ │ ├── index.tsx │ │ ├── style-7aa99c3da09fc.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── StoryBanner │ │ ├── index.tsx │ │ ├── style-cd4502a47b03.css │ │ └── style.css │ ├── StyledHTML │ │ ├── index.tsx │ │ ├── styles-68736c791c84a.css │ │ └── styles.css │ ├── SvgIcons │ │ └── ProductImagePlaceholder │ │ │ ├── index.tsx │ │ │ ├── style-62185754143c8.css │ │ │ └── style.css │ ├── TextBlock │ │ ├── index.tsx │ │ ├── styles-03a56385b059b.css │ │ └── styles.css │ ├── TextInput │ │ ├── index.tsx │ │ ├── style-ed8203062dd87.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── Themes │ │ └── BestBuyTheme.tsx │ ├── TitleHeader │ │ ├── index.tsx │ │ ├── style-1effa90b04192.css │ │ └── style.css │ ├── TruncateText │ │ └── index.tsx │ ├── VariantSwatch │ │ ├── VariantSwatchPlaceHolder │ │ │ ├── index.tsx │ │ │ ├── style-53fefa1044fb2.css │ │ │ └── style.css │ │ ├── index.tsx │ │ ├── style-7fa0274525b84.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── WebVitalsMetrics │ │ └── index.tsx │ ├── YouTubePlayer │ │ ├── index.tsx │ │ ├── style-5c2a6198a7dff.css │ │ ├── style.css │ │ ├── youTubeIframeAPIReady.ts │ │ ├── youTubePlayerReady.ts │ │ └── ytPlayerEvents.ts │ ├── Zoomable │ │ ├── index.tsx │ │ ├── style-0978bb3bd883e.css │ │ └── style.css │ ├── banners │ │ ├── BarBanner │ │ │ ├── index.tsx │ │ │ ├── styles-2a0878bfab474.css │ │ │ └── styles.css │ │ ├── ColumnContent │ │ │ ├── index.tsx │ │ │ ├── style-89d0df245521c.css │ │ │ └── style.css │ │ ├── FeatureBanner │ │ │ ├── index.tsx │ │ │ ├── styles-d550b5d6d2458.css │ │ │ └── styles.css │ │ ├── HeroBanner │ │ │ ├── index.tsx │ │ │ ├── styles-15c7cb3c7613c.css │ │ │ └── styles.css │ │ ├── MerchSkuList │ │ │ ├── index.tsx │ │ │ ├── styles-755fd1e83d48b.css │ │ │ └── styles.css │ │ ├── SlideShowFeatureBanner │ │ │ ├── index.tsx │ │ │ ├── style-5f195256ae07c.css │ │ │ └── style.css │ │ ├── Story │ │ │ ├── components │ │ │ │ └── StoryRow │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── style-086975196c87f.css │ │ │ │ │ └── style.css │ │ │ ├── index.tsx │ │ │ ├── style-dbc626ed1778e.css │ │ │ └── style.css │ │ ├── Timeline │ │ │ ├── hooks │ │ │ │ └── syncActiveStage.ts │ │ │ ├── index.tsx │ │ │ ├── styles-cbd60c32ede03.css │ │ │ └── styles.css │ │ ├── TitleBanner │ │ │ ├── index.tsx │ │ │ ├── styles-259641bdd78a7.css │ │ │ └── styles.css │ │ └── components │ │ │ ├── CTABlock │ │ │ ├── index.tsx │ │ │ ├── styles-f2a58965bb941.css │ │ │ └── styles.css │ │ │ ├── Countdown │ │ │ ├── components │ │ │ │ └── FlipCard │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── styles-75781d9a10ba2.css │ │ │ │ │ └── styles.css │ │ │ ├── hooks │ │ │ │ └── countdownHook.ts │ │ │ ├── index.tsx │ │ │ ├── styles-50d4c9c128093.css │ │ │ ├── styles.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ │ ├── DateOverride │ │ │ ├── index.tsx │ │ │ ├── styles-8886dc95fbab6.css │ │ │ └── styles.css │ │ │ ├── Disclaimer │ │ │ ├── index.tsx │ │ │ ├── style-5db3cf7c00b45.css │ │ │ └── style.css │ │ │ ├── Headline │ │ │ ├── index.tsx │ │ │ ├── styles-436424ed493a3.css │ │ │ └── styles.css │ │ │ └── Logo │ │ │ ├── index.tsx │ │ │ ├── styles-464051a46770d.css │ │ │ └── styles.css │ └── recommendations │ │ ├── RecentlyViewed │ │ ├── RecentlyViewed.tsx │ │ ├── style-f0201dddeff26.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ │ ├── TopSellers │ │ ├── TopSellers.tsx │ │ ├── style-8bc088eb37c31.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ │ └── components │ │ └── RecommendedSkuList │ │ ├── index.tsx │ │ ├── style-5000462d595ad.css │ │ └── style.css ├── constants │ ├── Analytics │ │ └── index.ts │ ├── Breakpoints │ │ └── index.ts │ ├── Environment │ │ └── index.ts │ ├── Search │ │ └── index.ts │ ├── SponsoredProducts │ │ └── index.ts │ └── User │ │ └── index.ts ├── errors │ ├── ConnectionError.ts │ ├── GeoLocationError.ts │ ├── GetAvailabilitiesError.ts │ ├── HttpRequestError.ts │ ├── HttpRequestType.ts │ ├── RedirectError.ts │ ├── RequestError.ts │ ├── SellerReviewDuplicateError.ts │ ├── SpecialOfferError.ts │ ├── StatusCode.ts │ ├── WebappError.ts │ └── index.ts ├── hooks │ └── useTrackVisit │ │ └── index.ts ├── index.tsx ├── models │ ├── App │ │ └── index.ts │ ├── Availability │ │ └── index.ts │ ├── Basket │ │ └── index.ts │ ├── BlueShirtChat │ │ └── index.ts │ ├── CellPhonePlan │ │ └── index.ts │ ├── Content │ │ └── index.ts │ ├── CustomerReviews │ │ └── index.ts │ ├── DetailedProduct │ │ └── index.ts │ ├── DynamicContent │ │ └── index.ts │ ├── GlobalContent │ │ └── index.ts │ ├── HomePage │ │ └── index.ts │ ├── Intl │ │ └── index.ts │ ├── ProductBase │ │ └── index.ts │ ├── ProductMedia │ │ └── index.ts │ ├── ProductRelatedProduct │ │ └── index.ts │ ├── Region │ │ └── index.ts │ ├── Search │ │ └── index.ts │ ├── SimpleProduct │ │ └── index.ts │ ├── SponsoredProduct │ │ └── index.ts │ ├── User │ │ └── index.ts │ └── index.ts ├── pages │ ├── CategoryPage │ │ ├── CategoryPage.tsx │ │ ├── components │ │ │ ├── Categories │ │ │ │ ├── Category.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── style-5b29a88fc608b.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ └── ShopByCategory │ │ │ │ ├── index.tsx │ │ │ │ ├── style-e000dd970b4bd.css │ │ │ │ └── style.css │ │ ├── index.ts │ │ ├── style-fbd09f111e2c1.css │ │ └── style.css │ ├── DynamicContentPage │ │ ├── DynamicContentPage.tsx │ │ ├── components │ │ │ ├── LoadingSkeleton │ │ │ │ ├── LoadingSkeleton.tsx │ │ │ │ ├── style-f0c75ea2857d6.css │ │ │ │ └── style.css │ │ │ └── SideNavigation │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── style-142778de16b5d.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── EmailUsPage │ │ ├── components │ │ │ ├── ContactInformation │ │ │ │ ├── index.tsx │ │ │ │ ├── style-d8a5e419c5234.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── ConversationContextMenu │ │ │ │ ├── index.tsx │ │ │ │ ├── style-b1ba95d5dde3d.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── CtaButtons │ │ │ │ ├── index.tsx │ │ │ │ ├── style-b91375e59c85d.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── EmailUsForm │ │ │ │ ├── index.tsx │ │ │ │ ├── style-e5a740ed8d619.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── FormSuccessContent │ │ │ │ ├── index.tsx │ │ │ │ ├── style-8bef188e0d195.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── GeneralQuestionForm │ │ │ │ ├── index.tsx │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── Marketplace │ │ │ │ ├── index.tsx │ │ │ │ ├── style-f074cf35c6d6f.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── OrderStatusForm │ │ │ │ ├── index.tsx │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── PriceMatchForm │ │ │ │ ├── index.tsx │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ └── ReturnForm │ │ │ │ ├── index.tsx │ │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── index.tsx │ │ ├── style-fa67871eb7c7b.css │ │ └── style.css │ ├── FlyerPage │ │ ├── components │ │ │ └── Flyer │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── styles-6a41d02bb8b06.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ ├── HelpPage │ │ ├── containers │ │ │ ├── HelpLandingPage │ │ │ │ └── index.tsx │ │ │ └── HelpPage │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── style-fd337a6229495.css │ │ ├── style.css │ │ └── translations │ │ │ └── messages.ts │ ├── HomePage │ │ ├── components │ │ │ ├── HomePageContainer │ │ │ │ ├── index.tsx │ │ │ │ └── style.css │ │ │ └── HomePageLayout │ │ │ │ └── index.tsx │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── PageLayouts │ │ ├── Base │ │ │ ├── index.tsx │ │ │ ├── styles-c3c2c59e6fae3.css │ │ │ └── styles.css │ │ ├── SingleColumn │ │ │ ├── index.tsx │ │ │ ├── styles-c4c9122836a2.css │ │ │ └── styles.css │ │ ├── TwoColumn │ │ │ ├── index.tsx │ │ │ ├── styles-ee1f11d36e2e7.css │ │ │ └── styles.css │ │ └── index.tsx │ ├── ProductListingPage │ │ ├── components │ │ │ ├── Footer │ │ │ │ ├── index.tsx │ │ │ │ ├── style-59217499e5e32.css │ │ │ │ └── style.css │ │ │ ├── Header │ │ │ │ ├── index.tsx │ │ │ │ ├── style-cbbcc51b1f49f.css │ │ │ │ └── style.css │ │ │ ├── HeaderDynamicContent │ │ │ │ └── index.tsx │ │ │ ├── Navigation │ │ │ │ ├── index.tsx │ │ │ │ ├── styles-91455f09ad168.css │ │ │ │ └── styles.css │ │ │ └── SEOBlock │ │ │ │ ├── index.tsx │ │ │ │ ├── style-52143a33cb82d.css │ │ │ │ ├── style.css │ │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── containers │ │ │ ├── BrandContainer.tsx │ │ │ ├── BrandL2Container.tsx │ │ │ ├── CategoryContainer.tsx │ │ │ ├── SSCContainer.tsx │ │ │ └── SearchContainer.tsx │ │ ├── helpers │ │ │ ├── breadcrumbListParser.ts │ │ │ ├── navigationContentParser.ts │ │ │ └── parseBrandData.ts │ │ ├── index.tsx │ │ ├── styles-5c1058faac43a.css │ │ ├── styles.css │ │ └── translations │ │ │ └── messages.ts │ └── SearchPage │ │ ├── SearchPage.tsx │ │ ├── components │ │ ├── Facets │ │ │ ├── Facet.tsx │ │ │ ├── FacetFilter.tsx │ │ │ ├── FacetFilterPlaceholder.tsx │ │ │ ├── PriceSearchBar.tsx │ │ │ ├── index.tsx │ │ │ ├── style-e21dd51030de9.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ │ └── messages.ts │ │ └── ResultHeader │ │ │ ├── index.tsx │ │ │ ├── style-be7b4d1c811e5.css │ │ │ ├── style.css │ │ │ └── translations │ │ │ └── messages.ts │ │ ├── index.ts │ │ ├── style-d6b617ef17ba6.css │ │ ├── style.css │ │ └── translations │ │ └── messages.ts ├── providers │ ├── AvailabilityProvider │ │ └── ApiAvailabilityProvider.ts │ ├── BrandProvider │ │ ├── ApiBrandProvider.ts │ │ └── index.ts │ ├── CategoryProvider │ │ ├── ApiCategoryProvider.ts │ │ ├── CachedCategoryProvider.ts │ │ ├── CategoryCache.ts │ │ ├── index.ts │ │ └── translations │ │ │ ├── en.ts │ │ │ └── fr.ts │ ├── ContentProvider │ │ ├── ApiBrandPageContentProvider.ts │ │ ├── ApiBrandStoreContentProvider.ts │ │ ├── ApiCareersContentProvider.ts │ │ ├── ApiCategoryContentProvider.ts │ │ ├── ApiCollectionContentProvider.ts │ │ ├── ApiCorporateContentProvider.ts │ │ ├── ApiEventMarketingContentProvider.ts │ │ ├── ApiHomePageContentProvider.ts │ │ ├── ApiHomePageFallbackContentProvider.ts │ │ ├── ApiPersonalizedContentProvider.ts │ │ ├── ApiProductContentProvider.ts │ │ ├── ApiSearchContentProvider.ts │ │ ├── ApiServiceContentProvider.ts │ │ ├── ApiShowcaseContentProvider.ts │ │ ├── MarketingContentProvider.ts │ │ ├── contentCache.ts │ │ └── index.ts │ ├── GlobalContentProvider │ │ ├── ApiGlobalContentProvider.ts │ │ └── globalContentCache.ts │ ├── HelpProvider │ │ ├── ApiHelpProvider.ts │ │ └── index.ts │ ├── LocalStorageProvider │ │ └── index.ts │ ├── LocationProvider │ │ └── ApiLocationProvider.ts │ ├── OfferProvider │ │ ├── ApiOfferProvider.ts │ │ ├── MockOfferProvider.ts │ │ ├── NullOfferProvider.ts │ │ └── index.ts │ ├── RemoteConfigProvider │ │ ├── ApiRemoteConfigProvider.ts │ │ ├── CachedRemoteConfigProvider.ts │ │ ├── RemoteConfigCache.ts │ │ └── RemoteConfigProviderFactory.ts │ ├── SearchProvider │ │ ├── ApiSearchProvider.ts │ │ └── translations │ │ │ ├── en.ts │ │ │ └── fr.ts │ ├── SessionStorageProvider │ │ └── index.ts │ ├── SideNavigationProvider │ │ ├── ApiBrandStoreNavigationProvider.ts │ │ ├── SideNavigationProvider.ts │ │ └── index.ts │ ├── SponsoredProductsProvider │ │ ├── ApiSponsoredProductsProvider.ts │ │ └── index.ts │ ├── StoreLocationProvider │ │ └── ApiStoreLocationProvider.ts │ ├── StoreMessageProvider │ │ └── ApiStoreMessageProvider.ts │ └── index.ts ├── reducers │ ├── adReducer │ │ └── index.ts │ ├── appReducer │ │ └── index.ts │ ├── brandReducer │ │ └── index.ts │ ├── configReducer │ │ └── index.ts │ ├── dynamicContentReducer │ │ └── index.ts │ ├── errorReducer │ │ └── index.ts │ ├── helpReducer │ │ └── index.ts │ ├── homePageReducer │ │ └── index.ts │ ├── notificationReducer │ │ └── index.ts │ ├── npsSurveyReducer │ │ └── index.ts │ ├── offersReducer │ │ └── index.ts │ ├── promotionalBadgesReducer │ │ └── index.ts │ ├── recommendationsReducer │ │ └── index.ts │ ├── routingReducer │ │ └── index.ts │ ├── searchReducer │ │ ├── index.ts │ │ └── utils │ │ │ └── index.ts │ ├── sideNavigationReducer │ │ └── index.ts │ ├── storeMessageReducer │ │ └── index.ts │ ├── storesStatusReducer │ │ └── index.ts │ ├── translationsReducer │ │ └── index.ts │ └── userReducer │ │ └── index.ts ├── store │ ├── configureStore.ts │ └── selectors │ │ ├── appSelectors │ │ └── index.ts │ │ ├── configSelectors │ │ └── index.ts │ │ ├── intlSelectors │ │ └── index.ts │ │ ├── offersSelectors │ │ └── index.ts │ │ ├── promotionalBadgesSelectors │ │ └── index.ts │ │ ├── routingSelectors │ │ └── index.ts │ │ ├── searchSelectors │ │ └── index.ts │ │ ├── storeStatusSelectors │ │ └── index.ts │ │ └── userSelectors │ │ └── index.ts └── utils │ ├── analytics │ ├── adobeCookie.ts │ ├── eventBuffer.ts │ ├── gspInCart.ts │ ├── middleware.ts │ ├── pdpFindingMethodMapper.ts │ └── performanceInstrumentation.ts │ ├── builders │ ├── breadcrumbBuilder │ │ ├── createBreadcrumbList.ts │ │ ├── index.ts │ │ └── translations │ │ │ └── messages.ts │ └── productSwatchBuilder.ts │ ├── classname │ └── index.ts │ ├── colorUtils │ └── index.ts │ ├── criteo │ └── index.ts │ ├── date │ └── index.ts │ ├── decodeString │ └── index.tsx │ ├── detectAdBlocker │ └── index.ts │ ├── environment │ └── index.ts │ ├── fetch │ └── index.ts │ ├── flatteners │ └── objectFlattener.ts │ ├── geolocation │ └── index.ts │ ├── globalContent │ └── index.ts │ ├── groupBy │ └── index.ts │ ├── imageUtils │ └── index.ts │ ├── isMobileApp │ └── index.ts │ ├── isPurchasable │ └── index.ts │ ├── localization │ └── makeGetMsgFunction.ts │ ├── numberUtils │ └── index.ts │ ├── postalCodeUtils │ └── index.ts │ ├── productContentCollection │ └── index.ts │ ├── productDetail │ └── index.ts │ ├── productWarranty │ ├── getManufacturersWarrantyUrl.ts │ ├── getProductWarranties.ts │ ├── getProductWarrantiesBySubType.ts │ └── isBothPspPrpWarranty.ts │ ├── queryString │ └── index.ts │ ├── routeManager │ ├── index.tsx │ ├── injectedRoutes.ts │ └── routes.ts │ ├── search │ └── index.ts │ ├── serializer │ └── index.ts │ ├── serviceWorker │ └── index.ts │ ├── stringUtils │ └── index.ts │ ├── typeGuards │ └── index.ts │ ├── urlUtils │ └── index.ts │ ├── warrantyText │ ├── index.ts │ └── translations │ │ └── messages.ts │ └── withRouterLink │ └── index.tsx ├── collapsible-block └── index.tsx ├── common └── logging │ ├── AzureJSLogger.ts │ ├── ConsoleLogger.ts │ ├── getLogger.ts │ └── index.ts ├── components.ts ├── components ├── ClickAwayListener │ ├── ClickAwayListener.tsx │ └── index.ts ├── Content │ └── state.ts ├── GlobalFooter │ ├── NewsLetterSignUp │ │ ├── SocialIcons.tsx │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── PrimaryLinks │ │ ├── components │ │ │ ├── LinkGroup │ │ │ │ └── index.tsx │ │ │ └── icons │ │ │ │ └── index.tsx │ │ └── index.tsx │ ├── SecondaryLinks │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── ValueProps │ │ ├── components │ │ │ └── icons │ │ │ │ └── index.tsx │ │ └── index.tsx │ ├── index.tsx │ └── utils │ │ ├── appMap.ts │ │ └── contentParser.ts ├── GlobalHeader │ ├── BestBuyLogoButton.tsx │ ├── FlyoutNavigation │ │ ├── BrandsMenu │ │ │ ├── BrandGroup │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── FlyoutContainer │ │ │ └── index.tsx │ │ ├── FlyoutNavigation.tsx │ │ ├── ShopMenu │ │ │ ├── CategoryGroup │ │ │ │ └── index.tsx │ │ │ ├── SubCategory │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── index.ts │ │ └── translations │ │ │ └── messages.ts │ ├── GlobalOverlay │ │ └── index.tsx │ ├── Link │ │ └── index.tsx │ ├── MainLinks │ │ └── index.tsx │ ├── Navigation │ │ ├── AccountList │ │ │ └── index.tsx │ │ ├── DrawerMenuButton │ │ │ └── index.tsx │ │ ├── Menu │ │ │ ├── index.tsx │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── SearchBar │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── SecondaryLinks │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── StoresLink │ │ ├── index.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── index.tsx │ ├── setAnalyticVariable.ts │ └── utils │ │ ├── brandMenuDataParser.ts │ │ ├── deduplicateSearchSuggestions.ts │ │ ├── getParsedEvent.ts │ │ ├── menuDataParser.ts │ │ └── shopMenuDataParser.ts ├── Loader │ └── index.tsx └── MenuPanel │ ├── components │ ├── MenuHeader │ │ └── index.tsx │ ├── MenuItem │ │ └── index.tsx │ └── MenuSection │ │ └── index.tsx │ ├── index.tsx │ └── translations │ └── messages.ts ├── config ├── featureToggles.ts ├── getClientConfig.ts └── getServerConfig.ts ├── constants.ts ├── containers ├── AddToCartContainer.ts ├── BasketPageContainer.ts ├── BenefitPageContainer.ts ├── CartIndicatorContainer.ts ├── CheckoutButtonContainer.ts ├── ManufacturersWarrantyPageContainer.ts └── connectors │ ├── ReduxBenefitLinkConnector.ts │ ├── ReduxBenefitPageConnector.ts │ ├── ReduxConnectorBasket.ts │ ├── ReduxConnectorCheckout.ts │ ├── ReduxManufacturersWarrantyPageConnector.ts │ ├── ServicePlanProviderConnector.ts │ └── TermsAndConditionsMsgConnector.ts ├── contentSections └── collapsible │ ├── Collapsible.tsx │ └── CollapsibleControlled.tsx ├── dtm-tracker └── index.ts ├── errors ├── ConnectionError.ts ├── ContentError.ts ├── NotFoundError.ts ├── ValidationMessagesError.ts └── WebappError.ts ├── events.ts ├── flexbox-grid ├── components │ ├── col.tsx │ └── row.tsx └── create-props.tsx ├── forms ├── form │ └── Form.tsx └── formItems │ ├── CanadaPostAutoComplete │ └── CanadaPostAddressComplete.ts │ ├── FormItem.tsx │ ├── ProvinceSelector │ ├── ProvinceSelector.tsx │ └── translations │ │ ├── en.ts │ │ └── fr.ts │ ├── RadioButton │ ├── RadioButton.tsx │ └── RadioGroup.tsx │ ├── RangeSelection │ └── RangeSelection.tsx │ ├── StateSelector │ ├── StateSelector.tsx │ └── translations │ │ ├── en.ts │ │ └── fr.ts │ ├── Toggle │ └── Toggle.tsx │ ├── checkbox │ ├── Checkbox.tsx │ └── icon │ │ └── CheckMarkSvg.tsx │ ├── hiddenInput │ └── HiddenInput.tsx │ ├── input │ ├── Input.tsx │ └── formatter │ │ └── index.tsx │ ├── password │ └── Password.tsx │ ├── select │ └── Select.tsx │ ├── textarea │ └── TextArea.tsx │ └── validationRules │ └── validationRules.ts ├── globalMessages ├── globalErrorMessage │ └── GlobalErrorMessage.tsx ├── globalInfoMessage │ └── GlobalInfoMessage.tsx ├── globalSuccessMessage │ └── GlobalSuccessMessage.tsx └── globalWarningMessage │ └── GlobalWarningMessage.tsx ├── heading └── heading.tsx ├── icons ├── CartSvg.tsx ├── MinusIcon.tsx └── PlusIcon.tsx ├── index-21880cf4fc6a6.ts ├── index.ts ├── loading-indicator └── loading-indicator.tsx ├── modal ├── errorToaster │ └── ErrorToaster.tsx └── modal.tsx ├── models ├── GlobalMenuContent │ └── index.ts ├── Intl │ └── index.ts ├── Routing │ └── index.ts └── index.ts ├── providers ├── ContentProvider │ ├── ApiMenusContentProvider.ts │ ├── fallbacks │ │ ├── brandsMenuFallbackContentEn.ts │ │ ├── brandsMenuFallbackContentFr.ts │ │ ├── globalMenuFallbackContentEn.ts │ │ ├── globalMenuFallbackContentFr.ts │ │ ├── shopMenuFallbackContentEn.ts │ │ └── shopMenuFallbackContentFr.ts │ └── menuContentCache.ts ├── SearchSuggestionsProvider │ └── ApiSearchSuggestionsProvider.ts ├── SplitIOABTestProvider │ └── index.ts └── index.ts ├── react ├── AddToCart │ ├── AddToCart.tsx │ └── components │ │ └── AddToCartForm │ │ ├── AddToCartForm.tsx │ │ └── translations │ │ └── messages.ts ├── BasketPage │ ├── BasketPage.tsx │ ├── components │ │ ├── ageVerification │ │ │ ├── AgeVerification.tsx │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── checkoutButtons │ │ │ ├── PaypalButton │ │ │ │ ├── PaypalButton.tsx │ │ │ │ └── translations │ │ │ │ │ └── messages.ts │ │ │ ├── core │ │ │ │ └── CheckoutButtonWrapper.tsx │ │ │ ├── masterpassButton │ │ │ │ └── MasterpassButton.tsx │ │ │ └── visaCheckoutButton │ │ │ │ └── VisaCheckoutButton.tsx │ │ ├── lineItem │ │ │ ├── BadgeWrapper.tsx │ │ │ ├── BenefitLink.tsx │ │ │ ├── ChildItems.tsx │ │ │ ├── FreeItem.tsx │ │ │ ├── FreeItems.tsx │ │ │ ├── LineItem.tsx │ │ │ ├── Offer.tsx │ │ │ ├── RemovedLineItem.tsx │ │ │ ├── RequiredPartsItem.tsx │ │ │ ├── Rpu.tsx │ │ │ ├── ServicePlanItems.tsx │ │ │ ├── Status.tsx │ │ │ ├── TermsAndConditionsMsg.tsx │ │ │ └── translations │ │ │ │ └── messages.ts │ │ ├── orderPromotionItems │ │ │ └── index.tsx │ │ ├── quantityStepper │ │ │ └── QuantityStepper.tsx │ │ └── shipment │ │ │ ├── Shipment.tsx │ │ │ └── translations │ │ │ └── messages.ts │ ├── helpers │ │ └── ItemCount.tsx │ └── translations │ │ └── messages.ts ├── BenefitPage │ ├── BenefitPage.tsx │ ├── ServiceBenefits.tsx │ └── translations │ │ └── messages.ts ├── CartIndicator │ ├── CartIndicator.tsx │ └── components │ │ ├── BasketIcon │ │ ├── BasketIcon.tsx │ │ └── translations │ │ │ └── messages.ts │ │ ├── Confirmation │ │ ├── Confirmation.tsx │ │ ├── ErrorCode.tsx │ │ └── translations │ │ │ └── messages.ts │ │ └── Toaster │ │ └── index.tsx ├── CostSummary │ ├── CostSummary.tsx │ └── translations │ │ └── messages.ts ├── EnterPostalCode │ ├── EnterPostalCode.tsx │ └── translations │ │ └── messages.ts ├── LineItem │ ├── ProductDetailsLineItem │ │ ├── ProductDetailsLineItem.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── ProductImage.tsx │ ├── ProductLineItem │ │ └── ProductLineItem.tsx │ └── RequiredPartsLineItem │ │ ├── RequiredPartsLineItem.tsx │ │ └── translations │ │ └── messages.ts ├── ManufacturersWarrantyPage │ ├── ManufacturersWarrantyPage.tsx │ └── translations │ │ └── messages.ts ├── ProductServices │ ├── ProductService.tsx │ ├── ProductServices.tsx │ ├── index.tsx │ └── translations │ │ └── messages.ts ├── Remove │ ├── index.tsx │ └── translations │ │ └── messages.ts ├── components │ ├── LiveAgent │ │ └── LiveAgent.tsx │ ├── Newsletter │ │ ├── Newsletter.tsx │ │ └── translations │ │ │ └── messages.ts │ ├── OrderCommunicationsForm │ │ ├── OrderCommunicationsForm.tsx │ │ └── translations │ │ │ └── messages.ts │ └── ReplyBox │ │ ├── ReplyBox.tsx │ │ ├── index.ts │ │ └── translations │ │ └── messages.ts ├── index.ts └── utilities │ ├── formatting.ts │ ├── helpers.ts │ └── shippingStatusHelper.ts ├── reducers └── navigationReducer │ ├── index.tsx │ └── initialNavigationState.tsx ├── redux ├── addOnsPage │ └── index.ts ├── cart │ ├── actionTypes.ts │ ├── index.ts │ └── selectors.ts ├── checkout │ ├── actionTypes.ts │ ├── index.ts │ ├── payment.ts │ └── shipping.ts ├── manufacturerWarranty │ └── index.ts ├── providers │ ├── BaseProvider │ │ └── ApiBaseProvider.ts │ ├── CommunicationProvider │ │ ├── ApiContactUsProvider.ts │ │ └── requests │ │ │ └── SendMessageRequest.ts │ └── newsletterProvider.ts ├── requiredProducts │ └── index.ts ├── selectors │ └── offerIdsWithNoServicePlanAcceptedSelector.ts ├── servicePlan │ └── index.ts └── servicePlanBenefits │ └── index.ts ├── services ├── AvailabilityProvider │ └── ApiAvailabilityProvider.ts ├── BasketProvider │ ├── ApiBasketProvider.ts │ └── ApiBasketProviderFactory.ts ├── BenefitProvider │ └── ApiBenefitProvider.ts ├── CartStoreProvider │ └── index.ts ├── CheckoutApiClient │ └── CheckoutApiClient.ts ├── CheckoutEvents │ └── CheckoutEvents.ts ├── ManufacturerWarrantyProvider │ └── ApiManufacturerWarrantyProvider.ts ├── OfferProvider │ └── ApiOfferProvider.ts ├── RequiredProductsProvider │ ├── ApiRequiredProductsProvider.ts │ ├── constants.ts │ └── dateFormatter.ts ├── SplitIOClientBuilder │ └── index.ts ├── SplitIOService │ └── index.ts └── index.ts ├── stores ├── actions │ └── index.ts ├── providers │ └── ApiStoreProvider.ts └── reducers │ └── index.ts ├── utilities ├── isCheckoutPath │ └── index.ts ├── removeDuplicateSlashInURL │ └── index.ts └── removeQueryParam │ └── index.ts ├── utils ├── Analytics.ts ├── Cookie │ └── Cookie.ts ├── CookieUtils │ └── CookieUtils.ts ├── OrderMessageHistoryHelpers │ └── orderMessageHistoryEnums.ts ├── builders │ ├── objectBuilder.ts │ └── urlBuilder.ts ├── cookies │ ├── Cookie │ │ └── Cookie.ts │ └── CookieUtils │ │ └── CookieUtils.ts ├── fetch │ └── index.ts ├── helpTopics │ └── index.tsx ├── index.ts ├── isMobileApp │ └── index.ts ├── linkEvent │ └── index.ts ├── linkPropsBuilder │ └── index.ts ├── loader │ └── Loader.tsx ├── loadingSkeleton │ └── LoadingSkeleton.tsx ├── logging │ └── index.ts ├── makeId.ts ├── ripples │ └── ripples.tsx ├── routeManager │ ├── index.tsx │ ├── patternUtils.ts │ └── routes.ts ├── scrollStyle │ └── ScrollStyle.tsx └── scrollToTarget │ └── index.ts └── wdyr.js /Divider/Divider.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import classnames from "classnames"; 3 | import * as styles from "./styles.css"; 4 | const Divider = ({ className }) => { 5 | return React.createElement("hr", { className: classnames([styles.hr, className]) }); 6 | }; 7 | export default Divider; 8 | //# sourceMappingURL=Divider.js.map -------------------------------------------------------------------------------- /Flexbox/Components/Grid.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import getClass from "../classNames"; 3 | import createProps from "../createProps"; 4 | export const Grid = (props) => { 5 | const containerClass = getClass("container-fluid"); 6 | const classNames = [props.className, containerClass]; 7 | return React.createElement(props.tagName || "div", createProps(props, classNames)); 8 | }; 9 | export default Grid; 10 | //# sourceMappingURL=Grid.js.map -------------------------------------------------------------------------------- /Flexbox/classNames.ts: -------------------------------------------------------------------------------- 1 | import * as styles from "./styles/style.css"; 2 | export const getClass = (className) => { 3 | return styles && styles[className] ? styles[className] : className; 4 | }; 5 | export default getClass; 6 | //# sourceMappingURL=classNames.js.map -------------------------------------------------------------------------------- /Flexbox/createProps.ts: -------------------------------------------------------------------------------- 1 | export const createProps = (props, classNames) => { 2 | const newProps = {}; 3 | Object.keys(props) 4 | .filter((key) => key === "children") 5 | .forEach((key) => (newProps[key] = props[key])); 6 | const className = classNames.filter((cn) => cn).join(" "); 7 | return Object.assign({}, newProps, { className }); 8 | }; 9 | export default createProps; 10 | //# sourceMappingURL=createProps.js.map -------------------------------------------------------------------------------- /NPS/NPSSurveyModal/translations/en.ts: -------------------------------------------------------------------------------- 1 | export const messages = { 2 | headingText: "Your feedback matters!", 3 | infoText: "Help us make your Best Buy Canada shopping experience even better!", 4 | optInButton: "Sounds Good", 5 | optOutButton: "No Thanks", 6 | questionText: "Please take part in our 3-minute survey when you're done shopping.", 7 | beginSurvey: "Begin Survey", 8 | }; 9 | export default messages; 10 | //# sourceMappingURL=en.js.map -------------------------------------------------------------------------------- /NPS/NPSSurveyModal/translations/fr.ts: -------------------------------------------------------------------------------- 1 | export const messages = { 2 | headingText: "Votre opinion compte!", 3 | infoText: "Aidez-nous à rendre votre expérience de magasinage à Best Buy encore meilleure!", 4 | optInButton: "D’accord", 5 | optOutButton: "Non, merci", 6 | questionText: "Après votre magasinage, prenez part à notre sondage de 3 minutes.", 7 | beginSurvey: "Commencer le sondage", 8 | }; 9 | export default messages; 10 | //# sourceMappingURL=fr.js.map -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## NOTE 2 | 3 | Following the entry point: **/client** folder 4 | 5 | **Cong Nguyen** -------------------------------------------------------------------------------- /Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladifire-opensource/bestbuy.ca--source-code/570890d55cc3a928486ffa106960eb0213c5b0f1/Screenshot.png -------------------------------------------------------------------------------- /SuccessConfirmation/SuccessBody/SuccessBody.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import * as styles from "./style.css"; 3 | const SuccessBody = (props) => { 4 | const { children, className } = props; 5 | return (React.createElement("div", { className: `${styles.body} ${className ? className : ""}`, "data-automation": "details-body" }, children)); 6 | }; 7 | export default SuccessBody; 8 | //# sourceMappingURL=SuccessBody.js.map -------------------------------------------------------------------------------- /SuccessConfirmation/SuccessConfirmation.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { CheckmarkAnimated } from "../SvgIcons"; 3 | const SuccessConfirmation = ({ children, className = "" }) => { 4 | return (React.createElement("div", { className: className }, 5 | React.createElement(CheckmarkAnimated, null), 6 | children)); 7 | }; 8 | export default SuccessConfirmation; 9 | //# sourceMappingURL=SuccessConfirmation.js.map -------------------------------------------------------------------------------- /SuccessConfirmation/SuccessTitle/SuccessTitle.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import * as styles from "./style.css"; 3 | const SuccessTitle = (props) => { 4 | const { children, className } = props; 5 | return (React.createElement("div", { className: `${styles.header} ${className ? className : ""}`, "data-automation": "success-header" }, children)); 6 | }; 7 | export default SuccessTitle; 8 | //# sourceMappingURL=SuccessTitle.js.map -------------------------------------------------------------------------------- /actions/errorActions/index.ts: -------------------------------------------------------------------------------- 1 | export const errorActiontype = { 2 | clearState: "ERROR_CLEAR_STATE", 3 | error: "ERROR_OCCURED", 4 | trackPageNotFoundView: "PAGE_NOT_FOUND_LOAD", 5 | }; 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /business-rules/entities/Checkout.ts: -------------------------------------------------------------------------------- 1 | export class CreatedBasket { 2 | } 3 | //# sourceMappingURL=Checkout.js.map -------------------------------------------------------------------------------- /business-rules/entities/ManufacturerWarranty.ts: -------------------------------------------------------------------------------- 1 | export var GetManufacturerWarrantyStatus; 2 | (function (GetManufacturerWarrantyStatus) { 3 | GetManufacturerWarrantyStatus["FAILURE"] = "FAILURE"; 4 | GetManufacturerWarrantyStatus["PROCESSING"] = "PROCESSING"; 5 | GetManufacturerWarrantyStatus["SUCCESS"] = "SUCCESS"; 6 | })(GetManufacturerWarrantyStatus || (GetManufacturerWarrantyStatus = {})); 7 | //# sourceMappingURL=ManufacturerWarranty.js.map -------------------------------------------------------------------------------- /business-rules/entities/OrderStatus.ts: -------------------------------------------------------------------------------- 1 | export var OrderStatus; 2 | (function (OrderStatus) { 3 | OrderStatus["CONFIRMED"] = "CONFIRMED"; 4 | OrderStatus["PENDING"] = "PENDING"; 5 | OrderStatus["REVIEW"] = "REVIEW"; 6 | })(OrderStatus || (OrderStatus = {})); 7 | //# sourceMappingURL=OrderStatus.js.map -------------------------------------------------------------------------------- /business-rules/entities/PaymentType.ts: -------------------------------------------------------------------------------- 1 | export var PaymentType; 2 | (function (PaymentType) { 3 | PaymentType["creditDebit"] = "credit/debit"; 4 | PaymentType["giftCardOnly"] = "giftcardonly"; 5 | PaymentType["masterpass"] = "masterpass"; 6 | PaymentType["paypal"] = "paypal"; 7 | PaymentType["visaCheckout"] = "visacheckout"; 8 | })(PaymentType || (PaymentType = {})); 9 | //# sourceMappingURL=PaymentType.js.map -------------------------------------------------------------------------------- /business-rules/entities/ServicePlanBenefit.ts: -------------------------------------------------------------------------------- 1 | export var GetBenefitsStatus; 2 | (function (GetBenefitsStatus) { 3 | GetBenefitsStatus["FAILURE"] = "FAILURE"; 4 | GetBenefitsStatus["PROCESSING"] = "PROCESSING"; 5 | GetBenefitsStatus["SUCCESS"] = "SUCCESS"; 6 | })(GetBenefitsStatus || (GetBenefitsStatus = {})); 7 | //# sourceMappingURL=ServicePlanBenefit.js.map -------------------------------------------------------------------------------- /business-rules/entities/errors/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ErrorType"; 2 | export * from "./HttpRequestError"; 3 | export * from "./InternalServerError"; 4 | export * from "./StatusCode"; 5 | export * from "./NotFoundError"; 6 | export * from "./BadRequestError"; 7 | export * from "./ConnectionError"; 8 | export * from "./UnauthorizedError"; 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /business-rules/entities/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./errors"; 2 | export * from "./EmailCampaigns"; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /button/ButtonAppearanceEnum.ts: -------------------------------------------------------------------------------- 1 | export var ButtonAppearanceEnum; 2 | (function (ButtonAppearanceEnum) { 3 | ButtonAppearanceEnum["Primary"] = "primary"; 4 | ButtonAppearanceEnum["Secondary"] = "secondary"; 5 | ButtonAppearanceEnum["Tertiary"] = "tertiary"; 6 | ButtonAppearanceEnum["Transparent"] = "transparent"; 7 | })(ButtonAppearanceEnum || (ButtonAppearanceEnum = {})); 8 | export default ButtonAppearanceEnum; 9 | //# sourceMappingURL=ButtonAppearanceEnum.js.map -------------------------------------------------------------------------------- /button/index.tsx: -------------------------------------------------------------------------------- 1 | export { default as Button } from "./button"; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /client/Decide/components/BoughtAlsoBought/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | default as BoughtAlsoBought, 3 | BoughtAlsoBoughtProps, 4 | RecommendationsProps, 5 | ProductProps, 6 | } from "./BoughtAlsoBought"; 7 | 8 | export {BoughtAlsoBoughtProps, RecommendationsProps, ProductProps}; 9 | export default BoughtAlsoBought; 10 | -------------------------------------------------------------------------------- /client/Decide/components/BreadcrumbPlaceholder/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import * as styles from "./style.css"; 4 | 5 | export default (props) => { 6 | return ( 7 |
8 |
9 |
10 | ); 11 | }; 12 | -------------------------------------------------------------------------------- /client/Decide/components/BreadcrumbPlaceholder/style-38f0d651cc39d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"breadcrumbPlaceholderContainer":"breadcrumbPlaceholderContainer_2PSKe","breadcrumbPlaceholder":"breadcrumbPlaceholder_13xIx"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhoneMonthlyPayment/style-564955dc6db57.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pricePerMonth":"pricePerMonth_3KgGO","hideDecimals":"hideDecimals_3_X3S"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhoneMonthlyPayment/style.css: -------------------------------------------------------------------------------- 1 | .pricePerMonth_3KgGO { 2 | display: inline-block; 3 | } 4 | 5 | .pricePerMonth_3KgGO [class^="price"] { 6 | font-weight: 700; 7 | font-size: 16px; 8 | margin: 0; 9 | padding: 0 0 0 8px; 10 | border-left: 1px solid #c5cbd5; 11 | } 12 | 13 | .pricePerMonth_3KgGO.hideDecimals_3_X3S [class^="rightEndPrice"] { 14 | display: none; 15 | } 16 | -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhonePlanMessage/style-5633392609e97.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"plan":"plan_2-HXD"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhonePlanMessage/style.css: -------------------------------------------------------------------------------- 1 | .plan_2-HXD { 2 | font-size: 14px; 3 | margin-bottom: 24px; 4 | line-height: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhonePlanPricePlaceHolder/style-d22577a943ed.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pricePlaceholder":"pricePlaceholder_3Fpa0","downPlaceholder":"downPlaceholder_3GkOd","monthlyPlaceholder":"monthlyPlaceholder_3bZFA","cellPhonePlanPricePlaceHolder":"cellPhonePlanPricePlaceHolder_dhsgX","pricing":"pricing_1j6Gn","half":"half_w-Tox"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhonePriceDown/style-0b60018ef417.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"priceDown":"priceDown_3Tdkk","price":"price_1_EAw","decimalPrice":"decimalPrice_1QYK9","taxes":"taxes_182q9"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/CellPhonePriceDown/style.css: -------------------------------------------------------------------------------- 1 | .priceDown_3Tdkk { 2 | display: inline-block; 3 | margin: 0 8px 0 0; 4 | } 5 | 6 | .price_1_EAw { 7 | font-size: 32px; 8 | font-weight: 700; 9 | line-height: 32px; 10 | margin: 0 4px 0 0; 11 | display: inline-block; 12 | } 13 | 14 | .decimalPrice_1QYK9 { 15 | margin-right: -4px; 16 | } 17 | 18 | .taxes_182q9 { 19 | font-size: 16px; 20 | font-weight: 100; 21 | } 22 | -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/style-2f32e60b44804.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"cellPhonePrice":"cellPhonePrice_2pHRa","priceSection":"priceSection_2x95f","pricePerMonth":"pricePerMonth_26-8V","monthly":"monthly_2W_t0","taxes":"taxes_3PBx2","down":"down_2xaaa"}; -------------------------------------------------------------------------------- /client/Decide/components/CellPhonePlanPrice/utils/hasCents.ts: -------------------------------------------------------------------------------- 1 | export const hasCents = (price: number | string) => { 2 | // we validate if we have an int number in a float format (40.00), if so we want to return false 3 | const formattedValue = Math.round((parseFloat("" + price) % 1) * 100); 4 | 5 | if (formattedValue <= 0) { 6 | return false; 7 | } 8 | return true; 9 | }; 10 | -------------------------------------------------------------------------------- /client/Decide/components/ChildProductHeader/style-83b37bebe04df.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_hqcLK","logoContainer":"logoContainer_2m9RC","title":"title_1NUxI","subHeader":"subHeader_3D-1a"}; -------------------------------------------------------------------------------- /client/Decide/components/ChildProductHeader/style.css: -------------------------------------------------------------------------------- 1 | .container_hqcLK p { 2 | margin-bottom: 0; 3 | font-size: 14px; 4 | line-height: 20px; 5 | } 6 | 7 | .logoContainer_2m9RC { 8 | width: 40px; 9 | height: 26px; 10 | margin-bottom: 8px; 11 | } 12 | 13 | .title_1NUxI { 14 | font-weight: 600; 15 | } 16 | 17 | .subHeader_3D-1a { 18 | margin-top: 8px; 19 | } 20 | -------------------------------------------------------------------------------- /client/Decide/components/EnterPostalCode/styles-895f3471f3e49.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"updatePostalCode":"updatePostalCode_3C6cq","epcHeader":"epcHeader_fRkVs","imgCol":"imgCol_2IlO-","textCol":"textCol_1DN1y","epcHeaderRow":"epcHeaderRow_2h2kJ","zipCodeButton":"zipCodeButton__8xwJ","deliveryIcon":"deliveryIcon_CV3wI","epcInputContainer":"epcInputContainer_3jtwe"}; -------------------------------------------------------------------------------- /client/Decide/components/GeoLocation/style-d40f90c6718cb.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"locationIcon":"locationIcon_2vH5G","geoLocateButton":"geoLocateButton_2WRgl"}; -------------------------------------------------------------------------------- /client/Decide/components/GeoLocation/style.css: -------------------------------------------------------------------------------- 1 | .locationIcon_2vH5G { 2 | position: absolute; 3 | left: 50%; 4 | margin-top: -15px; 5 | margin-left: -15px; 6 | width: 30px; 7 | } 8 | 9 | .geoLocateButton_2WRgl { 10 | height: 48px; 11 | width: 48px; 12 | margin-top: 23px; 13 | margin-left: 16px; 14 | } 15 | -------------------------------------------------------------------------------- /client/Decide/components/GspPlan/styles-497bfe95912f9.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_2haQT","footer":"footer_1LyDZ","priceContainer":"priceContainer_1WY68","price":"price_3zm7E","blockCap":"blockCap_XOFJP","cap":"cap_KNuvQ","warrantyOptionsTitle":"warrantyOptionsTitle_14UDG","warrantyOptions":"warrantyOptions_2vs-x","warrantyBenefitsContainer":"warrantyBenefitsContainer_1GGdf","warrantyBenefits":"warrantyBenefits_3wvZi"}; -------------------------------------------------------------------------------- /client/Decide/components/KeyConsiderations/components/Attribute/style-1fcbf5b2ce65.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"attributeSection":"attributeSection_2BS3C","rangeSelection":"rangeSelection_Nx2hl"}; -------------------------------------------------------------------------------- /client/Decide/components/KeyConsiderations/components/Attribute/style.css: -------------------------------------------------------------------------------- 1 | .attributeSection_2BS3C button { 2 | font-size: 12px; 3 | } 4 | 5 | .rangeSelection_Nx2hl [class*="tile"]:first-child { 6 | border-radius: 16px 0 0 16px; 7 | } 8 | 9 | .rangeSelection_Nx2hl [class*="tile"]:last-child { 10 | border-radius: 0 16px 16px 0; 11 | } 12 | 13 | .rangeSelection_Nx2hl [class*="tile"] { 14 | height: 16px; 15 | } 16 | -------------------------------------------------------------------------------- /client/Decide/components/KeyConsiderations/style-25c5b6a0b9eb4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"heading":"heading_25QQB","description":"description_tnKF6","keyConsiderationsContainer":"keyConsiderationsContainer_1z8pv"}; -------------------------------------------------------------------------------- /client/Decide/components/KeyConsiderations/util/index.ts: -------------------------------------------------------------------------------- 1 | export const isValidAttributeValue = (value: number, maxTiles: number = 5) => 2 | typeof value === "number" && value > 0 && value <= maxTiles; 3 | -------------------------------------------------------------------------------- /client/Decide/components/LocateByPostalCodeAndGeoLocation/style-261e8c8df3776.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"inputContainer":"inputContainer_255PK"}; -------------------------------------------------------------------------------- /client/Decide/components/LocateByPostalCodeAndGeoLocation/style.css: -------------------------------------------------------------------------------- 1 | .inputContainer_255PK { 2 | display: -webkit-box; 3 | display: -webkit-flex; 4 | display: flex; 5 | -webkit-box-orient: horizontal; 6 | -webkit-box-direction: normal; 7 | -webkit-flex-direction: row; 8 | flex-direction: row; 9 | } 10 | 11 | .inputContainer_255PK label { 12 | margin: 0 0 3px; 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/components/MediaGallery/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | showingNumOfTotal: { id: "pdp.productDetails.imageGallery.SlideShow.showingNumOfTotal"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/components/NoVerifiedPurchaserMessage/style-57e00e6f902b4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"noVerifiedPurchaserReviewsContainer":"noVerifiedPurchaserReviewsContainer_HMxVw"}; -------------------------------------------------------------------------------- /client/Decide/components/NoVerifiedPurchaserMessage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | noVerifiedPurchaserMessage: {id: "productReviewsPage.components.NoVerifiedPurchaserMessage.message"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/components/OptionBox/styles-41973717e10ff.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"optionBox":"optionBox_3I57G","price":"price_3O7LI","text":"text_3WOvY","flexCenter":"flexCenter_7ucOS","isSelected":"isSelected_3g8j6","disabled":"disabled_3UoxZ"}; -------------------------------------------------------------------------------- /client/Decide/components/Policy/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import * as styles from "./style.css"; 4 | 5 | export interface PolicyProps { 6 | html: string; 7 | } 8 | 9 | export function Policy(props: PolicyProps) { 10 | return
; 11 | } 12 | 13 | Policy.displayName = "Policy"; 14 | -------------------------------------------------------------------------------- /client/Decide/components/Policy/style-7297919d67d33.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"policy":"policy_3KLxX"}; -------------------------------------------------------------------------------- /client/Decide/components/PostalCodeSubmit/style-4d24ca490f23f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"searchButton":"searchButton_26Jer","postalCodeInput":"postalCodeInput_3Gl7R","inputContainer":"inputContainer_12LiZ","buttonMargin":"buttonMargin_2ixju"}; -------------------------------------------------------------------------------- /client/Decide/components/ProductDetailsBrief/components/SimpleProductDetailsBrief/style-e436da931555e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"simpleProductDetailsBrief":"simpleProductDetailsBrief_3EGgd","hasPadding":"hasPadding_2WZPU","detailsContainer":"detailsContainer_2mqej","productName":"productName_3j_zD"}; -------------------------------------------------------------------------------- /client/Decide/components/ProductDetailsBrief/style-a919c6b9a8121.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productDetailsBrief":"productDetailsBrief_3EGbL","detailsContainer":"detailsContainer_3wvvA","productName":"productName_WUrjJ"}; -------------------------------------------------------------------------------- /client/Decide/components/ReviewsSortDropdown/style-a5e5884850e6c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewsSortContainer":"reviewsSortContainer_1Xmdr","reviewsSortDropdown":"reviewsSortDropdown_1_EuD","sortLabel":"sortLabel_Rnclc"}; -------------------------------------------------------------------------------- /client/Decide/components/ReviewsToolbar/style-7f05befdd0765.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewsToolbar":"reviewsToolbar_3cXgp","verifiedPurchaserToggle":"verifiedPurchaserToggle_1tB4X","filterSortContainer":"filterSortContainer__zp5g"}; -------------------------------------------------------------------------------- /client/Decide/components/ReviewsToolbar/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | const path = "productReviewsPage.components.verifiedPurchaserToggle."; 4 | 5 | export default defineMessages({ 6 | verifiedPurchaserTitle: {id: `${path}title`, defaultMessage: "Verified Buyers Only"}, 7 | }); 8 | -------------------------------------------------------------------------------- /client/Decide/components/SellerPolicy/style-4256ca9808799.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"dividerWithMargin":"dividerWithMargin_1R0EB"}; -------------------------------------------------------------------------------- /client/Decide/components/SellerPolicy/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .dividerWithMargin_1R0EB { 4 | margin-left: 16px !important; 5 | margin-right: 16px !important; 6 | } 7 | -------------------------------------------------------------------------------- /client/Decide/components/Tabs/style-1d86478f04abb.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_Tw3DC","containerFluid":"containerFluid_3ArT2","tabSection":"tabSection_3LHm7","tabHeading":"tabHeading_zEUj5","primaryContent":"primaryContent_2TZpv","tabButton":"tabButton_2G4bb","tabButtonHeader":"tabButtonHeader_OSt7x","tabButtonActive":"tabButtonActive_1d0ux","tabItemContainer":"tabItemContainer_3agCS","isActive":"isActive_2A_5I","fullWidth":"fullWidth_1yFPz"}; -------------------------------------------------------------------------------- /client/Decide/components/Tabs/utils.ts: -------------------------------------------------------------------------------- 1 | import {Children, ReactElement} from "react"; 2 | import {TabItemProps} from "./TabItem"; 3 | 4 | export const hasTabData = (tabItem: ReactElement): boolean => { 5 | const tabItemChildren = Children.toArray(tabItem.props.children); 6 | return !!tabItemChildren.length; 7 | }; 8 | -------------------------------------------------------------------------------- /client/Decide/components/TermsAndConditions/index.ts: -------------------------------------------------------------------------------- 1 | import TermsAndConditions, {Props, TermsAndConditionsLink} from "./TermsAndConditions"; 2 | import messages from "./translations/messages"; 3 | 4 | export {messages, Props, TermsAndConditionsLink}; 5 | export default TermsAndConditions; 6 | -------------------------------------------------------------------------------- /client/Decide/components/TermsAndConditions/style-68ec753867744.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"warrantyList":"warrantyList_3BfSg","warrantyListItem":"warrantyListItem_zbT7E","warrantyLink":"warrantyLink_2KoEz","checkBox":"checkBox_tUxz4"}; -------------------------------------------------------------------------------- /client/Decide/components/TermsAndConditions/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .warrantyList_3BfSg { 4 | margin-left: 32px; 5 | } 6 | 7 | .warrantyListItem_zbT7E { 8 | padding-left: 0; 9 | font-size: 14px; 10 | } 11 | 12 | .warrantyLink_2KoEz { 13 | margin-bottom: 8px; 14 | display: block; 15 | color: #0046be; 16 | } 17 | 18 | .checkBox_tUxz4 .input-container.validation-error .error-msg { 19 | max-height: none; 20 | } 21 | -------------------------------------------------------------------------------- /client/Decide/components/TermsAndConditions/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | import makeGetMsgFunction from "utils/localization/makeGetMsgFunction"; 3 | 4 | const get = makeGetMsgFunction("components.TermsAndConditions"); 5 | 6 | export default defineMessages({ 7 | agreement: get("agreement"), 8 | quebec: get("quebec"), 9 | manufacturer: get("manufacturer"), 10 | geeksquad: get("geeksquad"), 11 | }); 12 | -------------------------------------------------------------------------------- /client/Decide/components/VerticalDivider/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import * as styles from "./style.css"; 4 | 5 | interface Props { 6 | className?: string; 7 | } 8 | 9 | const VerticalDivider = (props: Props) => { 10 | return ( 11 |
12 | ); 13 | }; 14 | 15 | export default VerticalDivider; 16 | -------------------------------------------------------------------------------- /client/Decide/components/VerticalDivider/style-b66cc1da3b227.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"verticalDivider":"verticalDivider_2EJt6"}; -------------------------------------------------------------------------------- /client/Decide/components/VerticalDivider/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .verticalDivider_2EJt6 { 4 | border-right: 1px solid #e0e6ef; 5 | width: 0; 6 | margin-left: 8px; 7 | } 8 | -------------------------------------------------------------------------------- /client/Decide/components/WarrantyBenefitsMessage/styles-206c1c9661548.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"title":"title_BxiHg","container":"container_1etjN"}; -------------------------------------------------------------------------------- /client/Decide/components/WarrantyBenefitsMessage/styles.css: -------------------------------------------------------------------------------- 1 | .title_BxiHg { 2 | font-weight: 600; 3 | } 4 | 5 | .container_1etjN { 6 | font-size: 14px; 7 | line-height: 24px; 8 | } 9 | 10 | .container_1etjN p, 11 | .container_1etjN li { 12 | font-size: 14px; 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/components/WarrantyOptions/index.ts: -------------------------------------------------------------------------------- 1 | import WarrantyOptions from "./WarrantyOptions"; 2 | 3 | export default WarrantyOptions; 4 | -------------------------------------------------------------------------------- /client/Decide/components/WarrantyOptions/styles-3284808316244.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"warrantyBoxContainer":"warrantyBoxContainer_3tzjj","warrantyBox":"warrantyBox_2Hr6N","warrantyConditionsText":"warrantyConditionsText_3Bk5b"}; -------------------------------------------------------------------------------- /client/Decide/components/WarrantyOptions/styles.css: -------------------------------------------------------------------------------- 1 | .warrantyBoxContainer_3tzjj { 2 | padding: 16px 0; 3 | } 4 | 5 | .warrantyBoxContainer_3tzjj .warrantyBox_2Hr6N:last-child { 6 | margin-bottom: 0; 7 | } 8 | 9 | .warrantyConditionsText_3Bk5b { 10 | color: #55555a; 11 | font-size: 12px; 12 | line-height: 16px; 13 | margin: 8px 0 0; 14 | } 15 | 16 | @media (min-width: 1025px) { 17 | .warrantyBoxContainer_3tzjj { 18 | width: 300px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /client/Decide/components/WriteReviewButton/style-905176af99539.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"writeReviewButton":"writeReviewButton_1dIVg","innerButton":"innerButton_25y88"}; -------------------------------------------------------------------------------- /client/Decide/components/WriteReviewButton/style.css: -------------------------------------------------------------------------------- 1 | .writeReviewButton_1dIVg { 2 | margin: 16px 0 24px; 3 | } 4 | 5 | .innerButton_25y88 { 6 | width: 100%; 7 | height: 48px; 8 | } 9 | 10 | @media (min-width: 768px) { 11 | .writeReviewButton_1dIVg { 12 | margin: 12px 0 6px; 13 | } 14 | 15 | .innerButton_25y88 { 16 | width: auto; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /client/Decide/components/WriteReviewButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | writeReviewButton: {id: "components.writeReviewButton"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/constants/Seller/index.ts: -------------------------------------------------------------------------------- 1 | export const sellerReviewSubmissionStatus = { 2 | duplicate: "Duplicate", 3 | fail: "Fail", 4 | invalid: "Invalid", 5 | success: "Success", 6 | }; 7 | -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/components/RequiredPartsOptIn/styles-631576991214b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"required-parts-opt-in":"required-parts-opt-in_gGxal","radioButton":"radioButton_2luoM"}; -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/components/RequiredPartsOptIn/styles.css: -------------------------------------------------------------------------------- 1 | .required-parts-opt-in_gGxal { 2 | margin-top: 16px; 3 | } 4 | 5 | .required-parts-opt-in_gGxal .radioButton_2luoM { 6 | margin-left: 8px; 7 | } 8 | -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/components/RequiredPartsOptIn/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | import makeGetMsgFunction from "utils/localization/makeGetMsgFunction"; 3 | 4 | const get = makeGetMsgFunction("pages.AddonsPage.components.RequiredPartsOptIn"); 5 | 6 | export default defineMessages({ 7 | requiredPartsOptInNo: get("option.no"), 8 | requiredPartsOptInYes: get("option.yes"), 9 | }); 10 | -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/components/RequiredProducts/index.ts: -------------------------------------------------------------------------------- 1 | import RequiredProducts from "./RequiredProducts"; 2 | 3 | export default RequiredProducts; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/index.ts: -------------------------------------------------------------------------------- 1 | import AddonsPage from "./AddonsPage"; 2 | 3 | export default AddonsPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/AddonsPage/utils/transformToMarkup.ts: -------------------------------------------------------------------------------- 1 | const transformToUnorderedList = (list: string[]) => { 2 | const bulletPointsHtml = list.map((text) => `
  • ${text}
  • `).join(""); 3 | return `
      ${bulletPointsHtml}
    `; 4 | }; 5 | 6 | export {transformToUnorderedList}; 7 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/CheckoutButtons/styles-8dcad89505ff1.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"buttonSeparation":"buttonSeparation_nXYqH","checkoutOptionsPanel":"checkoutOptionsPanel_2V50X","optionsNotAvailable":"optionsNotAvailable_3l4wx","checkoutOptions":"checkoutOptions_1VB1L","continueToCheckout":"continueToCheckout_3Dgpe","disabled":"disabled_136zN"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/CheckoutFlowSelector/styles-7c51052fcfa5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"checkoutFlowSelector":"checkoutFlowSelector_2GOHR","disabled":"disabled_2W4kh","form":"form_1WdAH","qpuInCartStateMessage":"qpuInCartStateMessage_12Gas"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/EmptyCart/styles-ce30ffb36fcc8.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"content":"content_bK_Rp","icon":"icon_WXhre","textContainer":"textContainer_1rcqI"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/EmptyCart/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | emptyCartHeader: {id: "components.BasketPage.EmptyCart.emptyCartHeader"}, 5 | emptyCartText: {id: "components.BasketPage.EmptyCart.emptyCartText"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/FreeItem/styles-861af5d55d9f4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3mL1K","freeItemHeader":"freeItemHeader_VIvPp","freeItemContent":"freeItemContent_bgqxc","details":"details_UbyPe","quantity":"quantity_1_0EH","thumbnail":"thumbnail_3UtLY","discount":"discount_xC3Ni","offer":"offer_1SmXQ","freeItems":"freeItems_3nBmk"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/ParentProduct/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | removeItem: { 5 | defaultMessage: "Remove", 6 | id: "BasketPage.components.LineItem.ParentProduct.removeItem", 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/PromotionItems/styles-6510209fddcfd.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"promoItemsTable":"promoItemsTable_OPNYj","itemLevelDiscountDescription":"itemLevelDiscountDescription_dYGvA","leftCol":"leftCol_1mUt1","rightCol":"rightCol_QIvlk","promoTotalText":"promoTotalText_a3Sck","promoTotalValue":"promoTotalValue_12OR0"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/PromotionItems/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | PromotionalDiscount: { 5 | defaultMessage: "Promotional Discount", 6 | description: "Promotional Discount header", 7 | id: "BasketPage.components.LineItem.PromotionalItems.PromotionalDiscount", 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/RequiredPartsItem/styles-20da90d2dae7b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reqPartsHeader":"reqPartsHeader_2nmH8","requiredPartsItemDetails":"requiredPartsItemDetails_3br-i","requiredPartsDesc":"requiredPartsDesc_1yfJ1","seeRequiredPartsItemLink":"seeRequiredPartsItemLink_12hC_"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/SubTotal/styles-51fefa2409f9b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"subTotalTable":"subTotalTable_zIcPD","leftCol":"leftCol_1Th4v","rightCol":"rightCol_2T-9C","subTotalText":"subTotalText_2-4c1"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LineItem/SubTotal/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | ItemSubtotal: { 5 | defaultMessage: "Item Subtotal", 6 | description: "line item subtotal heading", 7 | id: "BasketPage.components.LineItem.SubTotal.ItemSubtotal", 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/LinkButton/styles-d26527f69bf7a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"linkButton":"linkButton_IaSrD","content":"content_s_5J6"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/OrderPromoItems/styles-f9f39a5e6395a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"orderPromo":"orderPromo_3_ek_"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/OrderPromoItems/styles.css: -------------------------------------------------------------------------------- 1 | .orderPromo_3_ek_ ol { 2 | margin: 0 0 8px; 3 | padding: 0; 4 | overflow: hidden; 5 | } 6 | .orderPromo_3_ek_ li { 7 | box-sizing: border-box; 8 | list-style: none; 9 | padding: 16px 16px 16px 40px; 10 | font-size: 14px; 11 | font-weight: 600; 12 | margin-bottom: 8px; 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductCard/ProductCardPrice/styles-2c6019203ac14.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productPricing":"productPricing_2Qo7t"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductCard/ProductCardPrice/styles.css: -------------------------------------------------------------------------------- 1 | /* override price margin */ 2 | .productPricing_2Qo7t > span > div { 3 | margin: 0; 4 | } 5 | @media (min-width: 1025px) { 6 | .productPricing_2Qo7t { 7 | text-align: right; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductList/styles-d56616b954a91.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"header":"header_GllEs","itemCount":"itemCount_lOr9D","saveForLaterList":"saveForLaterList_GHOj8","productListError":"productListError_5S65x","savedItem":"savedItem_jl-WA","saveForLaterEmpty":"saveForLaterEmpty_O9Uwc"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductListLink/styles-21669ae293626.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productListLink":"productListLink_3qoO1"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductListLink/styles.css: -------------------------------------------------------------------------------- 1 | .productListLink_3qoO1 { 2 | display: block; 3 | font-size: 14px; 4 | font-weight: 400; 5 | line-height: 20px; 6 | margin: 24px 0 8px; 7 | } 8 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/ProductListLink/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const config = { 4 | youAlsoHave: { 5 | id: "productListLink.youAlsoHave", 6 | }, 7 | items: { 8 | id: "productListLink.items", 9 | }, 10 | }; 11 | 12 | const messages: {[k in keyof typeof config]: FormattedMessage.MessageDescriptor} = defineMessages(config); 13 | 14 | export default messages; 15 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const messages: {[key: string]: FormattedMessage.MessageDescriptor} = defineMessages({ 4 | buttonText: { 5 | id: "saveForLater.buttonText", 6 | }, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterCard/MainProduct/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const messages: {[key: string]: FormattedMessage.MessageDescriptor} = defineMessages({ 4 | offlineMessage: {id: "saveForLaterCard.mainProduct.offlineMessage"}, 5 | }); 6 | 7 | export default messages; 8 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterCard/MoveToCartButton/styles-86d54841233f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"moveButton":"moveButton_3OjoX","moveButtonIcon":"moveButtonIcon_23lKe"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterCard/MoveToCartButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const messages: {[key: string]: FormattedMessage.MessageDescriptor} = defineMessages({ 4 | buttonText: { 5 | id: "moveToCart.buttonText", 6 | }, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterCard/RemoveSavedItemButton/styles-c07980651a24e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"removeSavedItemButton":"removeSavedItemButton_QckzF","removeSavedItemButtonIcon":"removeSavedItemButtonIcon_1pmnm"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/SaveForLaterCard/RemoveSavedItemButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const messages: {[key: string]: FormattedMessage.MessageDescriptor} = defineMessages({ 4 | buttonText: { 5 | id: "removeSavedItem.buttonText", 6 | }, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/TermsAndConditions/styles-835ad76886b13.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"geekSquadIcon":"geekSquadIcon_3chxu","geekSquadHeader":"geekSquadHeader_Hvutd","topWrapper":"topWrapper_8EdW6","geekSquadTC":"geekSquadTC_1ouoc"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/TermsAndConditions/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | geekSquadHeader: { 5 | id: "pages.BasketPage.components.TermsAndConditions.geekSquadHeader", 6 | }, 7 | errorMsg: { 8 | id: "pages.BasketPage.components.TermsAndConditions.errorMsg", 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/VendorItem/styles-de1b23e4262c2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"vendor":"vendor_2QFzx","header":"header_m7iIF","lineItems":"lineItems_2PRRQ","soldBy":"soldBy_2nCbc","sellerLogo":"sellerLogo_2hCpx"}; -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/components/VendorItem/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages, FormattedMessage} from "react-intl"; 2 | 3 | const messages: {[key: string]: FormattedMessage.MessageDescriptor} = defineMessages({ 4 | soldByEWA: {id: "BasketPage.components.VendorItem.SoldByEWA"}, 5 | }); 6 | 7 | export default messages; 8 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/constants/constants.ts: -------------------------------------------------------------------------------- 1 | export const BBYCA = "bbyca"; 2 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/index.ts: -------------------------------------------------------------------------------- 1 | import CartPage from "./CartPage"; 2 | 3 | export default CartPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/BasketPage/utils/hasQPUableItem/index.ts: -------------------------------------------------------------------------------- 1 | import {CartLineItem} from "models/Basket"; 2 | 3 | const hasQPUableItem = (lineItems: CartLineItem[]): boolean => { 4 | return ( 5 | lineItems.filter(({removed, savedForLater, availability}) => { 6 | return availability?.pickup?.purchasable && removed !== true && savedForLater !== true; 7 | }).length > 0 8 | ); 9 | }; 10 | 11 | export default hasQPUableItem; 12 | -------------------------------------------------------------------------------- /client/Decide/pages/BenefitsPage/style-93fdefb6f6a98.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"benefitsPageContainer":"benefitsPageContainer_Dl1EW","backBtnContainer":"backBtnContainer_2qvWp","backButton":"backButton_29WGZ","leftChevron":"leftChevron_3HmCt"}; -------------------------------------------------------------------------------- /client/Decide/pages/BenefitsPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | backBtn: { id: "checkout.containers.benefits.backBtn" }, 5 | title: { id: "checkout.containers.benefits.title" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/BusinessContactPage/components/CallUsCard/style-54ccc079fc81b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"noMargin":"noMargin_2gN6C","title":"title_2wTp9","helpLink":"helpLink_1XWDK"}; -------------------------------------------------------------------------------- /client/Decide/pages/BusinessContactPage/components/CallUsCard/style.css: -------------------------------------------------------------------------------- 1 | .noMargin_2gN6C { 2 | margin: 0; 3 | } 4 | 5 | .title_2wTp9 { 6 | margin-bottom: 8px; 7 | font-weight: 600; 8 | } 9 | 10 | .helpLink_1XWDK { 11 | font-size: 14px; 12 | font-weight: 600; 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewGuidelines/style-8c0295c35c47.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewGuidelines":"reviewGuidelines_QD8Ix"}; -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewGuidelines/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .reviewGuidelines_QD8Ix { 4 | margin-top: 8px; 5 | } 6 | 7 | .reviewGuidelines_QD8Ix li { 8 | font-size: 14px; 9 | line-height: 20px; 10 | color: #1d252c; 11 | } 12 | 13 | @media (min-width: 1025px) { 14 | .reviewGuidelines_QD8Ix { 15 | width: 380px; 16 | margin: 0 0 0 128px; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewStarRate/index.tsx: -------------------------------------------------------------------------------- 1 | import ReviewStarRate from "./ReviewStarRate"; 2 | 3 | export default ReviewStarRate; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewStarRate/style-2d258e8f07449.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"overallRatingLabel":"overallRatingLabel_37W0e","ratingContent":"ratingContent_2xvyW"}; -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewStarRate/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .overallRatingLabel_37W0e { 4 | font-size: 16px; 5 | line-height: 24px; 6 | margin-bottom: 8px; 7 | font-weight: 700; 8 | } 9 | 10 | .ratingContent_2xvyW { 11 | height: 70%; 12 | } 13 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewStarRate/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | overallRating: {id: "pages.productReview.overallRating"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewSubmitConfirmation/index.tsx: -------------------------------------------------------------------------------- 1 | import ReviewSubmitConfirmation from "./ReviewSubmitConfirmation"; 2 | 3 | export default ReviewSubmitConfirmation; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewSubmitConfirmation/styles-742f3700b277a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewSubmitConfirmationContainer":"reviewSubmitConfirmationContainer_2qDX3","thanksHeadline":"thanksHeadline_66slj","startShoppingLink":"startShoppingLink_2JfF_","rightArrowIcon":"rightArrowIcon_2K0A4"}; -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/components/ReviewSubmitConfirmation/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | headline: { id: "pages.productReview.thankYou.headline" }, 5 | legacyParagraph: { id: "pages.productReview.thankYou.legacyParagraph" }, 6 | paragraph: { id: "pages.productReview.thankYou.paragraph" }, 7 | startShoppingLink: { id: "pages.productReview.thankYou.startShoppingLink" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/index.tsx: -------------------------------------------------------------------------------- 1 | import CreateProductReviewPage from "./CreateProductReviewPage"; 2 | 3 | export enum CreateReviewPageDisplayModes { 4 | form = "form", 5 | success = "success", 6 | failure = "failure", 7 | } 8 | 9 | export default CreateProductReviewPage; 10 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateProductReviewPage/style-9fce4313659f5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"headline":"headline_tk6r1","productDetailsBriefLink":"productDetailsBriefLink_1TrCi","reviewSubmitErrorContainer":"reviewSubmitErrorContainer_3DO8v","customBreadcrumbListPadding":"customBreadcrumbListPadding_1uwIq","muiOverride":"muiOverride_3no6Q","dividerWithMargin":"dividerWithMargin_2GHAm"}; -------------------------------------------------------------------------------- /client/Decide/pages/CreateSellerReviewPage/index.ts: -------------------------------------------------------------------------------- 1 | import CreateSellerReviewPage from "./CreateSellerReviewPage"; 2 | 3 | export default CreateSellerReviewPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/CreateSellerReviewPage/style-25cff2ac91f7d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"formContainer":"formContainer_39gYH","instructionContainer":"instructionContainer_3VZah","instructionContent":"instructionContent_3Zz4u","termsContainer":"termsContainer_25Njr","ratingValue":"ratingValue_9Xg1Q","error":"error_2KEWu","returnButton":"returnButton_6S_K7","circularProgress":"circularProgress_3CrUF","container":"container_EwahQ","divider":"divider_3l_kk"}; -------------------------------------------------------------------------------- /client/Decide/pages/InHomeConsultationSignUpPage/styles-79ffa675dc31c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"submitButton":"submitButton_jKmyh","title":"title_f3-gJ","pageContainer":"pageContainer_2qmeI","contentContainer":"contentContainer_2JApC","label":"label_3BGsJ","input":"input_22qJL","select":"select_2OmIg","mutliSelect":"mutliSelect_1PB1_","hidden":"hidden_1BYFx","footerText":"footerText_FnSQT","fullHeight":"fullHeight_1fxO_"}; -------------------------------------------------------------------------------- /client/Decide/pages/InjectedPage/index.ts: -------------------------------------------------------------------------------- 1 | import InjectedPage from "./InjectedPage"; 2 | 3 | export default InjectedPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ManufacturerWarrantyPage/style-176d815745ad5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"manufacturerPageContainer":"manufacturerPageContainer_Pxzfy","backBtnContainer":"backBtnContainer_ochVQ","backButton":"backButton_2lbXM","leftChevron":"leftChevron_2O3PF"}; -------------------------------------------------------------------------------- /client/Decide/pages/ManufacturerWarrantyPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | backBtn: { id: "checkout.containers.manufacturer.backBtn" }, 5 | title: { id: "checkout.containers.manufacturer.title" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/MarketplaceSignUpPage/FormOptions.ts: -------------------------------------------------------------------------------- 1 | export enum RadioButtonOption { 2 | yes = "Yes", 3 | no = "No", 4 | } 5 | 6 | export enum CountryOption { 7 | canada = "Canada", 8 | usa = "United States", 9 | other = "Other Country", 10 | } 11 | -------------------------------------------------------------------------------- /client/Decide/pages/MarketplaceSignUpPage/utils/helper.ts: -------------------------------------------------------------------------------- 1 | export const mapToValues = (data: {}, acc: {}, fieldName: string) => { 2 | acc[fieldName] = data[fieldName].value; 3 | return acc; 4 | }; 5 | -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/ActivationProgressHeader/styles-7f5f35f79e32b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"activationProgressHeaderContainer":"activationProgressHeaderContainer_372ZN","activationProgressHeader":"activationProgressHeader_vzl66","pageTitle":"pageTitle_95_UJ","stylesOverride":"stylesOverride_1Puhf"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/CitySelector/styles-ece592b6f1ca4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"mediumInput":"mediumInput_FXMXx"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/CitySelector/styles.css: -------------------------------------------------------------------------------- 1 | .mediumInput_FXMXx { 2 | width: 100%; 3 | padding-bottom: 24px; 4 | } 5 | @media (min-width: 768px) { 6 | .mediumInput_FXMXx { 7 | width: 190px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/Controllers/styles-815775b8fc1ed.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"stepsControllers":"stepsControllers_3FBJI","continueButton":"continueButton_2xP9h","cancelButton":"cancelButton_ZWmi9"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/IconInfoItem/styles-ed0d96cd4b7df.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"iconInfoItem":"iconInfoItem_3U0m9","column":"column_21NsT","icon":"icon_2UpYh","row":"row_1ciRT"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/MobileActivationLineItem/styles-b6545f3065db6.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"mobileActivationLineItem":"mobileActivationLineItem_2SIEf","container":"container_3uExB","productImage":"productImage_35oEX","productImageColumn":"productImageColumn_2c4b7","productNameColumn":"productNameColumn_27D3U","productPriceColumn":"productPriceColumn_3jaZr"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/MobileActivationStepsGuide/styles-14662ef1aff0f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"mobileActivationStepsGuide":"mobileActivationStepsGuide_3bO0f","row":"row_36k1E","column":"column_1VMh6"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/MobileActivationStepsGuide/styles.css: -------------------------------------------------------------------------------- 1 | .mobileActivationStepsGuide_3bO0f { 2 | margin-bottom: 24px; 3 | } 4 | 5 | .row_36k1E { 6 | margin: 0; 7 | } 8 | 9 | .column_1VMh6 { 10 | padding: 0; 11 | } 12 | 13 | @media (max-width: 767px) { 14 | .column_1VMh6 { 15 | padding: 12px; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/MobileActivationType/ActivationOption.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import {ReactNode} from "react-redux"; 3 | 4 | interface ActivationOptionProps { 5 | header: ReactNode; 6 | body: ReactNode; 7 | } 8 | 9 | export const ActivationOption: React.FC = ({header, body}) => ( 10 | <> 11 |

    {header}

    12 |

    {body}

    13 | 14 | ); 15 | -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/StoreSelector/styles-0982e786f3399.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"mediumInput":"mediumInput_HH_hm"}; -------------------------------------------------------------------------------- /client/Decide/pages/MobileActivationPage/components/StoreSelector/styles.css: -------------------------------------------------------------------------------- 1 | .mediumInput_HH_hm { 2 | width: 100%; 3 | padding-bottom: 24px; 4 | } 5 | @media (min-width: 768px) { 6 | .mediumInput_HH_hm { 7 | width: 395px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ActivationGiftCard/style-b5b7acdb84137.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"giftCardSection":"giftCardSection_2eifY","activationTitle":"activationTitle_P6zn1"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ActivationGiftCard/style.css: -------------------------------------------------------------------------------- 1 | .giftCardSection_2eifY { 2 | margin-bottom: 24px; 3 | } 4 | 5 | .activationTitle_P6zn1, 6 | .giftCardSection_2eifY p { 7 | font-size: 14px; 8 | line-height: 20px; 9 | margin: 0; 10 | } 11 | 12 | .activationTitle_P6zn1 { 13 | font-weight: 600; 14 | margin-bottom: 8px; 15 | } 16 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ActivationGiftCard/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | activationTitle: {id: "components.ProductPricing.CellPhonePrice.activationTitle"}, 5 | activationOffer: {id: "components.ProductPricing.CellPhonePrice.activationOffer"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/BlueShirtChat/components/ChatStatus/styles-7fe08c2918ec9.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"chatStatus":"chatStatus_1ogtJ"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/BlueShirtChat/components/ChatStatus/styles.css: -------------------------------------------------------------------------------- 1 | .chatStatus_1ogtJ { 2 | font-size: 12px; 3 | line-height: 16px; 4 | display: inline-block; 5 | font-weight: 600; 6 | } 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/BundleOverview/style-90cdd5537c991.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"packageOverviewContainer":"packageOverviewContainer_28Ybg","bundleText":"bundleText_3E03T"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/BundleOverview/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | packageOverviewSubTitle: { id: "browse.components.BundleOverview.packageOverviewSubTitle" }, 5 | packageOverviewTitle: { id: "browse.components.BundleOverview.packageOverviewTitle" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/CorrectionNotice/style-2491f17ab2c3a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"correctionNoticeContainer":"correctionNoticeContainer_l2Lnz"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/CorrectionNotice/style.css: -------------------------------------------------------------------------------- 1 | .correctionNoticeContainer_l2Lnz { 2 | margin: 24px 0; 3 | } 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/DeliveryNotice/style-10f4042631f23.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"icon":"icon_3wC1X","iconStyle":"iconStyle_2PywI","deliveryNoticeMessageTitle":"deliveryNoticeMessageTitle_2EJpa","deliveryNotice":"deliveryNotice_3-C9v","hasEventLink":"hasEventLink_60gyf","deliveryNoticeMessageBody":"deliveryNoticeMessageBody_1ulBo","deliveryNoticeLink":"deliveryNoticeLink_3Say-","rightArrowIcon":"rightArrowIcon_zfzpd"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ExploreReviewsButton/style-a4080d43ab98a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"divider":"divider_1WwJd","exploreAllReviewsButtonDivider":"exploreAllReviewsButtonDivider_1p_Cs","innerButton":"innerButton_1SLzU"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ExploreReviewsButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | seeAllReviews: {id: "pages.productDetailPage.components.exploreReviewsButton.seeAllReviews"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/GranularRatings/index.ts: -------------------------------------------------------------------------------- 1 | import GranularRatings from "./GranularRatings"; 2 | 3 | export default GranularRatings; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/GranularRatings/style-55f63567da51.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"heading":"heading_2sZrs","scaleTitle":"scaleTitle_3qt8b","scaleValue":"scaleValue_2PopJ","reviewFilterContainer":"reviewFilterContainer_1ePMh","reviewFilterItem":"reviewFilterItem_3cQMQ","starContainer":"starContainer_ByC6X","percentageBarContainer":"percentageBarContainer_2YWBI","percentageBar":"percentageBar_3ONek"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/GranularRatings/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | heading: {id: "components.SortByRating.heading"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MarketplaceSellerInformation/style-6c54f1d3a19e2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3A34n","marketplaceContainer":"marketplaceContainer_1gGCu","marketplaceLogo":"marketplaceLogo_1z8LD","marketplaceNameLink":"marketplaceNameLink_2PX6p","marketplaceInfo":"marketplaceInfo_3JskU","marketplaceRating":"marketplaceRating_2CkfG","secondarySellerLink":"secondarySellerLink_3L82s","soldBy":"soldBy_1zL9W"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MarketplaceSellerInformation/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | sellerRating: { id: "product.containers.pdpPage.sellerRating" }, 5 | soldAndShippedBy: { id: "browse.components.marketplaceSeller.soldAndShippedBy" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MobileOfferDetails/components/MobilePlansInquiryButton/style-407a199803ddb.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"mobileFormLink":"mobileFormLink_mlWXD","mobileFormButton":"mobileFormButton_4SDiw"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MobileOfferDetails/components/MobilePlansInquiryButton/style.css: -------------------------------------------------------------------------------- 1 | .mobileFormLink_mlWXD { 2 | width: 100%; 3 | } 4 | 5 | .mobileFormLink_mlWXD:hover { 6 | text-decoration: none; 7 | } 8 | 9 | .mobileFormButton_4SDiw { 10 | display: block; 11 | height: 48px; 12 | width: 100%; 13 | padding: 0; 14 | } 15 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MobileOfferDetails/components/MobilePlansInquiryButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | mobileFormButton: {id: "pdpPage.mobileOfferDetails.mobileFormButton"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/MobileOfferDetails/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | storeStatusMessage: {id: "pdpPage.mobileOfferDetails.storeStatusMessage"}, 5 | storeStatusMessageCta: {id: "pdpPage.mobileOfferDetails.storeStatusMessageCta"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/OpenBoxOffer/style-67b479320428a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3lJl_","price":"price_AI11M","icon":"icon_1ymbj","link":"link_2GHIn"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/OpenBoxOffer/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | brandNew: {id: "components.openBoxOffer.brandNew"}, 5 | getItFor: {id: "components.openBoxOffer.getItFor"}, 6 | shopNew: {id: "components.openBoxOffer.shopNew"}, 7 | shopOutlet: {id: "components.openBoxOffer.shopOutlet"}, 8 | shopOther: {id: "components.openBoxOffer.shopOther"}, 9 | }); 10 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/BazaarvoiceQuestionsTab/styles-56fdd2edddf32.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"containerText":"containerText_3bisX"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/BazaarvoiceQuestionsTab/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | errorLoadingQuestions: {id: "components.QuestionsList.errorLoadingQuestions"}, 5 | pageIntroCopy: {id: "components.QuestionsList.pageIntroCopy"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/DetailsAndSpecs/style-c38d2f5a56baa.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"showMoreDetailsToggle":"showMoreDetailsToggle_3j2aQ","showMoreDetailsBody":"showMoreDetailsBody_J9bLJ"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/DetailsAndSpecs/style.css: -------------------------------------------------------------------------------- 1 | .showMoreDetailsToggle_3j2aQ button { 2 | margin: 8px 0 0; 3 | } 4 | 5 | .showMoreDetailsToggle_3j2aQ button { 6 | padding-left: 16px; 7 | } 8 | 9 | .showMoreDetailsBody_J9bLJ { 10 | padding: 0; 11 | } 12 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/DetailsAndSpecs/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | specsExpandableShowMoreDetails: {id: "components.ProductDetailTab.DetailsAndSpecs.expandableShowMoreDetails"}, 5 | specsExpandableShowLessDetails: {id: "components.ProductDetailTab.DetailsAndSpecs.expandableShowLessDetails"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/MoreInformation/components/ProductDescription/style-fe72ec9a6d186.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productDescription":"productDescription_2WBlx"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/MoreInformation/style-03e64773d21f9.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"readMoreToggle":"readMoreToggle_3HkvG","readMoreBody":"readMoreBody_OAsbp","moreInformation":"moreInformation_1u1Nn","bundle":"bundle_2RaA_","supportContent":"supportContent_2_u6f"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/MoreInformation/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | moreInformationExpandableReadMore: {id: "components.ProductDetailTab.MoreInformation.expandableReadMore"}, 5 | moreInformationExpandableShowLess: {id: "components.ProductDetailTab.MoreInformation.expandableShowLess"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ProductSpecs/style-71d77a9279174.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"specCategory":"specCategory_2rDp2","groupName":"groupName_3O9-v","itemContainer":"itemContainer_uqm6b","itemName":"itemName_GaNqp","itemValue":"itemValue_3FLTX"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ProductWhatsIncluded/style-91606e57d964a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"boxContentsContainer":"boxContentsContainer_1bKGR","boxContents":"boxContents_2Q4kV"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ReturnPolicy/BundleReturnPolicy/style-12bfba44fdf27.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"bundleReturnPolicy":"bundleReturnPolicy_2heuu"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ReturnPolicy/BundleReturnPolicy/style.css: -------------------------------------------------------------------------------- 1 | .bundleReturnPolicy_2heuu { 2 | font-size: 16px; 3 | line-height: 24px; 4 | color: #1d252c; 5 | margin: 0; 6 | padding: 8px 16px 24px; 7 | } 8 | @media (min-width: 768px) { 9 | .bundleReturnPolicy_2heuu { 10 | padding: 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ReturnPolicy/BundleReturnPolicy/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | content: {id: "components.BundleReturnPolicy.content"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ReturnPolicy/ProductReturnPolicy/style-672908383d13a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"specCategory":"specCategory_1KbYe","container":"container_1XvFQ","overwriteContainer":"overwriteContainer_cqIma","specContainer":"specContainer_2iBkq","icon":"icon_2C0wN","arrowIcon":"arrowIcon_Q5JmT","disclaimer":"disclaimer_3wcXI","ctaContainer":"ctaContainer_1SODH"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductDetailTab/components/ReviewsTab/style-778c60bd51e77.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewsListContainer":"reviewsListContainer_34mWL","reviewsTabContainer":"reviewsTabContainer_1y4c0","customMargin":"customMargin_3YLAT","exploreReviewContainer":"exploreReviewContainer_3pLTA","customButtonMargin":"customButtonMargin_15NhW"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductFooter/style-a7cb848b0eb7f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"header":"header_3X4FQ","divider":"divider_1EIyV","productFooter":"productFooter_3kgRq"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductFooter/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | customersAlsoViewed: {id: "pdp.recommendations.customersAlsoViewed"}, 5 | recentlyViewed: {id: "pdp.recommendations.recentlyViewed"}, 6 | sponsoredProducts: {id: "pdp.recommendations.sponsoredProducts"}, 7 | }); 8 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductLineItem/styles-2018755099959.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productLineItem":"productLineItem_2Xx2_","productDetails":"productDetails_21w-h","productSku":"productSku_2t4GT"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductOfferDetails/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | seeAllVendors: { id: "product.containers.pdpPage.seeAllVendors" }, 5 | soldByBestBuy: { id: "product.containers.pdpPage.soldByBestBuy" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductSizeVariants/style-64d80ea5707fb.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"selectedScreenSizeMessage":"selectedScreenSizeMessage_L2cTo","sizeVariantWrapper":"sizeVariantWrapper_1VGei","sizeVariantsLoading":"sizeVariantsLoading_2zevG"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductSizeVariants/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .selectedScreenSizeMessage_L2cTo { 4 | font-size: 14px; 5 | margin-bottom: 8px; 6 | line-height: 20px; 7 | } 8 | 9 | .sizeVariantWrapper_1VGei { 10 | margin: 16px; 11 | } 12 | 13 | .sizeVariantsLoading_2zevG { 14 | margin: 16px; 15 | } 16 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ProductSizeVariants/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | selectedScreenSizeMessage: { id: "components.ProductSizeVariants.selectedScreenSizeMessage" }, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ReviewFeedback/style-fc789a16afd2b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewFeedbackContainer":"reviewFeedbackContainer_2ulTr","reviewFeedbackInnerContainer":"reviewFeedbackInnerContainer_tSrG5","feedbackIcon":"feedbackIcon_N7x5r","feedbackCount":"feedbackCount_1WYja","reportButton":"reportButton_k-ZYW","feedbackSubmitted":"feedbackSubmitted_2dFYm","reportedText":"reportedText_2s6hL"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ReviewsAggregation/components/RecommendationSummary/style-159c7a84efc63.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"recommendationSummaryTitle":"recommendationSummaryTitle_36z18","recommendationSummaryDescription":"recommendationSummaryDescription_Rw2SR","boldedText":"boldedText_3-Yzd","percentageContainer":"percentageContainer_1Xk9N","percentage":"percentage_34Ose","happyFace":"happyFace_2xA3C"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ReviewsAggregation/style-798e941bc913f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewsStatsContainer":"reviewsStatsContainer_37pYP","reviewsTabContainer":"reviewsTabContainer_2eeqn","reviewsStatsRightPane":"reviewsStatsRightPane_1t9yW","noBorder":"noBorder_1QYzn","recommendationSummary":"recommendationSummary_2irZy","reviewsStatsLeftPane":"reviewsStatsLeftPane_3VWQY"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/ShowcaseBanner/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | cta: { id: "components.ShowcaseBanner.cta" }, 5 | bannerLabel: { id: "components.ShowcaseBanner.bannerLabel" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/SoldByBestBuy/style-77c3edca7d287.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"soldByBestBuy":"soldByBestBuy_44tSZ"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/SoldByBestBuy/style.css: -------------------------------------------------------------------------------- 1 | .soldByBestBuy_44tSZ { 2 | font-size: 14px; 3 | font-weight: 600; 4 | display: -webkit-box; 5 | display: -webkit-flex; 6 | display: flex; 7 | -webkit-box-align: center; 8 | -webkit-align-items: center; 9 | align-items: center; 10 | box-sizing: border-box; 11 | } 12 | 13 | .soldByBestBuy_44tSZ svg { 14 | margin-right: 8px; 15 | position: relative; 16 | } 17 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/SoldByBestBuy/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | soldByBestBuy: {id: "pdpPage.soldByBestBuy"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/SpecialOffers/style-e03751774c4ca.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"offersContainer":"offersContainer_3qj_5","offerItem":"offerItem_1gsnn","showClickable":"showClickable_VgLuA","container":"container_BGGX_","callOutTitle":"callOutTitle_NRbU7","callOutMessage":"callOutMessage_2pO-x","addToCartIcon":"addToCartIcon_13OSn"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/TargettedContent/index.ts: -------------------------------------------------------------------------------- 1 | import TargettedContent from "./TargettedContent"; 2 | export default TargettedContent; 3 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/Variants/components/VariantTextPillBox/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | showMore: {id: "pdp.productOfferDetails.variants.showMore"}, 5 | showFewer: {id: "pdp.productOfferDetails.variants.showFewer"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/Variants/components/style-39cc1d8f7c87c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"variantContainer":"variantContainer_3yRVs","header":"header_2NfdC","variantValue":"variantValue_wU-VZ"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/Variants/components/style.css: -------------------------------------------------------------------------------- 1 | .variantContainer_3yRVs { 2 | margin: 0; 3 | } 4 | 5 | .header_2NfdC { 6 | margin: 0 0 8px; 7 | line-height: 20px; 8 | font-size: 14px; 9 | } 10 | 11 | .variantValue_wU-VZ { 12 | font-weight: normal; 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/Variants/style-b2f442e6b61c7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"variantContainer":"variantContainer_1RSWe"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/Variants/style.css: -------------------------------------------------------------------------------- 1 | .variantContainer_1RSWe { 2 | margin-top: 24px; 3 | } 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/WarrantyBenefits/index.ts: -------------------------------------------------------------------------------- 1 | import WarrantyBenefits from "./WarrantyBenefits"; 2 | export default WarrantyBenefits; 3 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/components/WarrantyBenefits/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | import makeGetMsgFunction from "utils/localization/makeGetMsgFunction"; 3 | 4 | const get = makeGetMsgFunction("pages.productDetailPage.components.warrantyBenefits"); 5 | 6 | export default defineMessages({ 7 | benefits: get("benefits"), 8 | okay: get("okay"), 9 | gsp: get("gsp"), 10 | grp: get("grp"), 11 | }); 12 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/index.ts: -------------------------------------------------------------------------------- 1 | import ProductDetailPage from "./ProductDetailPage"; 2 | 3 | export default ProductDetailPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/utils/formatDateForDeliveryMessage.ts: -------------------------------------------------------------------------------- 1 | import * as moment from "moment"; 2 | 3 | const formatDateForDeliveryMessage = (year: number, month: number, day: number) => { 4 | const FULL_MONTH_DAY_YEAR_FORMAT = "LL"; 5 | return moment(new Date(year, month, day)).format(FULL_MONTH_DAY_YEAR_FORMAT); 6 | }; 7 | 8 | export default formatDateForDeliveryMessage; 9 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/utils/isDateToday.ts: -------------------------------------------------------------------------------- 1 | import {validateDateObjects, isSameDay} from "utils/date"; 2 | 3 | const isDateToday = (year: number, month: number, day: number) => { 4 | const today = new Date(Date.now()); 5 | const compare = new Date(year, month, day); 6 | validateDateObjects(compare); 7 | return isSameDay(compare, today); 8 | }; 9 | export default isDateToday; 10 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/utils/isDateTomorrow.ts: -------------------------------------------------------------------------------- 1 | import {validateDateObjects, isSameDay} from "utils/date"; 2 | 3 | const isDateTomorrow = (year: number, month: number, day: number): boolean => { 4 | const tomorrow = new Date(Date.now()); 5 | const compare = new Date(year, month, day); 6 | tomorrow.setDate(tomorrow.getDate() + 1); 7 | validateDateObjects(compare); 8 | return isSameDay(compare, tomorrow); 9 | }; 10 | 11 | export default isDateTomorrow; 12 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductDetailPage/utils/isSyndicated.ts: -------------------------------------------------------------------------------- 1 | import {SyndicationSource} from "models"; 2 | 3 | export default (syndicationSource: SyndicationSource) => 4 | !!syndicationSource && !!Object.keys(syndicationSource).length && !!syndicationSource.name; 5 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductOffersPage/style-a09460cd09f19.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"loadingIndicator":"loadingIndicator_16pdJ","link":"link_GKRoG","backArrow":"backArrow_3zcaN","offerContainer":"offerContainer_1QGad","content":"content_3hXD3","divider":"divider_NCImL"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductOffersPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | 2 | import { defineMessages } from "react-intl"; 3 | 4 | export default defineMessages({ 5 | back: { id: "offer.back" }, 6 | title: { id: "offer.title" }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductReviewVerificationPage/VerificationPlaceHolder/style-2f81d3a8659ea.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1czpQ","verificationPlaceholder":"verificationPlaceholder_1GK5l","titlePlaceholder":"titlePlaceholder_VVZ0L","paragraphPlaceholder":"paragraphPlaceholder_1jbDj","linkPlaceholder":"linkPlaceholder_2jffp"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductReviewVerificationPage/index.tsx: -------------------------------------------------------------------------------- 1 | import ProductReviewVerificationPage from "./ProductReviewVerificationPage"; 2 | 3 | export default ProductReviewVerificationPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductReviewVerificationPage/style-2e4a1fddcadd3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewEmailVerificationContainer":"reviewEmailVerificationContainer_1hpkA","thanksHeadline":"thanksHeadline_2-Etj","startShoppingLink":"startShoppingLink_15k8_","rightArrowIcon":"rightArrowIcon_2aNG3"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductReviewsPage/index.ts: -------------------------------------------------------------------------------- 1 | import ProductReviewsPage from "./ProductReviewsPage"; 2 | 3 | export default ProductReviewsPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/ProductSellersPage/components/ProductSellerPlaceholder/style-85c789be6cde3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pricePlaceholder":"pricePlaceholder_3eQ1C","addToCartPlaceholder":"addToCartPlaceholder_1kpCh","sellerNamePlaceholder":"sellerNamePlaceholder_3UPBA","sellerReviewPlaceholder":"sellerReviewPlaceholder_1NfST","sellerProfilePlaceholder":"sellerProfilePlaceholder_32vFj","offerPlaceholder":"offerPlaceholder_3cjrw"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductSellersPage/components/ProductSellersPlaceholder/style-18fc41b232f41.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productNamePlaceholder":"productNamePlaceholder_2eK2O","productImagePlaceholder":"productImagePlaceholder_1fpxS","productPlaceholder":"productPlaceholder_3iKP7"}; -------------------------------------------------------------------------------- /client/Decide/pages/ProductSellersPage/index.ts: -------------------------------------------------------------------------------- 1 | import ProductSellersPage from "./ProductSellersPage"; 2 | 3 | export default ProductSellersPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/SellerProfilePage/components/SellerFeedbackItem/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | fullname: { id: "accountsCommunication.components.Reviews.fullName" }, 5 | locationDate: { id: "accountsCommunication.components.Reviews.locationDate" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/Decide/pages/SellerProfilePage/components/SellerReviews/style-f37fa3e494bb1.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"reviewWrapper":"reviewWrapper_13L37","reviewListWrapper":"reviewListWrapper_2Ob53","rightArrowIcon":"rightArrowIcon_32xbq","icon":"icon_d4REG"}; -------------------------------------------------------------------------------- /client/Decide/pages/SellerProfilePage/index.ts: -------------------------------------------------------------------------------- 1 | import SellerProfilePage from "./SellerProfilePage"; 2 | 3 | export default SellerProfilePage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/SellerReviewsPage/index.ts: -------------------------------------------------------------------------------- 1 | import SellerReviewsPage from "./SellerReviewsPage"; 2 | 3 | export default SellerReviewsPage; 4 | -------------------------------------------------------------------------------- /client/Decide/pages/SellerReviewsPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | headTitle: { id: "pages.sellerReviewPage.headTitle" }, 5 | title: { id: "pages.sellerReviewPage.title" }, 6 | loadMore: { id: "pages.sellerReviewPage.loadMore" }, 7 | preHeadTitle: { id: "pages.sellerReviewPage.preHeadTitle" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/Decide/pages/StoreLocatorPage/components/StoreHoursTable/styles-f0b49a33ae631.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"storeHoursTable":"storeHoursTable_1wQ4D","tableHeader":"tableHeader_3GEdi"}; -------------------------------------------------------------------------------- /client/Decide/pages/StoreLocatorPage/components/StoreHoursTable/styles.css: -------------------------------------------------------------------------------- 1 | .storeHoursTable_1wQ4D .tableHeader_3GEdi { 2 | background: #fff; 3 | color: #1d252c; 4 | font-size: 16px; 5 | line-height: 24px; 6 | font-weight: 600; 7 | padding: 0 0 8px; 8 | } 9 | @media (min-width: 768px) { 10 | .storeHoursTable_1wQ4D .tableHeader_3GEdi { 11 | padding-left: 35%; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/Decide/pages/StoreLocatorPage/components/StoreResultsPlaceholder/style-e503245d6891.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1KZFd","topHr":"topHr_38cdD","listTitlePlaceholder":"listTitlePlaceholder_UHNnw","listItemPlaceholder":"listItemPlaceholder_bUMT6"}; -------------------------------------------------------------------------------- /client/Decide/providers/CellPhoneUpgradeEligibiltyProvider/carrierMetaDataCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import {CarrierMetaDataApiResponse} from "../../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({max: 1000, maxAge}); 6 | -------------------------------------------------------------------------------- /client/Decide/providers/CustomerReviewsProvider/customerReviewsCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import {CustomerReviews} from "../../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({max: 1000, maxAge}); 6 | -------------------------------------------------------------------------------- /client/Decide/providers/MediaProvider/mediaCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import {MediaApiResponse} from "../../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({max: 1000, maxAge}); 6 | -------------------------------------------------------------------------------- /client/Decide/providers/ProductProvider/productCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import {DetailedProduct} from "../../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({max: 1000, maxAge}); 6 | -------------------------------------------------------------------------------- /client/Decide/providers/ProductRelationshipProvider/compareProductVariant.ts: -------------------------------------------------------------------------------- 1 | import {ProductVariant} from "models"; 2 | 3 | export const compareProductVariant = (variant1: ProductVariant, variant2: ProductVariant): number => { 4 | const sku1 = variant1.sku.toUpperCase(); 5 | const sku2 = variant2.sku.toUpperCase(); 6 | if (sku1 > sku2) { 7 | return 1; 8 | } else if (sku1 < sku2) { 9 | return -1; 10 | } else { 11 | return 0; 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /client/Decide/providers/SellerProvider/sellerCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | 3 | import {Seller, SellerReviews, Rating} from "models"; 4 | 5 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 6 | export default LRU({max: 1000, maxAge}); 7 | -------------------------------------------------------------------------------- /client/Decide/utils/isCartEmpty/index.ts: -------------------------------------------------------------------------------- 1 | import {CartLineItem} from "models/Basket"; 2 | 3 | const isCartEmpty = (lineItems: CartLineItem[]) => { 4 | if (!lineItems?.length) { 5 | return true; 6 | } 7 | const hasPurchasableProduct = lineItems.some((lineItem) => { 8 | return !Boolean(lineItem.removed) && !Boolean(lineItem.savedForLater); 9 | }); 10 | 11 | return !hasPurchasableProduct; 12 | }; 13 | 14 | export default isCartEmpty; 15 | -------------------------------------------------------------------------------- /client/Decide/utils/validatePostalCode/index.ts: -------------------------------------------------------------------------------- 1 | export const validatePostalCode = ( 2 | val: string, 3 | minPostalCodeLength: number, 4 | validateCompletePostalCode: boolean, 5 | ): boolean => { 6 | if (val.length === minPostalCodeLength && !validateCompletePostalCode) { 7 | return /^[A-Za-z]\d[A-Za-z][ ]?$/.test(val); 8 | } else { 9 | return /^[A-Za-z]\d[A-Za-z][ ]?\d[A-Za-z]\d$/.test(val); 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /client/components/ABTestAdSlot/style-5fa807304aa3b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"hardCodedAdSlot":"hardCodedAdSlot_3-u_t","superLeaderboard":"superLeaderboard_2Sp0u","pencilAd":"pencilAd_iKfnd","hide":"hide_3yVPj"}; -------------------------------------------------------------------------------- /client/components/Advertisement/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | sponsoredLabel: {id: "components.ads.sponsoredLabel"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/components/AdvertisementList/style-795ec2eae9c6b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"advertisementListContainer":"advertisementListContainer_1HIqu","advertisementListItemWrapper":"advertisementListItemWrapper_2VURs"}; -------------------------------------------------------------------------------- /client/components/AgeGate/components/DateInput/styles-9734b3d71db1a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"dateInputs":"dateInputs_1oSo8","input":"input_aKBY6","year":"year_3j0qZ"}; -------------------------------------------------------------------------------- /client/components/AgeGate/styles-102918f146c7e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1-MnH","restrictedItem":"restrictedItem_3GDiE","clickOverlay":"clickOverlay_RtN01","accessibleContent":"accessibleContent_1UuJx","ageGate":"ageGate_1ahyL","active":"active_2P-tS","appear":"appear_1ZL83","background":"background_2dRx9","content":"content_21_yE","heading":"heading_2dr4F","restrictedMsg":"restrictedMsg_quNvd","errorMsg":"errorMsg_3lvKn"}; -------------------------------------------------------------------------------- /client/components/AgeGate/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | heading: {id: "ageGate.heading"}, 5 | restrictedMsg: {id: "ageGate.restrictedMsg"}, 6 | validationError: {id: "ageGate.validationError"}, 7 | overlayCta: {id: "ageGate.overlayCta"}, 8 | }); 9 | -------------------------------------------------------------------------------- /client/components/AgeGate/utils/validators/index.ts: -------------------------------------------------------------------------------- 1 | export const isNumeric = (val: any): boolean => Number.isInteger(parseInt(val, 10)); 2 | 3 | export const inRange = (min: number, max: number) => (val: any): boolean => isNumeric(val) && val >= min && val <= max; 4 | -------------------------------------------------------------------------------- /client/components/AnchorNav/style-55810c972c62.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"anchorNavWrp":"anchorNavWrp_1jwr8","navTitle":"navTitle_2zZ1c","anchorNav":"anchorNav_1w8wp"}; -------------------------------------------------------------------------------- /client/components/App/style-fecac253a9133.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pencilAdABCDTestContainer":"pencilAdABCDTestContainer_1ocOE","pageLoader":"pageLoader_YBA42","container":"container_3ohj7"}; -------------------------------------------------------------------------------- /client/components/App/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | homeLink: {id: "components.app.homeLink"}, 5 | title: {id: "components.app.title"}, 6 | rpuDisabled: { id: "product.containers.productStateActions.pickup.disabled" }, 7 | rpuDisabledInfo: { id: "product.containers.productStateActions.pickup.disabled.info" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/components/BackButton/style-298afd60449d5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"button":"button_1di-3","backButton":"backButton_IOfhe","backButtonIcon":"backButtonIcon_1NCZS"}; -------------------------------------------------------------------------------- /client/components/BackButton/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | backButton: { id: "components.backButton.back" }, 5 | }); 6 | -------------------------------------------------------------------------------- /client/components/Background/style-20051c230d034.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"backgroundContainer":"backgroundContainer_ryHAa","backgroundImage":"backgroundImage_3czwH","repeat":"repeat_1iz4C","light":"light_1tmAh","dark":"dark_xMnu-","extraSmallBanner":"extraSmallBanner_1TtGG","smallBanner":"smallBanner_2woD2","mediumBanner":"mediumBanner_2conJ"}; -------------------------------------------------------------------------------- /client/components/BadgeWrapper/style-458ebdf7f438b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"badgeWrpDefault":"badgeWrpDefault_2Eb6h"}; -------------------------------------------------------------------------------- /client/components/BadgeWrapper/style.css: -------------------------------------------------------------------------------- 1 | .badgeWrpDefault_2Eb6h > div { 2 | max-width: 132px; 3 | word-break: break-all; 4 | overflow: hidden; 5 | } 6 | .badgeWrpDefault_2Eb6h > div::after { 7 | top: 0; 8 | right: 0; 9 | z-index: 10; 10 | border-right-color: white; 11 | } 12 | -------------------------------------------------------------------------------- /client/components/BreadcrumbList/style-607d7f7892678.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"breadcrumbList":"breadcrumbList_16xQ3","breadcrumbLink":"breadcrumbLink_2wEUw","icon":"icon_2YxvQ","lastCrumb":"lastCrumb_7W0V8","hide":"hide_uev7D"}; -------------------------------------------------------------------------------- /client/components/CategoryIconList/components/CategoryIcon/style-565693076d333.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"link":"link_ldnKD","image":"image_1EvX_"}; -------------------------------------------------------------------------------- /client/components/CategoryIconList/style-da31b72dc3c4d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_23b42","category":"category_LRby8","shopByCategoryHeader":"shopByCategoryHeader_rDFfi","sectionTitle":"sectionTitle_36HOf"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/AgentOffline/styles-5fd6a67e1cc7c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"disabledComponent":"disabledComponent_2FHEc","logo":"logo_VB5xC","chatStatus":"chatStatus_3nPIy"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/AgentOffline/styles.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .disabledComponent_2FHEc { 4 | background-color: #f4f6f9; 5 | box-shadow: inset 0 0 8px 0 rgba(0, 0, 0, .08); 6 | } 7 | 8 | .logo_VB5xC { 9 | height: 42px; 10 | width: 42px; 11 | fill: var(--gray); 12 | } 13 | 14 | .chatStatus_3nPIy { 15 | font-size: 12px; 16 | line-height: 16px; 17 | display: inline-block; 18 | font-weight: 600; 19 | } 20 | -------------------------------------------------------------------------------- /client/components/ContactUs/components/AgentOffline/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | chatHeading: {id: "components.contactUs.chat.heading"}, 5 | chatAvailability: {id: "components.contactUs.chat.availability"}, 6 | chatOffline: {id: "components.contactUs.chat.offline"}, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/components/ContactUs/components/CallUs/styles-84eb75af43415.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"boxComponent":"boxComponent_3aqdP","link":"link_3RFs8","enabledComponent":"enabledComponent_3-rw9","callUs":"callUs_1byZv","callUsAvailability":"callUsAvailability_Xby8K","phoneLogo":"phoneLogo_3dzqs"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/CallUs/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | callUsMessage: {id: "components.contactUs.callUs.call"}, 5 | callUsAvailability: {id: "components.contactUs.callUs.availability"}, 6 | }); 7 | 8 | export default messages; 9 | -------------------------------------------------------------------------------- /client/components/ContactUs/components/ContactBlock/styles-ac80ab48529e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"boxComponent":"boxComponent_2fuaZ","link":"link_3eQrU","enabledComponent":"enabledComponent_2PQxh"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/EmailUs/style-24fab9c867c04.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"boxComponent":"boxComponent_3vpZH","link":"link_pljq7","enabledComponent":"enabledComponent_1H0lo","emailLogo":"emailLogo_9Nr2H","emailHeader":"emailHeader_1v2iJ","emailBody":"emailBody_3wsNI"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/EmailUs/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | emailHeading: {id: "components.contactUs.emailUs.email" }, 5 | emailSubheading: {id: "components.contactUs.emailUs.emailSubheading"}, 6 | }); 7 | 8 | export default messages; 9 | -------------------------------------------------------------------------------- /client/components/ContactUs/components/LiveChat/styles-44224c30d9e7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"boxComponent":"boxComponent_fPMe4","link":"link_2Yr7v","enabledComponent":"enabledComponent_DED53","agentUnavailable":"agentUnavailable_3UGF_","chatStatus":"chatStatus_2-43W","liveChat":"liveChat_2txLI","textBubbleLogo":"textBubbleLogo_2OkSZ"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/LiveChat/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | chatHeading: {id: "components.contactUs.chat.heading"}, 5 | chatAvailability: {id: "components.contactUs.chat.availability"}, 6 | chatOnline: {id: "components.contactUs.chat.online"}, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/components/ContactUs/components/StatusColor/styles-e1b9d4dc46201.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"liveAgentStatus":"liveAgentStatus_1-q4g","offline":"offline_277g7","online":"online_Io4fA","busy":"busy_3CNAU"}; -------------------------------------------------------------------------------- /client/components/ContactUs/components/StatusColor/styles.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .liveAgentStatus_1-q4g { 4 | height: 12px; 5 | width: 12px; 6 | border-radius: 50%; 7 | display: inline-block; 8 | margin-right: 8px; 9 | } 10 | 11 | .offline_277g7 { 12 | background-color: #bb0628; 13 | } 14 | 15 | .online_Io4fA { 16 | background-color: #308800; 17 | } 18 | 19 | .busy_3CNAU { 20 | background-color: #e37222; 21 | } 22 | -------------------------------------------------------------------------------- /client/components/ContactUs/styles-5ffd84c25e305.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"contactUs":"contactUs_30gSY","sectionTitle":"sectionTitle_3JCyb","contactUsSections":"contactUsSections_Ehi-I","contactBlock":"contactBlock_1bLGw","callToActionHeading":"callToActionHeading_3pQEv","phoneNumber":"phoneNumber_r1R68","availability":"availability_38vFx"}; -------------------------------------------------------------------------------- /client/components/ContactUs/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | callToActionHeading: {id: "components.ContactUs.heading"}, 5 | callToAction: {id: "components.ContactUs.callToAction"}, 6 | chatDisclaimer: {id: "components.ContactUs.chatDisclaimer"}, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/components/Dropdown/style-e62850791959e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"select":"select_A7zY8"}; -------------------------------------------------------------------------------- /client/components/Dropdown/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .select_A7zY8 { 4 | padding-bottom: 0; 5 | } 6 | 7 | .select_A7zY8 label { 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /client/components/EmbeddedVideo/style-07d3920991839.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"videoAspectContainer":"videoAspectContainer_3ka4Y","videoIframe":"videoIframe_2Mi8N"}; -------------------------------------------------------------------------------- /client/components/EmbeddedVideo/style.css: -------------------------------------------------------------------------------- 1 | .videoAspectContainer_3ka4Y { 2 | position: relative; 3 | width: 100%; 4 | height: 0; 5 | background-color: black; 6 | padding-top: 56.25%; 7 | } 8 | 9 | .videoAspectContainer_3ka4Y .videoIframe_2Mi8N { 10 | position: absolute; 11 | width: 100%; 12 | height: 100%; 13 | top: 0; 14 | left: 0; 15 | } 16 | -------------------------------------------------------------------------------- /client/components/Error/style-e5cb3f52c732.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"anchor":"anchor_2LIdS","container":"container_1ASvp","header":"header_263-p","subheader":"subheader_3lUU2","homepageButton":"homepageButton_2JRTC","timestamp":"timestamp_1vYVG","frenchToggle":"frenchToggle_QAZg4"}; -------------------------------------------------------------------------------- /client/components/ExpandableList/style-2ac2c0e3b2685.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"expandable":"expandable_3zjp6","expandableIcon":"expandableIcon_2Q_VK","topBorder":"topBorder_3cb0L","bottomBorder":"bottomBorder_JCu-s"}; -------------------------------------------------------------------------------- /client/components/FilterBar/SortDropdown/style-b4f77a40f844c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"sortLabel":"sortLabel_1M6yJ","container":"container_MIc_k","select":"select_2DHZW","productSortDropdown":"productSortDropdown_1VTnZ"}; -------------------------------------------------------------------------------- /client/components/FilterBar/style-8a6b198900976.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_uHvrD","element":"element_3ZxQf","icon":"icon_3mc-4","filterBtnContent":"filterBtnContent_1zFM6","filterBtnLabel":"filterBtnLabel__zgEL"}; -------------------------------------------------------------------------------- /client/components/ForegroundImage/style-59f36a0d7bdb8.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"foregroundImageContainer":"foregroundImageContainer_Cbjke","extraSmall":"extraSmall_1OJ0Z","left":"left_BFZNs","right":"right_18RnA","small":"small_2eBND","medium":"medium_3hwTM"}; -------------------------------------------------------------------------------- /client/components/GlobalContent/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | rpuDisabled: { id: "product.containers.productStateActions.pickup.disabled" }, 5 | rpuDisabledInfo: { id: "product.containers.productStateActions.pickup.disabled.info" }, 6 | browseOnly: { id: "product.containers.productStateActions.browseOnly" }, 7 | browseOnlyInfo: { id: "product.containers.productStateActions.browseOnly.info" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/components/Help/HelpCategory/styles-0e599a49358b5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"categoryBox":"categoryBox_2kiOy","categoryWrapper":"categoryWrapper_1Dr6m","categoryList":"categoryList_3HJPM","seeAllLink":"seeAllLink_2TADZ","logo":"logo_CYjWT"}; -------------------------------------------------------------------------------- /client/components/Help/HelpCategoryBox/styles-c7cedc7d4a319.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"sectionWrapper":"sectionWrapper_2KAdo","helpCategoryBox":"helpCategoryBox_2Cw6_","helpCategoryContainer":"helpCategoryContainer_2q-aw","helpCategory":"helpCategory_aIrIa","sectionTitle":"sectionTitle_2dWCr"}; -------------------------------------------------------------------------------- /client/components/Help/HelpCategoryBox/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | const messages = defineMessages({ 4 | helpHeading: { 5 | id: "components.helpCategoryBox.helpHeading", 6 | }, 7 | }); 8 | 9 | export default messages; 10 | -------------------------------------------------------------------------------- /client/components/Image/style-5acd1d0b97e26.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"hidden":"hidden_3LpeU","displayingImage":"displayingImage_3xp0y","sliderTarget":"sliderTarget_2Q87g","middle":"middle_1qXv8"}; -------------------------------------------------------------------------------- /client/components/ImageBlock/style-ddd5f7374afb1.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"imageBlock":"imageBlock_1CFC3","noMargin":"noMargin__53YJ","browserSize":"browserSize_1kQJ2","siteSize":"siteSize_2ra2Q","trueSize":"trueSize_Roedv"}; -------------------------------------------------------------------------------- /client/components/ImageGallery/style-ebe6adf3025e7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"sliderContainer":"sliderContainer_9JFkq","container":"container_1icpG","sliderIndexTitle":"sliderIndexTitle_3gNH_","productImageContainer":"productImageContainer_3LL_Q"}; -------------------------------------------------------------------------------- /client/components/InjectedContent/style-9341f571a42a4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"loadingIframe":"loadingIframe_16NDY","iframe":"iframe_3O3Xf","circularProgress":"circularProgress_2En2i"}; -------------------------------------------------------------------------------- /client/components/Link/styles-5ff5e15c25a16.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"link":"link_3hcyN","withChevron":"withChevron_3KAQS","chevron":"chevron_sDSzx","disabled":"disabled_rA8jh"}; -------------------------------------------------------------------------------- /client/components/MarketplaceSeller/style-894778f3a9ce3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"soldAndShippedBy":"soldAndShippedBy_319gh","marketplaceLogo":"marketplaceLogo_14OwV","marketplaceName":"marketplaceName_3FG8H"}; -------------------------------------------------------------------------------- /client/components/MarketplaceSeller/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | marketplaceSeller: { 5 | id: "search.components.marketplaceSeller.marketplaceSeller", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/MerchBanner/style-4a6db15d7e1e3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_10ITx","limitedSize":"limitedSize_3ejVZ","link":"link_21ndV","bannerImage":"bannerImage_2WaFv"}; -------------------------------------------------------------------------------- /client/components/MessageBox/style-85b26c28123b2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"messageBoxRebranding":"messageBoxRebranding_3AXfa","messageTitle":"messageTitle_3_SC0","messageDetails":"messageDetails_1diL7","icon":"icon_12AwQ","iconStyleMessage":"iconStyleMessage_4lars","messageDetailsWrapper":"messageDetailsWrapper_1RWji"}; -------------------------------------------------------------------------------- /client/components/OverallRatingSummary/style-9a1283877fe7c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"overallRatingSummary":"overallRatingSummary_h3WOS","overallScore":"overallScore_1vKOX","overallRating":"overallRating_2kAeM"}; -------------------------------------------------------------------------------- /client/components/PageContent/style-7ce55744a724b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3Sp8P","globalOverlay":"globalOverlay_3Vudt","npsSurveyModal":"npsSurveyModal_2lrZ_"}; -------------------------------------------------------------------------------- /client/components/PencilBanner/styles-05b43dfd30927.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"globalPencilBanner":"globalPencilBanner_JDDsP","messageContent":"messageContent_1N18a","messageTitle":"messageTitle_2OhEa","messageDetails":"messageDetails_2OzI3","light":"light_v4N41","dark":"dark_InT3m","ctaLink":"ctaLink_2qI7d","messageSubcontent":"messageSubcontent_2h4Gz"}; -------------------------------------------------------------------------------- /client/components/PillList/styles-2f1ff3cd11a26.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1lbbF","pill":"pill_2ra42","remove":"remove_3-4v1","removeBtn":"removeBtn_TuiyL","clearAll":"clearAll_1WS6s"}; -------------------------------------------------------------------------------- /client/components/Portal/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import ReactDOM from "react-dom"; 3 | 4 | const Portal: React.FunctionComponent<{target: HTMLElement}> = ({children, target}) => 5 | ReactDOM.createPortal(children, target); 6 | 7 | export default Portal; 8 | -------------------------------------------------------------------------------- /client/components/Price/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | price: { 5 | id: "components.price", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProdListingBanner/styles-72f7529a71fde.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"prodListingBanner":"prodListingBanner_WvZTx","dark":"dark_GBP3X","background":"background_33crN","foregroundImage":"foregroundImage_36PZm","bannerContent":"bannerContent_7L96a","headline":"headline_2yztI","ctaBlock":"ctaBlock_2mSFQ","logoContainer":"logoContainer_2QJi8","textOnly":"textOnly_3ok8-"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/AvailabilityIcon/style-7421a30c51c2b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"icon":"icon_DeHIB","purchasable":"purchasable_34Eak","nonePurchasable":"nonePurchasable_1QCO9"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/AvailabilityIcon/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .icon_DeHIB.purchasable_34Eak { 4 | fill: #308800; 5 | } 6 | 7 | .icon_DeHIB.nonePurchasable_1QCO9 { 8 | fill: #55555a; 9 | } 10 | -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/AvailabilityPlaceHolder/style-fc5ade5dd25c7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_2dyp6","availabilityContainer":"availabilityContainer_3khtV","placeholderContainer":"placeholderContainer_239Er","titlePlaceholder":"titlePlaceholder_3yNBK","descriptionPlaceholder":"descriptionPlaceholder_2oSPX","iconPlaceholder":"iconPlaceholder_3whgT"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/Shipping/style-b27666f89efbd.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"shippingAvailability":"shippingAvailability_2X3xt"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/ShippingMessage/styles-e25965176fea7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1DAvI"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/components/ShippingMessage/styles.css: -------------------------------------------------------------------------------- 1 | .container_1DAvI { 2 | font-size: 12px; 3 | line-height: 20px; 4 | margin-bottom: 0; 5 | display: inline-block; 6 | font-weight: 400; 7 | } 8 | -------------------------------------------------------------------------------- /client/components/ProductAvailability/style-c4085ccec3cc9.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"availabilityMessageSearch":"availabilityMessageSearch_1KfqF","availabilityMessageSearchPickup":"availabilityMessageSearchPickup_1h9CR","iconStyle":"iconStyle_H9oNs","availabilityMessage":"availabilityMessage_Ev_6A"}; -------------------------------------------------------------------------------- /client/components/ProductAvailability/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | InStock: { 5 | id: "search.components.ProductAvailability.Pickup.InStock", 6 | }, 7 | OutOfStock: { 8 | id: "search.components.ProductAvailability.Pickup.OutOfStock", 9 | }, 10 | ActivateOnline: { 11 | id: "search.components.ProductAvailability.Pickup.ActivateOnline", 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductPrice/style-a9cfaa6d4aeb5.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"rightEndPrice":"rightEndPrice_6y_hS","small":"small_3ifZO","medium":"medium_za6t1","large":"large_3aP7Z","hidden":"hidden_2dkHX","salePrice":"salePrice_kTFZ3","price":"price_FHDfG","screenReaderOnly":"screenReaderOnly_3anTj"}; -------------------------------------------------------------------------------- /client/components/ProductCost/ProductPrice/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | formattedPriceWithSuperscriptCent: { 5 | id: "components.price.formattedPriceWithSuperscriptCent", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductPricing/style-ab2a5438ca23.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"ehf":"ehf_2So0v","large":"large_vfLww","monthlyPayment":"monthlyPayment_3fKOU","salePrice":"salePrice_1BZ3X","medium":"medium_6sGt-","productPricingContainer":"productPricingContainer_3gTS3"}; -------------------------------------------------------------------------------- /client/components/ProductCost/ProductPricing/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | ehf: { 5 | id: "search.components.productItemPricing.ehf", 6 | }, 7 | monthlyPayment: { 8 | id: "search.components.productItemPricing.monthlyPayment", 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaleEndDate/style-478764f4851ce.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productSaleEnds":"productSaleEnds_5TuMK"}; -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaleEndDate/style.css: -------------------------------------------------------------------------------- 1 | .productSaleEnds_5TuMK { 2 | font-size: 12px; 3 | line-height: 16px; 4 | color: #55555a; 5 | } 6 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaleEndDate/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | saleEnds: { 5 | id: "search.components.productItemPricing.saleEnds", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaving/style-0944d42f73b6b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"productSaving":"productSaving_3YmNX","top":"top_3XDS1"}; -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaving/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .productSaving_3YmNX { 4 | font-size: 12px; 5 | font-weight: 600; 6 | color: #bb0628; 7 | white-space: nowrap; 8 | } 9 | 10 | .productSaving_3YmNX.top_3XDS1 { 11 | display: block; 12 | } 13 | -------------------------------------------------------------------------------- /client/components/ProductCost/ProductSaving/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | save: { 5 | id: "search.components.productItemPricing.save", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductFinder/index.tsx: -------------------------------------------------------------------------------- 1 | import ProductFinder from "./ProductFinder"; 2 | 3 | export default ProductFinder; 4 | -------------------------------------------------------------------------------- /client/components/ProductImage/style-e86fa614b3def.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"applyResponsiveSquareTrick":"applyResponsiveSquareTrick_35RAF","touchActionManipulation":"touchActionManipulation_31CMi","cursorDefault":"cursorDefault_2p1ri","cursorPointer":"cursorPointer_37cTx","productImageContainer":"productImageContainer_1V2HD"}; -------------------------------------------------------------------------------- /client/components/ProductImageSlider/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | showingNumOfTotal: { id: "pdp.productDetails.productImageSlider.showingNumOfTotal"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/components/ProductListing/EndOfResults/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { FormattedMessage } from "react-intl"; 3 | import * as styles from "./style.css"; 4 | import messages from "./translations/messages"; 5 | 6 | const EndOfResults = () => { 7 | 8 | return
    ; 9 | 10 | }; 11 | 12 | export default EndOfResults; 13 | -------------------------------------------------------------------------------- /client/components/ProductListing/EndOfResults/style-3b9fb9beb1601.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"endOfList":"endOfList_b04RG"}; -------------------------------------------------------------------------------- /client/components/ProductListing/EndOfResults/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .endOfList_b04RG { 4 | background: #f4f6f9; 5 | color: #55555a; 6 | padding: 24px 0; 7 | text-align: center; 8 | } 9 | 10 | @media (min-width: 1025px) { 11 | .endOfList_b04RG { 12 | margin: 0 24px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /client/components/ProductListing/EndOfResults/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | endOfList: { 5 | id: "search.components.endOfResults.endOfList", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductListing/LoadMore/style-73a0c762e3ab6.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3gLZK","loadingContainer":"loadingContainer_15JRy","loadMoreButtonContainer":"loadMoreButtonContainer_35w02","button":"button_1Yg9v","loadMore":"loadMore_3AoXT","circularProgress":"circularProgress_23dxR","loadMoreRow":"loadMoreRow_1TEZj","loadMoreLink":"loadMoreLink_2cY6X"}; -------------------------------------------------------------------------------- /client/components/ProductListing/LoadMore/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | buttonText: { 5 | id: "search.components.loadMore.buttonText", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductListing/ProductListItem/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | sponsoredProductLabel: { 5 | id: "sponsoredProductLabel", 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/ProductListing/style-1116f18cdb84e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_24wJV","productLine":"productLine_2N9kG","productList":"productList_31W-E","materialOverride":"materialOverride_OOX2O","list":"list_3khgt","dynamicContent":"dynamicContent_2xNEP","productsRow":"productsRow_DcaXn"}; -------------------------------------------------------------------------------- /client/components/PromoBanner/style-f2549e7a6be55.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_2sKRg","bannerContainer":"bannerContainer_2FEdi","noPadding":"noPadding_7T0nB","textContainer":"textContainer_ZrwdC","ctaContainer":"ctaContainer_1eJhJ","icon":"icon_3ZAnE","arrowIcon":"arrowIcon_2jsAP","headline1":"headline1_297K7","headline2":"headline2_lGqUd","dividerWithMargin":"dividerWithMargin_3F7Cj"}; -------------------------------------------------------------------------------- /client/components/SectionTitle/style-7a4590be6242d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"sectionTitle":"sectionTitle_2nLse","h1":"h1_2pnAz","d1":"d1_1sgH6","d2":"d2_aJX9F"}; -------------------------------------------------------------------------------- /client/components/SingleButton/components/VideoModal/style-93a031dc6c1b4.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"videoLoader":"videoLoader_2lFQK","videoContainer":"videoContainer_P3NbV"}; -------------------------------------------------------------------------------- /client/components/SingleButton/styles-152319368d67.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"link":"link_3iw9l","dark":"dark_3Mlwh","singleButton":"singleButton_1pewo","secondary":"secondary_24Gtx","tertiary":"tertiary_2dxg8"}; -------------------------------------------------------------------------------- /client/components/Snackbar/style-a133ceb03358b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"snackBarActionButton":"snackBarActionButton_2XiNu","snackBarActionButtonText":"snackBarActionButtonText_1a_Lr"}; -------------------------------------------------------------------------------- /client/components/Snackbar/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .snackBarActionButton_2XiNu .snackBarActionButtonText_1a_Lr { 4 | color: #fff200; 5 | } 6 | -------------------------------------------------------------------------------- /client/components/StarRate/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | reviews: { 5 | id: "components.StarRate.reviews", 6 | }, 7 | reviewsCount: { 8 | id: "components.StarRate.reviewsCount", 9 | }, 10 | oneReviewCount: { 11 | id: "components.StarRate.oneReviewCount", 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /client/components/StoryBanner/style-cd4502a47b03.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"storyBannerRow":"storyBannerRow_303_Q","productMedia":"productMedia_2Xbs8","column":"column_2YVMi","textContainer":"textContainer_2SwTp","title":"title_1yqmG","body":"body_3YU2j","linkTextContainer":"linkTextContainer_1OPti","ctaIcon":"ctaIcon_1Ln0x","arrowIcon":"arrowIcon_Woddn","right":"right_135aq","left":"left_2K8j1"}; -------------------------------------------------------------------------------- /client/components/StyledHTML/styles-68736c791c84a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"text":"text_2go6_"}; -------------------------------------------------------------------------------- /client/components/SvgIcons/ProductImagePlaceholder/style-62185754143c8.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_2eR50","icon":"icon_1np5B"}; -------------------------------------------------------------------------------- /client/components/TextBlock/styles-03a56385b059b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"textBlockContainer":"textBlockContainer_2M49a","light":"light_1fhGs","sectionTitle":"sectionTitle_26Hh7","dark":"dark_11r4Q","wPadding":"wPadding_3PFy_","textcenter":"textcenter_3d-VF","textcentre":"textcentre_gIoaK","textright":"textright_2xs_n","textBlock":"textBlock_34z0e","legal":"legal_LtvdX","title":"title_2kEQ2"}; -------------------------------------------------------------------------------- /client/components/TextInput/style-ed8203062dd87.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"input":"input_1HDAU","error":"error_38sn_","messageContainer":"messageContainer_3SM0B","label":"label_1oORe"}; -------------------------------------------------------------------------------- /client/components/TextInput/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | overMaxLength: 5 | { id: "components.TextInput.overMaxLength" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/components/TitleHeader/style-1effa90b04192.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_1l_Qd","title":"title_3A6Uh","noPaddingTop":"noPaddingTop_8SwHq","noPaddingBottom":"noPaddingBottom_21dD_"}; -------------------------------------------------------------------------------- /client/components/VariantSwatch/VariantSwatchPlaceHolder/style-53fefa1044fb2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_jLN1I","variantHeaderPlaceholder":"variantHeaderPlaceholder_vbsgN","variantSwatchesPlaceholder":"variantSwatchesPlaceholder_1adu6","swatchContainer":"swatchContainer_VDuED"}; -------------------------------------------------------------------------------- /client/components/VariantSwatch/style-7fa0274525b84.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"container":"container_3Jmmq","expandableContainer":"expandableContainer_JvbIp","header":"header_3oHKT","variantContainer":"variantContainer_2dac9","swatchContainer":"swatchContainer_2uQQH","expandableInnerBody":"expandableInnerBody_hm6su","swatchImage":"swatchImage_23WRt","itemContainer":"itemContainer_1p4EA","selected":"selected_2LwLi","colorName":"colorName_2CCer"}; -------------------------------------------------------------------------------- /client/components/VariantSwatch/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | colour: { id: "pdp.productOfferDetails.variantSwatch.colour" }, 5 | showMoreColours: { id: "pdp.productOfferDetails.variantSwatch.showMoreColours" }, 6 | showLessColours: { id: "pdp.productOfferDetails.variantSwatch.showLessColours" }, 7 | }); 8 | -------------------------------------------------------------------------------- /client/components/YouTubePlayer/style-5c2a6198a7dff.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"videoContainer":"videoContainer_2xHTb","video-container":"video-container_2Dw7I","videoTitle":"videoTitle_2ut39","videoLine":"videoLine_2aP54"}; -------------------------------------------------------------------------------- /client/components/Zoomable/style-0978bb3bd883e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"zoomButtonsContainer":"zoomButtonsContainer_3k7DO","cursorGrab":"cursorGrab_24Zo5","zoomButton":"zoomButton_2UWGG","zoomableContainer":"zoomableContainer_1brxx"}; -------------------------------------------------------------------------------- /client/components/banners/BarBanner/styles-2a0878bfab474.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"barBanner":"barBanner_3ONwb","bannerContent":"bannerContent_2iL-v","foregroundImage":"foregroundImage_1e8w_","logoContainer":"logoContainer_1vrKp","dark":"dark_xmsks","featureBanner":"featureBanner_1HsEj","headline":"headline_3zEWk","left":"left_3VhXy","right":"right_WPACX","centre":"centre_3YSaT","ctaBlock":"ctaBlock_2nasZ"}; -------------------------------------------------------------------------------- /client/components/banners/FeatureBanner/styles-d550b5d6d2458.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"featureBanner":"featureBanner_HhtAC","bannerContent":"bannerContent_ToVRk","foregroundImage":"foregroundImage_ISCMO","dark":"dark_WYRQY","logoContainer":"logoContainer_ZNutH","logo":"logo_KWbD6","left":"left_2XLcg","right":"right_1Z_t0","centre":"centre_2MetX","ctaBlock":"ctaBlock_vIBWj"}; -------------------------------------------------------------------------------- /client/components/banners/HeroBanner/styles-15c7cb3c7613c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"heroBanner":"heroBanner_11atp","bannerContent":"bannerContent_2n9PU","foregroundImage":"foregroundImage_153SW","dark":"dark_16jbu","featureBanner":"featureBanner_3aZoZ","logoContainer":"logoContainer_2NOBm","logo":"logo_3efxt","left":"left_3iq-5","right":"right_19K5n","centre":"centre_3NpyQ","ctaBlock":"ctaBlock_1nEyA"}; -------------------------------------------------------------------------------- /client/components/banners/SlideShowFeatureBanner/style-5f195256ae07c.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"icon":"icon_1ucxw","sliderPrevArrow":"sliderPrevArrow_VaXfd","sliderNextArrow":"sliderNextArrow_1Uf-W","disabled":"disabled_305W8","dots":"dots_1R5EX","featureBanner":"featureBanner_287l8","adSlot":"adSlot_2G2GF","featureBannerSlideshow":"featureBannerSlideshow_3AsgK","featureBannerContainer":"featureBannerContainer_1V7Mo"}; -------------------------------------------------------------------------------- /client/components/banners/Story/components/StoryRow/style-086975196c87f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"storyRow":"storyRow_3LqAa","primaryCta":"primaryCta_3W9YN","ctaWrp":"ctaWrp_1xfrE","light":"light_3fFWX","dark":"dark_My4CV","long":"long_248eD","withBackground":"withBackground_3-7JR","body":"body_3CYPR","foregroundImage":"foregroundImage_GH9ri","lastRow":"lastRow_YD61k","left":"left_1XUwr"}; -------------------------------------------------------------------------------- /client/components/banners/Story/style-dbc626ed1778e.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"StoryContainer":"StoryContainer_2Afaq","hasBackground":"hasBackground_1ri3E","SectionTitle":"SectionTitle_2vLn-","dark":"dark_1UjlC","StoryBackground":"StoryBackground_1URlx","lastChild":"lastChild_1upon","singleStory":"singleStory_2YHQZ","bgImg":"bgImg_2wYXP","bgColor":"bgColor_3eI8q","longRow":"longRow_33yZb","storyRowItem":"storyRowItem_1zTTs"}; -------------------------------------------------------------------------------- /client/components/banners/Timeline/styles-cbd60c32ede03.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"timeline":"timeline_1l9Eg","stage":"stage_9ISTN","enter":"enter_2Kq0F","slideUp":"slideUp_2y5wu","zoomIn":"zoomIn_23EJx","active":"active_2FWJt","leave":"leave_3uZMj","fadeOut":"fadeOut_Zjo_z"}; -------------------------------------------------------------------------------- /client/components/banners/TitleBanner/styles-259641bdd78a7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"titleBanner":"titleBanner_3QLvg","bannerContent":"bannerContent_3fP1d","ctaBlock":"ctaBlock_1QXIZ","headline":"headline_1muyV","subHeadline":"subHeadline_1_rfU","disclaimer":"disclaimer_2HQjJ","dark":"dark_3KRqp"}; -------------------------------------------------------------------------------- /client/components/banners/components/CTABlock/styles-f2a58965bb941.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"ctaWrp":"ctaWrp_19kCR","primaryCta":"primaryCta_oTAT9","secondaryCta":"secondaryCta_1iTwM","videoLink":"videoLink_1sJmg","dark":"dark_3ua7w"}; -------------------------------------------------------------------------------- /client/components/banners/components/Countdown/components/FlipCard/styles-75781d9a10ba2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"card":"card_2lloB","next":"next_33nIv","current":"current_1oIRA","unit":"unit_wrr0S","cube":"cube_1oYWF","flip":"flip_3OMTR","rotate":"rotate_mtLtx"}; -------------------------------------------------------------------------------- /client/components/banners/components/Countdown/styles-50d4c9c128093.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"countdownClock":"countdownClock_6dpKv","label":"label_1o5Jf","counter":"counter_1cC41","unitSection":"unitSection_1q_Ex","cardContainer":"cardContainer_qL1iF","title":"title_3Yw-r","flipCard":"flipCard_B-FBM"}; -------------------------------------------------------------------------------- /client/components/banners/components/Countdown/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | days: {id: "countdown.days"}, 5 | hours: {id: "countdown.hours"}, 6 | minutes: {id: "countdown.minutes"}, 7 | seconds: {id: "countdown.seconds"}, 8 | }); 9 | -------------------------------------------------------------------------------- /client/components/banners/components/DateOverride/styles-8886dc95fbab6.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"dateOverride":"dateOverride_39h6k","label":"label_2jiHh","input":"input_rNjUZ","icon":"icon_1suKf","hidden":"hidden_2zF2Z"}; -------------------------------------------------------------------------------- /client/components/banners/components/Disclaimer/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import {classname} from "utils/classname"; 3 | import * as styles from "./style.css"; 4 | 5 | interface Props { 6 | text: string; 7 | className?: string; 8 | } 9 | 10 | const Disclaimer: React.FC = ({text, className}) => ( 11 |

    {text}

    12 | ); 13 | 14 | export default Disclaimer; 15 | -------------------------------------------------------------------------------- /client/components/banners/components/Disclaimer/style-5db3cf7c00b45.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"disclaimer":"disclaimer_3_wHO"}; -------------------------------------------------------------------------------- /client/components/banners/components/Disclaimer/style.css: -------------------------------------------------------------------------------- 1 | .disclaimer_3_wHO { 2 | margin-top: 16px; 3 | font-size: 12px; 4 | line-height: 16px; 5 | } 6 | -------------------------------------------------------------------------------- /client/components/banners/components/Headline/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import * as styles from "./styles.css"; 3 | import {classname} from "utils/classname"; 4 | 5 | interface HeadlineProps { 6 | className?: string; 7 | } 8 | const Headline: React.FC = ({children, className = ""}) => ( 9 |

    {children}

    10 | ); 11 | export default Headline; 12 | -------------------------------------------------------------------------------- /client/components/banners/components/Headline/styles-436424ed493a3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"headline":"headline_2Ik-v"}; -------------------------------------------------------------------------------- /client/components/banners/components/Headline/styles.css: -------------------------------------------------------------------------------- 1 | .headline_2Ik-v { 2 | font-size: 20px; 3 | font-weight: 700; 4 | line-height: 24px; 5 | } 6 | @media (min-width: 768px) { 7 | .headline_2Ik-v { 8 | font-size: 24px; 9 | line-height: 32px; 10 | } 11 | } 12 | @media (min-width: 1025px) { 13 | .headline_2Ik-v { 14 | font-size: 32px; 15 | line-height: 40px; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/components/banners/components/Logo/styles-464051a46770d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"logoContainer":"logoContainer_BUPkH","logo":"logo_wQp4G"}; -------------------------------------------------------------------------------- /client/components/banners/components/Logo/styles.css: -------------------------------------------------------------------------------- 1 | .logoContainer_BUPkH { 2 | margin-bottom: 8px; 3 | text-align: center; 4 | } 5 | 6 | .logoContainer_BUPkH .logo_wQp4G { 7 | width: auto; 8 | max-width: 70%; 9 | margin: 0 auto; 10 | } 11 | @media (min-width: 768px) { 12 | .logoContainer_BUPkH { 13 | text-align: left; 14 | } 15 | 16 | .logoContainer_BUPkH .logo_wQp4G { 17 | max-width: 50%; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client/components/recommendations/RecentlyViewed/style-f0201dddeff26.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"titleCenter":"titleCenter_2iWSE","dividerWithMargin":"dividerWithMargin_22olB"}; -------------------------------------------------------------------------------- /client/components/recommendations/RecentlyViewed/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | recentlyViewed: {id: "components.recommendations.RecentlyViewed.heading"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/components/recommendations/TopSellers/style-8bc088eb37c31.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"titleCenter":"titleCenter_2tAyz","dividerWithMargin":"dividerWithMargin_2EGTm"}; -------------------------------------------------------------------------------- /client/components/recommendations/TopSellers/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | topSeller: {id: "pages.CategoryPage.components.TopSellers.heading"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/components/recommendations/components/RecommendedSkuList/style-5000462d595ad.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"header":"header_3F_1L","recommendedSkuList":"recommendedSkuList_dYRMC"}; -------------------------------------------------------------------------------- /client/components/recommendations/components/RecommendedSkuList/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .header_3F_1L { 4 | -webkit-box-flex: 1; 5 | -webkit-flex: 1 100%; 6 | flex: 1 100%; 7 | margin: 24px 0 16px; 8 | font-size: 20px; 9 | font-weight: 600; 10 | } 11 | 12 | .recommendedSkuList_dYRMC { 13 | margin-bottom: 16px; 14 | } 15 | 16 | @media (min-width: 1025px) { 17 | .header_3F_1L { 18 | margin: 32px 0 16px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /client/constants/Analytics/index.ts: -------------------------------------------------------------------------------- 1 | export const geoLocationErrorCode = { 2 | 1: "PERMISSION_DENIED", 3 | 2: "POSITION_UNAVAILABLE", 4 | 3: "TIMEOUT", 5 | }; 6 | -------------------------------------------------------------------------------- /client/constants/Environment/index.ts: -------------------------------------------------------------------------------- 1 | export const productionStackEnv: string[] = ["production", "staging", "dr"]; 2 | -------------------------------------------------------------------------------- /client/constants/SponsoredProducts/index.ts: -------------------------------------------------------------------------------- 1 | export const maxSearchResultSponsoredProducts = 4; 2 | -------------------------------------------------------------------------------- /client/constants/User/index.ts: -------------------------------------------------------------------------------- 1 | export const positionErrorCode = { 2 | deny: 1, 3 | timeout: 3, 4 | unavailable: 2, 5 | }; 6 | -------------------------------------------------------------------------------- /client/errors/GeoLocationError.ts: -------------------------------------------------------------------------------- 1 | import WebappError from "./WebappError"; 2 | 3 | export class GeoLocationError extends WebappError { 4 | constructor(code: number, message: string) { 5 | super(message); 6 | this.name = "GeoLocationError"; 7 | Object.setPrototypeOf(this, GeoLocationError.prototype); 8 | } 9 | } 10 | 11 | export default GeoLocationError; 12 | -------------------------------------------------------------------------------- /client/errors/RequestError.ts: -------------------------------------------------------------------------------- 1 | import WebappError from "./WebappError"; 2 | 3 | export abstract class RequestError extends WebappError { 4 | constructor(public uri: string, message?: string, innerError?: Error) { 5 | super(message, innerError); 6 | this.name = "RequestError"; 7 | Object.setPrototypeOf(this, RequestError.prototype); 8 | } 9 | } 10 | 11 | export default RequestError; 12 | -------------------------------------------------------------------------------- /client/errors/SpecialOfferError.ts: -------------------------------------------------------------------------------- 1 | import WebappError from "./WebappError"; 2 | 3 | export class SpecialOfferError extends WebappError { 4 | 5 | constructor(code: number, message?: string) { 6 | super(message); 7 | this.name = "SpecialOfferError"; 8 | this.statusCode = code; 9 | Object.setPrototypeOf(this, SpecialOfferError.prototype); 10 | } 11 | } 12 | 13 | export default SpecialOfferError; 14 | -------------------------------------------------------------------------------- /client/errors/StatusCode.ts: -------------------------------------------------------------------------------- 1 | export enum StatusCode { 2 | OK = 200, 3 | Delete = 204, 4 | BadRequest = 400, 5 | NotFound = 404, 6 | InternalServerError = 500, 7 | } 8 | 9 | export default StatusCode; 10 | -------------------------------------------------------------------------------- /client/errors/WebappError.ts: -------------------------------------------------------------------------------- 1 | import * as serializeError from "serialize-error"; 2 | 3 | export class WebappError extends Error { 4 | 5 | constructor(message?: string, public innerError?: Error) { 6 | super(message); 7 | this.name = "WebappError"; 8 | Object.setPrototypeOf(this, WebappError.prototype); 9 | } 10 | 11 | public toJSON() { 12 | return serializeError(this); 13 | } 14 | } 15 | 16 | export default WebappError; 17 | -------------------------------------------------------------------------------- /client/errors/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./HttpRequestType"; 2 | export * from "./StatusCode"; 3 | export * from "./ConnectionError"; 4 | export * from "./ErrorType"; 5 | export * from "./GeoLocationError"; 6 | export * from "./GetAvailabilitiesError"; 7 | export * from "./HttpRequestError"; 8 | export * from "./RedirectError"; 9 | export * from "./RequestError"; 10 | export * from "./WebappError"; 11 | export * from "./SellerReviewDuplicateError"; 12 | export * from "./SpecialOfferError"; 13 | -------------------------------------------------------------------------------- /client/models/Content/index.ts: -------------------------------------------------------------------------------- 1 | export enum ContentContexts { 2 | saleMessage = "sale_message", 3 | vendorFunded = "vendor_funded", 4 | } 5 | -------------------------------------------------------------------------------- /client/pages/CategoryPage/components/Categories/style-5b29a88fc608b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"expandableList":"expandableList_2K0VR","container":"container_ZVvkg","categoryName":"categoryName_1ljEf","categoryActive":"categoryActive_30b1J","facetName":"facetName_3uuRc","subCategories":"subCategories_1rXnz","productCount":"productCount_1bTjO"}; -------------------------------------------------------------------------------- /client/pages/CategoryPage/components/Categories/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | category: {id: "pages.CategoryPage.components.Categories.category"}, 5 | }); 6 | -------------------------------------------------------------------------------- /client/pages/CategoryPage/index.ts: -------------------------------------------------------------------------------- 1 | import CategoryPage from "./CategoryPage"; 2 | 3 | export default CategoryPage; 4 | -------------------------------------------------------------------------------- /client/pages/DynamicContentPage/index.tsx: -------------------------------------------------------------------------------- 1 | import DynamicContentPage from "./DynamicContentPage"; 2 | 3 | export default DynamicContentPage; 4 | -------------------------------------------------------------------------------- /client/pages/DynamicContentPage/style-142778de16b5d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pageContentContainer":"pageContentContainer_3slMV","titleHeader":"titleHeader_2koDC","sectionContainer":"sectionContainer_1kzTq","navigationContainer":"navigationContainer_kmv09","breadcrumbs":"breadcrumbs_2Fhb8"}; -------------------------------------------------------------------------------- /client/pages/DynamicContentPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | description: {id: "dynamicContentPage.header.seo.description"}, 5 | title: { id: "dynamicContentPage.header.seo.title" }, 6 | backTo: { id: "navigation.backTo"}, 7 | overviewReadMore: { id: "overview.readMore" }, 8 | overviewReadLess: { id: "overview.readLess" }, 9 | }); 10 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/ContactInformation/style-d8a5e419c5234.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"contactInfo":"contactInfo_11hCt","nameField":"nameField_Km9gO","firstName":"firstName_1B_w1"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/ContactInformation/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .contactInfo_11hCt { 4 | margin-top: 24px; 5 | } 6 | 7 | @media (min-width: 768px) { 8 | .nameField_Km9gO { 9 | width: 292px; 10 | display: inline-block; 11 | } 12 | 13 | .firstName_1B_w1 { 14 | margin-right: 16px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/ConversationContextMenu/style-b1ba95d5dde3d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"dropdwonMenu":"dropdwonMenu_3KJUG","conversationContextMenu":"conversationContextMenu_1J0kM"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/ConversationContextMenu/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .dropdwonMenu_3KJUG { 4 | color: #1d252c; 5 | font-size: 14px; 6 | line-height: 20px; 7 | display: block; 8 | margin: 0 0 5px; 9 | } 10 | 11 | .conversationContextMenu_1J0kM { 12 | margin-bottom: 16px; 13 | } 14 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/CtaButtons/style-b91375e59c85d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"submitButton":"submitButton_3EuB5","cancelButton":"cancelButton_1xIbq"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/CtaButtons/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .submitButton_3EuB5 { 4 | background-color: #0046be; 5 | color: #fff; 6 | } 7 | 8 | .submitButton_3EuB5:hover { 9 | background-color: #001e73; 10 | } 11 | 12 | .cancelButton_1xIbq { 13 | margin-left: 24px; 14 | } 15 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/CtaButtons/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | submitButton: { id: "emailUs.submitButton" }, 5 | cancelButton: { id: "emailUs.cancelButton" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/EmailUsForm/style-e5a740ed8d619.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"emailUsHeading":"emailUsHeading_3zkTR"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/EmailUsForm/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .emailUsHeading_3zkTR { 4 | color: #0046be; 5 | font-size: 56px; 6 | line-height: 60px; 7 | font-weight: bold; 8 | } 9 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/EmailUsForm/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | emailUs: { id: "emailUs.emailUsHeader" }, 5 | emailUsSubheading: { id: "emailUs.emailUsSubheading" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/FormSuccessContent/style-8bef188e0d195.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"success":"success_z-20T","successBody":"successBody_1Kvx7","messageSent":"messageSent_1gvMe","keepBrowsing":"keepBrowsing_15TzK"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/FormSuccessContent/style.css: -------------------------------------------------------------------------------- 1 | .success_z-20T { 2 | font-size: 56px; 3 | margin-bottom: 8px; 4 | } 5 | 6 | .successBody_1Kvx7 { 7 | max-width: 768px; 8 | } 9 | 10 | .messageSent_1gvMe { 11 | margin-bottom: 24px; 12 | } 13 | 14 | .keepBrowsing_15TzK { 15 | font-weight: bold; 16 | } 17 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/FormSuccessContent/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | success: {id: "emailUs.formSuccess.success" }, 5 | messageSent: {id: "emailUs.formSuccess.messageSent" }, 6 | thankYou: {id: "emailUs.formSuccess.thankYou" }, 7 | keepBrowsing: {id: "emailUs.formSuccess.keepBrowsing" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/Marketplace/style-f074cf35c6d6f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"marketplace":"marketplace_1MRCQ"}; -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/Marketplace/style.css: -------------------------------------------------------------------------------- 1 | .marketplace_1MRCQ p, 2 | .marketplace_1MRCQ h3 { 3 | font-size: 14px; 4 | line-height: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/OrderStatusForm/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | orderNumber: { id: "emailUs.form.orderStatus.orderNumber" }, 5 | orderNumberError: { id: "emailUs.form.orderStatus.orderNumberError" }, 6 | bodyField: { id: "emailUs.form.orderStatus.bodyField" }, 7 | bodyFieldError: { id: "emailUs.form.orderStatus.bodyFieldError" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/components/ReturnForm/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | helpPage: {id: "emailUs.form.returns.helpPage" }, 5 | selfHelpInfo: { id: "emailUs.form.returns.selfHelpInfo" }, 6 | explanationField: { id: "emailUs.form.returns.explanationField" }, 7 | explanationFieldError: { id: "emailUs.form.returns.explanationFieldError" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/pages/EmailUsPage/style-fa67871eb7c7b.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"emailUsPage":"emailUsPage_17nAN","emailUsForm":"emailUsForm_Ica6Z"}; -------------------------------------------------------------------------------- /client/pages/FlyerPage/styles-6a41d02bb8b06.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"flyerPageContainer":"flyerPageContainer_1Iaaj","dividerWithMargin":"dividerWithMargin_1o_wB","flyerTitle":"flyerTitle_3ngDN"}; -------------------------------------------------------------------------------- /client/pages/FlyerPage/styles.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .flyerPageContainer_1Iaaj, 4 | .dividerWithMargin_1o_wB { 5 | margin: 0 16px; 6 | } 7 | 8 | .flyerTitle_3ngDN { 9 | padding: 16px; 10 | } 11 | 12 | @media (min-width: 1025px) { 13 | .flyerTitle_3ngDN { 14 | padding: 24px; 15 | } 16 | 17 | .flyerPageContainer_1Iaaj, 18 | .dividerWithMargin_1o_wB { 19 | margin: 0 24px; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /client/pages/FlyerPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | 2 | import { defineMessages } from "react-intl"; 3 | 4 | export default defineMessages({ 5 | title: { id: "pages.flyer.title" }, 6 | h1: { id: "pages.flyer.h1" }, 7 | metaDescription: { id: "pages.flyer.meta.description" }, 8 | }); 9 | -------------------------------------------------------------------------------- /client/pages/HelpPage/containers/HelpLandingPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import {default as HelpPageComponent} from "../../"; 3 | import {WithRouterProps} from "react-router"; 4 | 5 | const HelpLandingPage = (props: WithRouterProps) => { 6 | return ; 7 | }; 8 | 9 | export default HelpLandingPage; 10 | -------------------------------------------------------------------------------- /client/pages/HelpPage/containers/HelpPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import {default as HelpPageComponent} from "../../"; 3 | import {WithRouterProps} from "react-router"; 4 | 5 | const HelpPage = (props: WithRouterProps) => { 6 | return ; 7 | }; 8 | 9 | export default HelpPage; 10 | -------------------------------------------------------------------------------- /client/pages/HelpPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | backButton: {id: "help.topic.backButton"}, 5 | backTo: {id: "help.topic.backTo"}, 6 | helpMessage: {id: "help.topic.helpMessage"}, 7 | }); 8 | -------------------------------------------------------------------------------- /client/pages/HomePage/components/HomePageContainer/style.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"pageContentContainer":"pageContentContainer_3J5wd"}; -------------------------------------------------------------------------------- /client/pages/HomePage/index.tsx: -------------------------------------------------------------------------------- 1 | import HomePage from "./components/HomePageContainer"; 2 | 3 | export default HomePage; 4 | -------------------------------------------------------------------------------- /client/pages/HomePage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | description: {id: "home.components.homePage.index.description"}, 5 | title: { id: "home.components.homePage.index.title" }, 6 | }); 7 | -------------------------------------------------------------------------------- /client/pages/PageLayouts/Base/styles-c3c2c59e6fae3.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"loadingScreen":"loadingScreen_2TNc8","spinner":"spinner_iKwwW"}; -------------------------------------------------------------------------------- /client/pages/PageLayouts/Base/styles.css: -------------------------------------------------------------------------------- 1 | .loadingScreen_2TNc8 { 2 | height: 450px; 3 | position: relative; 4 | } 5 | 6 | .loadingScreen_2TNc8 .spinner_iKwwW { 7 | position: absolute; 8 | width: 40px; 9 | height: 40px; 10 | left: 50%; 11 | top: 50%; 12 | -webkit-transform: translate(-50%, -50%); 13 | transform: translate(-50%, -50%); 14 | } 15 | -------------------------------------------------------------------------------- /client/pages/PageLayouts/SingleColumn/styles-c4c9122836a2.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"singleColumn":"singleColumn_BCnZ4","browserSizeLayout":"browserSizeLayout_2-Cw6","siteSizeLayout":"siteSizeLayout_2_W9H","backgroundMountedContent":"backgroundMountedContent_2guto","textContent":"textContent_2VGrK","footer":"footer_3g2Fp"}; -------------------------------------------------------------------------------- /client/pages/PageLayouts/TwoColumn/styles-ee1f11d36e2e7.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"twoColumn":"twoColumn_s09m6","sideBar":"sideBar_3fD3X","browserSizeLayout":"browserSizeLayout_1IYd4","siteSizeLayout":"siteSizeLayout_2G5t3","backgroundMountedContent":"backgroundMountedContent_2R9PO","textContent":"textContent_1rPoG","main":"main_7Bnep","header":"header_1MAAp","footer":"footer_3wlcT"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/Footer/style-59217499e5e32.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"dividerWithMargin":"dividerWithMargin_20XMD"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/Footer/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | @media (min-width: 1025px) { 4 | .dividerWithMargin_20XMD { 5 | margin-right: 24px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/Header/style-cbbcc51b1f49f.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"titleHeader":"titleHeader_srY8W","desktopOnly":"desktopOnly__j8hc","breadcrumb":"breadcrumb_iafPH","titleHeaderOnly":"titleHeaderOnly_2Uydi"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/Navigation/styles-91455f09ad168.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"desktopNavigation":"desktopNavigation_32iob","mobileNavigation":"mobileNavigation_3oJKy"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/Navigation/styles.css: -------------------------------------------------------------------------------- 1 | .desktopNavigation_32iob { 2 | display: none; 3 | } 4 | @media (min-width: 1025px) { 5 | .mobileNavigation_3oJKy { 6 | display: none; 7 | } 8 | 9 | .desktopNavigation_32iob { 10 | display: block; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/SEOBlock/style-52143a33cb82d.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"seoContainer":"seoContainer_3yFBJ","seoTextContent":"seoTextContent_2ff79","seoText":"seoText_o9Fa4"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/components/SEOBlock/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | categoryOverviewReadLess: {id: "pages.categoryPage.categoryOverviewReadLess"}, 5 | categoryOverviewReadMore: {id: "pages.categoryPage.categoryOverviewReadMore"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/pages/ProductListingPage/styles-5c1058faac43a.css: -------------------------------------------------------------------------------- 1 | // extracted by mini-css-extract-plugin 2 | module.exports = {"bodyContent":"bodyContent_2CbIN","desktopTitle":"desktopTitle_3NWgU","breadCrumbs":"breadCrumbs_3tBD-","mobileTitle":"mobileTitle_1A8ib"}; -------------------------------------------------------------------------------- /client/pages/ProductListingPage/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | titleH1: {id: "search.containers.searchPage.titleH1"}, 5 | breadcrumb: {id: "search.containers.searchPage.breadcrumb"}, 6 | backTo: {id: "help.topic.backTo"}, 7 | }); 8 | -------------------------------------------------------------------------------- /client/pages/SearchPage/components/ResultHeader/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | bestBuyOnly: {id: "search.containers.searchPage.components.Toolbar.bestBuyOnly"}, 5 | results: {id: "search.containers.searchPage.components.Header.results"}, 6 | rpuFilter: {id: "search.containers.searchPage.components.Header.rpuFilter"}, 7 | }); 8 | -------------------------------------------------------------------------------- /client/pages/SearchPage/index.ts: -------------------------------------------------------------------------------- 1 | import SearchPage from "./SearchPage"; 2 | 3 | export default SearchPage; 4 | -------------------------------------------------------------------------------- /client/providers/BrandProvider/index.ts: -------------------------------------------------------------------------------- 1 | import {DynamicContentModel, RegionCode} from "models"; 2 | import ApiBrandProvider from "./ApiBrandProvider"; 3 | 4 | export interface BrandProvider { 5 | getBrandsContent(brandPath: Array): Promise; 6 | } 7 | 8 | export function getBrandProvider(baseUrl: string, locale: Locale, regionCode: RegionCode): BrandProvider { 9 | return new ApiBrandProvider(baseUrl, locale, regionCode); 10 | } 11 | -------------------------------------------------------------------------------- /client/providers/CategoryProvider/CategoryCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import { Category } from "../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({ max: 1000, maxAge }); 6 | -------------------------------------------------------------------------------- /client/providers/CategoryProvider/translations/en.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | allCategoriesFilterName: "All Categories", 3 | }; 4 | -------------------------------------------------------------------------------- /client/providers/CategoryProvider/translations/fr.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | allCategoriesFilterName: "Toutes les catégories", 3 | }; 4 | -------------------------------------------------------------------------------- /client/providers/ContentProvider/contentCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | 3 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 4 | export default LRU({ max: 1000, maxAge }); 5 | -------------------------------------------------------------------------------- /client/providers/GlobalContentProvider/globalContentCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import { GlobalContent } from "../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({ max: 1000, maxAge }); 6 | -------------------------------------------------------------------------------- /client/providers/OfferProvider/NullOfferProvider.ts: -------------------------------------------------------------------------------- 1 | import { Offer } from "models"; 2 | import { OfferProvider } from "."; 3 | 4 | export default class NullOfferProvider implements OfferProvider { 5 | 6 | public async getOffers(sku: string): Promise { 7 | return []; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /client/providers/RemoteConfigProvider/RemoteConfigCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | import { RemoteConfig } from "../../models"; 3 | 4 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 5 | export default LRU({ max: 1000, maxAge }); 6 | -------------------------------------------------------------------------------- /client/providers/SearchProvider/translations/en.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | allCategoriesFilterName: "All Categories", 3 | categoryFacetName: "Categories", 4 | availabilityFacetName: "Availability", 5 | availableStockFilter: "Available Stock", 6 | }; 7 | -------------------------------------------------------------------------------- /client/providers/SearchProvider/translations/fr.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | allCategoriesFilterName: "Toutes Catégories", 3 | categoryFacetName: "Catégories", 4 | availabilityFacetName: "Disponibilité", 5 | availableStockFilter: "Stocks disponibles", 6 | }; 7 | -------------------------------------------------------------------------------- /client/providers/SideNavigationProvider/index.ts: -------------------------------------------------------------------------------- 1 | import ApiBrandStoreSideNavigationProvider from "./ApiBrandStoreNavigationProvider"; 2 | 3 | export function createBrandStoreNavigationProvider(baseUrl: string, locale: Locale, ...ids: string[]) { 4 | const brandName = "0"; // hardcoded for now b/c ContentService only accepts 0 for now 5 | const brandStoreId = ids[1]; 6 | return new ApiBrandStoreSideNavigationProvider(baseUrl, locale, brandName, brandStoreId); 7 | } 8 | -------------------------------------------------------------------------------- /client/providers/StoreMessageProvider/ApiStoreMessageProvider.ts: -------------------------------------------------------------------------------- 1 | import fetch from "../../utils/fetch"; 2 | import * as url from "url"; 3 | 4 | export default class StoreMessageProvider { 5 | constructor(private baseUrl: string) {} 6 | 7 | public async getStoreMessages() { 8 | const storeStatusUrl = url.format(url.parse(`${this.baseUrl}/all.json`)); 9 | const response = await fetch(storeStatusUrl); 10 | return response.json(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /client/reducers/promotionalBadgesReducer/index.ts: -------------------------------------------------------------------------------- 1 | import {PromotionalBadges} from "../../models"; 2 | 3 | export const initialPromotionalBadges: PromotionalBadges = {}; 4 | 5 | export const promotionalBadges = (state = initialPromotionalBadges, action) => { 6 | switch (action.type) { 7 | default: 8 | return state; 9 | } 10 | }; 11 | 12 | export default promotionalBadges; 13 | -------------------------------------------------------------------------------- /client/reducers/recommendationsReducer/index.ts: -------------------------------------------------------------------------------- 1 | import {Recommendations} from "../../models"; 2 | 3 | export const initialRecommendationsState: Partial = { 4 | recentlyViewed: [], 5 | }; 6 | 7 | export const recommendations = (state = initialRecommendationsState, action) => { 8 | switch (action.type) { 9 | default: 10 | return state; 11 | } 12 | }; 13 | 14 | export default recommendations; 15 | -------------------------------------------------------------------------------- /client/store/selectors/promotionalBadgesSelectors/index.ts: -------------------------------------------------------------------------------- 1 | import {Selector} from "reselect"; 2 | import {State} from "store"; 3 | import {PromotionalBadges} from "../../../models"; 4 | 5 | export const getPromotionalBadges: Selector = (state: State) => state.promotionalBadges; 6 | -------------------------------------------------------------------------------- /client/utils/analytics/adobeCookie.ts: -------------------------------------------------------------------------------- 1 | import {CookieUtils} from "@bbyca/bbyca-components"; 2 | 3 | const patt = /(?:MCMID\|)([0-9a-zA-Z]*|)/; 4 | 5 | export const getAdobeVisitorId = (): string => { 6 | const cookieVal = CookieUtils.getCookie("AMCV_[^=]*"); 7 | const str = cookieVal ? decodeURIComponent(cookieVal.value) : ""; 8 | const id = patt.exec(str); 9 | if (id === null || id.length < 2) { 10 | return ""; 11 | } 12 | return id[1]; 13 | }; 14 | -------------------------------------------------------------------------------- /client/utils/analytics/middleware.ts: -------------------------------------------------------------------------------- 1 | export default ({getState}) => (next) => (action) => { 2 | next(action); 3 | if (typeof window !== "undefined") { 4 | const event = new CustomEvent("analytics-event", { 5 | detail: {event: action.type, payload: action.payload, state: getState()}, 6 | }); 7 | document.dispatchEvent(event); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /client/utils/builders/breadcrumbBuilder/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import {defineMessages} from "react-intl"; 2 | 3 | export default defineMessages({ 4 | home: {id: "utils.breadcrumbBuilder.home"}, 5 | searchResults: {id: "utils.breadcrumbBuilder.searchResults"}, 6 | }); 7 | -------------------------------------------------------------------------------- /client/utils/builders/productSwatchBuilder.ts: -------------------------------------------------------------------------------- 1 | export const buildProductSwatchUrl = (sku: string, baseUrl: string): string => { 2 | const lowerCaseSku = sku.toLowerCase(); 3 | return `${baseUrl}/multimedia/products/swatches/${lowerCaseSku.slice(0, 3)}/${lowerCaseSku.slice(0, 5)}/${lowerCaseSku}.gif`; 4 | }; 5 | -------------------------------------------------------------------------------- /client/utils/colorUtils/index.ts: -------------------------------------------------------------------------------- 1 | 2 | export const addNumberSignPrefix = (color: string):string => { 3 | const numberSign = "#"; 4 | if (color.trim().indexOf(numberSign) !== 0) { 5 | return numberSign + color.trim(); 6 | } 7 | return color; 8 | } 9 | -------------------------------------------------------------------------------- /client/utils/environment/index.ts: -------------------------------------------------------------------------------- 1 | import {productionStackEnv} from "../../constants/Environment"; 2 | 3 | export type CmsEnvironment = "development" | "production"; 4 | 5 | export const getCmsEnvironment = (environment: string): CmsEnvironment => { 6 | return productionStackEnv.indexOf(environment) === -1 ? "development" : "production"; 7 | }; 8 | -------------------------------------------------------------------------------- /client/utils/flatteners/objectFlattener.ts: -------------------------------------------------------------------------------- 1 | export const objectFlattener = (obj: {}) => { 2 | const flattenedArray = []; 3 | for (const key in obj) { 4 | if (obj[key]) { 5 | flattenedArray.push(obj[key]); 6 | } 7 | } 8 | 9 | return flattenedArray; 10 | }; 11 | -------------------------------------------------------------------------------- /client/utils/isMobileApp/index.ts: -------------------------------------------------------------------------------- 1 | import {AppMode} from "models"; 2 | /** 3 | * isMobileApp. 4 | * 5 | * Note: this function requires AppMode from the app state 6 | * 7 | */ 8 | 9 | export const isMobileApp = (appMode: AppMode) => { 10 | return appMode === AppMode.iphone || appMode === AppMode.android; 11 | }; 12 | -------------------------------------------------------------------------------- /client/utils/numberUtils/index.ts: -------------------------------------------------------------------------------- 1 | // a toFixed() method that returns a number instead of a string 2 | export const getNumToFixed = (num: number, numDecimalPlaces: number): number => ( 3 | parseFloat(num.toFixed(numDecimalPlaces)) 4 | ); 5 | -------------------------------------------------------------------------------- /client/utils/productWarranty/getManufacturersWarrantyUrl.ts: -------------------------------------------------------------------------------- 1 | import routeManager from "utils/routeManager"; 2 | 3 | const getManufacturersWarrantyUrl = (locale: Language, sku: string): string => { 4 | return routeManager.getPathByKey(locale, "manufacturerWarranty", sku); 5 | }; 6 | 7 | export default getManufacturersWarrantyUrl; 8 | -------------------------------------------------------------------------------- /client/utils/productWarranty/isBothPspPrpWarranty.ts: -------------------------------------------------------------------------------- 1 | import {Warranty, WarrantyType} from "models"; 2 | const isBothPspPrpWarranty = (warranties: Warranty[] = []): boolean => 3 | !!warranties.find((warranty) => warranty.type === WarrantyType.PSP) && 4 | !!warranties.find((warranty) => warranty.type === WarrantyType.PRP); 5 | 6 | export default isBothPspPrpWarranty; 7 | -------------------------------------------------------------------------------- /client/utils/stringUtils/index.ts: -------------------------------------------------------------------------------- 1 | export const replaceAllSpacesBy = (str: string, by: string): string => { 2 | if (str) { 3 | return str.replace(/ /g, by); 4 | } 5 | 6 | return ""; 7 | }; 8 | -------------------------------------------------------------------------------- /client/utils/urlUtils/index.ts: -------------------------------------------------------------------------------- 1 | export const extractDomain = (hostname: string): string => { 2 | const result = hostname.match(/\w+\.?\w+$/); 3 | return result ? result[0] : ""; 4 | }; 5 | 6 | export const getDomain = (): string => { 7 | let baseDomain: string = ""; 8 | if (typeof document !== "undefined") { 9 | baseDomain = extractDomain(document.location.hostname); 10 | } 11 | return baseDomain; 12 | }; 13 | -------------------------------------------------------------------------------- /client/utils/warrantyText/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | 3 | export default defineMessages({ 4 | WarrantyDaysLabel: { id: "utils.warrantyText.WarrantyDaysLabel" }, 5 | WarrantyYearsLabel: { id: "utils.warrantyText.WarrantyYearsLabel" }, 6 | WarrantyOneYearLabel: { id: "utils.warrantyText.WarrantyOneYearLabel" }, 7 | WarrantyLifetimeLabel: { id: "utils.warrantyText.WarrantyLifetimeLabel" }, 8 | }); 9 | -------------------------------------------------------------------------------- /common/logging/getLogger.ts: -------------------------------------------------------------------------------- 1 | import WebappError from "../../client/errors/WebappError"; 2 | import { Logger } from "./"; 3 | 4 | let appLogger: Logger; 5 | 6 | export const setLogger = (logger: Logger) => { 7 | appLogger = logger; 8 | }; 9 | 10 | export default () => { 11 | 12 | if (!appLogger) { 13 | throw new WebappError("Logger has not been initialized"); 14 | } 15 | 16 | return appLogger; 17 | }; 18 | -------------------------------------------------------------------------------- /common/logging/index.ts: -------------------------------------------------------------------------------- 1 | export enum Level { 2 | Info, 3 | Warn, 4 | Error, 5 | } 6 | 7 | export interface Logger { 8 | level: Level; 9 | info: (message: string) => void; 10 | warn: (message: string) => void; 11 | error: (error: Error | string) => void; 12 | trace: (message: string) => void; 13 | } 14 | -------------------------------------------------------------------------------- /components/ClickAwayListener/index.ts: -------------------------------------------------------------------------------- 1 | import { default as ClickAwayListener } from "./ClickAwayListener"; 2 | export default ClickAwayListener; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /components/GlobalFooter/utils/contentParser.ts: -------------------------------------------------------------------------------- 1 | const regex = /\{(.*?)\}/gi; 2 | const contentParser = (expressionMap) => ({ 3 | parse: (str) => str.replace(regex, (match, key) => expressionMap.hasOwnProperty(key) ? expressionMap[key] : ""), 4 | }); 5 | export default contentParser; 6 | //# sourceMappingURL=contentParser.js.map -------------------------------------------------------------------------------- /components/GlobalHeader/FlyoutNavigation/index.ts: -------------------------------------------------------------------------------- 1 | import { default as FlyoutNavigation } from "./FlyoutNavigation"; 2 | export default FlyoutNavigation; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /components/GlobalHeader/StoresLink/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | storeAriaLabel: { 4 | id: "components.header.storesLink.ariaLabel", 5 | }, 6 | storeHref: { 7 | id: "components.header.storesLink.storeHref", 8 | }, 9 | storeText: { 10 | id: "components.header.storesLink.storeText", 11 | }, 12 | }); 13 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /components/GlobalHeader/utils/getParsedEvent.ts: -------------------------------------------------------------------------------- 1 | const getParsedEvent = ({ ctaText = "", eventType = "brand", eventId = null, seoText = "", url = null, query = null, altCtaText = null, }) => ({ 2 | ctaText, 3 | eventType, 4 | eventId: eventId || ctaText, 5 | seoText, 6 | url, 7 | query, 8 | altCtaText, 9 | }); 10 | export default getParsedEvent; 11 | //# sourceMappingURL=getParsedEvent.js.map -------------------------------------------------------------------------------- /components/GlobalHeader/utils/shopMenuDataParser.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * parseShopMenuData() will be depricated once the Shop Menu is connected 3 | * to the Global Menu API 4 | */ 5 | const parseShopMenuData = (data) => { 6 | if (!data) { 7 | return null; 8 | } 9 | return { 10 | categories: data.shopCategories, 11 | }; 12 | }; 13 | export default parseShopMenuData; 14 | //# sourceMappingURL=shopMenuDataParser.js.map -------------------------------------------------------------------------------- /components/MenuPanel/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | back: { 4 | id: "components.navigation.back", 5 | }, 6 | exploreMore: { 7 | id: "components.navigation.exploreMore", 8 | }, 9 | }); 10 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /constants.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.DEFAULT_BLOCKED_EVENT_TYPES = [ 4 | "redux-responsive/*", 5 | "@@INIT", 6 | "@@router/*" 7 | ]; 8 | exports.CLIENT_ID_COOKIE_NAME = "clientId"; 9 | exports.EVENTS_MAP = { 10 | ANALYTICS_CONFIRMATION_PAGELOAD: 'analytics-confirmation-pageload' 11 | }; 12 | //# sourceMappingURL=constants.js.map -------------------------------------------------------------------------------- /containers/AddToCartContainer.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Point of contact for redux-connected component modules 3 | * 4 | * ie: import { AddToCartComponent, Toaster } from 'components'; 5 | * 6 | */ 7 | import { AddToCart } from "../react/"; 8 | import ReduxConnectorCheckout from "./connectors/ReduxConnectorCheckout"; 9 | const AddToCartContainer = ReduxConnectorCheckout(AddToCart); // TODO Figure out proper types 10 | export { AddToCartContainer, }; 11 | //# sourceMappingURL=AddToCartContainer.js.map -------------------------------------------------------------------------------- /containers/BasketPageContainer.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Point of contact for redux-connected component modules 3 | * 4 | * ie: import { AddToCartComponent, Toaster } from 'components'; 5 | * 6 | */ 7 | import { BasketPage } from "../react/"; 8 | import ReduxConnectorBasket from "./connectors/ReduxConnectorBasket"; 9 | const BasketPageContainer = ReduxConnectorBasket(BasketPage); // TODO Figure out proper types 10 | export { BasketPageContainer, }; 11 | //# sourceMappingURL=BasketPageContainer.js.map -------------------------------------------------------------------------------- /containers/BenefitPageContainer.ts: -------------------------------------------------------------------------------- 1 | import { BenefitPage } from "../react/"; 2 | import BenefitPageConnector from "./connectors/ReduxBenefitPageConnector"; 3 | const BenefitPageContainer = BenefitPageConnector(BenefitPage); 4 | export { BenefitPageContainer, }; 5 | //# sourceMappingURL=BenefitPageContainer.js.map -------------------------------------------------------------------------------- /containers/ManufacturersWarrantyPageContainer.ts: -------------------------------------------------------------------------------- 1 | import { ManufacturersWarrantyPage } from "../react/"; 2 | import ManufacturersWarrantyPageConnector from "./connectors/ReduxManufacturersWarrantyPageConnector"; 3 | const ManufacturersWarrantyPageContainer = ManufacturersWarrantyPageConnector(ManufacturersWarrantyPage); 4 | export { ManufacturersWarrantyPageContainer, }; 5 | //# sourceMappingURL=ManufacturersWarrantyPageContainer.js.map -------------------------------------------------------------------------------- /containers/connectors/ReduxBenefitLinkConnector.ts: -------------------------------------------------------------------------------- 1 | import { connect } from "react-redux"; 2 | import { getSkuByLineItemId } from "../../redux/cart/selectors"; 3 | const mapStateToProps = (state, ownProps) => ({ 4 | sku: getSkuByLineItemId(state.cart, ownProps.lineItemId), 5 | }); 6 | export default connect(mapStateToProps); 7 | //# sourceMappingURL=ReduxBenefitLinkConnector.js.map -------------------------------------------------------------------------------- /errors/ConnectionError.ts: -------------------------------------------------------------------------------- 1 | import ContentError from "./ContentError"; 2 | export default class ConnectionError extends ContentError { 3 | constructor(url, message, innerError) { 4 | super(message, innerError); 5 | this.url = url; 6 | Object.setPrototypeOf(this, ConnectionError.prototype); 7 | } 8 | } 9 | //# sourceMappingURL=ConnectionError.js.map -------------------------------------------------------------------------------- /errors/ContentError.ts: -------------------------------------------------------------------------------- 1 | export default class ContentError extends Error { 2 | constructor(message, innerError) { 3 | super(message); 4 | this.innerError = innerError; 5 | Object.setPrototypeOf(this, ContentError.prototype); 6 | } 7 | } 8 | //# sourceMappingURL=ContentError.js.map -------------------------------------------------------------------------------- /errors/NotFoundError.ts: -------------------------------------------------------------------------------- 1 | export class NotFoundError extends Error { 2 | constructor(message, innerError, context) { 3 | super(message); 4 | this.innerError = innerError; 5 | this.context = context; 6 | this.name = NotFoundError.NAME; 7 | Object.setPrototypeOf(this, NotFoundError.prototype); 8 | } 9 | } 10 | NotFoundError.NAME = "NotFoundError"; 11 | //# sourceMappingURL=NotFoundError.js.map -------------------------------------------------------------------------------- /errors/ValidationMessagesError.ts: -------------------------------------------------------------------------------- 1 | export class ValidationMessagesError extends Error { 2 | constructor(validationMessages) { 3 | super(validationMessages); 4 | this.name = ValidationMessagesError.NAME; 5 | this.validationMessages = validationMessages || []; 6 | Object.setPrototypeOf(this, ValidationMessagesError.prototype); 7 | } 8 | } 9 | ValidationMessagesError.NAME = "ValidationMessagesError"; 10 | //# sourceMappingURL=ValidationMessagesError.js.map -------------------------------------------------------------------------------- /events.ts: -------------------------------------------------------------------------------- 1 | import CheckoutEvents from "./services/CheckoutEvents/CheckoutEvents"; 2 | export default CheckoutEvents; 3 | //# sourceMappingURL=events.js.map -------------------------------------------------------------------------------- /flexbox-grid/create-props.tsx: -------------------------------------------------------------------------------- 1 | export default function createProps(props, className) { 2 | const newProps = {}; 3 | Object.keys(props) 4 | .filter((key) => (key === "children")) 5 | .forEach((key) => (newProps[key] = props[key])); 6 | return Object.assign(Object.assign({}, newProps), { className }); 7 | } 8 | //# sourceMappingURL=create-props.js.map -------------------------------------------------------------------------------- /forms/formItems/hiddenInput/HiddenInput.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import FormItem from "../FormItem"; 3 | export class HiddenInput extends React.Component { 4 | render() { 5 | return (React.createElement("input", Object.assign({ type: "hidden", name: this.props.name, id: this.props.name, value: this.props.value || "" }, this.props.extraAttrs))); 6 | } 7 | } 8 | export default FormItem({ hideUI: true })(HiddenInput); 9 | //# sourceMappingURL=HiddenInput.js.map -------------------------------------------------------------------------------- /globalMessages/globalWarningMessage/GlobalWarningMessage.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { GlobalErrorMessage } from "./../globalErrorMessage"; 3 | // TODO: get rid of this after rebranding cutover 4 | class GlobalWarningMessage extends React.Component { 5 | render() { 6 | return React.createElement(GlobalErrorMessage, Object.assign({}, this.props)); 7 | } 8 | } 9 | export default GlobalWarningMessage; 10 | //# sourceMappingURL=GlobalWarningMessage.js.map -------------------------------------------------------------------------------- /heading/heading.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import * as styles from "./style.css"; 3 | export class Heading extends React.Component { 4 | render() { 5 | const { as: Element = "h2" } = this.props; 6 | return React.createElement(Element, { className: styles[Element] }, this.props.children); 7 | } 8 | } 9 | export default Heading; 10 | //# sourceMappingURL=heading.js.map -------------------------------------------------------------------------------- /icons/CartSvg.tsx: -------------------------------------------------------------------------------- 1 | import { Cart } from "@bbyca/bbyca-components"; 2 | import * as React from "react"; 3 | export const CartSvg = ({ viewBox = "0 1 32 32", className = "", color = "white", }) => (React.createElement(Cart, { className: className, color: color, viewBox: viewBox })); 4 | export default CartSvg; 5 | //# sourceMappingURL=CartSvg.js.map -------------------------------------------------------------------------------- /index-21880cf4fc6a6.ts: -------------------------------------------------------------------------------- 1 | export * from "./business-rules/entities"; 2 | export * from "./react"; 3 | export * from "./utils"; 4 | export * from "./redux"; 5 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /models/GlobalMenuContent/index.ts: -------------------------------------------------------------------------------- 1 | export var templateExpressions; 2 | (function (templateExpressions) { 3 | templateExpressions["ordersWebAppUrl"] = "ordersWebAppUrl"; 4 | templateExpressions["accountsWebAppUrl"] = "accountsWebAppUrl"; 5 | })(templateExpressions || (templateExpressions = {})); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /models/Intl/index.ts: -------------------------------------------------------------------------------- 1 | const convertLocaleToLang = (locale = "en-CA") => locale.split("-")[0]; 2 | export { convertLocaleToLang, }; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /models/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Intl"; 2 | export * from "./LinkGroup"; 3 | export * from "./Category"; 4 | export * from "./Routing"; 5 | export * from "./ShopMenuContent"; 6 | export * from "./BrandMenuContent"; 7 | export * from "./GlobalMenuContent"; 8 | export * from "./HelpTopics"; 9 | export * from "./Environment"; 10 | export * from "./SearchSuggestion"; 11 | export * from "./UrlConfig"; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /providers/ContentProvider/menuContentCache.ts: -------------------------------------------------------------------------------- 1 | import * as LRU from "lru-cache"; 2 | const maxAge = Number(process.env.API_CACHE_MAX_AGE) || 1000 * 60; 3 | export default new LRU({ max: 1000, maxAge }); 4 | //# sourceMappingURL=menuContentCache.js.map -------------------------------------------------------------------------------- /providers/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | var SplitIOABTestProvider_1 = __importDefault(require("./SplitIOABTestProvider")); 7 | exports.SplitIOABTestProvider = SplitIOABTestProvider_1.default; 8 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /react/BasketPage/components/shipment/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | productTotal: { id: "components.Cart.shipment.ProductTotal" }, 4 | soldBy: { 5 | defaultMessage: "Sold & Shipped By", 6 | description: "sold and shipped by text", 7 | id: "components.Cart.shipment.soldBy", 8 | }, 9 | }); 10 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/BasketPage/helpers/ItemCount.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | import { injectIntl } from "react-intl"; 3 | import messages from "../translations/messages"; 4 | const itemCount = ({ intl, quantity }) => { 5 | return (React.createElement("small", null, intl.formatMessage(messages.items, { quantity }))); 6 | }; 7 | export const ItemCount = injectIntl(itemCount); 8 | //# sourceMappingURL=ItemCount.js.map -------------------------------------------------------------------------------- /react/CartIndicator/components/BasketIcon/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | basketLabel: { 4 | defaultMessage: "Cart", 5 | description: "the label for the cart icon", 6 | id: "components.BasketIcon.label", 7 | }, 8 | }); 9 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/LineItem/ProductDetailsLineItem/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | ehf: { id: "components.ProductDetailsLineItem.ehf" }, 4 | saleEndsOn: { id: "components.ProductDetailsLineItem.saleEndsOn" }, 5 | }); 6 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/LineItem/RequiredPartsLineItem/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | requiredPart: { id: "requiredPart" }, 4 | requiredPartsOptInNo: { id: "requiredPartsOptIn.no" }, 5 | requiredPartsOptInYes: { id: "requiredPartsOptIn.yes" }, 6 | }); 7 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/ProductServices/index.tsx: -------------------------------------------------------------------------------- 1 | import ProductServices from "./ProductServices"; 2 | export default ProductServices; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /react/Remove/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | remove: { 4 | defaultMessage: "Remove", 5 | id: "components.Remove.Remove", 6 | }, 7 | }); 8 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/components/ReplyBox/index.ts: -------------------------------------------------------------------------------- 1 | export const replyBoxformItemName = { 2 | form: "replyMessageThread", 3 | textarea: "replybox", 4 | }; 5 | export { default as ReplyBox } from "./ReplyBox"; 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /react/components/ReplyBox/translations/messages.ts: -------------------------------------------------------------------------------- 1 | import { defineMessages } from "react-intl"; 2 | export default defineMessages({ 3 | replyBoxButton: { id: "components.replyBox.form.button" }, 4 | replyBoxGlobalErrorMessage: { id: "components.replyBox.form.global.error.message" }, 5 | replyBoxInputErrorMessage: { id: "components.replyBox.input.error.message" }, 6 | replyBoxInputPlaceholder: { id: "components.replyBox.input.placeholder" }, 7 | }); 8 | //# sourceMappingURL=messages.js.map -------------------------------------------------------------------------------- /react/utilities/helpers.ts: -------------------------------------------------------------------------------- 1 | export function noop() { 2 | return; 3 | } 4 | //# sourceMappingURL=helpers.js.map -------------------------------------------------------------------------------- /reducers/navigationReducer/initialNavigationState.tsx: -------------------------------------------------------------------------------- 1 | export const initialNavigationState = { 2 | categories: [], 3 | flyoutOverlay: false, 4 | loading: false, 5 | selectedCategory: "", 6 | showAccountLinks: false, 7 | viewCart: false, 8 | customerFirstName: "", 9 | brandsMenuContent: null, 10 | shopMenuContent: null, 11 | globalMenuContent: null, 12 | }; 13 | //# sourceMappingURL=initialNavigationState.js.map -------------------------------------------------------------------------------- /redux/checkout/actionTypes.ts: -------------------------------------------------------------------------------- 1 | export const SET_ORDER_NUMBER = "checkout/SET_ORDER_NUMBER"; 2 | export const RESET_CHECKOUT = "checkout/RESET_CHECKOUT"; 3 | export const UPDATE_REVIEW_ORDER = "checkout/UPDATE_REVIEW_ORDER"; 4 | //# sourceMappingURL=actionTypes.js.map -------------------------------------------------------------------------------- /utilities/isCheckoutPath/index.ts: -------------------------------------------------------------------------------- 1 | export const isCheckoutPath = (url = "") => url.indexOf("checkout") > -1; 2 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /utilities/removeDuplicateSlashInURL/index.ts: -------------------------------------------------------------------------------- 1 | export default function removeDuplicateSlashInURL(url) { 2 | return typeof url === "string" ? url.replace(/([^:]\/)\/+/g, "$1") : url; 3 | } 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /utils/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | function __export(m) { 3 | for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; 4 | } 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | __export(require("./Cookie/Cookie")); 7 | __export(require("./CookieUtils/CookieUtils")); 8 | __export(require("./makeId")); 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /utils/isMobileApp/index.ts: -------------------------------------------------------------------------------- 1 | export default (appMode) => { 2 | return appMode && (appMode === "iphone" || appMode === "android"); 3 | }; 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /utils/logging/index.ts: -------------------------------------------------------------------------------- 1 | export var Level; 2 | (function (Level) { 3 | Level[Level["Info"] = 0] = "Info"; 4 | Level[Level["Warn"] = 1] = "Warn"; 5 | Level[Level["Error"] = 2] = "Error"; 6 | })(Level || (Level = {})); 7 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /wdyr.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | if (process.env.NODE_ENV === "development" && process.env.DEBUG_CLIENT_PERFORMANCE) { 4 | const whyDidYouRender = require("@welldone-software/why-did-you-render"); 5 | whyDidYouRender(React, { 6 | trackAllPureComponents: true, 7 | }); 8 | } 9 | --------------------------------------------------------------------------------