@evenicanpm/storefront-core 1.2.2 → 1.4.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 (449) hide show
  1. package/.storybook/main.ts +1 -1
  2. package/.storybook/preview.tsx +5 -4
  3. package/__mocks__/countries.ts +1 -1
  4. package/__mocks__/create-query.ts +3 -2
  5. package/__mocks__/get-product-by-id.ts +0 -1
  6. package/__mocks__/query-client.ts +1 -1
  7. package/package.json +10 -2
  8. package/src/api-manager/datasources/d365/d365-address.datasource.ts +15 -13
  9. package/src/api-manager/datasources/d365/d365-base.datasource.ts +1 -1
  10. package/src/api-manager/datasources/d365/d365-cart.datasource.ts +41 -42
  11. package/src/api-manager/datasources/d365/d365-categories.datasource.ts +4 -4
  12. package/src/api-manager/datasources/d365/d365-order.datasource.ts +10 -9
  13. package/src/api-manager/datasources/d365/d365-organization.datasource.ts +10 -10
  14. package/src/api-manager/datasources/d365/d365-product.datasource.ts +49 -36
  15. package/src/api-manager/datasources/d365/d365-session.datasource.ts +7 -9
  16. package/src/api-manager/datasources/d365/d365-user.datasource.ts +34 -43
  17. package/src/api-manager/datasources/d365/d365.datasource.ts +15 -17
  18. package/src/api-manager/datasources/d365/index.ts +2 -4
  19. package/src/api-manager/datasources/d365/test-context.ts +1 -1
  20. package/src/api-manager/datasources/d365/utils/create-search-criteria.ts +1 -1
  21. package/src/api-manager/datasources/d365/utils/decode-jwt.ts +1 -2
  22. package/src/api-manager/datasources/d365/utils/get-context-cookie.ts +3 -3
  23. package/src/api-manager/datasources/d365/utils/parse-object.ts +1 -1
  24. package/src/api-manager/datasources/d365/utils/product-images-utils.ts +29 -10
  25. package/src/api-manager/datasources/d365/utils/product-inventory-utils.ts +1 -1
  26. package/src/api-manager/datasources/e4/address/e4-address.datasource.ts +5 -5
  27. package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +4 -4
  28. package/src/api-manager/datasources/e4/address/e4-address.translator.ts +9 -9
  29. package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +37 -37
  30. package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +10 -9
  31. package/src/api-manager/datasources/e4/cart/e4-cart.translator.ts +4 -4
  32. package/src/api-manager/datasources/e4/categories/e4-categories.datasource.ts +4 -4
  33. package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +24 -24
  34. package/src/api-manager/datasources/e4/e4.datasource.ts +7 -7
  35. package/src/api-manager/datasources/e4/graphqlRequestSdk.ts +8103 -41393
  36. package/src/api-manager/datasources/e4/order/e4-order.datasource.ts +7 -7
  37. package/src/api-manager/datasources/e4/order/e4-order.remaps.ts +8 -7
  38. package/src/api-manager/datasources/e4/organization/e4-organization.datasource.ts +4 -9
  39. package/src/api-manager/datasources/e4/product/e4-product.datasource.ts +12 -11
  40. package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +4 -4
  41. package/src/api-manager/datasources/e4/product/e4-product.translator.ts +27 -43
  42. package/src/api-manager/datasources/e4/session/e4-session.datasource.ts +3 -5
  43. package/src/api-manager/datasources/e4/session/e4-session.translator.ts +2 -2
  44. package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +10 -10
  45. package/src/api-manager/datasources/e4/user/e4-user.remaps.ts +6 -8
  46. package/src/api-manager/datasources/e4/user/e4-user.translator.ts +6 -4
  47. package/src/api-manager/datasources/e4/utils/unwrap-e4-variants.ts +6 -6
  48. package/src/api-manager/index.ts +8 -8
  49. package/src/api-manager/lib/category-helpers.ts +4 -3
  50. package/src/api-manager/lib/get-dynamics-context.ts +1 -1
  51. package/src/api-manager/lib/get-graphql-client.ts +4 -6
  52. package/src/api-manager/schemas/address.schema.ts +1 -1
  53. package/src/api-manager/schemas/cart.schema.ts +1 -1
  54. package/src/api-manager/schemas/d365.schema.ts +207 -206
  55. package/src/api-manager/schemas/order.schema.ts +1 -1
  56. package/src/api-manager/schemas/organization.schema.ts +1 -1
  57. package/src/api-manager/schemas/product.schema.ts +4 -4
  58. package/src/api-manager/schemas/session.schema.ts +1 -1
  59. package/src/api-manager/schemas/user.schema.ts +1 -1
  60. package/src/api-manager/services/address/mutations/create-address.ts +3 -3
  61. package/src/api-manager/services/address/mutations/delete-address.ts +2 -2
  62. package/src/api-manager/services/address/mutations/get-delivery-options.ts +4 -4
  63. package/src/api-manager/services/address/mutations/update-address.ts +3 -3
  64. package/src/api-manager/services/address/queries/get-countries.ts +6 -4
  65. package/src/api-manager/services/address/queries/get-states.ts +3 -3
  66. package/src/api-manager/services/cart/mutations/add-discount-code.ts +6 -6
  67. package/src/api-manager/services/cart/mutations/add-to-cart.ts +6 -6
  68. package/src/api-manager/services/cart/mutations/checkout.ts +2 -2
  69. package/src/api-manager/services/cart/mutations/delete-cart-line.ts +2 -2
  70. package/src/api-manager/services/cart/mutations/get-payment-accept-result.ts +4 -4
  71. package/src/api-manager/services/cart/mutations/remove-cart-line-delivery-mode.ts +3 -3
  72. package/src/api-manager/services/cart/mutations/remove-discount-code.ts +2 -2
  73. package/src/api-manager/services/cart/mutations/update-cart-line-delivery-mode.ts +2 -2
  74. package/src/api-manager/services/cart/mutations/update-cart-lines.ts +3 -3
  75. package/src/api-manager/services/cart/mutations/update-cart.ts +2 -2
  76. package/src/api-manager/services/cart/queries/get-cart-lines-inventory.ts +2 -2
  77. package/src/api-manager/services/cart/queries/get-cart.ts +5 -3
  78. package/src/api-manager/services/cart/queries/get-payment-accept-point.ts +3 -3
  79. package/src/api-manager/services/categories/queries/get-categories.ts +1 -1
  80. package/src/api-manager/services/create-extension-query.ts +1 -1
  81. package/src/api-manager/services/create-mutation.ts +2 -2
  82. package/src/api-manager/services/create-query.ts +6 -6
  83. package/src/api-manager/services/get-query-client.ts +2 -2
  84. package/src/api-manager/services/order/queries/get-order-details.ts +2 -2
  85. package/src/api-manager/services/order/queries/get-orders.ts +1 -1
  86. package/src/api-manager/services/organization/queries/get-channel-configuration.ts +1 -1
  87. package/src/api-manager/services/organization/queries/get-stores.ts +1 -1
  88. package/src/api-manager/services/product/mutations/search-products.ts +3 -4
  89. package/src/api-manager/services/product/queries/get-product-availability.ts +2 -2
  90. package/src/api-manager/services/product/queries/get-product-by-id.ts +1 -1
  91. package/src/api-manager/services/product/queries/get-product-by-ids.ts +2 -2
  92. package/src/api-manager/services/product/queries/get-product-list.ts +1 -1
  93. package/src/api-manager/services/product/queries/get-product-prices.ts +2 -2
  94. package/src/api-manager/services/product/queries/get-related-products.ts +2 -2
  95. package/src/api-manager/services/product/queries/search-products.ts +2 -2
  96. package/src/api-manager/services/product/server/product.server.ts +4 -4
  97. package/src/api-manager/services/session/mutations/session-init.ts +2 -2
  98. package/src/api-manager/services/session/mutations/session-logout.ts +1 -1
  99. package/src/api-manager/services/session/queries/get-session.ts +1 -1
  100. package/src/api-manager/services/user/mutations/add-to-wishlist.ts +3 -3
  101. package/src/api-manager/services/user/mutations/copy-cart-to-wishlist.ts +3 -3
  102. package/src/api-manager/services/user/mutations/create-wishlist.ts +4 -4
  103. package/src/api-manager/services/user/mutations/delete-wishlist.ts +3 -3
  104. package/src/api-manager/services/user/mutations/remove-from-wishlist.ts +3 -3
  105. package/src/api-manager/services/user/mutations/update-user.ts +2 -2
  106. package/src/api-manager/services/user/mutations/update-wishlist.ts +2 -2
  107. package/src/api-manager/services/user/queries/get-user-counts.ts +1 -1
  108. package/src/api-manager/services/user/queries/get-user.ts +1 -1
  109. package/src/api-manager/services/user/queries/get-wishlist-details.ts +1 -1
  110. package/src/api-manager/services/user/queries/get-wishlists.ts +1 -1
  111. package/src/api-manager/types/Datasource.ts +23 -28
  112. package/src/auth/auth-options.test.ts +6 -63
  113. package/src/auth/auth-options.ts +6 -7
  114. package/src/auth/msal.ts +4 -1
  115. package/src/auth/next-auth-cookie-manager.ts +7 -8
  116. package/src/auth/refresh-token.ts +5 -7
  117. package/src/auth/signout.ts +1 -1
  118. package/src/cms/blocks/block-manager.tsx +13 -13
  119. package/src/cms/blocks/components/brand-logos-scroller.tsx +4 -4
  120. package/src/cms/blocks/components/category-card.tsx +3 -3
  121. package/src/cms/blocks/components/category-carousel/index.tsx +8 -10
  122. package/src/cms/blocks/components/feature-pill.tsx +5 -4
  123. package/src/cms/blocks/components/featured-categories.tsx +5 -2
  124. package/src/cms/blocks/components/featured-products.tsx +2 -2
  125. package/src/cms/blocks/components/footer/data/index.ts +6 -3
  126. package/src/cms/blocks/components/footer/index.tsx +9 -13
  127. package/src/cms/blocks/components/footer/sections/footer-app-store.tsx +2 -2
  128. package/src/cms/blocks/components/footer/sections/footer-contact.tsx +3 -3
  129. package/src/cms/blocks/components/footer/sections/footer-links.tsx +5 -5
  130. package/src/cms/blocks/components/footer/sections/footer-logo.tsx +4 -4
  131. package/src/cms/blocks/components/footer/sections/footer-social-links.tsx +19 -11
  132. package/src/cms/blocks/components/footer/styles/index.ts +1 -1
  133. package/src/cms/blocks/components/footer.tsx +4 -4
  134. package/src/cms/blocks/components/hero-carousel/index.tsx +32 -29
  135. package/src/cms/blocks/components/hero.tsx +4 -5
  136. package/src/cms/blocks/components/image.tsx +4 -5
  137. package/src/cms/blocks/components/media-card.tsx +3 -3
  138. package/src/cms/blocks/components/product-carousel/index.tsx +8 -9
  139. package/src/cms/blocks/components/product-section-fullwidth/index.tsx +18 -22
  140. package/src/cms/blocks/components/rich-text.tsx +2 -2
  141. package/src/cms/blocks/components/seo/index.tsx +7 -3
  142. package/src/cms/blocks/components/services/index.tsx +5 -5
  143. package/src/cms/blocks/components/services/service-card.tsx +8 -10
  144. package/src/cms/blocks/components/shared/featured-product-card.tsx +6 -3
  145. package/src/cms/blocks/components/shared/product-category-item.tsx +5 -6
  146. package/src/cms/blocks/components/shared/product-grid.tsx +9 -5
  147. package/src/cms/blocks/components/shared/top-categories-card.tsx +10 -7
  148. package/src/cms/blocks/components/shared/top-rating-product-card.tsx +4 -4
  149. package/src/cms/blocks/icons/components/category.tsx +3 -3
  150. package/src/cms/blocks/icons/components/dotted-star.tsx +1 -1
  151. package/src/cms/blocks/icons/components/fallback-icon.tsx +1 -1
  152. package/src/cms/blocks/icons/components/gift-box.tsx +1 -1
  153. package/src/cms/blocks/icons/components/light.tsx +1 -1
  154. package/src/cms/blocks/icons/components/new-arrival.tsx +1 -1
  155. package/src/cms/blocks/icons/components/rank-badge.tsx +1 -1
  156. package/src/cms/blocks/icons/index.ts +3 -3
  157. package/src/cms/blocks/index.tsx +6 -6
  158. package/src/cms/blog.ts +2 -2
  159. package/src/cms/endpoints.ts +1 -1
  160. package/src/components-v2/BazaarCard.stories.tsx +1 -1
  161. package/src/components-v2/BazaarCard.tsx +1 -1
  162. package/src/components-v2/BazaarImage.tsx +2 -2
  163. package/src/components-v2/BazaarMenu.stories.tsx +1 -1
  164. package/src/components-v2/BazaarMenu.tsx +4 -4
  165. package/src/components-v2/BazaarSwitch.tsx +1 -1
  166. package/src/components-v2/BazaarTextField.tsx +5 -5
  167. package/src/components-v2/BorderShadowCard.stories.tsx +2 -2
  168. package/src/components-v2/CountryInput.stories.tsx +2 -2
  169. package/src/components-v2/DropZone.stories.tsx +1 -1
  170. package/src/components-v2/DropZone.tsx +8 -9
  171. package/src/components-v2/HoverBox.stories.tsx +1 -1
  172. package/src/components-v2/ImageWithFallback.tsx +3 -2
  173. package/src/components-v2/LazyImage.tsx +10 -2
  174. package/src/components-v2/Loading.tsx +1 -2
  175. package/src/components-v2/SearchInput.stories.tsx +1 -1
  176. package/src/components-v2/SearchInput.tsx +2 -2
  177. package/src/components-v2/SnackbarProvider.tsx +1 -1
  178. package/src/components-v2/T/index.tsx +1 -1
  179. package/src/components-v2/Typography.stories.tsx +2 -2
  180. package/src/components-v2/Typography.tsx +13 -13
  181. package/src/components-v2/WhiteButton.tsx +2 -2
  182. package/src/components-v2/accordion/accordion-header.tsx +6 -6
  183. package/src/components-v2/carousel/Carousel.stories.tsx +1 -1
  184. package/src/components-v2/carousel/carousel.tsx +4 -4
  185. package/src/components-v2/carousel/components/carousel-arrows.tsx +4 -4
  186. package/src/components-v2/carousel/components/carousel-dots.tsx +2 -2
  187. package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +4 -4
  188. package/src/components-v2/categories/Categories.stories.tsx +6 -5
  189. package/src/components-v2/categories/category-list/category-list.tsx +4 -5
  190. package/src/components-v2/categories/category-list/styles.ts +2 -9
  191. package/src/components-v2/categories/category-list-item/category-menu-item.tsx +6 -6
  192. package/src/components-v2/categories/category-menu.tsx +18 -15
  193. package/src/components-v2/categories/mega-menu/banner.tsx +4 -4
  194. package/src/components-v2/categories/mega-menu/column-list.tsx +6 -6
  195. package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +8 -8
  196. package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +5 -4
  197. package/src/components-v2/categories/types.ts +1 -1
  198. package/src/components-v2/countries-input.tsx +2 -2
  199. package/src/components-v2/flex-box/Flex.stories.tsx +1 -1
  200. package/src/components-v2/flex-box/flex-between.tsx +1 -1
  201. package/src/components-v2/flex-box/flex-box.tsx +1 -1
  202. package/src/components-v2/flex-box/flex-row-center.tsx +1 -1
  203. package/src/components-v2/flex-box/index.ts +1 -1
  204. package/src/components-v2/header/__tests__/user.test.tsx +3 -3
  205. package/src/components-v2/header/components/categories-menu.tsx +6 -6
  206. package/src/components-v2/header/components/mobile-header.tsx +17 -18
  207. package/src/components-v2/header/components/user.tsx +29 -28
  208. package/src/components-v2/header/header.tsx +9 -10
  209. package/src/components-v2/header/sticky-header.tsx +3 -3
  210. package/src/components-v2/header/styles/index.ts +3 -2
  211. package/src/components-v2/mini-cart/__tests__/cart-item.test.tsx +18 -18
  212. package/src/components-v2/mini-cart/__tests__/mini-cart.test.tsx +7 -7
  213. package/src/components-v2/mini-cart/components/bottom-actions.tsx +4 -3
  214. package/src/components-v2/mini-cart/components/cart-item.tsx +16 -15
  215. package/src/components-v2/mini-cart/components/empty-view.tsx +2 -1
  216. package/src/components-v2/mini-cart/components/top-header.tsx +8 -7
  217. package/src/components-v2/mini-cart/mini-cart-trigger.tsx +4 -4
  218. package/src/components-v2/mini-cart/mini-cart.tsx +11 -12
  219. package/src/components-v2/mobile-navigation/MobileNavigationBar.stories.tsx +2 -2
  220. package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +15 -15
  221. package/src/components-v2/mobile-navigation/styles/index.ts +2 -2
  222. package/src/components-v2/nav-link/nav-link-2.tsx +2 -2
  223. package/src/components-v2/nav-link/nav-link-3.tsx +4 -4
  224. package/src/components-v2/nav-link/nav-link.tsx +4 -4
  225. package/src/components-v2/navbar/categories.tsx +8 -6
  226. package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +17 -16
  227. package/src/components-v2/navbar/category-based-menu/styles.ts +3 -3
  228. package/src/components-v2/navbar/category-based-menu/types.ts +1 -1
  229. package/src/components-v2/navbar/mega-menu/mega-menu.tsx +11 -10
  230. package/src/components-v2/navbar/mega-menu/styles.ts +2 -2
  231. package/src/components-v2/navbar/mobile-menu/mobile-menu.test.tsx +3 -3
  232. package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +21 -13
  233. package/src/components-v2/navbar/nav-list/cms-nav.test.tsx +4 -4
  234. package/src/components-v2/navbar/nav-list/nav-item-child.tsx +13 -14
  235. package/src/components-v2/navbar/nav-list/nav-list.tsx +128 -90
  236. package/src/components-v2/navbar/navbar.tsx +4 -5
  237. package/src/components-v2/navbar/styles.ts +4 -4
  238. package/src/components-v2/navbar/utils/transform-nav.test.ts +3 -3
  239. package/src/components-v2/navbar/utils/transform-nav.ts +3 -3
  240. package/src/components-v2/no-records.tsx +3 -3
  241. package/src/components-v2/product-cards/discount-chip.tsx +1 -1
  242. package/src/components-v2/product-cards/favorite-button.tsx +3 -3
  243. package/src/components-v2/product-cards/product-card/ProductCard.stories.tsx +2 -2
  244. package/src/components-v2/product-cards/product-card/product-card.tsx +43 -45
  245. package/src/components-v2/product-cards/product-card/styles/index.ts +2 -2
  246. package/src/components-v2/product-cards/product-card-plp/ProductCardPlp.stories.tsx +2 -2
  247. package/src/components-v2/product-cards/product-card-plp/product-card.tsx +25 -24
  248. package/src/components-v2/product-cards/product-card-plp-list/ProductCardPlpList.stories.tsx +1 -1
  249. package/src/components-v2/product-cards/product-card-plp-list/components/tags.tsx +1 -1
  250. package/src/components-v2/product-cards/product-card-plp-list/product-card.tsx +22 -19
  251. package/src/components-v2/product-cards/product-card-search/ProductCardSearch.stories.tsx +2 -2
  252. package/src/components-v2/product-cards/product-card-search/product-card.tsx +20 -18
  253. package/src/components-v2/product-cards/product-price.tsx +2 -2
  254. package/src/components-v2/product-cards/product-rating.tsx +4 -4
  255. package/src/components-v2/product-cards/product-title.tsx +2 -2
  256. package/src/components-v2/product-cards/quantity-buttons.tsx +6 -6
  257. package/src/components-v2/product-dialog/ProductDialog.stories.tsx +2 -2
  258. package/src/components-v2/product-dialog/compound/product-dialog.tsx +16 -16
  259. package/src/components-v2/product-dialog/index.tsx +1 -1
  260. package/src/components-v2/product-dimensions/Dimensions.stories.tsx +3 -2
  261. package/src/components-v2/product-dimensions/compound/dimensions-group-error.tsx +3 -3
  262. package/src/components-v2/product-dimensions/compound/dimensions-group-label.tsx +1 -1
  263. package/src/components-v2/product-dimensions/compound/dimensions-group-list-chip.tsx +5 -4
  264. package/src/components-v2/product-dimensions/compound/dimensions-group-list.tsx +7 -2
  265. package/src/components-v2/product-dimensions/compound/dimensions-group.tsx +3 -4
  266. package/src/components-v2/product-dimensions/compound/dimensions.tsx +6 -2
  267. package/src/components-v2/product-dimensions/index.tsx +4 -4
  268. package/src/components-v2/product-dimensions/utils/has-selected-dimension.ts +1 -1
  269. package/src/components-v2/product-quantity-buttons/ProductQuantity.stories.tsx +2 -1
  270. package/src/components-v2/product-quantity-buttons/compound/quantity-buttons-root.tsx +8 -8
  271. package/src/components-v2/product-quantity-buttons/index.tsx +5 -2
  272. package/src/components-v2/product-quantity-variants/ProductQuantity.stories.tsx +3 -2
  273. package/src/components-v2/product-quantity-variants/index.tsx +14 -15
  274. package/src/components-v2/products-view/ProductsGrid.stories.tsx +3 -2
  275. package/src/components-v2/products-view/ProductsList.stories.tsx +3 -4
  276. package/src/components-v2/products-view/compound/context.ts +4 -3
  277. package/src/components-v2/products-view/compound/products-grid-view.tsx +9 -8
  278. package/src/components-v2/products-view/compound/products-list-view.tsx +9 -8
  279. package/src/components-v2/products-view/compound/types.ts +2 -2
  280. package/src/components-v2/products-view/index.tsx +5 -5
  281. package/src/components-v2/progress/ProgressBar.stories.tsx +2 -2
  282. package/src/components-v2/progress/progress.tsx +4 -4
  283. package/src/components-v2/scrollbar/Scrollbar.stories.tsx +2 -1
  284. package/src/components-v2/scrollbar/scrollbar.tsx +4 -4
  285. package/src/components-v2/search-bar/SearchBarLarge.stories.tsx +2 -1
  286. package/src/components-v2/search-bar/compound/context.ts +2 -3
  287. package/src/components-v2/search-bar/compound/results-item-lg.tsx +3 -2
  288. package/src/components-v2/search-bar/compound/results-item-sm.tsx +10 -9
  289. package/src/components-v2/search-bar/compound/results-suspense.tsx +5 -6
  290. package/src/components-v2/search-bar/compound/results.tsx +11 -7
  291. package/src/components-v2/search-bar/compound/search-bar-root.tsx +10 -10
  292. package/src/components-v2/search-bar/compound/textfield-adornment-category.tsx +32 -33
  293. package/src/components-v2/search-bar/compound/textfield-adornment-search-icon.tsx +3 -2
  294. package/src/components-v2/search-bar/compound/textfield.tsx +5 -8
  295. package/src/components-v2/search-bar/hooks/use-search.ts +2 -3
  296. package/src/components-v2/search-bar/styles/index.ts +2 -2
  297. package/src/components-v2/search-bar/utils/findCategoryNameById.ts +1 -1
  298. package/src/components-v2/section/Section.stories.tsx +4 -4
  299. package/src/components-v2/section/compound/section-header.tsx +7 -7
  300. package/src/components-v2/section/compound/section.tsx +4 -3
  301. package/src/components-v2/side-nav/SideNav.stories.tsx +4 -4
  302. package/src/components-v2/side-nav/side-nav.tsx +3 -3
  303. package/src/components-v2/wishlist-dialogs/__tests__/create-new-list.test.tsx +5 -7
  304. package/src/components-v2/wishlist-dialogs/add-to-wishlist/AddToWishlist.stories.tsx +2 -2
  305. package/src/components-v2/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +2 -2
  306. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +3 -3
  307. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +8 -9
  308. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +6 -7
  309. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/context.ts +2 -1
  310. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +8 -10
  311. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +6 -6
  312. package/src/components-v2/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +6 -6
  313. package/src/components-v2/wishlist-dialogs/add-to-wishlist/index.tsx +11 -13
  314. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +3 -3
  315. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +11 -9
  316. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +6 -4
  317. package/src/components-v2/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +2 -2
  318. package/src/components-v2/wishlist-dialogs/styles.ts +4 -4
  319. package/src/hooks/use-cart.ts +1 -1
  320. package/src/hooks/use-nextauth-session.ts +65 -0
  321. package/src/hooks/use-overflow-detect.ts +1 -1
  322. package/src/hooks/use-settings.ts +1 -1
  323. package/src/hooks/use-variants.ts +29 -31
  324. package/src/lib/build-detail-url.ts +1 -1
  325. package/src/lib/build-product-detail-url.ts +1 -1
  326. package/src/lib/cart-cookie-handler.ts +1 -1
  327. package/src/lib/category-helpers.ts +4 -4
  328. package/src/lib/create-graphql-client.ts +1 -2
  329. package/src/lib/get-palette-color.ts +36 -16
  330. package/src/lib/graphqlRequestSdk.ts +2 -3
  331. package/src/lib/hexToLuma.ts +4 -4
  332. package/src/lib/product-list-types.ts +1 -1
  333. package/src/lib/refiner-utils.ts +1 -1
  334. package/src/lib/store-hours-helper.ts +6 -6
  335. package/src/pages-v2/account/account-navigation.tsx +13 -13
  336. package/src/pages-v2/account/addresses/address-form.tsx +26 -23
  337. package/src/pages-v2/account/addresses/address-item.tsx +14 -15
  338. package/src/pages-v2/account/dashboard-header.tsx +9 -9
  339. package/src/pages-v2/account/orders/order-progress.tsx +14 -14
  340. package/src/pages-v2/account/orders/order-row.tsx +11 -10
  341. package/src/pages-v2/account/orders/order-summary.tsx +7 -6
  342. package/src/pages-v2/account/orders/ordered-products.tsx +19 -18
  343. package/src/pages-v2/account/profile/profile-button.test.tsx +3 -3
  344. package/src/pages-v2/account/profile/profile-button.tsx +5 -4
  345. package/src/pages-v2/account/profile/user-info.tsx +8 -10
  346. package/src/pages-v2/account/styles.ts +1 -1
  347. package/src/pages-v2/account/wishlist/create-new-list.tsx +11 -9
  348. package/src/pages-v2/account/wishlist/create-wishlist-button.tsx +2 -2
  349. package/src/pages-v2/account/wishlist/wishlist-item.tsx +15 -14
  350. package/src/pages-v2/blog/blog-card.tsx +58 -0
  351. package/src/pages-v2/blog/pagination.tsx +1 -2
  352. package/src/pages-v2/cart/__tests__/cart-item.test.tsx +8 -10
  353. package/src/pages-v2/cart/__tests__/checkout-form.test.tsx +8 -16
  354. package/src/pages-v2/cart/__tests__/countries.json +19407 -0
  355. package/src/pages-v2/cart/__tests__/estimate-shipping.test.tsx +11 -11
  356. package/src/pages-v2/cart/cart-item.tsx +110 -100
  357. package/src/pages-v2/cart/checkout-form.tsx +20 -22
  358. package/src/pages-v2/cart/coupon-entry.tsx +12 -10
  359. package/src/pages-v2/cart/estimate-shipping.tsx +11 -10
  360. package/src/pages-v2/checkout/checkout-alt-form/checkout-form.tsx +19 -18
  361. package/src/pages-v2/checkout/checkout-alt-form/checkout-step.tsx +7 -7
  362. package/src/pages-v2/checkout/checkout-alt-form/step-heading.tsx +4 -4
  363. package/src/pages-v2/checkout/checkout-alt-form/steps/address/address-card.tsx +4 -4
  364. package/src/pages-v2/checkout/checkout-alt-form/steps/address/delivery-address.tsx +33 -31
  365. package/src/pages-v2/checkout/checkout-alt-form/steps/address/new-address-form.tsx +19 -21
  366. package/src/pages-v2/checkout/checkout-alt-form/steps/address/styles.ts +1 -1
  367. package/src/pages-v2/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +16 -17
  368. package/src/pages-v2/checkout/checkout-alt-form/steps/payment/payment-details.tsx +25 -28
  369. package/src/pages-v2/checkout/checkout-alt-form/steps/payment/safe-card-preview-data.tsx +2 -2
  370. package/src/pages-v2/checkout/checkout-alt-form/steps/shipping/delivery-date.tsx +5 -5
  371. package/src/pages-v2/checkout/checkout-alt-form/steps/shipping/delivery-options.tsx +33 -34
  372. package/src/pages-v2/checkout/checkout-alt-summary/cart-item.tsx +2 -2
  373. package/src/pages-v2/checkout/checkout-alt-summary/checkout-alt-summary.tsx +9 -9
  374. package/src/pages-v2/checkout/checkout-alt-summary/list-item.tsx +2 -2
  375. package/src/pages-v2/confirmation/address.tsx +4 -4
  376. package/src/pages-v2/confirmation/confirmation-summary.tsx +11 -10
  377. package/src/pages-v2/confirmation/ordered-products.tsx +12 -11
  378. package/src/pages-v2/product-details/available-shops.tsx +6 -6
  379. package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +3 -3
  380. package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +16 -17
  381. package/src/pages-v2/product-details/bopis/pickup-option-select.tsx +5 -5
  382. package/src/pages-v2/product-details/bopis/search-header.tsx +3 -2
  383. package/src/pages-v2/product-details/bopis/store-card/shop-card.tsx +15 -16
  384. package/src/pages-v2/product-details/bopis/store-card/utils/getDaysResources.ts +1 -1
  385. package/src/pages-v2/product-details/checkbox-label.tsx +3 -3
  386. package/src/pages-v2/product-details/currency.ts +1 -0
  387. package/src/pages-v2/product-details/frequently-bought.tsx +12 -12
  388. package/src/pages-v2/product-details/frequently-product-card.tsx +5 -5
  389. package/src/pages-v2/product-details/product-comment.tsx +4 -4
  390. package/src/pages-v2/product-details/product-description.tsx +3 -3
  391. package/src/pages-v2/product-details/product-filter-card.tsx +17 -14
  392. package/src/pages-v2/product-details/product-intro/compound/context.ts +10 -5
  393. package/src/pages-v2/product-details/product-intro/compound/product-info.tsx +19 -19
  394. package/src/pages-v2/product-details/product-intro/compound/product-intro-images.tsx +39 -33
  395. package/src/pages-v2/product-details/product-intro/compound/product-intro.tsx +7 -7
  396. package/src/pages-v2/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +2 -2
  397. package/src/pages-v2/product-details/product-intro/utils.ts +3 -5
  398. package/src/pages-v2/product-details/product-review.tsx +9 -9
  399. package/src/pages-v2/product-details/product-tabs.tsx +11 -8
  400. package/src/pages-v2/product-details/related-products.tsx +12 -9
  401. package/src/pages-v2/product-list/breadcrumbs.tsx +3 -3
  402. package/src/pages-v2/product-list/checkbox-label.tsx +3 -3
  403. package/src/pages-v2/product-list/facet-group.tsx +8 -8
  404. package/src/pages-v2/product-list/facet.tsx +4 -3
  405. package/src/pages-v2/product-list/list-filter.tsx +6 -6
  406. package/src/pages-v2/product-list/pagination.tsx +2 -2
  407. package/src/pages-v2/product-list/product-list-context.tsx +22 -18
  408. package/src/pages-v2/product-list/product-list-state.ts +14 -14
  409. package/src/pages-v2/product-list/product-list-view.tsx +18 -17
  410. package/src/pages-v2/product-list/product-rating.tsx +6 -3
  411. package/src/pages-v2/product-list/quick-view-dialog-content.tsx +21 -23
  412. package/src/pages-v2/product-list/quick-view-dialog.tsx +7 -3
  413. package/src/pages-v2/product-list/range-filter.tsx +5 -6
  414. package/src/pages-v2/product-list/scrollbar.tsx +4 -4
  415. package/src/pages-v2/product-list/search-bar.tsx +12 -12
  416. package/src/pages-v2/product-list/selected-facets.tsx +4 -4
  417. package/src/pages-v2/product-list/side-nav.tsx +2 -2
  418. package/src/pages-v2/product-list/swatch.tsx +15 -11
  419. package/src/pages-v2/product-list/utils/generate-breadcrumbs.ts +1 -1
  420. package/src/pages-v2/product-list/utils/getCategoryFilterFromSlug.ts +33 -68
  421. package/src/pages-v2/product-list/utils/product-list-helper.ts +5 -5
  422. package/src/pages-v2/product-list/utils/product-list-types.ts +1 -1
  423. package/src/pages-v2/product-list/utils/search-for-category.ts +4 -4
  424. package/src/pages-v2/product-list/utils/sort-options.ts +1 -1
  425. package/src/pages-v2/quickorder/order-upload.tsx +92 -78
  426. package/src/pages-v2/quickorder/provider.tsx +13 -10
  427. package/src/pages-v2/quickorder/quick-order-header.tsx +1 -1
  428. package/src/pages-v2/quickorder/quick-order-row.tsx +9 -8
  429. package/src/pages-v2/quickorder/quick-order-table.tsx +3 -3
  430. package/src/pages-v2/quickorder/quick-order.tsx +48 -43
  431. package/src/providers/nav-provider/index.tsx +3 -3
  432. package/src/providers/nav-provider/utils/createLink.ts +1 -1
  433. package/src/providers/notifications/notification-context.tsx +3 -4
  434. package/src/providers/notifications/use-notification.ts +1 -1
  435. package/tsconfig.json +1 -1
  436. package/src/components-v2/sticky/Sticky.stories.tsx +0 -88
  437. package/src/components-v2/sticky/index.ts +0 -1
  438. package/src/components-v2/sticky/sticky.tsx +0 -62
  439. package/src/components-v2/sticky/styles.ts +0 -38
  440. package/src/components-v2/utils/constants.ts +0 -8
  441. package/src/theme/build-mui-theme.ts +0 -104
  442. package/src/theme/components.ts +0 -163
  443. package/src/theme/emotion-cache.tsx +0 -101
  444. package/src/theme/theme-colors.ts +0 -205
  445. package/src/theme/theme-options-sample.ts +0 -69
  446. package/src/theme/theme-options.ts +0 -172
  447. package/src/theme/theme-provider.tsx +0 -44
  448. package/src/theme/typography.ts +0 -22
  449. package/src/theme/utils.ts +0 -17
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
 
3
- import { PropsWithChildren, ReactNode } from "react";
4
- import Link from "next/link";
5
- import Box from "@mui/material/Box";
6
- import Grid from "@mui/material/Grid2";
7
- import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
3
+ import { StyledRoot } from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/styles";
8
4
  import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box/index";
5
+ import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
9
6
  import { NavLink } from "@evenicanpm/storefront-core/src/components-v2/nav-link/index";
10
- import { StyledRoot } from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/styles";
7
+ import Box from "@mui/material/Box";
8
+ import Grid from "@mui/material/Grid2";
9
+ import Link from "next/link";
10
+ import type { PropsWithChildren, ReactNode } from "react";
11
11
 
12
12
  interface RootProps extends PropsWithChildren {
13
13
  minWidth?: number;
@@ -1,13 +1,13 @@
1
- import Link from "next/link";
2
- // MUI
3
- import Box from "@mui/material/Box";
4
- // GLOBAL CUSTOM COMPONENTS
5
- import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
6
1
  // LOCAL CUSTOM COMPONENTS
7
2
  import ColumnList from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/column-list";
8
3
  // DATA TYPE
9
- import { CategoryItemOffer } from "@evenicanpm/storefront-core/src/components-v2/categories/types";
10
- import { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
4
+ import type { CategoryItemOffer } from "@evenicanpm/storefront-core/src/components-v2/categories/types";
5
+ // GLOBAL CUSTOM COMPONENTS
6
+ import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
7
+ import type { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
8
+ // MUI
9
+ import Box from "@mui/material/Box";
10
+ import Link from "next/link";
11
11
 
12
12
  // =========================================================
13
13
  interface Props {
@@ -19,7 +19,7 @@ interface Props {
19
19
 
20
20
  // MegaMenu1 is acting purely as a configuration/wiring component,
21
21
  // not as a reusable UI element that needs further extensibility.
22
- export default function MegaMenu1({ banner, data }: Props) {
22
+ export default function MegaMenu1({ banner, data }: Readonly<Props>) {
23
23
  return (
24
24
  <ColumnList>
25
25
  <ColumnList.Wrapper>
@@ -1,11 +1,12 @@
1
1
  // LOCAL CUSTOM COMPONENTS
2
+
3
+ import CategoryMenuItem from "@evenicanpm/storefront-core/src/components-v2/categories/category-list-item/index";
2
4
  import OfferBanner from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/banner";
3
5
  import ColumnList from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/column-list";
4
- import CategoryMenuItem from "@evenicanpm/storefront-core/src/components-v2/categories/category-list-item/index";
5
6
  // STYLED COMPONENT
6
7
  import { StyledRoot } from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/styles";
7
8
  // DATA TYPE
8
- import { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
9
+ import type { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
9
10
 
10
11
  // =======================================================================
11
12
  interface Props {
@@ -15,7 +16,7 @@ interface Props {
15
16
 
16
17
  // MegaMenu2 is acting purely as a configuration/wiring component,
17
18
  // not as a reusable UI element that needs further extensibility.
18
- export default function MegaMenu2({ data }: Props) {
19
+ export default function MegaMenu2({ data }: Readonly<Props>) {
19
20
  return (
20
21
  <StyledRoot elevation={2}>
21
22
  {data.map((item) => (
@@ -24,7 +25,7 @@ export default function MegaMenu2({ data }: Props) {
24
25
  //icon={item.icon} // No icon information
25
26
  key={item.RecordId}
26
27
  title={item.Name ?? ""}
27
- caret={!!(item.Children && item.Children.length)}
28
+ caret={!!item?.Children?.length}
28
29
  render={
29
30
  item.Children?.length ? (
30
31
  <ColumnList minWidth={550}>
@@ -1,4 +1,4 @@
1
- import { SvgIconComponent } from "@mui/icons-material";
1
+ import type { SvgIconComponent } from "@mui/icons-material";
2
2
 
3
3
  export interface CategoryItemOffer {
4
4
  url: string;
@@ -1,7 +1,7 @@
1
- import { CountryRegionInfo } from "@msdyn365-commerce/retail-proxy";
1
+ import type { CountryRegionInfo } from "@msdyn365-commerce/retail-proxy";
2
2
  import {
3
3
  Autocomplete,
4
- AutocompleteRenderInputParams,
4
+ type AutocompleteRenderInputParams,
5
5
  Box,
6
6
  TextField,
7
7
  } from "@mui/material";
@@ -1,5 +1,5 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
- import { FlexBox, FlexBetween, FlexRowCenter } from "./index";
2
+ import { FlexBetween, FlexBox, FlexRowCenter } from "./index";
3
3
 
4
4
  const BoxStyle = {
5
5
  padding: "10px 20px",
@@ -1,4 +1,4 @@
1
- import Box, { BoxProps } from "@mui/material/Box";
1
+ import Box, { type BoxProps } from "@mui/material/Box";
2
2
 
3
3
  export default function FlexBetween({ children, ...props }: BoxProps) {
4
4
  return (
@@ -1,4 +1,4 @@
1
- import Box, { BoxProps } from "@mui/material/Box";
1
+ import Box, { type BoxProps } from "@mui/material/Box";
2
2
 
3
3
  /**
4
4
  * Convenience utility wrapper around css Flex style
@@ -1,4 +1,4 @@
1
- import Box, { BoxProps } from "@mui/material/Box";
1
+ import Box, { type BoxProps } from "@mui/material/Box";
2
2
 
3
3
  export default function FlexRowCenter({ children, ...props }: BoxProps) {
4
4
  return (
@@ -1,5 +1,5 @@
1
- import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
2
1
  import FlexBetween from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-between";
2
+ import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
3
3
  import FlexRowCenter from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-row-center";
4
4
 
5
5
  export { FlexBox, FlexBetween, FlexRowCenter };
@@ -1,8 +1,8 @@
1
- import { render, screen, fireEvent, waitFor } from "@testing-library/react";
1
+ import signOut from "@evenicanpm/storefront-core/src/auth/signout";
2
+ import Header from "@evenicanpm/storefront-core/src/components-v2/header/header";
3
+ import { fireEvent, render, screen, waitFor } from "@testing-library/react";
2
4
  import { NextIntlClientProvider } from "next-intl";
3
5
  import { vi } from "vitest";
4
- import Header from "@evenicanpm/storefront-core/src/components-v2/header/header";
5
- import signOut from "@evenicanpm/storefront-core/src/auth/signout";
6
6
 
7
7
  vi.mock(
8
8
  "@evenicanpm/storefront-core/src/api-manager/services/session/mutations/session-init",
@@ -1,11 +1,11 @@
1
- import Button from "@mui/material/Button";
2
- // MUI ICON COMPONENT
3
- import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown";
4
- // CUSTOM ICON COMPONENTS
5
- import Category from "@evenicanpm/storefront-core/src/components-v2/icons/category";
1
+ import CategoryMenu from "@evenicanpm/storefront-core/src/components-v2/categories/category-menu";
6
2
  // GLOBAL CUSTOM COMPONENTS
7
3
  import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box/index";
8
- import CategoryMenu from "@evenicanpm/storefront-core/src/components-v2/categories/category-menu";
4
+ // CUSTOM ICON COMPONENTS
5
+ import Category from "@evenicanpm/storefront-core/src/components-v2/icons/category";
6
+ // MUI ICON COMPONENT
7
+ import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown";
8
+ import Button from "@mui/material/Button";
9
9
 
10
10
  export default function CategoriesMenu() {
11
11
  return (
@@ -1,32 +1,31 @@
1
- import { useContext, ReactNode, createContext } from "react";
2
- import Box from "@mui/material/Box";
3
- import Drawer from "@mui/material/Drawer";
4
- import IconButton from "@mui/material/IconButton";
5
- import { useTranslations } from "next-intl";
6
- // CUSTOM COMPONENTS
7
- import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
8
- import { MobileMenu } from "@evenicanpm/storefront-core/src/components-v2/navbar/mobile-menu/index";
1
+ // API
2
+ import getCart from "@evenicanpm/storefront-core/src/api-manager/services/cart/queries/get-cart";
9
3
  import {
10
4
  FlexBetween,
11
5
  FlexBox,
12
6
  } from "@evenicanpm/storefront-core/src/components-v2/flex-box/index";
13
- import SiteLogo from "@evenicanpm/storefront-core/src/components-v2/site-logo";
14
- import MiniCartTrigger from "@evenicanpm/storefront-core/src/components-v2/mini-cart/mini-cart-trigger";
15
7
  import User from "@evenicanpm/storefront-core/src/components-v2/header/components/user";
16
- // ICONS
17
- import { MdClear as Clear } from "react-icons/md";
18
- import Search from "@evenicanpm/storefront-core/src/components-v2/icons/search";
19
- import MobileCartBag from "@evenicanpm/storefront-core/src/components-v2/icons/cart-bag";
20
- // API
21
- import getCart from "@evenicanpm/storefront-core/src/api-manager/services/cart/queries/get-cart";
22
-
23
8
  import useHeader from "@evenicanpm/storefront-core/src/components-v2/header/hooks/use-header";
24
- import { SearchBarViewSm as SearchBar } from "@evenicanpm/storefront-core/src/components-v2/search-bar";
9
+ import MobileCartBag from "@evenicanpm/storefront-core/src/components-v2/icons/cart-bag";
10
+ import Search from "@evenicanpm/storefront-core/src/components-v2/icons/search";
11
+ import MiniCartTrigger from "@evenicanpm/storefront-core/src/components-v2/mini-cart/mini-cart-trigger";
12
+ import { MobileMenu } from "@evenicanpm/storefront-core/src/components-v2/navbar/mobile-menu/index";
25
13
  import {
26
14
  transformCategoryNav,
27
15
  transformCmsNav,
28
16
  } from "@evenicanpm/storefront-core/src/components-v2/navbar/utils/transform-nav";
17
+ import { SearchBarViewSm as SearchBar } from "@evenicanpm/storefront-core/src/components-v2/search-bar";
18
+ import SiteLogo from "@evenicanpm/storefront-core/src/components-v2/site-logo";
19
+ // CUSTOM COMPONENTS
20
+ import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
29
21
  import { NavContext } from "@evenicanpm/storefront-core/src/providers/nav-provider";
22
+ import Box from "@mui/material/Box";
23
+ import Drawer from "@mui/material/Drawer";
24
+ import IconButton from "@mui/material/IconButton";
25
+ import { useTranslations } from "next-intl";
26
+ import { createContext, type ReactNode, useContext } from "react";
27
+ // ICONS
28
+ import { MdClear as Clear } from "react-icons/md";
30
29
 
31
30
  type MobileHeaderRootProps = {
32
31
  children: ReactNode;
@@ -1,38 +1,39 @@
1
1
  "use client";
2
2
 
3
- import React, {
4
- createContext,
5
- useState,
6
- useEffect,
7
- useContext,
8
- MouseEvent,
9
- ReactNode,
10
- } from "react";
11
- import { useRouter } from "next/navigation";
3
+ import useSessionInit from "@evenicanpm/storefront-core/src/api-manager/services/session/mutations/session-init";
4
+ import useSessionLogout from "@evenicanpm/storefront-core/src/api-manager/services/session/mutations/session-logout";
5
+ // API hooks
6
+ import useUpdateUser from "@evenicanpm/storefront-core/src/api-manager/services/user/mutations/update-user";
7
+ import {
8
+ getMsalInstance,
9
+ initializeMsal,
10
+ } from "@evenicanpm/storefront-core/src/auth/msal";
11
+ import signOutCustom from "@evenicanpm/storefront-core/src/auth/signout";
12
+ import MobileUserIcon from "@evenicanpm/storefront-core/src/components-v2/icons/user";
13
+ import { NavLink } from "@evenicanpm/storefront-core/src/components-v2/nav-link";
14
+ import T from "@evenicanpm/storefront-core/src/components-v2/T";
12
15
  // UI Components
13
16
  import {
14
17
  Box,
15
18
  Button,
16
- Popover,
19
+ IconButton,
17
20
  List,
18
21
  ListItemButton,
19
- IconButton,
22
+ Popover,
20
23
  } from "@mui/material";
21
- import { MdPersonOutline as PersonOutline } from "react-icons/md";
22
- import MobileUserIcon from "@evenicanpm/storefront-core/src/components-v2/icons/user";
23
- import { NavLink } from "@evenicanpm/storefront-core/src/components-v2/nav-link";
24
- import T from "@evenicanpm/storefront-core/src/components-v2/T";
24
+ import { useRouter } from "next/navigation";
25
25
  // Auth components
26
26
  import { signIn, useSession } from "next-auth/react";
27
+ import type React from "react";
27
28
  import {
28
- getMsalInstance,
29
- initializeMsal,
30
- } from "@evenicanpm/storefront-core/src/auth/msal";
31
- import signOutCustom from "@evenicanpm/storefront-core/src/auth/signout";
32
- // API hooks
33
- import useUpdateUser from "@evenicanpm/storefront-core/src/api-manager/services/user/mutations/update-user";
34
- import useSessionInit from "@evenicanpm/storefront-core/src/api-manager/services/session/mutations/session-init";
35
- import useSessionLogout from "@evenicanpm/storefront-core/src/api-manager/services/session/mutations/session-logout";
29
+ createContext,
30
+ type MouseEvent,
31
+ type ReactNode,
32
+ useContext,
33
+ useEffect,
34
+ useState,
35
+ } from "react";
36
+ import { MdPersonOutline as PersonOutline } from "react-icons/md";
36
37
 
37
38
  interface IdTokenClaims {
38
39
  given_name?: string;
@@ -50,9 +51,9 @@ interface UserContextValue {
50
51
  isAuthenticated: boolean;
51
52
  status: string;
52
53
  menuItems: typeof MENU_ITEMS;
53
- handleLogout: () => void;
54
+ handleLogout: () => Promise<void>;
54
55
  signIn: typeof signIn;
55
- signOut: () => void;
56
+ signOut: () => Promise<void>;
56
57
  anchorEl: HTMLButtonElement | null;
57
58
  setAnchorEl: (el: HTMLButtonElement | null) => void;
58
59
  open: boolean;
@@ -146,15 +147,15 @@ const User = ({ children }: Props) => {
146
147
  // Subcomponents
147
148
  User.MobileTrigger = function MobileTrigger() {
148
149
  const ctx = useContext(UserContext);
150
+ const router = useRouter();
149
151
  if (!ctx) return null;
150
152
  const { isAuthenticated, signIn } = ctx;
151
- const router = useRouter();
152
153
  return (
153
154
  <IconButton
154
155
  aria-label="User Menu"
155
156
  onClick={() => {
156
- if (!isAuthenticated) signIn();
157
- else router.push("/account/profile");
157
+ if (isAuthenticated) router.push("/account/profile");
158
+ else signIn();
158
159
  }}
159
160
  >
160
161
  <MobileUserIcon style={{ fontSize: "1.25rem" }} />
@@ -1,24 +1,23 @@
1
1
  "use client";
2
2
 
3
- import { ReactNode } from "react";
4
- import clsx from "clsx";
5
- import { MdOutlineShoppingBag } from "react-icons/md";
3
+ // API
4
+ import getCart from "@evenicanpm/storefront-core/src/api-manager/services/cart/queries/get-cart";
6
5
  // GLOBAL CUSTOM COMPONENTS
7
6
  import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
8
- import SiteLogo from "@evenicanpm/storefront-core/src/components-v2/site-logo";
9
7
  // LOCAL CUSTOM COMPONENTS
10
8
  import CategoriesMenu from "@evenicanpm/storefront-core/src/components-v2/header/components/categories-menu";
11
9
  import User from "@evenicanpm/storefront-core/src/components-v2/header/components/user";
12
- import MiniCartTrigger from "@evenicanpm/storefront-core/src/components-v2/mini-cart/mini-cart-trigger";
13
10
  // STYLED COMPONENTS
14
11
  import {
15
12
  HeaderWrapper,
16
13
  StyledContainer,
17
14
  } from "@evenicanpm/storefront-core/src/components-v2/header/styles/index";
18
- // API
19
- import getCart from "@evenicanpm/storefront-core/src/api-manager/services/cart/queries/get-cart";
20
-
21
- import { useSession } from "next-auth/react";
15
+ import MiniCartTrigger from "@evenicanpm/storefront-core/src/components-v2/mini-cart/mini-cart-trigger";
16
+ import SiteLogo from "@evenicanpm/storefront-core/src/components-v2/site-logo";
17
+ import { useAppSession } from "@evenicanpm/storefront-core/src/hooks/use-nextauth-session";
18
+ import clsx from "clsx";
19
+ import type { ReactNode } from "react";
20
+ import { MdOutlineShoppingBag } from "react-icons/md";
22
21
 
23
22
  type HeaderRootProps = {
24
23
  className?: string;
@@ -53,7 +52,7 @@ Header.MidSlot = ({ children }: { children: ReactNode }) => {
53
52
  };
54
53
 
55
54
  Header.User = () => {
56
- const { data: session } = useSession();
55
+ const { session } = useAppSession();
57
56
  const isAuthenticated = !!session;
58
57
  return (
59
58
  <User>
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
 
3
+ import MobileHeader from "@evenicanpm/storefront-core/src/components-v2/header/components/mobile-header";
3
4
  import Header from "@evenicanpm/storefront-core/src/components-v2/header/index";
4
5
  import { SearchBarViewLg as SearchBar } from "@evenicanpm/storefront-core/src/components-v2/search-bar";
5
- import Sticky from "@evenicanpm/storefront-core/src/components-v2/sticky/index";
6
- import { useCallback, useState } from "react";
6
+ import { Sticky } from "@evenicanpm/ui";
7
7
 
8
8
  import useTheme from "@mui/material/styles/useTheme";
9
9
  import useMediaQuery from "@mui/material/useMediaQuery";
10
- import MobileHeader from "@evenicanpm/storefront-core/src/components-v2/header/components/mobile-header";
10
+ import { useCallback, useState } from "react";
11
11
 
12
12
  /**
13
13
  * @category Implementation
@@ -1,7 +1,8 @@
1
+ // CONSTANT VARIABLES
2
+
3
+ import { layoutConstant } from "@evenicanpm/ui";
1
4
  import Container from "@mui/material/Container";
2
5
  import styled from "@mui/material/styles/styled";
3
- // CONSTANT VARIABLES
4
- import { layoutConstant } from "@evenicanpm/storefront-core/src/components-v2/utils/constants";
5
6
 
6
7
  export const HeaderWrapper = styled("div")(({ theme }) => ({
7
8
  zIndex: 3,
@@ -1,14 +1,14 @@
1
- import { Cart, CartLine } from "@/schemas/cart.schema";
1
+ import { NotificationProvider } from "@evenicanpm/storefront-core/src/providers/notifications/notification-context";
2
+ import ENUS from "@messages/en-US.json";
2
3
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3
4
  import { fireEvent, render, screen } from "@testing-library/react";
4
5
  import { setupServer } from "msw/node";
5
- import React from "react";
6
- import cartData from "./test-cart-with-item.json";
7
6
  import { NextIntlClientProvider } from "next-intl";
8
- import ENUS from "@messages/en-US.json";
9
- import CartItem from "../components/cart-item";
7
+ import type React from "react";
10
8
  import { vi } from "vitest";
11
- import { NotificationProvider } from "@evenicanpm/storefront-core/src/providers/notifications/notification-context";
9
+ import type { Cart } from "@/schemas/cart.schema";
10
+ import CartItem from "../components/cart-item";
11
+ import cartData from "./test-cart-with-item.json";
12
12
 
13
13
  // @ts-expect-error - We don't use the dates from this json and its not worth parsin
14
14
  const cart: Cart = cartData;
@@ -36,10 +36,10 @@ describe("cart-item", () => {
36
36
  item={cart.CartLines[0]}
37
37
  isLineUpdating={false}
38
38
  closeDrawer={() => {
39
- fn;
39
+ fn();
40
40
  }}
41
- handleCartAmountChange={(cartline: CartLine) => {
42
- cartline;
41
+ handleCartAmountChange={() => {
42
+ fn();
43
43
  }}
44
44
  >
45
45
  <CartItem.ProductDetails />
@@ -57,10 +57,10 @@ describe("cart-item", () => {
57
57
  item={cart.CartLines[0]}
58
58
  isLineUpdating={false}
59
59
  closeDrawer={() => {
60
- fn;
60
+ fn();
61
61
  }}
62
- handleCartAmountChange={(cartline: CartLine) => {
63
- cartline;
62
+ handleCartAmountChange={() => {
63
+ fn();
64
64
  }}
65
65
  >
66
66
  <CartItem.QuantityControls />
@@ -80,10 +80,10 @@ describe("cart-item", () => {
80
80
  item={cart.CartLines[0]}
81
81
  isLineUpdating={true}
82
82
  closeDrawer={() => {
83
- fn;
83
+ fn();
84
84
  }}
85
- handleCartAmountChange={(cartline: CartLine) => {
86
- cartline;
85
+ handleCartAmountChange={() => {
86
+ fn();
87
87
  }}
88
88
  >
89
89
  <CartItem.QuantityControls />
@@ -103,7 +103,7 @@ describe("cart-item", () => {
103
103
  item={cart.CartLines[0]}
104
104
  isLineUpdating={false}
105
105
  closeDrawer={() => {
106
- fn;
106
+ fn();
107
107
  }}
108
108
  handleCartAmountChange={testClick}
109
109
  >
@@ -125,7 +125,7 @@ describe("cart-item", () => {
125
125
  item={cart.CartLines[0]}
126
126
  isLineUpdating={false}
127
127
  closeDrawer={() => {
128
- fn;
128
+ fn();
129
129
  }}
130
130
  handleCartAmountChange={testClick}
131
131
  >
@@ -148,7 +148,7 @@ describe("cart-item", () => {
148
148
  item={cart.CartLines[0]}
149
149
  isLineUpdating={false}
150
150
  closeDrawer={() => {
151
- fn;
151
+ fn();
152
152
  }}
153
153
  handleCartAmountChange={testClick}
154
154
  >
@@ -1,14 +1,14 @@
1
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
- import { NextIntlClientProvider } from "next-intl";
3
- import cartData from "./test-cart-with-item.json";
4
- import cartDataEmpty from "./test-cart-empty.json";
1
+ import { NotificationProvider } from "@evenicanpm/storefront-core/src/providers/notifications/notification-context";
5
2
  import ENUS from "@messages/en-US.json";
6
3
  import fr from "@messages/fr.json";
4
+ import type { Cart } from "@msdyn365-commerce/retail-proxy";
5
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
7
6
  import { fireEvent, render, screen } from "@testing-library/react";
8
- import MiniCart from "../mini-cart";
7
+ import { NextIntlClientProvider } from "next-intl";
9
8
  import { vi } from "vitest";
10
- import { Cart } from "@msdyn365-commerce/retail-proxy";
11
- import { NotificationProvider } from "@evenicanpm/storefront-core/src/providers/notifications/notification-context";
9
+ import MiniCart from "../mini-cart";
10
+ import cartDataEmpty from "./test-cart-empty.json";
11
+ import cartData from "./test-cart-with-item.json";
12
12
 
13
13
  const { useRouter, mockedRouterPush } = vi.hoisted(() => {
14
14
  const mockedRouterPush = vi.fn();
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
- import React, { createContext, useContext } from "react";
4
3
  import Box from "@mui/material/Box";
5
- import Button, { ButtonProps } from "@mui/material/Button";
4
+ import Button, { type ButtonProps } from "@mui/material/Button";
6
5
  import { useTranslations } from "next-intl";
6
+ import type React from "react";
7
+ import { createContext, useContext } from "react";
7
8
 
8
9
  interface BottomActionsContextValue {
9
10
  total: string;
@@ -40,9 +41,9 @@ BottomActions.ViewCartButton = function ViewCartButton(
40
41
  props: Omit<ButtonProps, "onClick" | "children">,
41
42
  ) {
42
43
  const ctx = useContext(BottomActionsContext);
44
+ const t = useTranslations("Cart");
43
45
  if (!ctx) return null;
44
46
  const { total, handleNavigate } = ctx;
45
- const t = useTranslations("Cart");
46
47
  return (
47
48
  <Button
48
49
  fullWidth
@@ -1,24 +1,25 @@
1
1
  // @refresh reset
2
2
  "use client";
3
3
 
4
- import React, { createContext, useContext } from "react";
5
- import Link from "next/link";
6
- import Box from "@mui/material/Box";
7
- import Button from "@mui/material/Button";
8
- import Avatar from "@mui/material/Avatar";
9
- import IconButton from "@mui/material/IconButton";
10
- import { CircularProgress } from "@mui/material";
11
- import Add from "@mui/icons-material/Add";
12
- import Close from "@mui/icons-material/Close";
13
- import Remove from "@mui/icons-material/Remove";
14
4
  import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box/index";
15
5
  import {
16
6
  H6,
17
7
  Tiny,
18
8
  } from "@evenicanpm/storefront-core/src/components-v2/Typography";
19
- import { CartLine } from "@/schemas/cart.schema";
20
- import { useFormatter, useTranslations } from "next-intl";
21
9
  import { getProductDetailUrl } from "@evenicanpm/storefront-core/src/lib/build-product-detail-url";
10
+ import Add from "@mui/icons-material/Add";
11
+ import Close from "@mui/icons-material/Close";
12
+ import Remove from "@mui/icons-material/Remove";
13
+ import { CircularProgress } from "@mui/material";
14
+ import Avatar from "@mui/material/Avatar";
15
+ import Box from "@mui/material/Box";
16
+ import Button from "@mui/material/Button";
17
+ import IconButton from "@mui/material/IconButton";
18
+ import Link from "next/link";
19
+ import { useFormatter, useTranslations } from "next-intl";
20
+ import type React from "react";
21
+ import { createContext, useContext } from "react";
22
+ import type { CartLine } from "@/schemas/cart.schema";
22
23
 
23
24
  interface MiniCartItemContextValue {
24
25
  item: CartLine;
@@ -73,9 +74,9 @@ const MiniCartItem = ({
73
74
 
74
75
  MiniCartItem.QuantityControls = () => {
75
76
  const ctx = useContext(MiniCartItemContext);
77
+ const t = useTranslations("Cart.CartLine");
76
78
  if (!ctx) return null;
77
79
  const { item, handleCartAmountChange, isLineUpdating } = ctx;
78
- const t = useTranslations("Cart.CartLine");
79
80
  const quantity = item?.Quantity || 0;
80
81
 
81
82
  if (isLineUpdating) {
@@ -172,7 +173,7 @@ MiniCartItem.ProductDetails = () => {
172
173
  </Link>
173
174
  <H6 color="grey.600" mt={0.5}>
174
175
  {item?.Product?.Dimensions?.map((d, i) => (
175
- <span key={i}>{d?.DimensionValue?.Value + " "}</span>
176
+ <span key={`dim-${i + 1}`}>{`${d?.DimensionValue?.Value} `}</span>
176
177
  ))}
177
178
  </H6>
178
179
  <Tiny color="grey.600">
@@ -187,9 +188,9 @@ MiniCartItem.ProductDetails = () => {
187
188
 
188
189
  MiniCartItem.RemoveButton = () => {
189
190
  const ctx = useContext(MiniCartItemContext);
191
+ const t = useTranslations("Cart.CartLine");
190
192
  if (!ctx) return null;
191
193
  const { item, handleCartAmountChange } = ctx;
192
- const t = useTranslations("Cart.CartLine");
193
194
  return (
194
195
  <IconButton
195
196
  size="small"
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
- import React, { createContext, useContext } from "react";
4
3
  import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box/index";
5
4
  import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
6
5
  import { useTranslations } from "next-intl";
6
+ import type React from "react";
7
+ import { createContext, useContext } from "react";
7
8
  import { MdShoppingBag as ShoppingBagIcon } from "react-icons/md";
8
9
 
9
10
  interface EmptyCartContextValue {