@evenicanpm/storefront-core 1.0.3 → 1.0.4

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 (319) hide show
  1. package/docs.tsconfig.json +35 -0
  2. package/package.json +6 -3
  3. package/src/api-manager/schemas/product.schema.ts +0 -1
  4. package/src/api-manager/services/create-query.ts +10 -0
  5. package/src/api-manager/services/product/queries/get-product-availability.ts +1 -1
  6. package/src/api-manager/services/user/mutations/add-to-wishlist.ts +23 -3
  7. package/src/api-manager/services/user/mutations/remove-from-wishlist.ts +23 -0
  8. package/src/cms/blocks/Components/CategoryCarousel/index.tsx +6 -7
  9. package/src/cms/blocks/Components/HeroCarousel/index.tsx +25 -19
  10. package/src/cms/blocks/Components/ProductCarousel/index.tsx +44 -38
  11. package/src/cms/blocks/Components/ProductSectionFullWidth/index.tsx +7 -3
  12. package/src/cms/blocks/Components/shared/product-grid.tsx +38 -23
  13. package/src/components/_components/wishlist/add-to-wishlist-dialog.tsx +1 -1
  14. package/src/components/_components/wishlist/remove-from-wishlist-dialog.tsx +1 -1
  15. package/src/components/_components/wishlist-modal/add-to-wishlist-dialog.tsx +1 -1
  16. package/src/components/_components/wishlist-modal/remove-from-wishlist-dialog.tsx +1 -1
  17. package/src/components-v2/carousel/carousel.tsx +69 -35
  18. package/src/components-v2/carousel/components/carousel-arrows.tsx +40 -46
  19. package/src/components-v2/carousel/components/carousel-dots.tsx +10 -13
  20. package/src/components-v2/carousel/index.ts +0 -2
  21. package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +68 -49
  22. package/src/components-v2/categories/category-list/category-list.tsx +83 -41
  23. package/src/components-v2/categories/category-list/styles.ts +7 -1
  24. package/src/components-v2/categories/category-menu.tsx +2 -0
  25. package/src/components-v2/categories/mega-menu/banner.tsx +68 -37
  26. package/src/components-v2/categories/mega-menu/column-list.tsx +59 -52
  27. package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +19 -1
  28. package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +32 -2
  29. package/src/components-v2/header/components/mobile-header.tsx +119 -46
  30. package/src/components-v2/header/components/user.tsx +163 -117
  31. package/src/components-v2/header/header.tsx +62 -42
  32. package/src/components-v2/header/sticky-header.tsx +34 -2
  33. package/src/components-v2/mini-cart/components/bottom-actions.tsx +71 -17
  34. package/src/components-v2/mini-cart/components/cart-item.tsx +159 -101
  35. package/src/components-v2/mini-cart/components/empty-view.tsx +59 -19
  36. package/src/components-v2/mini-cart/components/top-header.tsx +61 -22
  37. package/src/components-v2/mini-cart/mini-cart-trigger.tsx +99 -0
  38. package/src/components-v2/mini-cart/mini-cart.tsx +111 -43
  39. package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +93 -48
  40. package/src/components-v2/navbar/categories.tsx +70 -16
  41. package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +135 -41
  42. package/src/components-v2/navbar/mega-menu/mega-menu.tsx +115 -48
  43. package/src/components-v2/navbar/mobile-menu/mobile-menu.test.tsx +111 -0
  44. package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +127 -56
  45. package/src/components-v2/navbar/nav-list/nav-list.tsx +125 -103
  46. package/src/components-v2/navbar/navbar.tsx +72 -20
  47. package/src/components-v2/product-cards/{product-card-1 → product-card}/components/quantity-buttons.tsx +1 -1
  48. package/src/components-v2/product-cards/product-card/product-card.tsx +410 -0
  49. package/src/components-v2/product-cards/{product-card-1 → product-card}/styles/index.ts +6 -0
  50. package/src/components-v2/product-cards/product-card-plp/product-card.tsx +161 -0
  51. package/src/components-v2/product-cards/product-card-plp-list/index.ts +1 -0
  52. package/src/components-v2/product-cards/product-card-plp-list/product-card.tsx +219 -0
  53. package/src/components-v2/product-cards/product-card-search/product-card.tsx +166 -0
  54. package/src/components-v2/product-dialog/compound/product-dialog.tsx +225 -0
  55. package/src/components-v2/product-dialog/index.tsx +29 -0
  56. package/src/components-v2/product-dimensions/{components → compound}/dimensions-group-error.tsx +1 -1
  57. package/src/components-v2/product-dimensions/{components → compound}/dimensions-group-label.tsx +1 -1
  58. package/src/components-v2/product-dimensions/{components → compound}/dimensions-group-list-chip.tsx +1 -1
  59. package/src/components-v2/product-dimensions/{components → compound}/dimensions-group-list.tsx +1 -1
  60. package/src/components-v2/product-dimensions/{components → compound}/dimensions-group.tsx +1 -1
  61. package/src/components-v2/product-dimensions/{components → compound}/dimensions.tsx +0 -3
  62. package/src/components-v2/product-dimensions/index.tsx +1 -1
  63. package/src/components-v2/product-quantity-buttons/compound/quantity-buttons-root.tsx +181 -0
  64. package/src/components-v2/product-quantity-buttons/index.tsx +22 -0
  65. package/src/components-v2/product-quantity-variants/index.tsx +90 -0
  66. package/src/components-v2/products-view/compound/context.ts +25 -0
  67. package/src/components-v2/products-view/compound/products-grid-view.tsx +109 -0
  68. package/src/components-v2/products-view/compound/products-list-view.tsx +98 -0
  69. package/src/components-v2/products-view/compound/types.ts +12 -0
  70. package/src/components-v2/products-view/index.tsx +45 -0
  71. package/src/components-v2/products-view/products-grid-view.tsx +24 -11
  72. package/src/components-v2/products-view/products-list-view.tsx +29 -12
  73. package/src/components-v2/search-bar/compound/context.ts +31 -0
  74. package/src/components-v2/search-bar/compound/results-item-lg.tsx +43 -0
  75. package/src/components-v2/search-bar/compound/results-item-sm.tsx +48 -0
  76. package/src/components-v2/search-bar/compound/results-suspense.tsx +49 -0
  77. package/src/components-v2/search-bar/compound/results.tsx +42 -0
  78. package/src/components-v2/search-bar/compound/search-bar-root.tsx +64 -0
  79. package/src/components-v2/search-bar/compound/textfield-adornment-button.tsx +22 -0
  80. package/src/components-v2/{search-box/components/category-dropdown.tsx → search-bar/compound/textfield-adornment-category.tsx} +29 -7
  81. package/src/components-v2/search-bar/compound/textfield-adornment-search-icon.tsx +34 -0
  82. package/src/components-v2/search-bar/compound/textfield.tsx +58 -0
  83. package/src/components-v2/search-bar/hooks/use-click-outside.ts +20 -0
  84. package/src/components-v2/search-bar/hooks/use-search.ts +63 -0
  85. package/src/components-v2/search-bar/index.tsx +36 -0
  86. package/src/components-v2/{search-box → search-bar}/styles/index.ts +5 -3
  87. package/src/components-v2/search-bar/utils/findCategoryNameById.ts +18 -0
  88. package/src/components-v2/section/compound/section-header.tsx +63 -0
  89. package/src/components-v2/section/compound/section.tsx +26 -0
  90. package/src/components-v2/section/index.ts +1 -0
  91. package/src/components-v2/side-nav/side-nav.tsx +4 -5
  92. package/src/components-v2/sticky/index.ts +1 -1
  93. package/src/components-v2/{wishlist-modal → wishlist-dialogs/add-to-wishlist}/add-to-wishlist-button.tsx +1 -1
  94. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +35 -0
  95. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +79 -0
  96. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +41 -0
  97. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/context.ts +29 -0
  98. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +74 -0
  99. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +82 -0
  100. package/src/components-v2/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +152 -0
  101. package/src/components-v2/wishlist-dialogs/add-to-wishlist/index.tsx +39 -0
  102. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/context.ts +2 -0
  103. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +42 -0
  104. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +92 -0
  105. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +96 -0
  106. package/src/components-v2/{wishlist/components → wishlist-dialogs/create-wishlist}/create-wishlist-button.tsx +5 -3
  107. package/src/components-v2/wishlist-dialogs/create-wishlist/index.tsx +22 -0
  108. package/src/hooks/use-cart.ts +29 -23
  109. package/src/hooks/use-variants.ts +106 -53
  110. package/src/lib/build-detail-url.ts +2 -1
  111. package/src/pages/product-details/product-intro/product-intro.tsx +26 -23
  112. package/src/pages/product-list/quick-view-dialog-content.tsx +18 -9
  113. package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +9 -8
  114. package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +2 -2
  115. package/src/{components-v2/shop-card → pages-v2/product-details/bopis/store-card}/shop-card.tsx +17 -48
  116. package/src/pages-v2/product-details/bopis/store-card/utils/convertSecondsToTime.ts +8 -0
  117. package/src/pages-v2/product-details/bopis/store-card/utils/getDaysResources.ts +25 -0
  118. package/src/pages-v2/product-details/product-intro/compound/context.ts +52 -0
  119. package/src/pages-v2/product-details/product-intro/compound/product-info.tsx +231 -0
  120. package/src/pages-v2/product-details/product-intro/compound/product-intro-images.tsx +124 -0
  121. package/src/pages-v2/product-details/product-intro/compound/product-intro.tsx +49 -0
  122. package/src/pages-v2/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +28 -0
  123. package/src/pages-v2/product-details/product-intro/utils.ts +42 -0
  124. package/src/pages-v2/product-details/product-tabs.tsx +87 -21
  125. package/src/pages-v2/product-details/related-products.tsx +26 -12
  126. package/src/pages-v2/product-list/quick-view-dialog-content.tsx +17 -10
  127. package/typedoc.js +3 -1
  128. package/src/components-v2/MiniCartClient.tsx +0 -65
  129. package/src/components-v2/carousel-cards/carousel-card-2/carousel-card-2.tsx +0 -78
  130. package/src/components-v2/carousel-cards/carousel-card-2/index.ts +0 -1
  131. package/src/components-v2/carousel-cards/carousel-card-2/styles.ts +0 -26
  132. package/src/components-v2/carousel-cards/carousel-card-3/carousel-card-3.tsx +0 -37
  133. package/src/components-v2/carousel-cards/carousel-card-3/index.ts +0 -1
  134. package/src/components-v2/carousel-cards/carousel-card-3/styles.ts +0 -28
  135. package/src/components-v2/carousel-cards/carousel-card-4/carousel-card-4.tsx +0 -81
  136. package/src/components-v2/carousel-cards/carousel-card-4/index.ts +0 -1
  137. package/src/components-v2/carousel-cards/carousel-card-4/styles.ts +0 -27
  138. package/src/components-v2/category-cards/category-card-1/category-card-1.tsx +0 -21
  139. package/src/components-v2/category-cards/category-card-1/index.ts +0 -1
  140. package/src/components-v2/category-cards/category-card-1/styles.ts +0 -37
  141. package/src/components-v2/countdown/count-box.tsx +0 -19
  142. package/src/components-v2/countdown/count-down.tsx +0 -24
  143. package/src/components-v2/countdown/index.tsx +0 -2
  144. package/src/components-v2/countdown/useCountDown.ts +0 -41
  145. package/src/components-v2/data-table/index.ts +0 -2
  146. package/src/components-v2/data-table/table-header.tsx +0 -91
  147. package/src/components-v2/data-table/table-pagination.tsx +0 -36
  148. package/src/components-v2/footer/components/about-links.tsx +0 -23
  149. package/src/components-v2/footer/components/app-store.tsx +0 -38
  150. package/src/components-v2/footer/components/customer-care-links.tsx +0 -21
  151. package/src/components-v2/footer/components/logo.tsx +0 -23
  152. package/src/components-v2/footer/components/social-links.tsx +0 -43
  153. package/src/components-v2/footer/data/index.ts +0 -54
  154. package/src/components-v2/footer/footer-1.tsx +0 -62
  155. package/src/components-v2/footer/footer-2.tsx +0 -57
  156. package/src/components-v2/footer/footer-3.tsx +0 -53
  157. package/src/components-v2/footer/footer-4.tsx +0 -71
  158. package/src/components-v2/footer/index.ts +0 -4
  159. package/src/components-v2/footer/styles/index.ts +0 -42
  160. package/src/components-v2/navbar/category-based-menu/components/categories.tsx +0 -44
  161. package/src/components-v2/navbar/category-based-menu/components/category-item.tsx +0 -31
  162. package/src/components-v2/navbar/category-based-menu/components/child-categories.tsx +0 -38
  163. package/src/components-v2/navbar/mega-menu/category-list.tsx +0 -29
  164. package/src/components-v2/navbar/mobile-menu/render-levels.test.tsx +0 -71
  165. package/src/components-v2/navbar/mobile-menu/render-levels.tsx +0 -62
  166. package/src/components-v2/newsletter/index.ts +0 -1
  167. package/src/components-v2/newsletter/newsletter.tsx +0 -112
  168. package/src/components-v2/newsletter/social-icons.tsx +0 -35
  169. package/src/components-v2/newsletter/styles.ts +0 -65
  170. package/src/components-v2/page-sidenav/grocery-side-nav/components/link-item.tsx +0 -21
  171. package/src/components-v2/page-sidenav/grocery-side-nav/components/list-item.tsx +0 -27
  172. package/src/components-v2/page-sidenav/grocery-side-nav/components/nav-accordion.tsx +0 -36
  173. package/src/components-v2/page-sidenav/grocery-side-nav/components/render-child.tsx +0 -26
  174. package/src/components-v2/page-sidenav/grocery-side-nav/grocery-side-nav.tsx +0 -32
  175. package/src/components-v2/page-sidenav/grocery-side-nav/index.ts +0 -1
  176. package/src/components-v2/page-sidenav/grocery-side-nav/styles/index.ts +0 -11
  177. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/list-item.tsx +0 -27
  178. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/nav-accordion.tsx +0 -44
  179. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/render-child.tsx +0 -20
  180. package/src/components-v2/page-sidenav/health-beauty-side-nav/health-beauty-side-nav.tsx +0 -43
  181. package/src/components-v2/page-sidenav/health-beauty-side-nav/index.ts +0 -1
  182. package/src/components-v2/page-sidenav/health-beauty-side-nav/styles/index.ts +0 -27
  183. package/src/components-v2/page-sidenav/side-navbar/components/list-item.tsx +0 -25
  184. package/src/components-v2/page-sidenav/side-navbar/components/nav-accordion.tsx +0 -46
  185. package/src/components-v2/page-sidenav/side-navbar/components/render-child.tsx +0 -20
  186. package/src/components-v2/page-sidenav/side-navbar/index.ts +0 -1
  187. package/src/components-v2/page-sidenav/side-navbar/side-nav-bar.tsx +0 -77
  188. package/src/components-v2/page-sidenav/side-navbar/styles/index.ts +0 -73
  189. package/src/components-v2/page-sidenav/side-navbar-2/components/button-content.tsx +0 -32
  190. package/src/components-v2/page-sidenav/side-navbar-2/components/sidebar-accordion.tsx +0 -66
  191. package/src/components-v2/page-sidenav/side-navbar-2/index.ts +0 -1
  192. package/src/components-v2/page-sidenav/side-navbar-2/side-navbar-2.tsx +0 -63
  193. package/src/components-v2/page-sidenav/side-navbar-2/styles/index.ts +0 -68
  194. package/src/components-v2/product-cards/product-card-1/index.ts +0 -1
  195. package/src/components-v2/product-cards/product-card-1/product-card-1-wrapper.tsx +0 -304
  196. package/src/components-v2/product-cards/product-card-1/product-card.tsx +0 -107
  197. package/src/components-v2/product-cards/product-card-10/index.ts +0 -1
  198. package/src/components-v2/product-cards/product-card-10/product-card.tsx +0 -128
  199. package/src/components-v2/product-cards/product-card-10/styles/index.ts +0 -38
  200. package/src/components-v2/product-cards/product-card-11/index.ts +0 -1
  201. package/src/components-v2/product-cards/product-card-11/product-card.tsx +0 -66
  202. package/src/components-v2/product-cards/product-card-11/styles/index.ts +0 -16
  203. package/src/components-v2/product-cards/product-card-12/index.ts +0 -1
  204. package/src/components-v2/product-cards/product-card-12/product-card.tsx +0 -42
  205. package/src/components-v2/product-cards/product-card-12/styles/index.ts +0 -16
  206. package/src/components-v2/product-cards/product-card-13/index.ts +0 -1
  207. package/src/components-v2/product-cards/product-card-13/product-card.tsx +0 -48
  208. package/src/components-v2/product-cards/product-card-13/styles/index.ts +0 -25
  209. package/src/components-v2/product-cards/product-card-14/index.ts +0 -1
  210. package/src/components-v2/product-cards/product-card-14/product-card.tsx +0 -125
  211. package/src/components-v2/product-cards/product-card-14/styles/index.ts +0 -40
  212. package/src/components-v2/product-cards/product-card-15/index.ts +0 -1
  213. package/src/components-v2/product-cards/product-card-15/product-card.tsx +0 -121
  214. package/src/components-v2/product-cards/product-card-15/styles/index.ts +0 -57
  215. package/src/components-v2/product-cards/product-card-16/product-card.tsx +0 -116
  216. package/src/components-v2/product-cards/product-card-2/components/favorite-button.tsx +0 -29
  217. package/src/components-v2/product-cards/product-card-2/components/product-price.tsx +0 -26
  218. package/src/components-v2/product-cards/product-card-2/index.ts +0 -1
  219. package/src/components-v2/product-cards/product-card-2/product-card.tsx +0 -70
  220. package/src/components-v2/product-cards/product-card-3/components/hover-actions.tsx +0 -83
  221. package/src/components-v2/product-cards/product-card-3/index.ts +0 -1
  222. package/src/components-v2/product-cards/product-card-3/product-card.tsx +0 -110
  223. package/src/components-v2/product-cards/product-card-3/styles/index.ts +0 -89
  224. package/src/components-v2/product-cards/product-card-4/components/hover-actions.tsx +0 -50
  225. package/src/components-v2/product-cards/product-card-4/index.ts +0 -1
  226. package/src/components-v2/product-cards/product-card-4/product-card.tsx +0 -128
  227. package/src/components-v2/product-cards/product-card-4/styles/index.ts +0 -66
  228. package/src/components-v2/product-cards/product-card-5/components/button-actions.tsx +0 -49
  229. package/src/components-v2/product-cards/product-card-5/components/hover-actions.tsx +0 -50
  230. package/src/components-v2/product-cards/product-card-5/index.ts +0 -1
  231. package/src/components-v2/product-cards/product-card-5/product-card.tsx +0 -137
  232. package/src/components-v2/product-cards/product-card-5/styles/index.ts +0 -94
  233. package/src/components-v2/product-cards/product-card-6/components/hover-actions.tsx +0 -50
  234. package/src/components-v2/product-cards/product-card-6/index.ts +0 -1
  235. package/src/components-v2/product-cards/product-card-6/product-card.tsx +0 -121
  236. package/src/components-v2/product-cards/product-card-6/styles/index.ts +0 -63
  237. package/src/components-v2/product-cards/product-card-7/components/product-status.tsx +0 -18
  238. package/src/components-v2/product-cards/product-card-7/components/quantity-buttons.tsx +0 -47
  239. package/src/components-v2/product-cards/product-card-7/index.ts +0 -1
  240. package/src/components-v2/product-cards/product-card-7/product-card.tsx +0 -139
  241. package/src/components-v2/product-cards/product-card-7/styles/index.ts +0 -98
  242. package/src/components-v2/product-cards/product-card-8/product-card.tsx +0 -151
  243. package/src/components-v2/product-cards/product-card-9/index.ts +0 -1
  244. package/src/components-v2/product-cards/product-card-9/product-card.tsx +0 -169
  245. package/src/components-v2/product-cards/product-card-wishlist/components/hover-actions.tsx +0 -37
  246. package/src/components-v2/product-cards/product-card-wishlist/product-card.tsx +0 -118
  247. package/src/components-v2/product-cards/product-card-wishlist/styles/index.ts +0 -53
  248. package/src/components-v2/product-quantity-buttons/product-quantity-buttons.tsx +0 -88
  249. package/src/components-v2/products-view/product-view-dialog.tsx +0 -218
  250. package/src/components-v2/search-box/__test__/search-input-category.test.tsx +0 -110
  251. package/src/components-v2/search-box/__test__/search-input.test.tsx +0 -137
  252. package/src/components-v2/search-box/__test__/search-results.json +0 -165
  253. package/src/components-v2/search-box/components/search-result.tsx +0 -86
  254. package/src/components-v2/search-box/hooks/use-search.ts +0 -63
  255. package/src/components-v2/search-box/index.ts +0 -2
  256. package/src/components-v2/search-box/search-input-category.test.tsx +0 -110
  257. package/src/components-v2/search-box/search-input-category.tsx +0 -203
  258. package/src/components-v2/search-box/search-input.test.tsx +0 -41
  259. package/src/components-v2/search-box/search-input.tsx +0 -66
  260. package/src/components-v2/section-header/index.ts +0 -2
  261. package/src/components-v2/section-header/section-creator.tsx +0 -29
  262. package/src/components-v2/section-header/section-header.tsx +0 -44
  263. package/src/components-v2/service-cards/icon-component.tsx +0 -18
  264. package/src/components-v2/service-cards/service-card-1/index.ts +0 -1
  265. package/src/components-v2/service-cards/service-card-1/service-card-1.tsx +0 -42
  266. package/src/components-v2/service-cards/service-card-2/index.ts +0 -1
  267. package/src/components-v2/service-cards/service-card-2/service-card-2.tsx +0 -37
  268. package/src/components-v2/service-cards/service-card-3/index.ts +0 -1
  269. package/src/components-v2/service-cards/service-card-3/service-card-3.tsx +0 -28
  270. package/src/components-v2/service-cards/service-card-3/styles.ts +0 -23
  271. package/src/components-v2/settings/index.ts +0 -1
  272. package/src/components-v2/settings/setting.tsx +0 -141
  273. package/src/components-v2/settings/styles.ts +0 -57
  274. package/src/components-v2/sticky-wrapper/index.ts +0 -1
  275. package/src/components-v2/sticky-wrapper/sticky-wrapper.tsx +0 -21
  276. package/src/components-v2/sticky-wrapper/styles.ts +0 -25
  277. package/src/components-v2/stories/story-content/index.ts +0 -1
  278. package/src/components-v2/stories/story-content/story-content.tsx +0 -28
  279. package/src/components-v2/stories/story-content/styles.ts +0 -22
  280. package/src/components-v2/stories/story-item/index.ts +0 -1
  281. package/src/components-v2/stories/story-item/story-item.tsx +0 -24
  282. package/src/components-v2/stories/story-item/styles.ts +0 -11
  283. package/src/components-v2/stories/story-viewer/index.ts +0 -1
  284. package/src/components-v2/stories/story-viewer/story-viewer.tsx +0 -44
  285. package/src/components-v2/stories/story-viewer/styles.ts +0 -15
  286. package/src/components-v2/subscribe-input/index.ts +0 -1
  287. package/src/components-v2/subscribe-input/styles.ts +0 -14
  288. package/src/components-v2/subscribe-input/subscribe-input.tsx +0 -43
  289. package/src/components-v2/topbar/index.ts +0 -1
  290. package/src/components-v2/topbar/styles.ts +0 -55
  291. package/src/components-v2/topbar/top-bar.tsx +0 -115
  292. package/src/components-v2/wishlist/add-to-wishlist-dialog.tsx +0 -161
  293. package/src/components-v2/wishlist/components/create-new-list.tsx +0 -167
  294. package/src/components-v2/wishlist/components/dashboard-header.tsx +0 -123
  295. package/src/components-v2/wishlist/components/navigation.tsx +0 -87
  296. package/src/components-v2/wishlist/components/no-records.tsx +0 -20
  297. package/src/components-v2/wishlist/components/wishlist-modal-item.tsx +0 -66
  298. package/src/components-v2/wishlist/remove-from-wishlist-dialog.tsx +0 -175
  299. package/src/components-v2/wishlist-modal/TODO.md +0 -10
  300. package/src/components-v2/wishlist-modal/add-to-wishlist-dialog.tsx +0 -161
  301. package/src/components-v2/wishlist-modal/remove-from-wishlist-dialog.tsx +0 -174
  302. package/src/components-v2/wishlist-modal/wishlist-modal-item.tsx +0 -65
  303. package/src/pages-v2/product-details/product-intro/product-intro-images.tsx +0 -90
  304. package/src/pages-v2/product-details/product-intro/product-intro.tsx +0 -256
  305. /package/src/{pages-v2/account → components-v2}/no-records.tsx +0 -0
  306. /package/src/components-v2/product-cards/{product-card-1 → product-card}/components/hover-actions.tsx +0 -0
  307. /package/src/components-v2/product-cards/{product-card-16 → product-card}/index.ts +0 -0
  308. /package/src/components-v2/product-cards/{product-card-16 → product-card-plp}/components/quantity-buttons.tsx +0 -0
  309. /package/src/components-v2/product-cards/{product-card-wishlist → product-card-plp}/index.ts +0 -0
  310. /package/src/components-v2/product-cards/{product-card-16 → product-card-plp}/styles/index.ts +0 -0
  311. /package/src/components-v2/product-cards/{product-card-9 → product-card-plp-list}/components/add-to-cart.tsx +0 -0
  312. /package/src/components-v2/product-cards/{product-card-9 → product-card-plp-list}/components/favorite-button.tsx +0 -0
  313. /package/src/components-v2/product-cards/{product-card-9 → product-card-plp-list}/components/tags.tsx +0 -0
  314. /package/src/components-v2/product-cards/{product-card-8 → product-card-search}/index.ts +0 -0
  315. /package/src/components-v2/product-cards/{product-card-8 → product-card-search}/styles/index.ts +0 -0
  316. /package/src/components-v2/sticky/{Sticky.tsx → sticky.tsx} +0 -0
  317. /package/src/components-v2/{wishlist → wishlist-dialogs}/styles.ts +0 -0
  318. /package/src/{components-v2/shop-card → pages-v2/product-details/bopis/store-card}/index.ts +0 -0
  319. /package/src/{components-v2/shop-card → pages-v2/product-details/bopis/store-card}/styles.ts +0 -0
@@ -1,118 +0,0 @@
1
- "use client";
2
-
3
- import Link from "next/link";
4
- import Box from "@mui/material/Box";
5
- import Rating from "@mui/material/Rating";
6
- // GLOBAL CUSTOM COMPONENTS
7
- import ProductViewDialog from "@evenicanpm/storefront-core/src/components-v2/products-view/product-view-dialog";
8
- import { Span } from "@evenicanpm/storefront-core/src/components-v2/Typography";
9
- // LOCAL CUSTOM HOOK
10
- import useProduct from "../use-product";
11
- // LOCAL CUSTOM COMPONENTS
12
- import HoverActions from "./components/hover-actions";
13
- import ProductPrice from "../product-price";
14
- import ProductTitle from "../product-title";
15
- import DiscountChip from "../discount-chip";
16
- // STYLED COMPONENTS
17
- import { ImageWrapper, ContentWrapper, StyledBazaarCard } from "./styles";
18
- import { IconButton } from "@mui/material";
19
- import { Delete } from "@mui/icons-material";
20
- import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
21
-
22
- // ========================================================
23
- type Props = {
24
- title: string;
25
- slug: string;
26
- price: number;
27
- imgUrl: string;
28
- rating?: number;
29
- discount?: number;
30
- id: string | number;
31
- hideRating?: boolean;
32
- hoverEffect?: boolean;
33
- showProductSize?: boolean;
34
- lineId: string | undefined;
35
- handleRemoveProductFromWishlist: (linedId: string | undefined) => void;
36
- };
37
- // ========================================================
38
-
39
- export default function ProductCardWishlist({
40
- id,
41
- slug,
42
- title,
43
- price,
44
- imgUrl,
45
- rating = 5,
46
- hideRating,
47
- hoverEffect,
48
- discount = 5,
49
- showProductSize,
50
- lineId,
51
- handleRemoveProductFromWishlist,
52
- }: Props) {
53
- const { isFavorite, openModal, toggleDialog, toggleFavorite } =
54
- useProduct(slug);
55
-
56
- return (
57
- <StyledBazaarCard hoverEffect={hoverEffect}>
58
- <ImageWrapper>
59
- {/* DISCOUNT PERCENT CHIP IF AVAILABLE */}
60
- <DiscountChip discount={discount} />
61
-
62
- {/* HOVER ACTION ICONS */}
63
- <HoverActions
64
- isFavorite={isFavorite}
65
- toggleView={toggleDialog}
66
- toggleFavorite={toggleFavorite}
67
- />
68
-
69
- {/* PRODUCT IMAGE / THUMBNAIL */}
70
- <Link href={`/products/${slug}`}>
71
- <LazyImage
72
- priority
73
- src={imgUrl}
74
- width={500}
75
- height={500}
76
- alt={title}
77
- />
78
- </Link>
79
- </ImageWrapper>
80
-
81
- {/* PRODUCT VIEW DIALOG BOX */}
82
- <ProductViewDialog
83
- openDialog={openModal}
84
- handleCloseDialog={toggleDialog}
85
- product={{ title, price, id, slug, imgGroup: [imgUrl, imgUrl] }}
86
- />
87
-
88
- <ContentWrapper>
89
- <Box flex="1 1 0" minWidth="0px" mr={1}>
90
- {/* PRODUCT NAME / TITLE */}
91
- <ProductTitle title={title} slug={slug} />
92
-
93
- {/* PRODUCT RATINGS IF AVAILABLE */}
94
- {!hideRating ? (
95
- <Rating size="small" value={rating} color="warn" readOnly />
96
- ) : null}
97
-
98
- {/* PRODUCT SIZE IF AVAILABLE */}
99
- {showProductSize ? (
100
- <Span color="grey.600" mb={1} display="block">
101
- Liter
102
- </Span>
103
- ) : null}
104
-
105
- {/* PRODUCT PRICE WITH DISCOUNT */}
106
- <ProductPrice discount={discount} price={price} />
107
- </Box>
108
-
109
- {/* PRODUCT QUANTITY HANDLER BUTTONS */}
110
- <Box display="flex" alignItems="center" gap={1} justifySelf="end">
111
- <IconButton onClick={() => handleRemoveProductFromWishlist(lineId)}>
112
- <Delete fontSize="small" color="inherit" />
113
- </IconButton>
114
- </Box>
115
- </ContentWrapper>
116
- </StyledBazaarCard>
117
- );
118
- }
@@ -1,53 +0,0 @@
1
- import BazaarCard, {
2
- Props,
3
- } from "@evenicanpm/storefront-core/src/components-v2/BazaarCard";
4
- import styled from "@mui/material/styles/styled";
5
- // GLOBAL CUSTOM COMPONENT
6
- import React, { ComponentType } from "react";
7
-
8
- export const StyledBazaarCard: ComponentType<Props> = styled(BazaarCard)({
9
- height: "100%",
10
- margin: "auto",
11
- display: "flex",
12
- overflow: "hidden",
13
- borderRadius: "8px",
14
- position: "relative",
15
- flexDirection: "column",
16
- justifyContent: "space-between",
17
- transition: "all 250ms ease-in-out",
18
- ":hover": { "& .hover-box": { opacity: 1 } },
19
- });
20
-
21
- export const ImageWrapper: ComponentType<React.ComponentProps<"div">> = styled(
22
- "div",
23
- )(({ theme }) => ({
24
- textAlign: "center",
25
- position: "relative",
26
- display: "inline-block",
27
- [theme.breakpoints.down("sm")]: { display: "block" },
28
- }));
29
-
30
- export const HoverIconWrapper: ComponentType<React.ComponentProps<"div">> =
31
- styled("div")({
32
- zIndex: 2,
33
- top: "7px",
34
- opacity: 0,
35
- right: "15px",
36
- display: "flex",
37
- cursor: "pointer",
38
- position: "absolute",
39
- flexDirection: "column",
40
- transition: "all 0.3s ease-in-out",
41
- });
42
-
43
- export const ContentWrapper: ComponentType<React.ComponentProps<"div">> =
44
- styled("div")({
45
- gap: 8,
46
- display: "flex",
47
- padding: "1rem",
48
- "& .title, & .categories": {
49
- overflow: "hidden",
50
- whiteSpace: "nowrap",
51
- textOverflow: "ellipsis",
52
- },
53
- });
@@ -1,88 +0,0 @@
1
- import React from "react";
2
- import { FlexBox } from "@evenicanpm/storefront-core/src/components-v2/flex-box";
3
- import Button from "@mui/material/Button";
4
- import { H3 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
5
- import { MdAdd as Add } from "react-icons/md";
6
- import { MdRemove as Remove } from "react-icons/md";
7
- import CircularProgress from "@mui/material/CircularProgress";
8
- import { CartLine } from "@msdyn365-commerce/retail-proxy";
9
- import { useTranslations } from "next-intl";
10
-
11
- interface Props {
12
- loading: boolean;
13
- productCartLine: CartLine | undefined;
14
- handleCartAmountChange: (amount: number, currentCartLine: CartLine) => void;
15
- handleAddToCart: () => void;
16
- isOOS: boolean;
17
- }
18
-
19
- export default function QuantityButtons({
20
- loading,
21
- handleAddToCart,
22
- handleCartAmountChange,
23
- productCartLine,
24
- isOOS,
25
- }: Props) {
26
- const t = useTranslations("productDetail");
27
-
28
- if (!productCartLine?.Quantity || productCartLine.Quantity === 0) {
29
- return (
30
- <Button
31
- color="primary"
32
- variant="contained"
33
- onClick={handleAddToCart}
34
- disabled={isOOS}
35
- >
36
- {t("btnAddToCart")}
37
- </Button>
38
- );
39
- }
40
-
41
- return (
42
- <FlexBox alignItems="center">
43
- <Button
44
- size="small"
45
- sx={{ p: 1 }}
46
- color="primary"
47
- variant="outlined"
48
- disabled={loading}
49
- onClick={() =>
50
- handleCartAmountChange(
51
- (productCartLine?.Quantity || 0) - 1,
52
- productCartLine,
53
- )
54
- }
55
- >
56
- <Remove fontSize="small" />
57
- </Button>
58
-
59
- <H3
60
- fontWeight="600"
61
- mx={2.5}
62
- sx={{ width: "20px", display: "flex", justifyContent: "center" }}
63
- >
64
- {loading ? (
65
- <CircularProgress size={"10px"} />
66
- ) : (
67
- productCartLine.Quantity.toString().padStart(2, "0")
68
- )}
69
- </H3>
70
-
71
- <Button
72
- size="small"
73
- sx={{ p: 1 }}
74
- color="primary"
75
- variant="outlined"
76
- disabled={loading}
77
- onClick={() =>
78
- handleCartAmountChange(
79
- (productCartLine?.Quantity || 0) + 1,
80
- productCartLine,
81
- )
82
- }
83
- >
84
- <Add fontSize="small" />
85
- </Button>
86
- </FlexBox>
87
- );
88
- }
@@ -1,218 +0,0 @@
1
- import Grid from "@mui/material/Grid2";
2
- import Rating from "@mui/material/Rating";
3
- import Dialog from "@mui/material/Dialog";
4
- import Button from "@mui/material/Button";
5
- import Divider from "@mui/material/Divider";
6
- import IconButton from "@mui/material/IconButton";
7
- import DialogContent from "@mui/material/DialogContent";
8
- // MUI ICON COMPONENTS
9
- import Add from "@mui/icons-material/Add";
10
- import Close from "@mui/icons-material/Close";
11
- import Remove from "@mui/icons-material/Remove";
12
- // GLOBAL CUSTOM COMPONENT
13
- // LOCAL CUSTOM HOOKS
14
- import useAddToCart from "@/api-manager/services/cart/mutations/add-to-cart";
15
- import { useTranslations } from "next-intl";
16
- import getCart from "@/api-manager/services/cart/queries/get-cart";
17
- // CUSTOM UTILS LIBRARY FUNCTION
18
- import { Carousel } from "../carousel";
19
- import { useNotification } from "@evenicanpm/storefront-core/src/providers/notifications/use-notification";
20
- import BazaarImage from "../BazaarImage";
21
- import { FlexBox } from "../flex-box";
22
- import { H2, Paragraph, H1, H6, H3 } from "../Typography";
23
- import { currency } from "@/lib/lib";
24
-
25
- // =====================================================
26
- interface Props {
27
- product: ProductInfo;
28
- openDialog: boolean;
29
- cartId?: string;
30
- handleCloseDialog: () => void;
31
- }
32
- // =====================================================
33
- type CartItem = {
34
- id: string | number;
35
- qty: number;
36
- };
37
- // =====================================================
38
- export type ProductInfo = {
39
- id: string | number;
40
- title: string;
41
- imgGroup: string[];
42
- price: number;
43
- slug: string;
44
- };
45
- // =====================================================
46
- type CartDispatch = {
47
- type: "CHANGE_CART_AMOUNT";
48
- payload: ProductInfo & {
49
- qty: number;
50
- name: string;
51
- imgUrl: string;
52
- };
53
- };
54
- // =====================================================
55
-
56
- export default function ProductViewDialog(props: Props) {
57
- const { product, openDialog, cartId, handleCloseDialog } = props;
58
- const { mutateAsync: addToCart } = useAddToCart();
59
- const { data: cart } = getCart.useData();
60
-
61
- const t = useTranslations("ProductViewDialog");
62
- const { setNotification } = useNotification();
63
-
64
- //const { state, dispatch } = useCart();
65
- const state: { cart: CartItem[] } = {
66
- cart: [],
67
- };
68
- const dispatch = (input: CartDispatch) => {
69
- input;
70
- };
71
- const cartItem = state.cart.find((item) => item?.id === product.id);
72
-
73
- const handleCartAmountChange = (amount: number) => () => {
74
- dispatch({
75
- type: "CHANGE_CART_AMOUNT",
76
- payload: {
77
- ...product,
78
- qty: amount,
79
- name: product.title,
80
- imgUrl: product.imgGroup[0],
81
- },
82
- });
83
- };
84
-
85
- const handleAddToCart = async () => {
86
- if (!cart) return;
87
- try {
88
- await addToCart({
89
- cartId: cartId,
90
- version: cart.Version,
91
- cartLine: [
92
- {
93
- ProductId: Number(product.id),
94
- Quantity: 1,
95
- },
96
- ],
97
- });
98
- setNotification({
99
- message: t("addToCartSuccess"),
100
- severity: "success",
101
- });
102
- } catch (error) {
103
- setNotification({
104
- message: t("addToCartError"),
105
- severity: "error",
106
- });
107
- }
108
- };
109
-
110
- return (
111
- <Dialog
112
- open={openDialog}
113
- maxWidth={false}
114
- onClose={handleCloseDialog}
115
- sx={{ zIndex: 1501 }}
116
- >
117
- <DialogContent sx={{ maxWidth: 900, width: "100%" }}>
118
- <div>
119
- <Grid container spacing={3}>
120
- <Grid size={{ md: 6, xs: 12 }}>
121
- <Carousel
122
- slidesToShow={1}
123
- arrowStyles={{
124
- boxShadow: 0,
125
- color: "primary.main",
126
- backgroundColor: "transparent",
127
- }}
128
- >
129
- {product.imgGroup.map((item: string, index: number) => (
130
- <BazaarImage
131
- key={index}
132
- src={item}
133
- alt="product"
134
- sx={{
135
- mx: "auto",
136
- width: "100%",
137
- objectFit: "contain",
138
- height: { sm: 400, xs: 250 },
139
- }}
140
- />
141
- ))}
142
- </Carousel>
143
- </Grid>
144
-
145
- <Grid size={{ md: 6, xs: 12 }} alignSelf="center">
146
- <H2>{product.title}</H2>
147
-
148
- <Paragraph py={1} color="grey.500" fontWeight={600} fontSize={13}>
149
- CATEGORY: Cosmetic
150
- </Paragraph>
151
-
152
- <H1 color="primary.main">{currency(product.price)}</H1>
153
-
154
- <FlexBox alignItems="center" gap={1} mt={1}>
155
- <Rating color="warn" value={4} readOnly />
156
- <H6 lineHeight="1">(50)</H6>
157
- </FlexBox>
158
-
159
- <Paragraph my={2}>
160
- Sed egestas, ante et vulputate volutpat, eros pede semper est,
161
- vitae luctus metus libero eu augue. Morbi purus liberpuro ate
162
- vol faucibus adipiscing.
163
- </Paragraph>
164
-
165
- <Divider sx={{ mb: 2 }} />
166
-
167
- {!cartItem?.qty ? (
168
- <Button
169
- size="large"
170
- color={"primary"}
171
- variant="contained"
172
- // onClick={handleCartAmountChange(1)}
173
- onClick={handleAddToCart}
174
- sx={{ height: 45, borderRadius: 2 }}
175
- >
176
- {t("addToCartBtn")}
177
- </Button>
178
- ) : (
179
- <FlexBox alignItems="center">
180
- <Button
181
- size="small"
182
- color={"primary"}
183
- variant="outlined"
184
- sx={{ p: ".6rem", height: 45 }}
185
- onClick={handleCartAmountChange(cartItem?.qty - 1)}
186
- >
187
- <Remove fontSize="small" />
188
- </Button>
189
-
190
- <H3 fontWeight="600" mx={2.5}>
191
- {cartItem?.qty.toString().padStart(2, "0")}
192
- </H3>
193
-
194
- <Button
195
- size="small"
196
- color={"primary"}
197
- variant="outlined"
198
- sx={{ p: ".6rem", height: 45 }}
199
- onClick={handleCartAmountChange(cartItem?.qty + 1)}
200
- >
201
- <Add fontSize="small" />
202
- </Button>
203
- </FlexBox>
204
- )}
205
- </Grid>
206
- </Grid>
207
- </div>
208
-
209
- <IconButton
210
- sx={{ position: "absolute", top: 3, right: 3 }}
211
- onClick={handleCloseDialog}
212
- >
213
- <Close fontSize="small" color="secondary" />
214
- </IconButton>
215
- </DialogContent>
216
- </Dialog>
217
- );
218
- }
@@ -1,110 +0,0 @@
1
- import SearchInputWithCategories from "../../../../../../../../../storefront/src/app/search-box/search-input-category";
2
- import { render, screen, waitFor } from "@testing-library/react";
3
- import { expect, describe, it, vi, beforeAll } from "vitest";
4
- import userEvent from "@testing-library/user-event";
5
- import { categories } from "@app/navbar/utils/transform-nav.test";
6
- import NavProvider from "@evenicanpm/storefront-core/src/providers/nav-provider";
7
- import { CategoryHierarchy } from "@/lib/category-helpers";
8
-
9
- beforeAll(() => {
10
- vi.mock("next/navigation", () => ({
11
- usePathname: vi.fn().mockReturnValue("/"),
12
- }));
13
- vi.mock("@services/product", () => {
14
- return {
15
- searchProducts: vi.fn().mockReturnValue([
16
- {
17
- Name: "Shorts",
18
- ItemCode: 1,
19
- Category: { RecordId: 10, ParentCategory: 11 },
20
- },
21
- {
22
- Name: "Ladies Shorts",
23
- ItemCode: 2,
24
- Category: { RecordId: 2, ParentCategory: 1 },
25
- },
26
- ]),
27
- };
28
- });
29
- vi.mock("next/headers", () => ({
30
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
31
- }));
32
- });
33
-
34
- describe("SearchInputWithCategories", async () => {
35
- it.skip("should render the search input and the category button", () => {
36
- render(<SearchInputWithCategories />);
37
- const input = screen.getByRole("textbox");
38
- const categories = screen.getByText(/all categories/i);
39
-
40
- expect(input).toBeInTheDocument();
41
- expect(categories).toBeInTheDocument();
42
- });
43
-
44
- it.skip("Handles category change and changes the button text to selected.", async () => {
45
- const user = userEvent.setup();
46
-
47
- render(
48
- <NavProvider
49
- categories={categories as unknown as CategoryHierarchy[]}
50
- cmsNav={[]}
51
- >
52
- <SearchInputWithCategories />
53
- </NavProvider>,
54
- );
55
-
56
- const categoriesButton = screen.getByText(/all categories/i);
57
- await user.click(categoriesButton);
58
- const dropdownMenuItem = await screen.findByText("Women");
59
-
60
- screen.debug(undefined, 10000);
61
- await user.click(dropdownMenuItem);
62
- const buttonWithNewText = screen.getByRole("button", {
63
- name: /Women/i,
64
- });
65
-
66
- expect(buttonWithNewText).toBeInTheDocument();
67
- });
68
-
69
- it.skip("should render search results after user types", async () => {
70
- const user = userEvent.setup();
71
-
72
- render(<SearchInputWithCategories />);
73
-
74
- const input = screen.getByRole("textbox");
75
- expect(screen.queryByText("Shorts")).not.toBeInTheDocument();
76
-
77
- await user.click(input);
78
- await user.keyboard("Shorts"); // search term doesn't matter here, mock will return data regardless
79
-
80
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
81
- });
82
-
83
- it.skip("should filter search results by category", async () => {
84
- const user = userEvent.setup();
85
- render(
86
- <NavProvider
87
- categories={categories as unknown as CategoryHierarchy[]}
88
- cmsNav={[]}
89
- >
90
- <SearchInputWithCategories />
91
- </NavProvider>,
92
- );
93
-
94
- const categoriesButton = screen.getByText(/all categories/i);
95
- const input = screen.getByRole("textbox");
96
-
97
- await user.click(input);
98
- await user.keyboard("Shorts");
99
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
100
-
101
- await user.click(categoriesButton);
102
- const dropdownMenuItem = await screen.findByText("Women");
103
- await user.click(dropdownMenuItem);
104
- await user.click(input);
105
- await user.keyboard("Shorts");
106
-
107
- waitFor(() => expect(screen.getByText("Shorts")).not.toBeInTheDocument());
108
- expect(screen.queryByText("Ladies Shorts")).toBeInTheDocument();
109
- });
110
- });