@evenicanpm/storefront-core 1.8.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs.tsconfig.json +5 -5
- package/package.json +3 -3
- package/src/api-manager/datasources/d365/d365-cart.datasource.ts +13 -8
- package/src/api-manager/datasources/d365/d365-product.datasource.ts +7 -4
- package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +7 -5
- package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +3 -3
- package/src/api-manager/datasources/e4/product/e4-product.translator.ts +3 -1
- package/src/api-manager/index.ts +3 -4
- package/src/api-manager/lib/category-helpers.ts +1 -1
- package/src/auth/auth-options.test.ts +1 -1
- package/src/auth/msal.ts +1 -1
- package/src/auth/providers/entra-external-id-provider.ts +1 -1
- package/src/auth/providers/index.ts +1 -1
- package/src/cms/blocks/components/category-carousel/index.tsx +3 -3
- package/src/cms/blocks/components/footer/index.tsx +1 -1
- package/src/cms/blocks/components/footer/sections/footer-app-store.tsx +1 -1
- package/src/cms/blocks/components/footer/sections/footer-contact.tsx +1 -1
- package/src/cms/blocks/components/footer/sections/footer-logo.tsx +2 -2
- package/src/cms/blocks/components/footer/sections/footer-social-links.tsx +7 -2
- package/src/cms/blocks/components/hero-carousel/index.tsx +2 -2
- package/src/cms/blocks/components/product-carousel/index.tsx +3 -3
- package/src/cms/blocks/components/product-section-fullwidth/index.tsx +4 -4
- package/src/cms/blocks/components/services/service-card.tsx +1 -1
- package/src/cms/blocks/components/shared/featured-product-card.tsx +3 -3
- package/src/cms/blocks/components/shared/product-category-item.tsx +3 -3
- package/src/cms/blocks/components/shared/product-grid.tsx +2 -2
- package/src/cms/blocks/components/shared/top-categories-card.tsx +2 -2
- package/src/cms/blocks/components/shared/top-rating-product-card.tsx +4 -4
- package/src/cms/blocks/icons/components/category.tsx +1 -0
- package/src/cms/blocks/icons/components/dotted-star.tsx +1 -0
- package/src/cms/blocks/icons/components/gift-box.tsx +1 -0
- package/src/cms/blocks/icons/components/light.tsx +1 -0
- package/src/cms/blocks/icons/components/new-arrival.tsx +1 -0
- package/src/cms/blocks/icons/components/rank-badge.tsx +1 -0
- package/src/cms/blocks/icons/index.ts +1 -6
- package/src/{components-v2 → components}/BazaarTextField.tsx +1 -1
- package/src/{components-v2 → components}/DropZone.tsx +2 -1
- package/src/{components-v2 → components}/ImageWithFallback.tsx +1 -1
- package/src/components/_tests_/BazaarCard.test.tsx +16 -0
- package/src/components/_tests_/BazaarImage.test.tsx +18 -0
- package/src/components/_tests_/BazaarMenu.test.tsx +46 -0
- package/src/components/_tests_/BazaarSwitch.test.tsx +17 -0
- package/src/components/_tests_/BazaarTextField.test.tsx +22 -0
- package/src/components/_tests_/BoxShadowCard.test.tsx +14 -0
- package/src/components/_tests_/DropZone.test.tsx +51 -0
- package/src/components/_tests_/HoverBox.test.tsx +9 -0
- package/src/components/_tests_/Image.test.tsx +12 -0
- package/src/components/_tests_/ImageWithFallback.test.tsx +76 -0
- package/src/components/_tests_/LazyImage.test.tsx +32 -0
- package/src/components/_tests_/Loading.test.tsx +15 -0
- package/src/components/_tests_/SearchInput.test.tsx +14 -0
- package/src/components/_tests_/SnackbarProvider.test.tsx +22 -0
- package/src/components/_tests_/Typography.test.tsx +53 -0
- package/src/components/_tests_/WhiteButton.test.tsx +20 -0
- package/src/components/_tests_/countries-input.test.tsx +39 -0
- package/src/components/_tests_/no-records.test.tsx +14 -0
- package/src/components/_tests_/site-logo.test.tsx +29 -0
- package/src/{components-v2 → components}/accordion/accordion-header.tsx +1 -1
- package/src/{components-v2 → components}/accordion/index.ts +1 -1
- package/src/{components-v2 → components}/carousel/carousel.tsx +3 -3
- package/src/{components-v2 → components}/carousel/components/carousel-arrows.tsx +1 -1
- package/src/{components-v2 → components}/carousel/components/carousel-dots.tsx +1 -1
- package/src/{components-v2 → components}/carousel/index.ts +1 -1
- package/src/{components-v2 → components}/carousel-cards/carousel-card-1/carousel-card-1.tsx +3 -3
- package/src/components/carousel-cards/carousel-card-1/index.ts +1 -0
- package/src/{components-v2 → components}/categories/Categories.stories.tsx +1 -1
- package/src/{components-v2 → components}/categories/__tests__/category-menu.test.tsx +1 -1
- package/src/{components-v2 → components}/categories/category-list/category-list.tsx +4 -4
- package/src/{components-v2/navbar/mega-menu → components/categories/category-list}/index.ts +1 -1
- package/src/{components-v2 → components}/categories/category-list/styles.ts +1 -1
- package/src/{components-v2 → components}/categories/category-list-item/category-menu-item.tsx +1 -1
- package/src/components/categories/category-list-item/index.ts +1 -0
- package/src/{components-v2 → components}/categories/category-menu.tsx +1 -1
- package/src/{components-v2 → components}/categories/mega-menu/banner.tsx +3 -3
- package/src/{components-v2 → components}/categories/mega-menu/column-list.tsx +4 -4
- package/src/{components-v2 → components}/categories/mega-menu/mega-menu-1.tsx +3 -3
- package/src/{components-v2 → components}/categories/mega-menu/mega-menu-2.tsx +4 -4
- package/src/{components-v2 → components}/flex-box/__tests__/flex-box.test.tsx +6 -8
- package/src/components/flex-box/index.ts +5 -0
- package/src/{components-v2 → components}/header/__tests__/header.test.tsx +8 -4
- package/src/{components-v2 → components}/header/__tests__/user.test.tsx +1 -1
- package/src/{components-v2 → components}/header/components/categories-menu.tsx +3 -3
- package/src/{components-v2 → components}/header/components/mobile-header.tsx +11 -11
- package/src/{components-v2 → components}/header/components/user.tsx +3 -3
- package/src/{components-v2 → components}/header/header.tsx +6 -6
- package/src/{components-v2 → components}/header/index.ts +1 -1
- package/src/{components-v2 → components}/header/sticky-header.tsx +3 -3
- package/src/{components-v2 → components}/icons/cart-bag.tsx +1 -0
- package/src/{components-v2 → components}/icons/category-outline.tsx +1 -0
- package/src/{components-v2 → components}/icons/category.tsx +1 -0
- package/src/{components-v2 → components}/icons/home.tsx +1 -0
- package/src/{components-v2 → components}/icons/search.tsx +1 -0
- package/src/{components-v2 → components}/icons/shopping-bag-outlined.tsx +1 -0
- package/src/{components-v2 → components}/icons/up-down.tsx +1 -0
- package/src/{components-v2 → components}/icons/user.tsx +1 -0
- package/src/{components-v2 → components}/icons/user2.tsx +1 -0
- package/src/{components-v2 → components}/mini-cart/components/cart-item.tsx +2 -2
- package/src/{components-v2 → components}/mini-cart/components/empty-view.tsx +2 -2
- package/src/{components-v2 → components}/mini-cart/components/top-header.tsx +2 -2
- package/src/{components-v2 → components}/mini-cart/index.ts +1 -1
- package/src/{components-v2 → components}/mini-cart/mini-cart-trigger.tsx +3 -5
- package/src/{components-v2 → components}/mini-cart/mini-cart.tsx +5 -5
- package/src/{components-v2 → components}/mobile-navigation/MobileNavigationBar.stories.tsx +2 -2
- package/src/{components-v2 → components}/mobile-navigation/index.ts +1 -1
- package/src/{components-v2 → components}/mobile-navigation/mobile-navigation-bar.tsx +5 -5
- package/src/{components-v2 → components}/mobile-navigation/styles/index.ts +2 -2
- package/src/{components-v2 → components}/nav-link/__tests__/nav-link.test.tsx +2 -1
- package/src/{components-v2 → components}/nav-link/index.ts +3 -3
- package/src/{components-v2 → components}/nav-link/nav-link-2.tsx +1 -1
- package/src/{components-v2 → components}/nav-link/nav-link-3.tsx +1 -1
- package/src/{components-v2 → components}/nav-link/nav-link.tsx +26 -10
- package/src/{components-v2 → components}/navbar/__tests__/navbar.test.tsx +4 -7
- package/src/{components-v2 → components}/navbar/categories.tsx +4 -4
- package/src/{components-v2 → components}/navbar/category-based-menu/category-based-menu.tsx +5 -5
- package/src/components/navbar/category-based-menu/index.ts +1 -0
- package/src/{components-v2 → components}/navbar/category-based-menu/styles.ts +4 -4
- package/src/{components-v2 → components}/navbar/index.ts +1 -1
- package/src/components/navbar/mega-menu/index.ts +1 -0
- package/src/{components-v2 → components}/navbar/mega-menu/mega-menu.tsx +3 -3
- package/src/{components-v2 → components}/navbar/mega-menu/styles.ts +1 -1
- package/src/{components-v2 → components}/navbar/mobile-menu/index.ts +1 -1
- package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.test.tsx +2 -2
- package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.tsx +4 -4
- package/src/{components-v2 → components}/navbar/nav-list/cms-nav.test.tsx +1 -1
- package/src/components/navbar/nav-list/index.ts +1 -0
- package/src/{components-v2 → components}/navbar/nav-list/nav-item-child.tsx +4 -4
- package/src/{components-v2 → components}/navbar/nav-list/nav-list.tsx +8 -8
- package/src/{components-v2 → components}/navbar/navbar.tsx +3 -3
- package/src/{components-v2 → components}/navbar/styles.ts +2 -2
- package/src/{components-v2 → components}/navbar/utils/transform-nav.test.ts +1 -1
- package/src/{components-v2 → components}/no-records.tsx +1 -1
- package/src/{components-v2/navbar/nav-list → components/product-cards/product-card}/index.ts +1 -1
- package/src/{components-v2 → components}/product-cards/product-card/product-card.tsx +11 -11
- package/src/{components-v2 → components}/product-cards/product-card/styles/index.ts +1 -1
- package/src/{components-v2/categories/category-list → components/product-cards/product-card-plp}/index.ts +1 -1
- package/src/{components-v2 → components}/product-cards/product-card-plp/product-card.tsx +9 -9
- package/src/components/product-cards/product-card-plp-list/index.ts +1 -0
- package/src/{components-v2 → components}/product-cards/product-card-plp-list/product-card.tsx +9 -9
- package/src/components/product-cards/product-card-search/index.ts +1 -0
- package/src/{components-v2 → components}/product-cards/product-card-search/product-card.tsx +7 -7
- package/src/{components-v2 → components}/product-cards/product-price.tsx +2 -2
- package/src/{components-v2 → components}/product-cards/product-rating.tsx +2 -2
- package/src/{components-v2 → components}/product-cards/product-title.tsx +1 -1
- package/src/{components-v2 → components}/product-cards/quantity-buttons.tsx +2 -2
- package/src/{components-v2 → components}/product-dialog/__tests__/product-dialog.test.tsx +1 -1
- package/src/{components-v2 → components}/product-dialog/compound/product-dialog.tsx +5 -5
- package/src/{components-v2 → components}/product-dialog/index.tsx +1 -1
- package/src/{components-v2 → components}/product-dimensions/__tests__/product-dimensions.test.tsx +2 -2
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-error.tsx +4 -4
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-label.tsx +2 -2
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list-chip.tsx +1 -1
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list.tsx +2 -2
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group.tsx +3 -3
- package/src/{components-v2 → components}/product-dimensions/compound/dimensions.tsx +1 -1
- package/src/{components-v2 → components}/product-dimensions/index.tsx +1 -1
- package/src/{components-v2 → components}/product-quantity-buttons/__tests__/product-quantity-buttons.test.tsx +10 -1
- package/src/{components-v2 → components}/product-quantity-buttons/compound/quantity-buttons-root.tsx +2 -2
- package/src/{components-v2 → components}/product-quantity-buttons/index.tsx +1 -1
- package/src/{components-v2 → components}/product-quantity-variants/__tests__/product-quantity-variants.test.tsx +6 -4
- package/src/{components-v2 → components}/product-quantity-variants/index.tsx +2 -2
- package/src/{components-v2 → components}/products-view/__tests__/products-view.test.tsx +11 -3
- package/src/{components-v2 → components}/products-view/compound/products-grid-view.tsx +7 -7
- package/src/{components-v2 → components}/products-view/compound/products-list-view.tsx +4 -4
- package/src/{components-v2 → components}/products-view/compound/types.ts +1 -1
- package/src/{components-v2 → components}/products-view/index.tsx +2 -2
- package/src/{components-v2/side-nav → components/progress}/index.ts +1 -1
- package/src/{components-v2 → components}/progress/progress.tsx +3 -3
- package/src/{components-v2/progress → components/scrollbar}/index.ts +1 -1
- package/src/{components-v2 → components}/scrollbar/scrollbar.tsx +1 -1
- package/src/{components-v2 → components}/search-bar/__tests__/search-bar.test.tsx +7 -1
- package/src/{components-v2 → components}/search-bar/compound/results-item-lg.tsx +2 -2
- package/src/{components-v2 → components}/search-bar/compound/results-item-sm.tsx +4 -4
- package/src/{components-v2 → components}/search-bar/compound/results-suspense.tsx +5 -5
- package/src/{components-v2 → components}/search-bar/compound/results.tsx +2 -2
- package/src/{components-v2 → components}/search-bar/compound/search-bar-root.tsx +5 -5
- package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-category.tsx +3 -3
- package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-search-icon.tsx +1 -1
- package/src/{components-v2 → components}/search-bar/compound/textfield.tsx +5 -5
- package/src/{components-v2 → components}/search-bar/index.tsx +1 -1
- package/src/{components-v2 → components}/section/compound/section-header.tsx +2 -2
- package/src/{components-v2 → components}/section/compound/section.tsx +1 -1
- package/src/{components-v2 → components}/section/index.ts +1 -1
- package/src/{components-v2 → components}/side-nav/__tests__/side-nav.test.tsx +17 -14
- package/src/{components-v2/scrollbar → components/side-nav}/index.ts +1 -1
- package/src/{components-v2 → components}/side-nav/side-nav.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/__tests__/create-new-list.test.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +2 -2
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +4 -4
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +3 -3
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +3 -3
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +4 -4
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/index.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +2 -2
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +2 -2
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +2 -2
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/index.tsx +1 -1
- package/src/{components-v2 → components}/wishlist-dialogs/styles.ts +1 -1
- package/src/hooks/use-overflow-detect.ts +4 -4
- package/src/lib/cart-cookie-handler.ts +2 -2
- package/src/lib/category-helpers.ts +1 -1
- package/src/lib/lib.ts +1 -1
- package/src/lib/refiner-utils.ts +2 -2
- package/src/{pages-v2 → pages}/account/account-navigation.tsx +4 -4
- package/src/{pages-v2 → pages}/account/addresses/address-item.tsx +2 -2
- package/src/{pages-v2 → pages}/account/dashboard-header.tsx +4 -4
- package/src/{pages-v2 → pages}/account/orders/icons/delivery.tsx +1 -0
- package/src/{pages-v2 → pages}/account/orders/icons/package-box.tsx +1 -0
- package/src/{pages-v2 → pages}/account/orders/icons/truck-filled.tsx +1 -0
- package/src/{pages-v2 → pages}/account/orders/order-progress.tsx +5 -5
- package/src/{pages-v2 → pages}/account/orders/order-row.tsx +2 -2
- package/src/{pages-v2 → pages}/account/orders/order-summary.tsx +4 -4
- package/src/{pages-v2 → pages}/account/orders/ordered-products.tsx +2 -2
- package/src/{pages-v2 → pages}/account/profile/profile-button.test.tsx +2 -2
- package/src/{pages-v2 → pages}/account/profile/profile-button.tsx +1 -1
- package/src/{pages-v2 → pages}/account/profile/user-info.tsx +2 -2
- package/src/{pages-v2 → pages}/account/styles.ts +1 -1
- package/src/{pages-v2 → pages}/account/wishlist/create-new-list.tsx +2 -2
- package/src/{pages-v2 → pages}/account/wishlist/create-wishlist-button.tsx +2 -2
- package/src/{pages-v2 → pages}/account/wishlist/wishlist-item.tsx +3 -3
- package/src/{pages-v2 → pages}/blog/blog-card.tsx +4 -4
- package/src/{pages-v2 → pages}/cart/__tests__/cart-item.test.tsx +1 -1
- package/src/{pages-v2 → pages}/cart/__tests__/checkout-form.test.tsx +1 -1
- package/src/{pages-v2 → pages}/cart/__tests__/estimate-shipping.test.tsx +11 -11
- package/src/{pages-v2 → pages}/cart/cart-item.tsx +50 -22
- package/src/{pages-v2 → pages}/cart/checkout-form.tsx +4 -4
- package/src/{pages-v2 → pages}/cart/coupon-entry.tsx +2 -2
- package/src/{pages-v2 → pages}/cart/estimate-shipping.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-form.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-step.tsx +4 -4
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/index.ts +1 -1
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/step-heading.tsx +4 -4
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/address-card.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/delivery-address.tsx +25 -21
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/new-address-form.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/payment-details.tsx +31 -14
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-date.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-options.tsx +3 -3
- package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/cart-item.tsx +2 -2
- package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/checkout-alt-summary.tsx +3 -3
- package/src/pages/checkout/checkout-alt-summary/index.ts +1 -0
- package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/list-item.tsx +2 -2
- package/src/{pages-v2 → pages}/confirmation/address.tsx +1 -1
- package/src/{pages-v2 → pages}/confirmation/confirmation-summary.tsx +2 -2
- package/src/{pages-v2 → pages}/confirmation/ordered-products.tsx +2 -2
- package/src/{pages-v2 → pages}/product-details/available-shops.tsx +2 -5
- package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-button.tsx +1 -2
- package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-modal.tsx +4 -8
- package/src/{pages-v2 → pages}/product-details/bopis/pickup-option-select.tsx +1 -1
- package/src/pages/product-details/bopis/store-card/index.ts +1 -0
- package/src/{pages-v2 → pages}/product-details/bopis/store-card/shop-card.tsx +5 -5
- package/src/{pages-v2 → pages}/product-details/currency.ts +1 -1
- package/src/{pages-v2 → pages}/product-details/frequently-bought.tsx +3 -3
- package/src/{pages-v2 → pages}/product-details/frequently-product-card.tsx +5 -5
- package/src/{pages-v2 → pages}/product-details/product-comment.tsx +2 -2
- package/src/{pages-v2 → pages}/product-details/product-description.tsx +4 -2
- package/src/{pages-v2 → pages}/product-details/product-filter-card.tsx +5 -5
- package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-info.tsx +8 -9
- package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro-images.tsx +4 -4
- package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro.tsx +3 -3
- package/src/{pages-v2 → pages}/product-details/product-review.tsx +3 -6
- package/src/{pages-v2 → pages}/product-details/product-tabs.tsx +1 -1
- package/src/{pages-v2 → pages}/product-details/related-products.tsx +2 -2
- package/src/{pages-v2 → pages}/product-list/facet-group.tsx +1 -1
- package/src/{pages-v2 → pages}/product-list/list-filter.tsx +2 -2
- package/src/{pages-v2 → pages}/product-list/pagination.tsx +1 -1
- package/src/{pages-v2 → pages}/product-list/product-list-context.tsx +3 -3
- package/src/{pages-v2 → pages}/product-list/product-list-view.tsx +4 -4
- package/src/{pages-v2 → pages}/product-list/quick-view-dialog-content.tsx +6 -11
- package/src/{pages-v2 → pages}/product-list/selected-facets.tsx +1 -1
- package/src/{pages-v2 → pages}/product-list/utils/search-for-category.ts +3 -3
- package/src/{pages-v2 → pages}/quickorder/order-upload.tsx +5 -2
- package/src/{pages-v2 → pages}/quickorder/provider.tsx +8 -8
- package/src/{pages-v2 → pages}/quickorder/quick-order-header.tsx +3 -3
- package/src/{pages-v2 → pages}/quickorder/quick-order-row.tsx +1 -1
- package/src/{pages-v2 → pages}/quickorder/quick-order-table.tsx +1 -1
- package/src/{pages-v2 → pages}/quickorder/quick-order.tsx +10 -10
- package/src/providers/notifications/README.md +1 -1
- package/src/providers/notifications/notification-context.tsx +10 -4
- package/tsconfig.json +1 -1
- package/typedoc.js +1 -1
- package/src/components-v2/carousel-cards/carousel-card-1/index.ts +0 -1
- package/src/components-v2/categories/category-list-item/index.ts +0 -1
- package/src/components-v2/flex-box/index.ts +0 -5
- package/src/components-v2/navbar/category-based-menu/index.ts +0 -1
- package/src/components-v2/product-cards/product-card/index.ts +0 -1
- package/src/components-v2/product-cards/product-card-plp/index.ts +0 -1
- package/src/components-v2/product-cards/product-card-plp-list/index.ts +0 -1
- package/src/components-v2/product-cards/product-card-search/index.ts +0 -1
- package/src/pages-v2/checkout/checkout-alt-summary/index.ts +0 -1
- package/src/pages-v2/product-details/bopis/store-card/index.ts +0 -1
- package/src/{components-v2 → components}/BazaarCard.stories.tsx +0 -0
- package/src/{components-v2 → components}/BazaarCard.tsx +0 -0
- package/src/{components-v2 → components}/BazaarImage.tsx +0 -0
- package/src/{components-v2 → components}/BazaarMenu.stories.tsx +0 -0
- package/src/{components-v2 → components}/BazaarMenu.tsx +0 -0
- package/src/{components-v2 → components}/BazaarSwitch.stories.tsx +0 -0
- package/src/{components-v2 → components}/BazaarSwitch.tsx +0 -0
- package/src/{components-v2 → components}/BazaarTextField.stories.tsx +0 -0
- package/src/{components-v2 → components}/BorderShadowCard.stories.tsx +0 -0
- package/src/{components-v2 → components}/BoxShadowCard.tsx +0 -0
- package/src/{components-v2 → components}/CountryInput.stories.tsx +0 -0
- package/src/{components-v2 → components}/DropZone.stories.tsx +0 -0
- package/src/{components-v2 → components}/HoverBox.stories.tsx +0 -0
- package/src/{components-v2 → components}/HoverBox.tsx +0 -0
- package/src/{components-v2 → components}/Image.tsx +0 -0
- package/src/{components-v2 → components}/LazyImage.tsx +0 -0
- package/src/{components-v2 → components}/Loading.stories.tsx +0 -0
- package/src/{components-v2 → components}/Loading.tsx +0 -0
- package/src/{components-v2 → components}/NoRecords.stories.tsx +0 -0
- package/src/{components-v2 → components}/README.md +0 -0
- package/src/{components-v2 → components}/SearchInput.stories.tsx +0 -0
- package/src/{components-v2 → components}/SearchInput.tsx +0 -0
- package/src/{components-v2 → components}/SiteLogo.stories.tsx +0 -0
- package/src/{components-v2 → components}/SnackbarProvider.tsx +0 -0
- package/src/{components-v2 → components}/T/__tests__/T.test.tsx +0 -0
- package/src/{components-v2 → components}/T/index.tsx +0 -0
- package/src/{components-v2 → components}/Typography.stories.tsx +0 -0
- package/src/{components-v2 → components}/Typography.tsx +0 -0
- package/src/{components-v2 → components}/WhiteButton.stories.tsx +0 -0
- package/src/{components-v2 → components}/WhiteButton.tsx +0 -0
- package/src/{components-v2 → components}/accordion/AccordionHeader.stories.tsx +0 -0
- package/src/{components-v2 → components}/accordion/__tests__/accordion-header.test.tsx +0 -0
- package/src/{components-v2 → components}/carousel/Carousel.stories.tsx +0 -0
- package/src/{components-v2 → components}/carousel/__tests__/carousel.test.tsx +0 -0
- package/src/{components-v2 → components}/carousel/styles/index.ts +0 -0
- package/src/{components-v2 → components}/carousel-cards/carousel-card-1/CarouselCard1.stories.tsx +0 -0
- package/src/{components-v2 → components}/carousel-cards/carousel-card-1/__tests__/carousel-card-1.test.tsx +0 -0
- package/src/{components-v2 → components}/carousel-cards/carousel-card-1/styles.ts +0 -0
- package/src/{components-v2 → components}/categories/category-list/types.ts +0 -0
- package/src/{components-v2 → components}/categories/category-list-item/styles.ts +0 -0
- package/src/{components-v2 → components}/categories/mega-menu/styles.ts +0 -0
- package/src/{components-v2 → components}/categories/types.ts +0 -0
- package/src/{components-v2 → components}/countries-input.tsx +0 -0
- package/src/{components-v2 → components}/flex-box/Flex.stories.tsx +0 -0
- package/src/{components-v2 → components}/flex-box/flex-between.tsx +0 -0
- package/src/{components-v2 → components}/flex-box/flex-box.tsx +0 -0
- package/src/{components-v2 → components}/flex-box/flex-row-center.tsx +0 -0
- package/src/{components-v2 → components}/header/Header.stories.tsx +0 -0
- package/src/{components-v2 → components}/header/hooks/use-header.ts +0 -0
- package/src/{components-v2 → components}/header/styles/index.ts +0 -0
- package/src/{components-v2 → components}/icons/__tests__/icons.test.tsx +1 -1
- package/src/{components-v2 → components}/mini-cart/__tests__/cart-item.test.tsx +0 -0
- package/src/{components-v2 → components}/mini-cart/__tests__/mini-cart.test.tsx +0 -0
- package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-empty.json +0 -0
- package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-with-item.json +0 -0
- package/src/{components-v2 → components}/mini-cart/components/bottom-actions.tsx +0 -0
- package/src/{components-v2 → components}/mobile-navigation/__tests__/mobile-navigation-bar.test.tsx +2 -2
- package/src/{components-v2 → components}/nav-link/NavLink.stories.tsx +0 -0
- package/src/{components-v2 → components}/nav-link/NavLink2.stories.tsx +0 -0
- package/src/{components-v2 → components}/nav-link/NavLink3.stories.tsx +0 -0
- package/src/{components-v2 → components}/navbar/category-based-menu/types.ts +0 -0
- package/src/{components-v2 → components}/navbar/utils/transform-nav.ts +0 -0
- package/src/{components-v2 → components}/product-cards/__tests__/product-cards.test.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/discount-chip.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/favorite-button.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card/ProductCard.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-plp/ProductCardPlp.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-plp/styles/index.ts +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-plp-list/ProductCardPlpList.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-plp-list/components/tags.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-search/ProductCardSearch.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-cards/product-card-search/styles/index.ts +0 -0
- package/src/{components-v2 → components}/product-dialog/ProductDialog.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-dimensions/Dimensions.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-dimensions/__mocks__/data.ts +0 -0
- package/src/{components-v2 → components}/product-dimensions/utils/has-selected-dimension.ts +0 -0
- package/src/{components-v2 → components}/product-quantity-buttons/ProductQuantity.stories.tsx +0 -0
- package/src/{components-v2 → components}/product-quantity-variants/ProductQuantity.stories.tsx +0 -0
- package/src/{components-v2 → components}/products-view/ProductsGrid.stories.tsx +0 -0
- package/src/{components-v2 → components}/products-view/ProductsList.stories.tsx +0 -0
- package/src/{components-v2 → components}/products-view/compound/context.ts +0 -0
- package/src/{components-v2 → components}/progress/ProgressBar.stories.tsx +0 -0
- package/src/{components-v2 → components}/progress/__tests__/progress.test.tsx +0 -0
- package/src/{components-v2 → components}/scrollbar/Scrollbar.stories.tsx +0 -0
- package/src/{components-v2 → components}/scrollbar/__tests__/scrollbar.test.tsx +0 -0
- package/src/{components-v2 → components}/scrollbar/styles.ts +0 -0
- package/src/{components-v2 → components}/search-bar/SearchBarLarge.stories.tsx +0 -0
- package/src/{components-v2 → components}/search-bar/compound/context.ts +0 -0
- package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-button.tsx +0 -0
- package/src/{components-v2 → components}/search-bar/hooks/use-click-outside.ts +0 -0
- package/src/{components-v2 → components}/search-bar/hooks/use-search.ts +0 -0
- package/src/{components-v2 → components}/search-bar/styles/index.ts +0 -0
- package/src/{components-v2 → components}/search-bar/utils/findCategoryNameById.ts +0 -0
- package/src/{components-v2 → components}/section/Section.stories.tsx +0 -0
- package/src/{components-v2 → components}/section/__tests__/section.test.tsx +0 -0
- package/src/{components-v2 → components}/side-nav/SideNav.stories.tsx +0 -0
- package/src/{components-v2 → components}/site-logo.tsx +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistDetailData.json +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistsData.json +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/AddToWishlist.stories.tsx +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/context.ts +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +0 -0
- package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/CreateWishlistButton.stories.tsx +0 -0
- package/src/{pages-v2 → pages}/README.md +0 -0
- package/src/{pages-v2 → pages}/account/addresses/address-form.tsx +0 -0
- package/src/{pages-v2 → pages}/account/table-row.tsx +0 -0
- package/src/{pages-v2 → pages}/blog/pagination.tsx +0 -0
- package/src/{pages-v2 → pages}/cart/__tests__/cart-with-items.json +0 -0
- package/src/{pages-v2 → pages}/cart/__tests__/conutries.json +0 -0
- package/src/{pages-v2 → pages}/cart/__tests__/countries.json +0 -0
- package/src/{pages-v2 → pages}/cart/wrapper.tsx +0 -0
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/node.tsx +0 -0
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/styles.ts +0 -0
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/safe-card-preview-data.tsx +0 -0
- package/src/{pages-v2 → pages}/checkout/checkout-alt-form/types.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/bopis/search-header.tsx +0 -0
- package/src/{pages-v2 → pages}/product-details/bopis/store-card/styles.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/convertSecondsToTime.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/getDaysResources.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/checkbox-label.tsx +0 -0
- package/src/{pages-v2 → pages}/product-details/product-intro/compound/context.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +0 -0
- package/src/{pages-v2 → pages}/product-details/product-intro/utils.ts +0 -0
- package/src/{pages-v2 → pages}/product-details/types.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/breadcrumbs.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/checkbox-label.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/facet.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/product-list-state.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/product-rating.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/quick-view-dialog.tsx +4 -4
- package/src/{pages-v2 → pages}/product-list/range-filter.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/scrollbar.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/search-bar.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/side-nav.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/swatch.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/types.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/use-product-list.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/useCategoryFilter.tsx +0 -0
- package/src/{pages-v2 → pages}/product-list/utils/facet-helpers.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/utils/generate-breadcrumbs.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/utils/getCategoryFilterFromSlug.ts +0 -0
- package/src/{pages-v2 → pages}/product-list/utils/product-list-helper.ts +4 -4
- /package/src/{pages-v2 → pages}/product-list/utils/product-list-types.ts +0 -0
- /package/src/{pages-v2 → pages}/product-list/utils/sort-options.ts +0 -0
- /package/src/{pages-v2 → pages}/product-list/utils/use-previous-refiners.ts +0 -0
- /package/src/{pages-v2 → pages}/quickorder/context.ts +0 -0
package/docs.tsconfig.json
CHANGED
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"include": [
|
|
29
|
-
"src/components
|
|
30
|
-
"src/components
|
|
31
|
-
"src/components
|
|
32
|
-
"src/components
|
|
33
|
-
"src/components
|
|
29
|
+
"src/components/product-dimensions",
|
|
30
|
+
"src/components/product-quantity-buttons",
|
|
31
|
+
"src/components/products-view",
|
|
32
|
+
"src/components/search-bar",
|
|
33
|
+
"src/components/section"
|
|
34
34
|
]
|
|
35
35
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evenicanpm/storefront-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Core module for D365/e4 Headless Storefront",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"author": "Evenica",
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@evenicanpm/ui": "^
|
|
19
|
+
"@evenicanpm/ui": "^2.0.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@storybook/addon-docs": "^9.1.6",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"esbuild": "0.19.11"
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "7552c1e700a0027b8a65506c77cb10dae092fdfb"
|
|
53
53
|
}
|
|
@@ -382,7 +382,7 @@ export class D365CartDatasource extends D365DatasourceBase implements CartApi {
|
|
|
382
382
|
}
|
|
383
383
|
});
|
|
384
384
|
|
|
385
|
-
let shippingData;
|
|
385
|
+
let shippingData: ProductWarehouseInventoryInformation | undefined;
|
|
386
386
|
if (shippingItems.length) {
|
|
387
387
|
try {
|
|
388
388
|
const searchCriteria: InventoryAvailabilitySearchCriteria = {
|
|
@@ -392,24 +392,29 @@ export class D365CartDatasource extends D365DatasourceBase implements CartApi {
|
|
|
392
392
|
SearchArea: input.searchCriteria.searchArea,
|
|
393
393
|
FilterByChannelFulfillmentGroup: true,
|
|
394
394
|
};
|
|
395
|
-
|
|
395
|
+
const shippingAsyncResult = await getEstimatedAvailabilityAsync(
|
|
396
396
|
context as any,
|
|
397
397
|
searchCriteria,
|
|
398
398
|
);
|
|
399
|
+
shippingData =
|
|
400
|
+
shippingAsyncResult as ProductWarehouseInventoryInformation;
|
|
399
401
|
} catch (error) {
|
|
400
402
|
console.error("Error getting shipping inventory:", error);
|
|
401
403
|
throw error;
|
|
402
404
|
}
|
|
403
405
|
}
|
|
404
406
|
|
|
405
|
-
let warehouseData;
|
|
407
|
+
let warehouseData: ProductWarehouseInventoryInformation | undefined;
|
|
406
408
|
if (bopisItems.length) {
|
|
407
409
|
try {
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
410
|
+
const warehouseAsyncResult =
|
|
411
|
+
await getEstimatedProductWarehouseAvailabilityAsync(
|
|
412
|
+
context as any,
|
|
413
|
+
bopisItems,
|
|
414
|
+
2,
|
|
415
|
+
);
|
|
416
|
+
warehouseData =
|
|
417
|
+
warehouseAsyncResult as ProductWarehouseInventoryInformation;
|
|
413
418
|
} catch (error) {
|
|
414
419
|
console.error("Error getting pick up inventory:", error);
|
|
415
420
|
throw error;
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
} from "@evenicanpm/storefront-core/src/api-manager/schemas/product.schema";
|
|
20
20
|
import type { ProductApi } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
|
|
21
21
|
import {
|
|
22
|
+
executeAction,
|
|
22
23
|
type InventoryAvailabilitySearchCriteria,
|
|
23
24
|
type IQueryResultSettings,
|
|
24
25
|
type ProductPrice,
|
|
@@ -26,7 +27,6 @@ import {
|
|
|
26
27
|
type ProductSearchCriteria,
|
|
27
28
|
type ProductSearchResult,
|
|
28
29
|
type SimpleProduct,
|
|
29
|
-
executeAction,
|
|
30
30
|
} from "@msdyn365-commerce/retail-proxy";
|
|
31
31
|
import {
|
|
32
32
|
createSearchByCriteriaInput,
|
|
@@ -222,7 +222,11 @@ class D365ProductDatasource extends D365DatasourceBase implements ProductApi {
|
|
|
222
222
|
ItemId: id,
|
|
223
223
|
}));
|
|
224
224
|
}
|
|
225
|
-
const
|
|
225
|
+
const observableResults = await searchByCriteriaAsync(
|
|
226
|
+
ctx as any,
|
|
227
|
+
searchCriteria,
|
|
228
|
+
);
|
|
229
|
+
const results: ProductSearchResult[] = Array.from(observableResults as any);
|
|
226
230
|
const promises = [];
|
|
227
231
|
for (const product of results) {
|
|
228
232
|
promises.push(
|
|
@@ -233,8 +237,7 @@ class D365ProductDatasource extends D365DatasourceBase implements ProductApi {
|
|
|
233
237
|
);
|
|
234
238
|
}
|
|
235
239
|
await Promise.all(promises);
|
|
236
|
-
|
|
237
|
-
return parsed;
|
|
240
|
+
return results;
|
|
238
241
|
}
|
|
239
242
|
|
|
240
243
|
async getCategoryList(): Promise<any> {
|
|
@@ -102,7 +102,7 @@ const cart: CartApi = {
|
|
|
102
102
|
const e4Api = await getGraphqlClient();
|
|
103
103
|
|
|
104
104
|
const { cartLine } = input;
|
|
105
|
-
let cart;
|
|
105
|
+
let cart: E4Cart | undefined;
|
|
106
106
|
|
|
107
107
|
for (const cl of cartLine) {
|
|
108
108
|
const { data, errors } = await e4Api.e4UpdateCartLineMD({
|
|
@@ -118,12 +118,14 @@ const cart: CartApi = {
|
|
|
118
118
|
throw new Error("Error updating cart lines");
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
cart = data
|
|
121
|
+
cart = data?.updateCartLine?.cart as E4Cart | undefined;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
cart
|
|
126
|
-
|
|
124
|
+
if (!cart) {
|
|
125
|
+
throw new Error("Failed to update cart lines - no cart returned");
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const transformedData = cartTranslator.cartTransformValidate(cart);
|
|
127
129
|
return transformedData;
|
|
128
130
|
},
|
|
129
131
|
|
|
@@ -146,9 +146,9 @@ export const categoryTransformValidate = (
|
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
calculateUrls(rootNode, "", urlPrefix)
|
|
151
|
-
|
|
149
|
+
for (const rootNode of rootNodes as TransformedCategoryNode[]) {
|
|
150
|
+
calculateUrls(rootNode, "", urlPrefix);
|
|
151
|
+
}
|
|
152
152
|
rootNodes.sort(
|
|
153
153
|
(a, b) =>
|
|
154
154
|
(a.DisplayOrder ?? 0) - (b.DisplayOrder ?? 0) ||
|
|
@@ -305,7 +305,9 @@ export const productPricesTransformValidate = (
|
|
|
305
305
|
(p) => merge(p, productPricesMap) as ProductPrice,
|
|
306
306
|
);
|
|
307
307
|
try {
|
|
308
|
-
|
|
308
|
+
for (const pp of translatedData) {
|
|
309
|
+
productPriceSchema.parse(pp);
|
|
310
|
+
}
|
|
309
311
|
} catch (e) {
|
|
310
312
|
console.warn("ProductPrice data does not match retail-proxy schema", e);
|
|
311
313
|
}
|
package/src/api-manager/index.ts
CHANGED
|
@@ -61,10 +61,9 @@ async function createApiManager() {
|
|
|
61
61
|
|
|
62
62
|
// @ts-expect-error
|
|
63
63
|
function importAll(r) {
|
|
64
|
-
r.keys().forEach(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
);
|
|
64
|
+
r.keys().forEach((key: keyof typeof storefrontOverrides) => {
|
|
65
|
+
storefrontOverrides[key] = r(key);
|
|
66
|
+
});
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
// Arguments must be literals not variables.
|
package/src/auth/msal.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import azureADB2CProvider from "@/auth/providers/aadb2c-provider";
|
|
2
2
|
import authentikProvider from "@/auth/providers/authentik-provider";
|
|
3
|
-
import keycloakProvider from "@/auth/providers/keycloak-provider";
|
|
4
3
|
import createEntraExternalIdProvider from "@/auth/providers/entra-external-id-provider";
|
|
4
|
+
import keycloakProvider from "@/auth/providers/keycloak-provider";
|
|
5
5
|
|
|
6
6
|
export const getProviders = () => {
|
|
7
7
|
const azureProvider = azureADB2CProvider();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
// GLOBAL CUSTOM COMPONENT
|
|
4
|
-
import BazaarCard from "@evenicanpm/storefront-core/src/components
|
|
5
|
-
import { Carousel } from "@evenicanpm/storefront-core/src/components
|
|
6
|
-
import { Section } from "@evenicanpm/storefront-core/src/components
|
|
4
|
+
import BazaarCard from "@evenicanpm/storefront-core/src/components/BazaarCard";
|
|
5
|
+
import { Carousel } from "@evenicanpm/storefront-core/src/components/carousel/index";
|
|
6
|
+
import { Section } from "@evenicanpm/storefront-core/src/components/section";
|
|
7
7
|
import NextLink from "next/link";
|
|
8
8
|
import React from "react";
|
|
9
9
|
// LOCAL CUSTOM COMPONENT
|
|
@@ -13,7 +13,7 @@ import Logo from "@/cms/blocks/components/footer/sections/footer-logo";
|
|
|
13
13
|
import cms from "@/cms/endpoints";
|
|
14
14
|
|
|
15
15
|
const getBlockComponent = (block: FooterBlock, index: number) => {
|
|
16
|
-
let Block;
|
|
16
|
+
let Block: typeof Links | typeof Logo | typeof Contact;
|
|
17
17
|
|
|
18
18
|
switch (block.__component) {
|
|
19
19
|
case "footer.links":
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import FlexBox from "@evenicanpm/storefront-core/src/components
|
|
1
|
+
import FlexBox from "@evenicanpm/storefront-core/src/components/flex-box/flex-box";
|
|
2
2
|
import { Box } from "@mui/material";
|
|
3
3
|
import React, { Fragment } from "react";
|
|
4
4
|
import { MdFacebook as Facebook } from "react-icons/md";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Paragraph } from "@evenicanpm/storefront-core/src/components
|
|
1
|
+
import { Paragraph } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
2
2
|
import Grid from "@mui/material/Grid2";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import type { SocialLink } from "@/cms/blocks/components/footer/interfaces";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import SiteLogo from "@evenicanpm/storefront-core/src/components
|
|
4
|
-
import { Paragraph } from "@evenicanpm/storefront-core/src/components
|
|
3
|
+
import SiteLogo from "@evenicanpm/storefront-core/src/components/site-logo";
|
|
4
|
+
import { Paragraph } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
5
5
|
import Grid from "@mui/material/Grid2";
|
|
6
6
|
import useTheme from "@mui/material/styles/useTheme";
|
|
7
7
|
import useMediaQuery from "@mui/material/useMediaQuery";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
// Custom Components
|
|
4
|
-
import FlexBox from "@evenicanpm/storefront-core/src/components
|
|
4
|
+
import FlexBox from "@evenicanpm/storefront-core/src/components/flex-box/flex-box";
|
|
5
5
|
import IconButton from "@mui/material/IconButton";
|
|
6
6
|
import styled from "@mui/material/styles/styled";
|
|
7
7
|
import React from "react";
|
|
@@ -43,7 +43,12 @@ export default function SocialLinks({
|
|
|
43
43
|
return (
|
|
44
44
|
<FlexBox className="flex" mx={-0.625}>
|
|
45
45
|
{socials?.map(({ name, link }, i) => {
|
|
46
|
-
let Icon
|
|
46
|
+
let Icon:
|
|
47
|
+
| typeof Facebook
|
|
48
|
+
| typeof Instagram
|
|
49
|
+
| typeof Google
|
|
50
|
+
| typeof Twitter
|
|
51
|
+
| undefined;
|
|
47
52
|
|
|
48
53
|
switch (name) {
|
|
49
54
|
case "Facebook":
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// This component works best with cutout product images
|
|
3
3
|
|
|
4
4
|
// GLOBAL CUSTOM COMPONENTS
|
|
5
|
-
import { Carousel } from "@evenicanpm/storefront-core/src/components
|
|
6
|
-
import CarouselCard1 from "@evenicanpm/storefront-core/src/components
|
|
5
|
+
import { Carousel } from "@evenicanpm/storefront-core/src/components/carousel/index";
|
|
6
|
+
import CarouselCard1 from "@evenicanpm/storefront-core/src/components/carousel-cards/carousel-card-1/index";
|
|
7
7
|
import { Box, Container } from "@mui/material";
|
|
8
8
|
import React from "react";
|
|
9
9
|
import type { HeroCarouselBlock, Slide } from "@/cms/blocks/interfaces";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import getProductByIds from "@evenicanpm/storefront-core/src/api-manager/services/product/queries/get-product-by-ids";
|
|
3
|
-
import { Carousel } from "@evenicanpm/storefront-core/src/components
|
|
3
|
+
import { Carousel } from "@evenicanpm/storefront-core/src/components/carousel/index";
|
|
4
4
|
// CMS
|
|
5
|
-
import ProductCard from "@evenicanpm/storefront-core/src/components
|
|
6
|
-
import { Section } from "@evenicanpm/storefront-core/src/components
|
|
5
|
+
import ProductCard from "@evenicanpm/storefront-core/src/components/product-cards/product-card/product-card";
|
|
6
|
+
import { Section } from "@evenicanpm/storefront-core/src/components/section";
|
|
7
7
|
import type { SimpleProduct } from "@msdyn365-commerce/retail-proxy";
|
|
8
8
|
import { Box } from "@mui/system";
|
|
9
9
|
import React from "react";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getQueryClient } from "@evenicanpm/storefront-core/src/api-manager/services/get-query-client";
|
|
2
2
|
// API
|
|
3
3
|
import getProductByIds from "@evenicanpm/storefront-core/src/api-manager/services/product/queries/get-product-by-ids";
|
|
4
|
-
import BazaarCard from "@evenicanpm/storefront-core/src/components
|
|
5
|
-
import HoverBox from "@evenicanpm/storefront-core/src/components
|
|
6
|
-
import { Section } from "@evenicanpm/storefront-core/src/components
|
|
7
|
-
import { H4 } from "@evenicanpm/storefront-core/src/components
|
|
4
|
+
import BazaarCard from "@evenicanpm/storefront-core/src/components/BazaarCard";
|
|
5
|
+
import HoverBox from "@evenicanpm/storefront-core/src/components/HoverBox";
|
|
6
|
+
import { Section } from "@evenicanpm/storefront-core/src/components/section";
|
|
7
|
+
import { H4 } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
8
8
|
import buildDetailUrl from "@evenicanpm/storefront-core/src/lib/build-detail-url";
|
|
9
9
|
// Utils
|
|
10
10
|
import { currency } from "@evenicanpm/storefront-core/src/lib/lib";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import {
|
|
5
5
|
H4,
|
|
6
6
|
Span,
|
|
7
|
-
} from "@evenicanpm/storefront-core/src/components
|
|
7
|
+
} from "@evenicanpm/storefront-core/src/components/Typography";
|
|
8
8
|
import Card from "@mui/material/Card";
|
|
9
9
|
import Fab from "@mui/material/Fab";
|
|
10
10
|
import Grid from "@mui/material/Grid2";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// GLOBAL CUSTOM COMPONENTS
|
|
2
|
-
import HoverBox from "@evenicanpm/storefront-core/src/components
|
|
3
|
-
import Image from "@evenicanpm/storefront-core/src/components
|
|
4
|
-
import { H4 } from "@evenicanpm/storefront-core/src/components
|
|
2
|
+
import HoverBox from "@evenicanpm/storefront-core/src/components/HoverBox";
|
|
3
|
+
import Image from "@evenicanpm/storefront-core/src/components/Image";
|
|
4
|
+
import { H4 } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
5
5
|
import React from "react";
|
|
6
6
|
|
|
7
7
|
// ==========================================================
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import BazaarCard from "@evenicanpm/storefront-core/src/components
|
|
2
|
-
import BazaarImage from "@evenicanpm/storefront-core/src/components
|
|
1
|
+
import BazaarCard from "@evenicanpm/storefront-core/src/components/BazaarCard";
|
|
2
|
+
import BazaarImage from "@evenicanpm/storefront-core/src/components/BazaarImage";
|
|
3
3
|
// GLOBAL CUSTOM COMPONENTS
|
|
4
|
-
import { H4 } from "@evenicanpm/storefront-core/src/components
|
|
4
|
+
import { H4 } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
5
5
|
import { type SxProps, styled, type Theme } from "@mui/material/styles";
|
|
6
6
|
import React, { type HtmlHTMLAttributes } from "react";
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import ProductCard from "@evenicanpm/storefront-core/src/components
|
|
1
|
+
import ProductCard from "@evenicanpm/storefront-core/src/components/product-cards/product-card/index";
|
|
2
2
|
// GLOBAL CUSTOM COMPONENTS
|
|
3
|
-
import { Section } from "@evenicanpm/storefront-core/src/components
|
|
3
|
+
import { Section } from "@evenicanpm/storefront-core/src/components/section";
|
|
4
4
|
import Box from "@mui/material/Box";
|
|
5
5
|
import Grid from "@mui/material/Grid2";
|
|
6
6
|
import React from "react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// GLOBAL CUSTOM COMPONENTS
|
|
2
|
-
import HoverBox from "@evenicanpm/storefront-core/src/components
|
|
3
|
-
import Image from "@evenicanpm/storefront-core/src/components
|
|
2
|
+
import HoverBox from "@evenicanpm/storefront-core/src/components/HoverBox";
|
|
3
|
+
import Image from "@evenicanpm/storefront-core/src/components/Image";
|
|
4
4
|
import { lightOrDarkText } from "@evenicanpm/storefront-core/src/lib/hexToLuma";
|
|
5
5
|
import Card from "@mui/material/Card";
|
|
6
6
|
import Chip from "@mui/material/Chip";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { FlexRowCenter } from "@evenicanpm/storefront-core/src/components
|
|
1
|
+
import { FlexRowCenter } from "@evenicanpm/storefront-core/src/components/flex-box/index";
|
|
2
2
|
// GLOBAL CUSTOM COMPONENTS
|
|
3
|
-
import HoverBox from "@evenicanpm/storefront-core/src/components
|
|
4
|
-
import Image from "@evenicanpm/storefront-core/src/components
|
|
3
|
+
import HoverBox from "@evenicanpm/storefront-core/src/components/HoverBox";
|
|
4
|
+
import Image from "@evenicanpm/storefront-core/src/components/Image";
|
|
5
5
|
import {
|
|
6
6
|
H4,
|
|
7
7
|
Small,
|
|
8
|
-
} from "@evenicanpm/storefront-core/src/components
|
|
8
|
+
} from "@evenicanpm/storefront-core/src/components/Typography";
|
|
9
9
|
// CUSTOM UTILS LIBRARY FUNCTION
|
|
10
10
|
import { currency } from "@evenicanpm/storefront-core/src/lib/lib";
|
|
11
11
|
import Rating from "@mui/material/Rating";
|
|
@@ -6,6 +6,7 @@ import React from "react";
|
|
|
6
6
|
|
|
7
7
|
const Category: OverridableComponent<SvgIconTypeMap> = createSvgIcon(
|
|
8
8
|
<svg fill="currentColor" viewBox="0 0 64 64">
|
|
9
|
+
<title>Category</title>
|
|
9
10
|
<path d="m29 11v14a4 4 0 0 1 -4 4h-14a4 4 0 0 1 -4-4v-14a4 4 0 0 1 4-4h14a4 4 0 0 1 4 4zm24-4h-14a4 4 0 0 0 -4 4v14a4 4 0 0 0 4 4h14a4 4 0 0 0 4-4v-14a4 4 0 0 0 -4-4zm-28 28h-14a4 4 0 0 0 -4 4v14a4 4 0 0 0 4 4h14a4 4 0 0 0 4-4v-14a4 4 0 0 0 -4-4zm21 0a11 11 0 1 0 11 11 11 11 0 0 0 -11-11z" />
|
|
10
11
|
</svg>,
|
|
11
12
|
"Category",
|
|
@@ -5,6 +5,7 @@ import React from "react";
|
|
|
5
5
|
|
|
6
6
|
const DottedStar = createSvgIcon(
|
|
7
7
|
<svg fill="currentColor" viewBox="0 0 24 24">
|
|
8
|
+
<title>Dotted Star</title>
|
|
8
9
|
<path
|
|
9
10
|
d="M12.431 11.7264L11.9772 10.5867L11.5233 11.7264C11.4231 11.9784 11.1869 12.15 10.9157 12.1679L9.69147 12.2469L10.6349 13.031C10.8436 13.2047 10.9342 13.4828 10.8669 13.7457L10.5641 14.9342L11.6016 14.2785C11.8309 14.1344 12.1234 14.1344 12.3527 14.2785L13.3895 14.9336L13.0867 13.7457C13.0194 13.4828 13.11 13.2047 13.3188 13.031L14.2621 12.2469L13.0386 12.1679C12.7675 12.15 12.5313 11.9784 12.431 11.7264Z"
|
|
10
11
|
fill="#FF9101"
|
|
@@ -5,6 +5,7 @@ import React from "react";
|
|
|
5
5
|
|
|
6
6
|
const NewArrival = createSvgIcon(
|
|
7
7
|
<svg fill="currentColor" viewBox="0 0 24 24">
|
|
8
|
+
<title>New Arrival</title>
|
|
8
9
|
<g>
|
|
9
10
|
<path
|
|
10
11
|
d="M22.9347 12.001L24 10.1003L22.3995 8.62199L22.8254 6.48519L20.8463 5.57376L20.5911 3.40991L18.4273 3.15468L17.5158 1.17562L15.379 1.60157L13.9006 0.000976562L12 1.0663L10.0994 0.000976562L8.62106 1.60152L6.48427 1.17557L5.57283 3.15463L3.40898 3.40987L3.15375 5.57371L1.17469 6.48515L1.60064 8.62194L0 10.1003L1.06533 12.0009L0 13.9016L1.60055 15.3799L1.17459 17.5167L3.15366 18.4281L3.40889 20.592L5.57273 20.8472L6.48417 22.8263L8.62097 22.4003L10.0993 24.0009L11.9999 22.9356L13.9005 24.0009L15.3788 22.4003L17.5156 22.8263L18.4271 20.8472L20.5909 20.592L20.8462 18.4281L22.8252 17.5167L22.3993 15.3799L23.9998 13.9016L22.9347 12.001ZM8.62936 14.0641H7.61878L5.78016 11.7887V14.0641H4.50881V9.43504H5.49984L7.35802 11.7887V9.43504H8.62936V14.0641ZM12.7238 14.0641H9.42483V9.43504H12.6652V10.5434H10.6962V11.1954H12.3783V12.2255H10.6962V12.9557H12.7239V14.0641H12.7238ZM18.0765 14.0641H17.0203L16.3618 12.408L15.7098 14.0641H14.6536L12.8411 9.43504H14.2168L15.2209 12.6102L15.5403 11.6453L14.7905 9.43504H15.9576L16.3618 10.8629L16.7726 9.43504H17.9397L17.1768 11.6453L17.5094 12.6102L18.507 9.43504H19.8891L18.0765 14.0641Z"
|
|
@@ -4,6 +4,7 @@ import React from "react";
|
|
|
4
4
|
|
|
5
5
|
const RankBadge = createSvgIcon(
|
|
6
6
|
<svg fill="currentColor" viewBox="0 0 24 24">
|
|
7
|
+
<title>Rank Badge</title>
|
|
7
8
|
<path
|
|
8
9
|
d="M1.99309 16.5377L1.49359 17.0365L5.70897 18.0092C5.77746 18.025 5.84014 18.0597 5.88987 18.1093C5.93959 18.159 5.97437 18.2216 5.99022 18.2901L6.96297 22.5062L7.46247 22.0063L6.43722 17.5622L1.99309 16.5377Z"
|
|
9
10
|
fill="#FAB400"
|
|
@@ -11,12 +11,7 @@ import Light from "@/cms/blocks/icons/components/light";
|
|
|
11
11
|
import NewArrival from "@/cms/blocks/icons/components/new-arrival";
|
|
12
12
|
import RankBadge from "@/cms/blocks/icons/components/rank-badge";
|
|
13
13
|
|
|
14
|
-
export { Category };
|
|
15
|
-
export { DottedStar };
|
|
16
|
-
export { GiftBox };
|
|
17
|
-
export { Light };
|
|
18
|
-
export { NewArrival };
|
|
19
|
-
export { RankBadge };
|
|
14
|
+
export { Category, DottedStar, GiftBox, Light, NewArrival, RankBadge };
|
|
20
15
|
|
|
21
16
|
const iconMapping: Record<string, IconComponent> = {
|
|
22
17
|
DottedStar, // Add more icons here as needed
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// CUSTOM COMPONENT
|
|
2
|
-
import { H6 } from "@evenicanpm/storefront-core/src/components
|
|
2
|
+
import { H6 } from "@evenicanpm/storefront-core/src/components/Typography";
|
|
3
3
|
import Box, { type BoxProps } from "@mui/material/Box";
|
|
4
4
|
import TextField, { type TextFieldProps } from "@mui/material/TextField";
|
|
5
5
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
H5,
|
|
4
4
|
Small,
|
|
5
|
-
} from "@evenicanpm/storefront-core/src/components
|
|
5
|
+
} from "@evenicanpm/storefront-core/src/components/Typography";
|
|
6
6
|
// MUI
|
|
7
7
|
import Box from "@mui/material/Box";
|
|
8
8
|
import Button from "@mui/material/Button";
|
|
@@ -26,6 +26,7 @@ export default function DropZone({
|
|
|
26
26
|
onChange,
|
|
27
27
|
title = "Drag & drop files here",
|
|
28
28
|
handleReject,
|
|
29
|
+
accept,
|
|
29
30
|
}: Readonly<Props>) {
|
|
30
31
|
const onDrop = useCallback(
|
|
31
32
|
(acceptedFiles: File[]) => onChange(acceptedFiles),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import LazyImage from "@evenicanpm/storefront-core/src/components
|
|
3
|
+
import LazyImage from "@evenicanpm/storefront-core/src/components/LazyImage";
|
|
4
4
|
import type { ImageProps } from "next/image";
|
|
5
5
|
import type React from "react";
|
|
6
6
|
import { useEffect, useState } from "react";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { render, screen } from "@testing-library/react";
|
|
2
|
+
import BazaarCard from "../BazaarCard";
|
|
3
|
+
|
|
4
|
+
describe("BazaarCard", () => {
|
|
5
|
+
it("renders children", () => {
|
|
6
|
+
render(<BazaarCard>Card Content</BazaarCard>);
|
|
7
|
+
expect(screen.getByText("Card Content")).toBeInTheDocument();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("accepts hoverEffect prop", () => {
|
|
11
|
+
const { container } = render(
|
|
12
|
+
<BazaarCard hoverEffect>Hover Card</BazaarCard>,
|
|
13
|
+
);
|
|
14
|
+
expect(container.firstChild).toBeTruthy();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { render, screen } from "@testing-library/react";
|
|
2
|
+
import BazaarImage from "../BazaarImage";
|
|
3
|
+
|
|
4
|
+
describe("BazaarImage", () => {
|
|
5
|
+
it("renders image with src and alt", () => {
|
|
6
|
+
render(
|
|
7
|
+
<BazaarImage
|
|
8
|
+
src="/test.png"
|
|
9
|
+
alt="Test Image"
|
|
10
|
+
data-testid="bazaar-image"
|
|
11
|
+
/>,
|
|
12
|
+
);
|
|
13
|
+
const image = screen.getByTestId("bazaar-image");
|
|
14
|
+
expect(image).toBeInTheDocument();
|
|
15
|
+
expect(image).toHaveAttribute("src", "/test.png");
|
|
16
|
+
expect(image).toHaveAttribute("alt", "Test Image");
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
2
|
+
import { vi } from "vitest";
|
|
3
|
+
import BazaarMenu from "../BazaarMenu";
|
|
4
|
+
|
|
5
|
+
vi.mock("@mui/material/Menu", () => ({
|
|
6
|
+
default: ({
|
|
7
|
+
children,
|
|
8
|
+
open,
|
|
9
|
+
}: {
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
open: boolean;
|
|
12
|
+
}) => (open ? <div data-testid="bazaar-menu">{children}</div> : null),
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
describe("BazaarMenu", () => {
|
|
16
|
+
it("renders menu options when open is true", () => {
|
|
17
|
+
render(
|
|
18
|
+
<BazaarMenu
|
|
19
|
+
open
|
|
20
|
+
direction="right"
|
|
21
|
+
handler={() => <button type="button">Trigger</button>}
|
|
22
|
+
options={() => <div>Menu Option</div>}
|
|
23
|
+
/>,
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
expect(screen.getByTestId("bazaar-menu")).toBeInTheDocument();
|
|
27
|
+
expect(screen.getByText("Menu Option")).toBeInTheDocument();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("opens menu using handler click", () => {
|
|
31
|
+
render(
|
|
32
|
+
<BazaarMenu
|
|
33
|
+
handler={(onClick) => (
|
|
34
|
+
<button type="button" onClick={onClick}>
|
|
35
|
+
Open
|
|
36
|
+
</button>
|
|
37
|
+
)}
|
|
38
|
+
options={() => <div>Dynamic Option</div>}
|
|
39
|
+
/>,
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
fireEvent.click(screen.getByRole("button", { name: "Open" }));
|
|
43
|
+
expect(screen.getByTestId("bazaar-menu")).toBeInTheDocument();
|
|
44
|
+
expect(screen.getByText("Dynamic Option")).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
});
|