@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,8 +1,8 @@
1
1
  "use client";
2
2
 
3
- import { Fragment, ReactNode, useState } from "react";
4
3
  import Menu from "@mui/material/Menu";
5
- import { SxProps, Theme } from "@mui/material/styles";
4
+ import type { SxProps, Theme } from "@mui/material/styles";
5
+ import { Fragment, type ReactNode, useState } from "react";
6
6
 
7
7
  // ===============================================================
8
8
  interface Props {
@@ -21,7 +21,7 @@ export default function BazaarMenu({
21
21
  direction = "left",
22
22
  sx,
23
23
  ...props
24
- }: Props) {
24
+ }: Readonly<Props>) {
25
25
  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
26
26
 
27
27
  const handleClose = () => setAnchorEl(null);
@@ -36,7 +36,7 @@ export default function BazaarMenu({
36
36
  elevation={0}
37
37
  anchorEl={anchorEl}
38
38
  onClose={handleClose}
39
- open={open !== undefined ? open : !!anchorEl}
39
+ open={open ?? Boolean(anchorEl)}
40
40
  anchorOrigin={{ vertical: "bottom", horizontal: direction }}
41
41
  transformOrigin={{ vertical: "top", horizontal: direction }}
42
42
  sx={sx}
@@ -1,4 +1,4 @@
1
- import Switch, { SwitchProps } from "@mui/material/Switch";
1
+ import Switch, { type SwitchProps } from "@mui/material/Switch";
2
2
  import styled from "@mui/material/styles/styled";
3
3
 
4
4
  // STYLED COMPONENT
@@ -1,7 +1,7 @@
1
- import Box, { BoxProps } from "@mui/material/Box";
2
- import TextField, { TextFieldProps } from "@mui/material/TextField";
3
1
  // CUSTOM COMPONENT
4
2
  import { H6 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
3
+ import Box, { type BoxProps } from "@mui/material/Box";
4
+ import TextField, { type TextFieldProps } from "@mui/material/TextField";
5
5
 
6
6
  // ==============================================================
7
7
  type Props = TextFieldProps & BoxProps;
@@ -17,7 +17,7 @@ export default function BazaarTextField({
17
17
 
18
18
  // Splits props into Box and TextField props. Bracket notation allows dynamic names like "mt" or "mb".
19
19
  for (const key in props) {
20
- if (SPACE_PROPS_LIST.includes(key)) {
20
+ if (SPACE_PROPS_LIST.has(key)) {
21
21
  (boxProps as any)[key] = (props as any)[key];
22
22
  } else {
23
23
  (textFieldProps as any)[key] = (props as any)[key];
@@ -45,7 +45,7 @@ export default function BazaarTextField({
45
45
  );
46
46
  }
47
47
 
48
- const SPACE_PROPS_LIST = [
48
+ const SPACE_PROPS_LIST = new Set([
49
49
  "m",
50
50
  "mt",
51
51
  "mr",
@@ -74,4 +74,4 @@ const SPACE_PROPS_LIST = [
74
74
  "paddingLeft",
75
75
  "paddingX",
76
76
  "paddingY",
77
- ];
77
+ ]);
@@ -1,6 +1,6 @@
1
+ import { Box, Typography } from "@mui/material";
1
2
  import type { Meta, StoryObj } from "@storybook/react";
2
- import { BorderShadowCard, lightShadow, lightBorder } from "./BoxShadowCard";
3
- import { Typography, Box } from "@mui/material";
3
+ import { BorderShadowCard } from "./BoxShadowCard";
4
4
 
5
5
  const meta = {
6
6
  title: "Bazaar/BorderShadowCard",
@@ -1,7 +1,7 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
- import CountryInput from "./countries-input";
3
- import { countries } from "../../__mocks__/countries";
4
2
  import { useState } from "react";
3
+ import { countries } from "../../__mocks__/countries";
4
+ import CountryInput from "./countries-input";
5
5
 
6
6
  const meta = {
7
7
  title: "Bazaar/CountryInput",
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
+ import type { Accept } from "react-dropzone";
2
3
  import DropZone from "./DropZone";
3
- import { Accept } from "react-dropzone";
4
4
 
5
5
  const meta = {
6
6
  title: "Bazaar/DropZone",
@@ -1,16 +1,16 @@
1
- import { useCallback } from "react";
2
- // MUI
3
- import Box from "@mui/material/Box";
4
- import Button from "@mui/material/Button";
5
- import Divider from "@mui/material/Divider";
6
- // DROPZONE
7
- import { Accept, FileRejection, useDropzone } from "react-dropzone";
8
1
  // LOCAL CUSTOM COMPONENT
9
2
  import {
10
3
  H5,
11
4
  Small,
12
5
  } from "@evenicanpm/storefront-core/src/components-v2/Typography";
6
+ // MUI
7
+ import Box from "@mui/material/Box";
8
+ import Button from "@mui/material/Button";
9
+ import Divider from "@mui/material/Divider";
13
10
  import { useTranslations } from "next-intl";
11
+ import { useCallback } from "react";
12
+ // DROPZONE
13
+ import { type Accept, type FileRejection, useDropzone } from "react-dropzone";
14
14
 
15
15
  // ========================================================
16
16
  interface Props {
@@ -26,8 +26,7 @@ export default function DropZone({
26
26
  onChange,
27
27
  title = "Drag & drop files here",
28
28
  handleReject,
29
- accept,
30
- }: Props) {
29
+ }: Readonly<Props>) {
31
30
  const onDrop = useCallback(
32
31
  (acceptedFiles: File[]) => onChange(acceptedFiles),
33
32
  [onChange],
@@ -1,6 +1,6 @@
1
+ import { Box, Typography } from "@mui/material";
1
2
  import type { Meta, StoryObj } from "@storybook/react";
2
3
  import HoverBox from "./HoverBox";
3
- import { Box, Typography } from "@mui/material";
4
4
 
5
5
  const meta = {
6
6
  title: "Bazaar/HoverBox",
@@ -1,8 +1,9 @@
1
1
  "use client";
2
2
 
3
- import React, { useState, useEffect } from "react";
4
- import { ImageProps } from "next/image";
5
3
  import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
4
+ import type { ImageProps } from "next/image";
5
+ import type React from "react";
6
+ import { useEffect, useState } from "react";
6
7
 
7
8
  export interface ImageWithFallbackProps extends ImageProps {
8
9
  fallbackSrc?: string;
@@ -1,12 +1,20 @@
1
1
  "use client";
2
2
 
3
- import NextImage, { ImageProps } from "next/image";
4
3
  import styled from "@mui/material/styles/styled";
5
- import { ComponentType } from "react";
4
+ import NextImage, { type ImageProps } from "next/image";
5
+ import type { ComponentType } from "react";
6
6
 
7
7
  const LazyImage: ComponentType<ImageProps> = styled(NextImage)({
8
8
  width: "100%",
9
9
  height: "auto", //If we use CSS to change the size of image, we should include the styles 'width: "auto"' or 'height: "auto"' to maintain the aspect ratio.
10
10
  });
11
11
 
12
+ /**
13
+ * Next Image with a hover zoom effect. Used for blog cards.
14
+ */
15
+ export const ZoomLazyImage: ComponentType<ImageProps> = styled(NextImage)({
16
+ transition: "transform 0.3s",
17
+ "&:hover": { transform: "scale(1.1)", cursor: "pointer" },
18
+ });
19
+
12
20
  export default LazyImage;
@@ -1,7 +1,6 @@
1
- import React from "react";
2
-
3
1
  // Material-UI
4
2
  import { Box, CircularProgress } from "@mui/material";
3
+ import type React from "react";
5
4
 
6
5
  interface Props {
7
6
  height?: number;
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
- import SearchInput from "./SearchInput";
3
2
  import { useState } from "react";
3
+ import SearchInput from "./SearchInput";
4
4
 
5
5
  const meta = {
6
6
  title: "Bazaar/SearchInput",
@@ -1,7 +1,7 @@
1
- import InputBase, { InputBaseProps } from "@mui/material/InputBase";
2
- import styled from "@mui/material/styles/styled";
3
1
  // MUI ICON COMPONENT
4
2
  import Search from "@mui/icons-material/Search";
3
+ import InputBase, { type InputBaseProps } from "@mui/material/InputBase";
4
+ import styled from "@mui/material/styles/styled";
5
5
 
6
6
  // STYLED COMPONENT
7
7
  const StyledInputBase = styled(InputBase)(({ theme }) => ({
@@ -1,6 +1,6 @@
1
- import { PropsWithChildren } from "react";
2
1
  import styled from "@mui/material/styles/styled";
3
2
  import { SnackbarProvider as NotistackProvider } from "notistack";
3
+ import type { PropsWithChildren } from "react";
4
4
 
5
5
  // STYLED COMPONENT
6
6
  const Provider = styled(NotistackProvider)(({ theme }) => ({
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
- import React from "react";
4
3
  import { useTranslations } from "next-intl";
4
+ import React from "react";
5
5
 
6
6
  interface Props {
7
7
  path: string;
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
2
  import {
3
+ Display,
3
4
  H1,
4
5
  H2,
5
6
  H3,
@@ -9,9 +10,8 @@ import {
9
10
  Paragraph,
10
11
  Small,
11
12
  Span,
12
- Tiny,
13
- Display,
14
13
  Subtitle,
14
+ Tiny,
15
15
  } from "./Typography";
16
16
 
17
17
  const meta = {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import Box, { BoxProps } from "@mui/material/Box";
3
+ import Box, { type BoxProps } from "@mui/material/Box";
4
4
  import styled from "@mui/material/styles/styled";
5
5
  import clsx from "clsx";
6
6
  import React from "react";
@@ -22,7 +22,7 @@ const StyledBox = styled(Box, {
22
22
  }),
23
23
  }));
24
24
 
25
- export function H1(props: EllipsisProps) {
25
+ export function H1(props: Readonly<EllipsisProps>) {
26
26
  const { ellipsis, children, className, ...others } = props;
27
27
 
28
28
  return (
@@ -39,7 +39,7 @@ export function H1(props: EllipsisProps) {
39
39
  );
40
40
  }
41
41
 
42
- export function H2(props: EllipsisProps) {
42
+ export function H2(props: Readonly<EllipsisProps>) {
43
43
  const { ellipsis, children, className, ...others } = props;
44
44
 
45
45
  return (
@@ -56,7 +56,7 @@ export function H2(props: EllipsisProps) {
56
56
  );
57
57
  }
58
58
 
59
- export function H3(props: EllipsisProps) {
59
+ export function H3(props: Readonly<EllipsisProps>) {
60
60
  const { ellipsis, children, className, ...others } = props;
61
61
 
62
62
  return (
@@ -73,7 +73,7 @@ export function H3(props: EllipsisProps) {
73
73
  );
74
74
  }
75
75
 
76
- export function H4(props: EllipsisProps) {
76
+ export function H4(props: Readonly<EllipsisProps>) {
77
77
  const { ellipsis, children, className, ...others } = props;
78
78
 
79
79
  return (
@@ -90,7 +90,7 @@ export function H4(props: EllipsisProps) {
90
90
  );
91
91
  }
92
92
 
93
- export function H5(props: EllipsisProps) {
93
+ export function H5(props: Readonly<EllipsisProps>) {
94
94
  const { ellipsis, children, className, ...others } = props;
95
95
 
96
96
  return (
@@ -108,7 +108,7 @@ export function H5(props: EllipsisProps) {
108
108
  );
109
109
  }
110
110
 
111
- export function H6(props: EllipsisProps) {
111
+ export function H6(props: Readonly<EllipsisProps>) {
112
112
  const { ellipsis, children, className, ...others } = props;
113
113
 
114
114
  return (
@@ -125,7 +125,7 @@ export function H6(props: EllipsisProps) {
125
125
  );
126
126
  }
127
127
 
128
- export function Paragraph(props: EllipsisProps) {
128
+ export function Paragraph(props: Readonly<EllipsisProps>) {
129
129
  const { ellipsis, children, className, ...others } = props;
130
130
 
131
131
  return (
@@ -142,7 +142,7 @@ export function Paragraph(props: EllipsisProps) {
142
142
  );
143
143
  }
144
144
 
145
- export function Small(props: EllipsisProps) {
145
+ export function Small(props: Readonly<EllipsisProps>) {
146
146
  const { ellipsis = false, children, className, ...others } = props;
147
147
 
148
148
  return (
@@ -159,7 +159,7 @@ export function Small(props: EllipsisProps) {
159
159
  );
160
160
  }
161
161
 
162
- export function Span(props: EllipsisProps) {
162
+ export function Span(props: Readonly<EllipsisProps>) {
163
163
  const { ellipsis = false, children, className, ...others } = props;
164
164
 
165
165
  return (
@@ -174,7 +174,7 @@ export function Span(props: EllipsisProps) {
174
174
  );
175
175
  }
176
176
 
177
- export function Tiny(props: EllipsisProps) {
177
+ export function Tiny(props: Readonly<EllipsisProps>) {
178
178
  const { ellipsis = false, children, className, ...others } = props;
179
179
 
180
180
  return (
@@ -191,7 +191,7 @@ export function Tiny(props: EllipsisProps) {
191
191
  );
192
192
  }
193
193
 
194
- export function Display(props: EllipsisProps) {
194
+ export function Display(props: Readonly<EllipsisProps>) {
195
195
  const { ellipsis, children, className, ...others } = props;
196
196
 
197
197
  return (
@@ -208,7 +208,7 @@ export function Display(props: EllipsisProps) {
208
208
  );
209
209
  }
210
210
 
211
- export function Subtitle(props: EllipsisProps) {
211
+ export function Subtitle(props: Readonly<EllipsisProps>) {
212
212
  const { ellipsis, children, className, ...others } = props;
213
213
 
214
214
  return (
@@ -1,5 +1,5 @@
1
- import { PropsWithChildren } from "react";
2
- import Button, { ButtonProps } from "@mui/material/Button";
1
+ import Button, { type ButtonProps } from "@mui/material/Button";
2
+ import type { PropsWithChildren } from "react";
3
3
 
4
4
  // ==================================================
5
5
  interface Props extends PropsWithChildren, ButtonProps {}
@@ -1,10 +1,10 @@
1
- import { ReactNode } from "react";
2
- import { BoxProps } from "@mui/material/Box";
3
- import { styled, SxProps, Theme } from "@mui/material/styles";
4
- // MUI ICON COMPONENTS
5
- import ChevronRight from "@mui/icons-material/ChevronRight";
6
1
  // GLOBAL CUSTOM COMPONENT
7
2
  import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
3
+ // MUI ICON COMPONENTS
4
+ import ChevronRight from "@mui/icons-material/ChevronRight";
5
+ import type { BoxProps } from "@mui/material/Box";
6
+ import { type SxProps, styled, type Theme } from "@mui/material/styles";
7
+ import type { ReactNode } from "react";
8
8
 
9
9
  // STYLED COMPONENT
10
10
  const RootContainer = styled(FlexBox, {
@@ -31,7 +31,7 @@ interface Props extends BoxProps {
31
31
  }
32
32
  // =================================================================
33
33
 
34
- export default function AccordionHeader(props: Props) {
34
+ export default function AccordionHeader(props: Readonly<Props>) {
35
35
  const { open, children, showIcon = true, ...others } = props;
36
36
 
37
37
  return (
@@ -1,6 +1,6 @@
1
+ import { Box, Paper, Typography } from "@mui/material";
1
2
  import type { Meta, StoryObj } from "@storybook/react";
2
3
  import Carousel from "./carousel";
3
- import { Box, Typography, Paper } from "@mui/material";
4
4
 
5
5
  const meta: Meta<typeof Carousel> = {
6
6
  title: "Carousel",
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
 
3
- import React, { forwardRef, PropsWithChildren } from "react";
4
- import { SxProps, Theme, useTheme } from "@mui/material/styles";
5
- import Slider from "react-slick";
6
- import { Settings, CustomArrowProps } from "react-slick";
3
+ import { type SxProps, type Theme, useTheme } from "@mui/material/styles";
4
+ import type React from "react";
5
+ import { forwardRef, type PropsWithChildren } from "react";
6
+ import Slider, { type CustomArrowProps, type Settings } from "react-slick";
7
7
  import "slick-carousel/slick/slick.css";
8
8
  import "slick-carousel/slick/slick-theme.css";
9
9
  import { createArrows } from "@evenicanpm/storefront-core/src/components-v2/carousel/components/carousel-arrows";
@@ -1,10 +1,10 @@
1
- import { Settings, CustomArrowProps } from "react-slick";
2
- import { SxProps, Theme } from "@mui/material/styles";
1
+ // STYLED COMPONENT
2
+ import { ArrowButton } from "@evenicanpm/storefront-core/src/components-v2/carousel/styles/index";
3
3
  // MUI ICON COMPONENTS
4
4
  import ArrowBack from "@mui/icons-material/ArrowBack";
5
5
  import ArrowForward from "@mui/icons-material/ArrowForward";
6
- // STYLED COMPONENT
7
- import { ArrowButton } from "@evenicanpm/storefront-core/src/components-v2/carousel/styles/index";
6
+ import type { SxProps, Theme } from "@mui/material/styles";
7
+ import type { CustomArrowProps, Settings } from "react-slick";
8
8
 
9
9
  type ArrowConfig = {
10
10
  sx?: SxProps<Theme>;
@@ -1,10 +1,10 @@
1
- import { Settings } from "react-slick";
2
- import { SxProps, Theme } from "@mui/material/styles";
3
1
  // STYLED COMPONENTS
4
2
  import {
5
3
  Dot,
6
4
  DotList,
7
5
  } from "@evenicanpm/storefront-core/src/components-v2/carousel/styles/index";
6
+ import type { SxProps, Theme } from "@mui/material/styles";
7
+ import type { Settings } from "react-slick";
8
8
 
9
9
  type DotConfig = {
10
10
  dotColor?: string;
@@ -1,11 +1,11 @@
1
- import { ReactNode } from "react";
2
- import Grid from "@mui/material/Grid2";
3
- import Button from "@mui/material/Button";
4
1
  // GLOBAL CUSTOM COMPONENTS
5
2
  import BazaarImage from "@evenicanpm/storefront-core/src/components-v2/BazaarImage";
6
- import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
7
3
  // STYLED COMPONENT
8
4
  import { StyledRoot } from "@evenicanpm/storefront-core/src/components-v2/carousel-cards/carousel-card-1/styles";
5
+ import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
6
+ import Button from "@mui/material/Button";
7
+ import Grid from "@mui/material/Grid2";
8
+ import type { ReactNode } from "react";
9
9
 
10
10
  type CarouselCard1Props = {
11
11
  children: ReactNode;
@@ -1,14 +1,15 @@
1
1
  // Replace your-framework with the framework you are using, e.g. react-vite, nextjs, nextjs-vite, etc.
2
- import type { Meta, StoryObj } from "@storybook/react";
3
- import CategoryMenu from "./category-menu";
4
2
 
5
- import Button from "@mui/material/Button";
6
- // MUI ICON COMPONENT
7
- import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown";
8
3
  // CUSTOM ICON COMPONENTS
9
4
  // GLOBAL CUSTOM COMPONENTS
10
5
  import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box";
6
+ // MUI ICON COMPONENT
7
+ import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown";
8
+
9
+ import Button from "@mui/material/Button";
10
+ import type { Meta, StoryObj } from "@storybook/react";
11
11
  import { H6 } from "../Typography";
12
+ import CategoryMenu from "./category-menu";
12
13
 
13
14
  //TODO: Write more stories for variations of Header.
14
15
 
@@ -1,16 +1,15 @@
1
1
  "use client";
2
2
 
3
- import React, { createContext, useContext, ReactNode } from "react";
4
3
  import getCategories from "@evenicanpm/storefront-core/src/api-manager/services/categories/queries/get-categories";
5
- import { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
6
4
  import {
7
5
  StyledRoot,
8
6
  SubMenuStyledRoot,
9
7
  } from "@evenicanpm/storefront-core/src/components-v2/categories/category-list/styles";
10
-
8
+ import CategoryListItem from "@evenicanpm/storefront-core/src/components-v2/categories/category-list-item/index";
11
9
  import MegaMenu1 from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/mega-menu-1";
12
10
  import MegaMenu2 from "@evenicanpm/storefront-core/src/components-v2/categories/mega-menu/mega-menu-2";
13
- import CategoryListItem from "@evenicanpm/storefront-core/src/components-v2/categories/category-list-item/index";
11
+ import type { CategoryHierarchy } from "@evenicanpm/storefront-core/src/lib/category-helpers";
12
+ import React, { createContext, type ReactNode, useContext } from "react";
14
13
 
15
14
  type MegaMenuType = "default" | "mega-menu-1" | "mega-menu-2";
16
15
 
@@ -40,7 +39,7 @@ const CategoryList = ({
40
39
  categories,
41
40
  children,
42
41
  }: RootProps) => {
43
- let { data: fetchedCategories } = getCategories.useSuspenseData();
42
+ const { data: fetchedCategories } = getCategories.useSuspenseData();
44
43
  const cats = categories ?? fetchedCategories ?? [];
45
44
 
46
45
  const megaMenuRenderers: Record<
@@ -1,14 +1,7 @@
1
- import styled from "@mui/material/styles/styled";
2
- import { Props } from "@evenicanpm/storefront-core/src/components-v2/categories/category-list/types";
1
+ import type { Props } from "@evenicanpm/storefront-core/src/components-v2/categories/category-list/types";
3
2
  import Card from "@mui/material/Card";
3
+ import styled from "@mui/material/styles/styled";
4
4
 
5
- /*
6
- interface StyledRootProps extends React.HTMLAttributes<HTMLDivElement> {
7
- elevation: number;
8
- open?: boolean;
9
- position: "absolute" | "relative";
10
- }
11
- */
12
5
  // styled component
13
6
  export const StyledRoot = styled("div", {
14
7
  shouldForwardProp: (prop) => prop !== "position" && prop !== "open",
@@ -1,10 +1,10 @@
1
- import Link from "next/link";
2
- import { ReactNode } from "react";
3
- // MUI ICON COMPONENTS
4
- import { SvgIconComponent } from "@mui/icons-material";
5
- import ChevronRight from "@mui/icons-material/ChevronRight";
6
1
  // STYLED COMPONENT
7
2
  import { Wrapper } from "@evenicanpm/storefront-core/src/components-v2/categories/category-list-item/styles";
3
+ // MUI ICON COMPONENTS
4
+ import type { SvgIconComponent } from "@mui/icons-material";
5
+ import ChevronRight from "@mui/icons-material/ChevronRight";
6
+ import Link from "next/link";
7
+ import type { ReactNode } from "react";
8
8
 
9
9
  // =============================================================
10
10
  interface Props {
@@ -16,7 +16,7 @@ interface Props {
16
16
  }
17
17
  // =============================================================
18
18
 
19
- export default function CategoryListItem(props: Props) {
19
+ export default function CategoryListItem(props: Readonly<Props>) {
20
20
  const { href, title, render, caret = true, icon: Icon } = props;
21
21
 
22
22
  return (
@@ -1,22 +1,25 @@
1
1
  "use client";
2
2
 
3
- import { MouseEvent, useCallback, useEffect, useState } from "react";
4
- import styled from "@mui/material/styles/styled";
5
3
  import CategoryList from "@evenicanpm/storefront-core/src/components-v2/categories/category-list/index";
4
+ import styled from "@mui/material/styles/styled";
5
+ import { type MouseEvent, useCallback, useEffect, useState } from "react";
6
6
 
7
7
  // STYLED COMPONENT
8
8
  const Wrapper = styled("div", {
9
9
  shouldForwardProp: (prop) => prop !== "open",
10
- })<{ open: boolean }>(({ open, theme: { direction } }) => ({
11
- cursor: "pointer",
12
- position: "relative",
13
- "& .dropdown-icon": {
14
- transition: "all 250ms ease-in-out",
15
- transform: `rotate(${
16
- open ? (direction === "rtl" ? "-90deg" : "90deg") : "0deg"
17
- })`,
18
- },
19
- }));
10
+ })<{ open: boolean }>(({ open, theme: { direction } }) => {
11
+ const rotationDegrees = direction === "rtl" ? "-90deg" : "90deg";
12
+ const rotation = open ? rotationDegrees : "0deg";
13
+
14
+ return {
15
+ cursor: "pointer",
16
+ position: "relative",
17
+ "& .dropdown-icon": {
18
+ transition: "all 250ms ease-in-out",
19
+ transform: `rotate(${rotation})`,
20
+ },
21
+ };
22
+ });
20
23
 
21
24
  type Props = {
22
25
  render: (
@@ -26,7 +29,7 @@ type Props = {
26
29
 
27
30
  // CategoryMenu is acting purely as a configuration/wiring component,
28
31
  // not as a reusable UI element that needs further extensibility.
29
- export default function CategoryMenu({ render }: Props) {
32
+ export default function CategoryMenu({ render }: Readonly<Props>) {
30
33
  const [open, setOpen] = useState(false);
31
34
 
32
35
  const onClick = (e: MouseEvent<HTMLButtonElement>) => {
@@ -37,8 +40,8 @@ export default function CategoryMenu({ render }: Props) {
37
40
  const handleDocumentClick = useCallback(() => setOpen(false), []);
38
41
 
39
42
  useEffect(() => {
40
- window.addEventListener("click", handleDocumentClick);
41
- return () => window.removeEventListener("click", handleDocumentClick);
43
+ document.addEventListener("click", handleDocumentClick);
44
+ return () => document.removeEventListener("click", handleDocumentClick);
42
45
  }, [handleDocumentClick]);
43
46
 
44
47
  return (
@@ -1,9 +1,5 @@
1
1
  "use client";
2
2
 
3
- import { ReactNode } from "react";
4
- import Link from "next/link";
5
- import Box from "@mui/material/Box";
6
- import Grid from "@mui/material/Grid2";
7
3
  import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
8
4
  import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
9
5
  import {
@@ -11,6 +7,10 @@ import {
11
7
  Paragraph,
12
8
  Small,
13
9
  } from "@evenicanpm/storefront-core/src/components-v2/Typography";
10
+ import Box from "@mui/material/Box";
11
+ import Grid from "@mui/material/Grid2";
12
+ import Link from "next/link";
13
+ import type { ReactNode } from "react";
14
14
 
15
15
  interface RootProps {
16
16
  href: string;