@evenicanpm/storefront-core 1.8.4 → 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.
Files changed (439) hide show
  1. package/docs.tsconfig.json +5 -5
  2. package/package.json +3 -3
  3. package/src/api-manager/datasources/d365/d365-cart.datasource.ts +13 -8
  4. package/src/api-manager/datasources/d365/d365-product.datasource.ts +7 -4
  5. package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +7 -5
  6. package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +3 -3
  7. package/src/api-manager/datasources/e4/product/e4-product.translator.ts +3 -1
  8. package/src/api-manager/index.ts +3 -4
  9. package/src/api-manager/lib/category-helpers.ts +1 -1
  10. package/src/auth/auth-options.test.ts +1 -1
  11. package/src/auth/msal.ts +1 -1
  12. package/src/auth/providers/entra-external-id-provider.ts +1 -1
  13. package/src/auth/providers/index.ts +1 -1
  14. package/src/cms/blocks/components/category-carousel/index.tsx +3 -3
  15. package/src/cms/blocks/components/footer/index.tsx +1 -1
  16. package/src/cms/blocks/components/footer/sections/footer-app-store.tsx +1 -1
  17. package/src/cms/blocks/components/footer/sections/footer-contact.tsx +1 -1
  18. package/src/cms/blocks/components/footer/sections/footer-logo.tsx +2 -2
  19. package/src/cms/blocks/components/footer/sections/footer-social-links.tsx +7 -2
  20. package/src/cms/blocks/components/hero-carousel/index.tsx +2 -2
  21. package/src/cms/blocks/components/product-carousel/index.tsx +3 -3
  22. package/src/cms/blocks/components/product-section-fullwidth/index.tsx +4 -4
  23. package/src/cms/blocks/components/services/service-card.tsx +1 -1
  24. package/src/cms/blocks/components/shared/featured-product-card.tsx +3 -3
  25. package/src/cms/blocks/components/shared/product-category-item.tsx +3 -3
  26. package/src/cms/blocks/components/shared/product-grid.tsx +2 -2
  27. package/src/cms/blocks/components/shared/top-categories-card.tsx +2 -2
  28. package/src/cms/blocks/components/shared/top-rating-product-card.tsx +4 -4
  29. package/src/cms/blocks/icons/components/category.tsx +1 -0
  30. package/src/cms/blocks/icons/components/dotted-star.tsx +1 -0
  31. package/src/cms/blocks/icons/components/gift-box.tsx +1 -0
  32. package/src/cms/blocks/icons/components/light.tsx +1 -0
  33. package/src/cms/blocks/icons/components/new-arrival.tsx +1 -0
  34. package/src/cms/blocks/icons/components/rank-badge.tsx +1 -0
  35. package/src/cms/blocks/icons/index.ts +1 -6
  36. package/src/{components-v2 → components}/BazaarTextField.tsx +1 -1
  37. package/src/{components-v2 → components}/DropZone.tsx +1 -1
  38. package/src/{components-v2 → components}/ImageWithFallback.tsx +1 -1
  39. package/src/components/_tests_/BazaarCard.test.tsx +16 -0
  40. package/src/components/_tests_/BazaarImage.test.tsx +18 -0
  41. package/src/components/_tests_/BazaarMenu.test.tsx +46 -0
  42. package/src/components/_tests_/BazaarSwitch.test.tsx +17 -0
  43. package/src/components/_tests_/BazaarTextField.test.tsx +22 -0
  44. package/src/components/_tests_/BoxShadowCard.test.tsx +14 -0
  45. package/src/components/_tests_/DropZone.test.tsx +51 -0
  46. package/src/components/_tests_/HoverBox.test.tsx +9 -0
  47. package/src/components/_tests_/Image.test.tsx +12 -0
  48. package/src/components/_tests_/ImageWithFallback.test.tsx +76 -0
  49. package/src/components/_tests_/LazyImage.test.tsx +32 -0
  50. package/src/components/_tests_/Loading.test.tsx +15 -0
  51. package/src/components/_tests_/SearchInput.test.tsx +14 -0
  52. package/src/components/_tests_/SnackbarProvider.test.tsx +22 -0
  53. package/src/components/_tests_/Typography.test.tsx +53 -0
  54. package/src/components/_tests_/WhiteButton.test.tsx +20 -0
  55. package/src/components/_tests_/countries-input.test.tsx +39 -0
  56. package/src/components/_tests_/no-records.test.tsx +14 -0
  57. package/src/components/_tests_/site-logo.test.tsx +29 -0
  58. package/src/{components-v2 → components}/accordion/accordion-header.tsx +1 -1
  59. package/src/{components-v2 → components}/accordion/index.ts +1 -1
  60. package/src/{components-v2 → components}/carousel/carousel.tsx +3 -3
  61. package/src/{components-v2 → components}/carousel/components/carousel-arrows.tsx +1 -1
  62. package/src/{components-v2 → components}/carousel/components/carousel-dots.tsx +1 -1
  63. package/src/{components-v2 → components}/carousel/index.ts +1 -1
  64. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/carousel-card-1.tsx +3 -3
  65. package/src/components/carousel-cards/carousel-card-1/index.ts +1 -0
  66. package/src/{components-v2 → components}/categories/Categories.stories.tsx +1 -1
  67. package/src/{components-v2 → components}/categories/__tests__/category-menu.test.tsx +1 -1
  68. package/src/{components-v2 → components}/categories/category-list/category-list.tsx +4 -4
  69. package/src/{components-v2/navbar/mega-menu → components/categories/category-list}/index.ts +1 -1
  70. package/src/{components-v2 → components}/categories/category-list/styles.ts +1 -1
  71. package/src/{components-v2 → components}/categories/category-list-item/category-menu-item.tsx +1 -1
  72. package/src/components/categories/category-list-item/index.ts +1 -0
  73. package/src/{components-v2 → components}/categories/category-menu.tsx +1 -1
  74. package/src/{components-v2 → components}/categories/mega-menu/banner.tsx +3 -3
  75. package/src/{components-v2 → components}/categories/mega-menu/column-list.tsx +4 -4
  76. package/src/{components-v2 → components}/categories/mega-menu/mega-menu-1.tsx +3 -3
  77. package/src/{components-v2 → components}/categories/mega-menu/mega-menu-2.tsx +4 -4
  78. package/src/{components-v2 → components}/flex-box/__tests__/flex-box.test.tsx +6 -8
  79. package/src/components/flex-box/index.ts +5 -0
  80. package/src/{components-v2 → components}/header/__tests__/header.test.tsx +8 -4
  81. package/src/{components-v2 → components}/header/__tests__/user.test.tsx +1 -1
  82. package/src/{components-v2 → components}/header/components/categories-menu.tsx +3 -3
  83. package/src/{components-v2 → components}/header/components/mobile-header.tsx +11 -11
  84. package/src/{components-v2 → components}/header/components/user.tsx +3 -3
  85. package/src/{components-v2 → components}/header/header.tsx +6 -6
  86. package/src/{components-v2 → components}/header/index.ts +1 -1
  87. package/src/{components-v2 → components}/header/sticky-header.tsx +3 -3
  88. package/src/{components-v2 → components}/icons/cart-bag.tsx +1 -0
  89. package/src/{components-v2 → components}/icons/category-outline.tsx +1 -0
  90. package/src/{components-v2 → components}/icons/category.tsx +1 -0
  91. package/src/{components-v2 → components}/icons/home.tsx +1 -0
  92. package/src/{components-v2 → components}/icons/search.tsx +1 -0
  93. package/src/{components-v2 → components}/icons/shopping-bag-outlined.tsx +1 -0
  94. package/src/{components-v2 → components}/icons/up-down.tsx +1 -0
  95. package/src/{components-v2 → components}/icons/user.tsx +1 -0
  96. package/src/{components-v2 → components}/icons/user2.tsx +1 -0
  97. package/src/{components-v2 → components}/mini-cart/components/cart-item.tsx +2 -2
  98. package/src/{components-v2 → components}/mini-cart/components/empty-view.tsx +2 -2
  99. package/src/{components-v2 → components}/mini-cart/components/top-header.tsx +2 -2
  100. package/src/{components-v2 → components}/mini-cart/index.ts +1 -1
  101. package/src/{components-v2 → components}/mini-cart/mini-cart-trigger.tsx +3 -5
  102. package/src/{components-v2 → components}/mini-cart/mini-cart.tsx +5 -5
  103. package/src/{components-v2 → components}/mobile-navigation/MobileNavigationBar.stories.tsx +2 -2
  104. package/src/{components-v2 → components}/mobile-navigation/index.ts +1 -1
  105. package/src/{components-v2 → components}/mobile-navigation/mobile-navigation-bar.tsx +5 -5
  106. package/src/{components-v2 → components}/mobile-navigation/styles/index.ts +2 -2
  107. package/src/{components-v2 → components}/nav-link/__tests__/nav-link.test.tsx +2 -1
  108. package/src/{components-v2 → components}/nav-link/index.ts +3 -3
  109. package/src/{components-v2 → components}/nav-link/nav-link-2.tsx +1 -1
  110. package/src/{components-v2 → components}/nav-link/nav-link-3.tsx +1 -1
  111. package/src/{components-v2 → components}/nav-link/nav-link.tsx +26 -10
  112. package/src/{components-v2 → components}/navbar/__tests__/navbar.test.tsx +4 -7
  113. package/src/{components-v2 → components}/navbar/categories.tsx +4 -4
  114. package/src/{components-v2 → components}/navbar/category-based-menu/category-based-menu.tsx +5 -5
  115. package/src/components/navbar/category-based-menu/index.ts +1 -0
  116. package/src/{components-v2 → components}/navbar/category-based-menu/styles.ts +4 -4
  117. package/src/{components-v2 → components}/navbar/index.ts +1 -1
  118. package/src/components/navbar/mega-menu/index.ts +1 -0
  119. package/src/{components-v2 → components}/navbar/mega-menu/mega-menu.tsx +3 -3
  120. package/src/{components-v2 → components}/navbar/mega-menu/styles.ts +1 -1
  121. package/src/{components-v2 → components}/navbar/mobile-menu/index.ts +1 -1
  122. package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.test.tsx +2 -2
  123. package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.tsx +4 -4
  124. package/src/{components-v2 → components}/navbar/nav-list/cms-nav.test.tsx +1 -1
  125. package/src/components/navbar/nav-list/index.ts +1 -0
  126. package/src/{components-v2 → components}/navbar/nav-list/nav-item-child.tsx +4 -4
  127. package/src/{components-v2 → components}/navbar/nav-list/nav-list.tsx +8 -8
  128. package/src/{components-v2 → components}/navbar/navbar.tsx +3 -3
  129. package/src/{components-v2 → components}/navbar/styles.ts +2 -2
  130. package/src/{components-v2 → components}/navbar/utils/transform-nav.test.ts +1 -1
  131. package/src/{components-v2 → components}/no-records.tsx +1 -1
  132. package/src/{components-v2/navbar/nav-list → components/product-cards/product-card}/index.ts +1 -1
  133. package/src/{components-v2 → components}/product-cards/product-card/product-card.tsx +11 -11
  134. package/src/{components-v2 → components}/product-cards/product-card/styles/index.ts +1 -1
  135. package/src/{components-v2/categories/category-list → components/product-cards/product-card-plp}/index.ts +1 -1
  136. package/src/{components-v2 → components}/product-cards/product-card-plp/product-card.tsx +9 -9
  137. package/src/components/product-cards/product-card-plp-list/index.ts +1 -0
  138. package/src/{components-v2 → components}/product-cards/product-card-plp-list/product-card.tsx +9 -9
  139. package/src/components/product-cards/product-card-search/index.ts +1 -0
  140. package/src/{components-v2 → components}/product-cards/product-card-search/product-card.tsx +7 -7
  141. package/src/{components-v2 → components}/product-cards/product-price.tsx +2 -2
  142. package/src/{components-v2 → components}/product-cards/product-rating.tsx +2 -2
  143. package/src/{components-v2 → components}/product-cards/product-title.tsx +1 -1
  144. package/src/{components-v2 → components}/product-cards/quantity-buttons.tsx +2 -2
  145. package/src/{components-v2 → components}/product-dialog/__tests__/product-dialog.test.tsx +1 -1
  146. package/src/{components-v2 → components}/product-dialog/compound/product-dialog.tsx +5 -5
  147. package/src/{components-v2 → components}/product-dialog/index.tsx +1 -1
  148. package/src/{components-v2 → components}/product-dimensions/__tests__/product-dimensions.test.tsx +2 -2
  149. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-error.tsx +4 -4
  150. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-label.tsx +2 -2
  151. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list-chip.tsx +1 -1
  152. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list.tsx +2 -2
  153. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group.tsx +3 -3
  154. package/src/{components-v2 → components}/product-dimensions/compound/dimensions.tsx +1 -1
  155. package/src/{components-v2 → components}/product-dimensions/index.tsx +1 -1
  156. package/src/{components-v2 → components}/product-quantity-buttons/__tests__/product-quantity-buttons.test.tsx +10 -1
  157. package/src/{components-v2 → components}/product-quantity-buttons/compound/quantity-buttons-root.tsx +2 -2
  158. package/src/{components-v2 → components}/product-quantity-buttons/index.tsx +1 -1
  159. package/src/{components-v2 → components}/product-quantity-variants/__tests__/product-quantity-variants.test.tsx +6 -4
  160. package/src/{components-v2 → components}/product-quantity-variants/index.tsx +2 -2
  161. package/src/{components-v2 → components}/products-view/__tests__/products-view.test.tsx +11 -3
  162. package/src/{components-v2 → components}/products-view/compound/products-grid-view.tsx +7 -7
  163. package/src/{components-v2 → components}/products-view/compound/products-list-view.tsx +4 -4
  164. package/src/{components-v2 → components}/products-view/compound/types.ts +1 -1
  165. package/src/{components-v2 → components}/products-view/index.tsx +2 -2
  166. package/src/{components-v2/side-nav → components/progress}/index.ts +1 -1
  167. package/src/{components-v2 → components}/progress/progress.tsx +3 -3
  168. package/src/{components-v2/progress → components/scrollbar}/index.ts +1 -1
  169. package/src/{components-v2 → components}/scrollbar/scrollbar.tsx +1 -1
  170. package/src/{components-v2 → components}/search-bar/__tests__/search-bar.test.tsx +7 -1
  171. package/src/{components-v2 → components}/search-bar/compound/results-item-lg.tsx +2 -2
  172. package/src/{components-v2 → components}/search-bar/compound/results-item-sm.tsx +4 -4
  173. package/src/{components-v2 → components}/search-bar/compound/results-suspense.tsx +5 -5
  174. package/src/{components-v2 → components}/search-bar/compound/results.tsx +2 -2
  175. package/src/{components-v2 → components}/search-bar/compound/search-bar-root.tsx +5 -5
  176. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-category.tsx +3 -3
  177. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-search-icon.tsx +1 -1
  178. package/src/{components-v2 → components}/search-bar/compound/textfield.tsx +5 -5
  179. package/src/{components-v2 → components}/search-bar/index.tsx +1 -1
  180. package/src/{components-v2 → components}/section/compound/section-header.tsx +2 -2
  181. package/src/{components-v2 → components}/section/compound/section.tsx +1 -1
  182. package/src/{components-v2 → components}/section/index.ts +1 -1
  183. package/src/{components-v2 → components}/side-nav/__tests__/side-nav.test.tsx +17 -14
  184. package/src/{components-v2/scrollbar → components/side-nav}/index.ts +1 -1
  185. package/src/{components-v2 → components}/side-nav/side-nav.tsx +1 -1
  186. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/create-new-list.test.tsx +1 -1
  187. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +2 -2
  188. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +1 -1
  189. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +4 -4
  190. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +3 -3
  191. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +3 -3
  192. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +4 -4
  193. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/index.tsx +1 -1
  194. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +1 -1
  195. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +2 -2
  196. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +2 -2
  197. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +2 -2
  198. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/index.tsx +1 -1
  199. package/src/{components-v2 → components}/wishlist-dialogs/styles.ts +1 -1
  200. package/src/hooks/use-overflow-detect.ts +4 -4
  201. package/src/lib/cart-cookie-handler.ts +2 -2
  202. package/src/lib/category-helpers.ts +1 -1
  203. package/src/lib/lib.ts +1 -1
  204. package/src/lib/refiner-utils.ts +2 -2
  205. package/src/{pages-v2 → pages}/account/account-navigation.tsx +4 -4
  206. package/src/{pages-v2 → pages}/account/addresses/address-item.tsx +2 -2
  207. package/src/{pages-v2 → pages}/account/dashboard-header.tsx +4 -4
  208. package/src/{pages-v2 → pages}/account/orders/icons/delivery.tsx +1 -0
  209. package/src/{pages-v2 → pages}/account/orders/icons/package-box.tsx +1 -0
  210. package/src/{pages-v2 → pages}/account/orders/icons/truck-filled.tsx +1 -0
  211. package/src/{pages-v2 → pages}/account/orders/order-progress.tsx +5 -5
  212. package/src/{pages-v2 → pages}/account/orders/order-row.tsx +2 -2
  213. package/src/{pages-v2 → pages}/account/orders/order-summary.tsx +4 -4
  214. package/src/{pages-v2 → pages}/account/orders/ordered-products.tsx +2 -2
  215. package/src/{pages-v2 → pages}/account/profile/profile-button.test.tsx +2 -2
  216. package/src/{pages-v2 → pages}/account/profile/profile-button.tsx +1 -1
  217. package/src/{pages-v2 → pages}/account/profile/user-info.tsx +2 -2
  218. package/src/{pages-v2 → pages}/account/styles.ts +1 -1
  219. package/src/{pages-v2 → pages}/account/wishlist/create-new-list.tsx +2 -2
  220. package/src/{pages-v2 → pages}/account/wishlist/create-wishlist-button.tsx +2 -2
  221. package/src/{pages-v2 → pages}/account/wishlist/wishlist-item.tsx +3 -3
  222. package/src/{pages-v2 → pages}/blog/blog-card.tsx +4 -4
  223. package/src/{pages-v2 → pages}/cart/__tests__/cart-item.test.tsx +1 -1
  224. package/src/{pages-v2 → pages}/cart/__tests__/checkout-form.test.tsx +1 -1
  225. package/src/{pages-v2 → pages}/cart/__tests__/estimate-shipping.test.tsx +11 -11
  226. package/src/{pages-v2 → pages}/cart/cart-item.tsx +50 -22
  227. package/src/{pages-v2 → pages}/cart/checkout-form.tsx +4 -4
  228. package/src/{pages-v2 → pages}/cart/coupon-entry.tsx +2 -2
  229. package/src/{pages-v2 → pages}/cart/estimate-shipping.tsx +2 -2
  230. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-form.tsx +2 -2
  231. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-step.tsx +4 -4
  232. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/index.ts +1 -1
  233. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/step-heading.tsx +4 -4
  234. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/address-card.tsx +2 -2
  235. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/delivery-address.tsx +25 -21
  236. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/new-address-form.tsx +2 -2
  237. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +2 -2
  238. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/payment-details.tsx +31 -14
  239. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-date.tsx +2 -2
  240. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-options.tsx +3 -3
  241. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/cart-item.tsx +2 -2
  242. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/checkout-alt-summary.tsx +3 -3
  243. package/src/pages/checkout/checkout-alt-summary/index.ts +1 -0
  244. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/list-item.tsx +2 -2
  245. package/src/{pages-v2 → pages}/confirmation/address.tsx +1 -1
  246. package/src/{pages-v2 → pages}/confirmation/confirmation-summary.tsx +2 -2
  247. package/src/{pages-v2 → pages}/confirmation/ordered-products.tsx +2 -2
  248. package/src/{pages-v2 → pages}/product-details/available-shops.tsx +2 -5
  249. package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-button.tsx +1 -2
  250. package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-modal.tsx +4 -8
  251. package/src/{pages-v2 → pages}/product-details/bopis/pickup-option-select.tsx +1 -1
  252. package/src/pages/product-details/bopis/store-card/index.ts +1 -0
  253. package/src/{pages-v2 → pages}/product-details/bopis/store-card/shop-card.tsx +5 -5
  254. package/src/{pages-v2 → pages}/product-details/currency.ts +1 -1
  255. package/src/{pages-v2 → pages}/product-details/frequently-bought.tsx +3 -3
  256. package/src/{pages-v2 → pages}/product-details/frequently-product-card.tsx +5 -5
  257. package/src/{pages-v2 → pages}/product-details/product-comment.tsx +2 -2
  258. package/src/{pages-v2 → pages}/product-details/product-description.tsx +4 -2
  259. package/src/{pages-v2 → pages}/product-details/product-filter-card.tsx +5 -5
  260. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-info.tsx +8 -9
  261. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro-images.tsx +4 -4
  262. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro.tsx +3 -3
  263. package/src/{pages-v2 → pages}/product-details/product-review.tsx +3 -6
  264. package/src/{pages-v2 → pages}/product-details/product-tabs.tsx +1 -1
  265. package/src/{pages-v2 → pages}/product-details/related-products.tsx +2 -2
  266. package/src/{pages-v2 → pages}/product-list/facet-group.tsx +1 -1
  267. package/src/{pages-v2 → pages}/product-list/list-filter.tsx +2 -2
  268. package/src/{pages-v2 → pages}/product-list/pagination.tsx +1 -1
  269. package/src/{pages-v2 → pages}/product-list/product-list-context.tsx +3 -3
  270. package/src/{pages-v2 → pages}/product-list/product-list-view.tsx +4 -4
  271. package/src/{pages-v2 → pages}/product-list/quick-view-dialog-content.tsx +6 -11
  272. package/src/{pages-v2 → pages}/product-list/selected-facets.tsx +1 -1
  273. package/src/{pages-v2 → pages}/product-list/utils/search-for-category.ts +3 -3
  274. package/src/{pages-v2 → pages}/quickorder/order-upload.tsx +5 -2
  275. package/src/{pages-v2 → pages}/quickorder/provider.tsx +8 -8
  276. package/src/{pages-v2 → pages}/quickorder/quick-order-header.tsx +3 -3
  277. package/src/{pages-v2 → pages}/quickorder/quick-order-row.tsx +1 -1
  278. package/src/{pages-v2 → pages}/quickorder/quick-order-table.tsx +1 -1
  279. package/src/{pages-v2 → pages}/quickorder/quick-order.tsx +10 -10
  280. package/src/providers/notifications/README.md +1 -1
  281. package/src/providers/notifications/notification-context.tsx +10 -4
  282. package/tsconfig.json +1 -1
  283. package/typedoc.js +1 -1
  284. package/src/components-v2/carousel-cards/carousel-card-1/index.ts +0 -1
  285. package/src/components-v2/categories/category-list-item/index.ts +0 -1
  286. package/src/components-v2/flex-box/index.ts +0 -5
  287. package/src/components-v2/navbar/category-based-menu/index.ts +0 -1
  288. package/src/components-v2/product-cards/product-card/index.ts +0 -1
  289. package/src/components-v2/product-cards/product-card-plp/index.ts +0 -1
  290. package/src/components-v2/product-cards/product-card-plp-list/index.ts +0 -1
  291. package/src/components-v2/product-cards/product-card-search/index.ts +0 -1
  292. package/src/pages-v2/checkout/checkout-alt-summary/index.ts +0 -1
  293. package/src/pages-v2/product-details/bopis/store-card/index.ts +0 -1
  294. package/src/{components-v2 → components}/BazaarCard.stories.tsx +0 -0
  295. package/src/{components-v2 → components}/BazaarCard.tsx +0 -0
  296. package/src/{components-v2 → components}/BazaarImage.tsx +0 -0
  297. package/src/{components-v2 → components}/BazaarMenu.stories.tsx +0 -0
  298. package/src/{components-v2 → components}/BazaarMenu.tsx +0 -0
  299. package/src/{components-v2 → components}/BazaarSwitch.stories.tsx +0 -0
  300. package/src/{components-v2 → components}/BazaarSwitch.tsx +0 -0
  301. package/src/{components-v2 → components}/BazaarTextField.stories.tsx +0 -0
  302. package/src/{components-v2 → components}/BorderShadowCard.stories.tsx +0 -0
  303. package/src/{components-v2 → components}/BoxShadowCard.tsx +0 -0
  304. package/src/{components-v2 → components}/CountryInput.stories.tsx +0 -0
  305. package/src/{components-v2 → components}/DropZone.stories.tsx +0 -0
  306. package/src/{components-v2 → components}/HoverBox.stories.tsx +0 -0
  307. package/src/{components-v2 → components}/HoverBox.tsx +0 -0
  308. package/src/{components-v2 → components}/Image.tsx +0 -0
  309. package/src/{components-v2 → components}/LazyImage.tsx +0 -0
  310. package/src/{components-v2 → components}/Loading.stories.tsx +0 -0
  311. package/src/{components-v2 → components}/Loading.tsx +0 -0
  312. package/src/{components-v2 → components}/NoRecords.stories.tsx +0 -0
  313. package/src/{components-v2 → components}/README.md +0 -0
  314. package/src/{components-v2 → components}/SearchInput.stories.tsx +0 -0
  315. package/src/{components-v2 → components}/SearchInput.tsx +0 -0
  316. package/src/{components-v2 → components}/SiteLogo.stories.tsx +0 -0
  317. package/src/{components-v2 → components}/SnackbarProvider.tsx +0 -0
  318. package/src/{components-v2 → components}/T/__tests__/T.test.tsx +0 -0
  319. package/src/{components-v2 → components}/T/index.tsx +0 -0
  320. package/src/{components-v2 → components}/Typography.stories.tsx +0 -0
  321. package/src/{components-v2 → components}/Typography.tsx +0 -0
  322. package/src/{components-v2 → components}/WhiteButton.stories.tsx +0 -0
  323. package/src/{components-v2 → components}/WhiteButton.tsx +0 -0
  324. package/src/{components-v2 → components}/accordion/AccordionHeader.stories.tsx +0 -0
  325. package/src/{components-v2 → components}/accordion/__tests__/accordion-header.test.tsx +0 -0
  326. package/src/{components-v2 → components}/carousel/Carousel.stories.tsx +0 -0
  327. package/src/{components-v2 → components}/carousel/__tests__/carousel.test.tsx +0 -0
  328. package/src/{components-v2 → components}/carousel/styles/index.ts +0 -0
  329. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/CarouselCard1.stories.tsx +0 -0
  330. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/__tests__/carousel-card-1.test.tsx +0 -0
  331. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/styles.ts +0 -0
  332. package/src/{components-v2 → components}/categories/category-list/types.ts +0 -0
  333. package/src/{components-v2 → components}/categories/category-list-item/styles.ts +0 -0
  334. package/src/{components-v2 → components}/categories/mega-menu/styles.ts +0 -0
  335. package/src/{components-v2 → components}/categories/types.ts +0 -0
  336. package/src/{components-v2 → components}/countries-input.tsx +0 -0
  337. package/src/{components-v2 → components}/flex-box/Flex.stories.tsx +0 -0
  338. package/src/{components-v2 → components}/flex-box/flex-between.tsx +0 -0
  339. package/src/{components-v2 → components}/flex-box/flex-box.tsx +0 -0
  340. package/src/{components-v2 → components}/flex-box/flex-row-center.tsx +0 -0
  341. package/src/{components-v2 → components}/header/Header.stories.tsx +0 -0
  342. package/src/{components-v2 → components}/header/hooks/use-header.ts +0 -0
  343. package/src/{components-v2 → components}/header/styles/index.ts +0 -0
  344. package/src/{components-v2 → components}/icons/__tests__/icons.test.tsx +1 -1
  345. package/src/{components-v2 → components}/mini-cart/__tests__/cart-item.test.tsx +0 -0
  346. package/src/{components-v2 → components}/mini-cart/__tests__/mini-cart.test.tsx +0 -0
  347. package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-empty.json +0 -0
  348. package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-with-item.json +0 -0
  349. package/src/{components-v2 → components}/mini-cart/components/bottom-actions.tsx +0 -0
  350. package/src/{components-v2 → components}/mobile-navigation/__tests__/mobile-navigation-bar.test.tsx +2 -2
  351. package/src/{components-v2 → components}/nav-link/NavLink.stories.tsx +0 -0
  352. package/src/{components-v2 → components}/nav-link/NavLink2.stories.tsx +0 -0
  353. package/src/{components-v2 → components}/nav-link/NavLink3.stories.tsx +0 -0
  354. package/src/{components-v2 → components}/navbar/category-based-menu/types.ts +0 -0
  355. package/src/{components-v2 → components}/navbar/utils/transform-nav.ts +0 -0
  356. package/src/{components-v2 → components}/product-cards/__tests__/product-cards.test.tsx +0 -0
  357. package/src/{components-v2 → components}/product-cards/discount-chip.tsx +0 -0
  358. package/src/{components-v2 → components}/product-cards/favorite-button.tsx +0 -0
  359. package/src/{components-v2 → components}/product-cards/product-card/ProductCard.stories.tsx +0 -0
  360. package/src/{components-v2 → components}/product-cards/product-card-plp/ProductCardPlp.stories.tsx +0 -0
  361. package/src/{components-v2 → components}/product-cards/product-card-plp/styles/index.ts +0 -0
  362. package/src/{components-v2 → components}/product-cards/product-card-plp-list/ProductCardPlpList.stories.tsx +0 -0
  363. package/src/{components-v2 → components}/product-cards/product-card-plp-list/components/tags.tsx +0 -0
  364. package/src/{components-v2 → components}/product-cards/product-card-search/ProductCardSearch.stories.tsx +0 -0
  365. package/src/{components-v2 → components}/product-cards/product-card-search/styles/index.ts +0 -0
  366. package/src/{components-v2 → components}/product-dialog/ProductDialog.stories.tsx +0 -0
  367. package/src/{components-v2 → components}/product-dimensions/Dimensions.stories.tsx +0 -0
  368. package/src/{components-v2 → components}/product-dimensions/__mocks__/data.ts +0 -0
  369. package/src/{components-v2 → components}/product-dimensions/utils/has-selected-dimension.ts +0 -0
  370. package/src/{components-v2 → components}/product-quantity-buttons/ProductQuantity.stories.tsx +0 -0
  371. package/src/{components-v2 → components}/product-quantity-variants/ProductQuantity.stories.tsx +0 -0
  372. package/src/{components-v2 → components}/products-view/ProductsGrid.stories.tsx +0 -0
  373. package/src/{components-v2 → components}/products-view/ProductsList.stories.tsx +0 -0
  374. package/src/{components-v2 → components}/products-view/compound/context.ts +0 -0
  375. package/src/{components-v2 → components}/progress/ProgressBar.stories.tsx +0 -0
  376. package/src/{components-v2 → components}/progress/__tests__/progress.test.tsx +0 -0
  377. package/src/{components-v2 → components}/scrollbar/Scrollbar.stories.tsx +0 -0
  378. package/src/{components-v2 → components}/scrollbar/__tests__/scrollbar.test.tsx +0 -0
  379. package/src/{components-v2 → components}/scrollbar/styles.ts +0 -0
  380. package/src/{components-v2 → components}/search-bar/SearchBarLarge.stories.tsx +0 -0
  381. package/src/{components-v2 → components}/search-bar/compound/context.ts +0 -0
  382. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-button.tsx +0 -0
  383. package/src/{components-v2 → components}/search-bar/hooks/use-click-outside.ts +0 -0
  384. package/src/{components-v2 → components}/search-bar/hooks/use-search.ts +0 -0
  385. package/src/{components-v2 → components}/search-bar/styles/index.ts +0 -0
  386. package/src/{components-v2 → components}/search-bar/utils/findCategoryNameById.ts +0 -0
  387. package/src/{components-v2 → components}/section/Section.stories.tsx +0 -0
  388. package/src/{components-v2 → components}/section/__tests__/section.test.tsx +0 -0
  389. package/src/{components-v2 → components}/side-nav/SideNav.stories.tsx +0 -0
  390. package/src/{components-v2 → components}/site-logo.tsx +0 -0
  391. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistDetailData.json +0 -0
  392. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistsData.json +0 -0
  393. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/AddToWishlist.stories.tsx +0 -0
  394. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/context.ts +0 -0
  395. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +0 -0
  396. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/CreateWishlistButton.stories.tsx +0 -0
  397. package/src/{pages-v2 → pages}/README.md +0 -0
  398. package/src/{pages-v2 → pages}/account/addresses/address-form.tsx +0 -0
  399. package/src/{pages-v2 → pages}/account/table-row.tsx +0 -0
  400. package/src/{pages-v2 → pages}/blog/pagination.tsx +0 -0
  401. package/src/{pages-v2 → pages}/cart/__tests__/cart-with-items.json +0 -0
  402. package/src/{pages-v2 → pages}/cart/__tests__/conutries.json +0 -0
  403. package/src/{pages-v2 → pages}/cart/__tests__/countries.json +0 -0
  404. package/src/{pages-v2 → pages}/cart/wrapper.tsx +0 -0
  405. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/node.tsx +0 -0
  406. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/styles.ts +0 -0
  407. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/safe-card-preview-data.tsx +0 -0
  408. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/types.ts +0 -0
  409. package/src/{pages-v2 → pages}/product-details/bopis/search-header.tsx +0 -0
  410. package/src/{pages-v2 → pages}/product-details/bopis/store-card/styles.ts +0 -0
  411. package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/convertSecondsToTime.ts +0 -0
  412. package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/getDaysResources.ts +0 -0
  413. package/src/{pages-v2 → pages}/product-details/checkbox-label.tsx +0 -0
  414. package/src/{pages-v2 → pages}/product-details/product-intro/compound/context.ts +0 -0
  415. package/src/{pages-v2 → pages}/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +0 -0
  416. package/src/{pages-v2 → pages}/product-details/product-intro/utils.ts +0 -0
  417. package/src/{pages-v2 → pages}/product-details/types.ts +0 -0
  418. package/src/{pages-v2 → pages}/product-list/breadcrumbs.tsx +0 -0
  419. package/src/{pages-v2 → pages}/product-list/checkbox-label.tsx +0 -0
  420. package/src/{pages-v2 → pages}/product-list/facet.tsx +0 -0
  421. package/src/{pages-v2 → pages}/product-list/product-list-state.ts +0 -0
  422. package/src/{pages-v2 → pages}/product-list/product-rating.tsx +0 -0
  423. package/src/{pages-v2 → pages}/product-list/quick-view-dialog.tsx +4 -4
  424. package/src/{pages-v2 → pages}/product-list/range-filter.tsx +0 -0
  425. package/src/{pages-v2 → pages}/product-list/scrollbar.tsx +0 -0
  426. package/src/{pages-v2 → pages}/product-list/search-bar.tsx +0 -0
  427. package/src/{pages-v2 → pages}/product-list/side-nav.tsx +0 -0
  428. package/src/{pages-v2 → pages}/product-list/swatch.tsx +0 -0
  429. package/src/{pages-v2 → pages}/product-list/types.ts +0 -0
  430. package/src/{pages-v2 → pages}/product-list/use-product-list.ts +0 -0
  431. package/src/{pages-v2 → pages}/product-list/useCategoryFilter.tsx +0 -0
  432. package/src/{pages-v2 → pages}/product-list/utils/facet-helpers.ts +0 -0
  433. package/src/{pages-v2 → pages}/product-list/utils/generate-breadcrumbs.ts +0 -0
  434. package/src/{pages-v2 → pages}/product-list/utils/getCategoryFilterFromSlug.ts +0 -0
  435. package/src/{pages-v2 → pages}/product-list/utils/product-list-helper.ts +4 -4
  436. /package/src/{pages-v2 → pages}/product-list/utils/product-list-types.ts +0 -0
  437. /package/src/{pages-v2 → pages}/product-list/utils/sort-options.ts +0 -0
  438. /package/src/{pages-v2 → pages}/product-list/utils/use-previous-refiners.ts +0 -0
  439. /package/src/{pages-v2 → pages}/quickorder/context.ts +0 -0
@@ -26,10 +26,10 @@
26
26
  }
27
27
  },
28
28
  "include": [
29
- "src/components-v2/product-dimensions",
30
- "src/components-v2/product-quantity-buttons",
31
- "src/components-v2/products-view",
32
- "src/components-v2/search-bar",
33
- "src/components-v2/section"
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": "1.8.4",
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": "^1.8.1"
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": "1d78147b4f2d66540a4c410afb2227fbe2ae0d0f"
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
- shippingData = await getEstimatedAvailabilityAsync(
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
- warehouseData = await getEstimatedProductWarehouseAvailabilityAsync(
409
- context as any,
410
- bopisItems,
411
- 2,
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 results = await searchByCriteriaAsync(ctx as any, searchCriteria);
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
- const parsed = globalThis.structuredClone(results);
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.updateCartLine;
121
+ cart = data?.updateCartLine?.cart as E4Cart | undefined;
122
122
  }
123
123
 
124
- const transformedData = cartTranslator.cartTransformValidate(
125
- cart?.cart as E4Cart,
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
- rootNodes.forEach((rootNode: TransformedCategoryNode) =>
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
- translatedData.forEach((pp: ProductPrice) => productPriceSchema.parse(pp));
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
  }
@@ -61,10 +61,9 @@ async function createApiManager() {
61
61
 
62
62
  // @ts-expect-error
63
63
  function importAll(r) {
64
- r.keys().forEach(
65
- (key: keyof typeof storefrontOverrides) =>
66
- (storefrontOverrides[key] = r(key)),
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.
@@ -107,8 +107,8 @@ const normalizeCategoryName = (string_: string) =>
107
107
  string_.toLowerCase().replaceAll(" ", "-");
108
108
 
109
109
  export {
110
- mapCategoryToHierarchy,
111
110
  generateUrl,
112
111
  getFriendlyName,
112
+ mapCategoryToHierarchy,
113
113
  normalizeCategoryName,
114
114
  };
@@ -23,7 +23,7 @@ describe("next-auth option callbacks", () => {
23
23
  type: "oauth",
24
24
  };
25
25
 
26
- let newToken;
26
+ let newToken: ExtendedJwtToken | undefined;
27
27
  if (authOptions()?.callbacks?.jwt) {
28
28
  newToken = await authOptions().callbacks.jwt({
29
29
  token,
package/src/auth/msal.ts CHANGED
@@ -65,4 +65,4 @@ const getRequestConfig = (requestType?: string) => {
65
65
  }
66
66
  };
67
67
 
68
- export { getMsalInstance, initializeMsal, getRequestConfig };
68
+ export { getMsalInstance, getRequestConfig, initializeMsal };
@@ -1,4 +1,4 @@
1
- import { Provider } from "next-auth/providers";
1
+ import type { Provider } from "next-auth/providers";
2
2
 
3
3
  const createEntraExternalIdProvider = (): Provider => {
4
4
  const clientId = process.env.NEXT_PUBLIC_ENTRA_EXTERNAL_ID_CLIENT_ID || "";
@@ -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-v2/BazaarCard";
5
- import { Carousel } from "@evenicanpm/storefront-core/src/components-v2/carousel/index";
6
- import { Section } from "@evenicanpm/storefront-core/src/components-v2/section";
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-v2/flex-box/flex-box";
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-v2/Typography";
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-v2/site-logo";
4
- import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
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-v2/flex-box/flex-box";
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-v2/carousel/index";
6
- import CarouselCard1 from "@evenicanpm/storefront-core/src/components-v2/carousel-cards/carousel-card-1/index";
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-v2/carousel/index";
3
+ import { Carousel } from "@evenicanpm/storefront-core/src/components/carousel/index";
4
4
  // CMS
5
- import ProductCard from "@evenicanpm/storefront-core/src/components-v2/product-cards/product-card/product-card";
6
- import { Section } from "@evenicanpm/storefront-core/src/components-v2/section";
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-v2/BazaarCard";
5
- import HoverBox from "@evenicanpm/storefront-core/src/components-v2/HoverBox";
6
- import { Section } from "@evenicanpm/storefront-core/src/components-v2/section";
7
- import { H4 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
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-v2/Typography";
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-v2/HoverBox";
3
- import Image from "@evenicanpm/storefront-core/src/components-v2/Image";
4
- import { H4 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
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-v2/BazaarCard";
2
- import BazaarImage from "@evenicanpm/storefront-core/src/components-v2/BazaarImage";
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-v2/Typography";
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-v2/product-cards/product-card/index";
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-v2/section";
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-v2/HoverBox";
3
- import Image from "@evenicanpm/storefront-core/src/components-v2/Image";
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-v2/flex-box/index";
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-v2/HoverBox";
4
- import Image from "@evenicanpm/storefront-core/src/components-v2/Image";
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-v2/Typography";
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 GiftBox = createSvgIcon(
7
7
  <svg fill="currentColor" viewBox="0 0 22 20">
8
+ <title>Gift Box</title>
8
9
  <path
9
10
  fillRule="evenodd"
10
11
  clipRule="evenodd"
@@ -5,6 +5,7 @@ import React from "react";
5
5
 
6
6
  const Light = createSvgIcon(
7
7
  <svg fill="currentColor" viewBox="0 0 24 24">
8
+ <title>Light</title>
8
9
  <path d="M19.0765 9.48063H12.1242L15.5905 0L5 14.5194H11.9522L8.48592 24L19.0765 9.48063Z" />
9
10
  </svg>,
10
11
  "Light",
@@ -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-v2/Typography";
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-v2/Typography";
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";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
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
+ });
@@ -0,0 +1,17 @@
1
+ import { fireEvent, render, screen } from "@testing-library/react";
2
+ import { vi } from "vitest";
3
+ import BazaarSwitch from "../BazaarSwitch";
4
+
5
+ describe("BazaarSwitch", () => {
6
+ it("renders switch", () => {
7
+ render(<BazaarSwitch />);
8
+ expect(screen.getByRole("checkbox")).toBeInTheDocument();
9
+ });
10
+
11
+ it("calls onChange when toggled", () => {
12
+ const handleChange = vi.fn();
13
+ render(<BazaarSwitch onChange={handleChange} />);
14
+ fireEvent.click(screen.getByRole("checkbox"));
15
+ expect(handleChange).toHaveBeenCalled();
16
+ });
17
+ });