@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,137 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import { expect, describe, it, vi, beforeAll } from "vitest";
3
- import userEvent from "@testing-library/user-event";
4
- import { NextIntlClientProvider } from "next-intl";
5
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
6
- import ENUS from "../../../../../../../../../storefront/messages/en-US.json";
7
- import { act } from "react";
8
- import searchResultsData from "./search-results.json";
9
- import SearchInput from "../search-input";
10
- import { NotificationProvider } from "src/providers/notifications/notification-context";
11
-
12
- const queryClient = new QueryClient();
13
- const Wrapper = ({ children }: { children: React.ReactNode }) => (
14
- <NextIntlClientProvider locale="en-US" messages={ENUS}>
15
- <NotificationProvider>
16
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
17
- </NotificationProvider>
18
- </NextIntlClientProvider>
19
- );
20
-
21
- const searchResults = searchResultsData;
22
- const mockSearchProducts = vi.fn().mockResolvedValue(searchResults);
23
-
24
- function sleep(ms: number) {
25
- return new Promise((resolve) => setTimeout(resolve, ms));
26
- }
27
-
28
- beforeAll(() => {
29
- vi.mock("next/navigation", () => ({
30
- usePathname: vi.fn().mockReturnValue("/"),
31
- }));
32
- // vi.mock("@/api-manager/services/product/mutations/search-products", () => ({
33
- // default: () => ({
34
- // mutateAsync: vi.fn().mockReturnValue([
35
- // {
36
- // Name: "Amber Sports Sunglasses",
37
- // ItemId: "91007",
38
- // Price: 250,
39
- // },
40
- // ]),
41
- // }),
42
- // }));
43
- vi.mock("@/api-manager/services/product/mutations/search-products", () => ({
44
- default: () => ({
45
- mutateAsync: mockSearchProducts,
46
- }),
47
- }));
48
- vi.mock("next/headers", () => ({
49
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
50
- }));
51
- window.matchMedia = vi.fn().mockImplementation((query) => ({
52
- matches: true, // to mock mobile screen
53
- media: query,
54
- onchange: null,
55
- addListener: vi.fn(),
56
- removeListener: vi.fn(),
57
- addEventListener: vi.fn(),
58
- removeEventListener: vi.fn(),
59
- dispatchEvent: vi.fn(),
60
- }));
61
- // vi.mock("@mui/material/useMediaQuery", () => ({
62
- // default: vi.fn().mockReturnValue(true), // to mock mobile screen
63
- // }));
64
- });
65
- const handleCloseDrawer = vi.fn();
66
- describe("SearchInput", () => {
67
- it("should render the search input", () => {
68
- render(
69
- <Wrapper>
70
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
71
- </Wrapper>,
72
- );
73
- const input = screen.getByRole("textbox");
74
- expect(input).toBeInTheDocument();
75
- });
76
-
77
- it("should render search results with item names and prices after user types", async () => {
78
- const user = userEvent.setup();
79
-
80
- render(
81
- <Wrapper>
82
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
83
- </Wrapper>,
84
- );
85
- const input = screen.getAllByRole("textbox")[0];
86
- expect(
87
- screen.queryByText("Three Stone Diamond White Gold Ring"),
88
- ).not.toBeInTheDocument();
89
-
90
- // user.click(input);
91
- // user.keyboard("shorts"); // search term doesn't matter here, mock will return data regardless
92
-
93
- await act(async () => {
94
- await user.type(input, "ring");
95
- });
96
- expect(input).toHaveValue("ring");
97
- await act(async () => await sleep(1000)); // TODO: replace with debounce
98
- expect(mockSearchProducts).toHaveBeenCalledTimes(1);
99
- // make sure its mobile version of search results
100
- expect(
101
- await screen.findByText("Three Stone Diamond White Gold Ring"),
102
- ).toBeInTheDocument();
103
- expect(await screen.findByText("$410.00")).toBeInTheDocument();
104
- });
105
-
106
- it("should have the correct link", async () => {
107
- const user = userEvent.setup();
108
-
109
- render(
110
- <Wrapper>
111
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
112
- </Wrapper>,
113
- );
114
- const input = screen.getAllByRole("textbox")[0];
115
- expect(
116
- screen.queryByText("Three Stone Diamond White Gold Ring"),
117
- ).not.toBeInTheDocument();
118
-
119
- // user.click(input);
120
- // user.keyboard("shorts"); // search term doesn't matter here, mock will return data regardless
121
-
122
- await act(async () => {
123
- await user.type(input, "ring");
124
- });
125
- expect(input).toHaveValue("ring");
126
- await act(async () => await sleep(1000)); // TODO: replace with debounce
127
- // make sure its mobile version of search results
128
- const link = screen.getByRole("link", {
129
- name: "product Three Stone Diamond White Gold Ring $410.00",
130
- });
131
- expect(link).toBeInTheDocument();
132
- expect(link).toHaveAttribute(
133
- "href",
134
- "/product/Three Stone Diamond White Gold Ring/68719492176",
135
- );
136
- });
137
- });
@@ -1,165 +0,0 @@
1
- [
2
- {
3
- "ItemId": "91078",
4
- "Name": "Three Stone Diamond White Gold Ring",
5
- "Price": 410,
6
- "PrimaryImageUrl": "Products/91078_000_001.png",
7
- "RecordId": 68719492176,
8
- "ProductNumber": "91078",
9
- "AverageRating": 4.071428571428571,
10
- "TotalRatings": 14,
11
- "Description": "Three diamonds on a white gold band.",
12
- "BasePrice": 410,
13
- "AttributeValues": [],
14
- "IsMasterProduct": true,
15
- "MasterProductId": 68719492176,
16
- "DefaultUnitOfMeasure": "ea",
17
- "ExtensionProperties": []
18
- },
19
- {
20
- "ItemId": "91079",
21
- "Name": "Three Stone Diamond Trellis Ring",
22
- "Price": 440,
23
- "PrimaryImageUrl": "Products/91079_000_001.png",
24
- "RecordId": 68719492185,
25
- "ProductNumber": "91079",
26
- "TotalRatings": 0,
27
- "Description": "A trellis band complete with three stone diamonds.",
28
- "BasePrice": 440,
29
- "AttributeValues": [],
30
- "IsMasterProduct": true,
31
- "MasterProductId": 68719492185,
32
- "DefaultUnitOfMeasure": "ea",
33
- "ExtensionProperties": []
34
- },
35
- {
36
- "ItemId": "91077",
37
- "Name": "Four Stone Diamond White Gold Ring",
38
- "Price": 360,
39
- "PrimaryImageUrl": "Products/91077_000_001.png",
40
- "RecordId": 68719492166,
41
- "ProductNumber": "91077",
42
- "TotalRatings": 0,
43
- "Description": "A white gold band complete with four stone diamonds.",
44
- "BasePrice": 360,
45
- "AttributeValues": [],
46
- "IsMasterProduct": true,
47
- "MasterProductId": 68719492166,
48
- "DefaultUnitOfMeasure": "ea",
49
- "ExtensionProperties": []
50
- },
51
- {
52
- "ItemId": "93040",
53
- "Name": "Ombre Fringe Skirt",
54
- "Price": 95,
55
- "PrimaryImageUrl": "Products/93040_000_001.png",
56
- "RecordId": 68719494571,
57
- "ProductNumber": "93040",
58
- "AverageRating": 4.235294117647059,
59
- "TotalRatings": 17,
60
- "Description": "This ombre red-to-white fringe skirt is both elegant and fun.",
61
- "BasePrice": 95,
62
- "AttributeValues": [],
63
- "IsMasterProduct": true,
64
- "MasterProductId": 68719494571,
65
- "DefaultUnitOfMeasure": "ea",
66
- "ExtensionProperties": []
67
- },
68
- {
69
- "ItemId": "91085",
70
- "Name": "Gold Wrapped Pearl Earrings",
71
- "Price": 95,
72
- "PrimaryImageUrl": "Products/91085_000_001.png",
73
- "RecordId": 68719492200,
74
- "ProductNumber": "91085",
75
- "AverageRating": 3.9166666666666665,
76
- "TotalRatings": 12,
77
- "Description": "Pearls wrapped in gold held by golden clasps.",
78
- "BasePrice": 95,
79
- "AttributeValues": [],
80
- "IsMasterProduct": false,
81
- "MasterProductId": 0,
82
- "DefaultUnitOfMeasure": "ea",
83
- "ExtensionProperties": []
84
- },
85
- {
86
- "ItemId": "91081",
87
- "Name": "3\" Feather Earrings",
88
- "Price": 55,
89
- "PrimaryImageUrl": "Products/91081_000_001.png",
90
- "RecordId": 68719492196,
91
- "ProductNumber": "91081",
92
- "TotalRatings": 0,
93
- "Description": "Black 3\" feathers held by gold clips.",
94
- "BasePrice": 55,
95
- "AttributeValues": [],
96
- "IsMasterProduct": false,
97
- "MasterProductId": 0,
98
- "DefaultUnitOfMeasure": "ea",
99
- "ExtensionProperties": []
100
- },
101
- {
102
- "ItemId": "91080",
103
- "Name": "4\" Feather Earrings",
104
- "Price": 60,
105
- "PrimaryImageUrl": "Products/91080_000_001.png",
106
- "RecordId": 68719492195,
107
- "ProductNumber": "91080",
108
- "TotalRatings": 0,
109
- "Description": "Dark grey 4\" feathers at the end of gold clips.",
110
- "BasePrice": 60,
111
- "AttributeValues": [],
112
- "IsMasterProduct": false,
113
- "MasterProductId": 0,
114
- "DefaultUnitOfMeasure": "ea",
115
- "ExtensionProperties": []
116
- },
117
- {
118
- "ItemId": "91045",
119
- "Name": "Herringbone Fedora",
120
- "Price": 180,
121
- "PrimaryImageUrl": "Products/91045_000_001.png",
122
- "RecordId": 68719495883,
123
- "ProductNumber": "91045",
124
- "TotalRatings": 0,
125
- "Description": "A grey band circling a fedora complete with a herringbone pattern. \n",
126
- "BasePrice": 180,
127
- "AttributeValues": [],
128
- "IsMasterProduct": true,
129
- "MasterProductId": 68719495883,
130
- "DefaultUnitOfMeasure": "ea",
131
- "ExtensionProperties": []
132
- },
133
- {
134
- "ItemId": "91086",
135
- "Name": "Embedded Pearl Earrings",
136
- "Price": 85,
137
- "PrimaryImageUrl": "Products/91086_000_001.png",
138
- "RecordId": 68719492201,
139
- "ProductNumber": "91086",
140
- "TotalRatings": 0,
141
- "Description": "Pearls embedded in sterling silver earrings.",
142
- "BasePrice": 85,
143
- "AttributeValues": [],
144
- "IsMasterProduct": false,
145
- "MasterProductId": 0,
146
- "DefaultUnitOfMeasure": "ea",
147
- "ExtensionProperties": []
148
- },
149
- {
150
- "ItemId": "91084",
151
- "Name": "Golden Flower Earrings",
152
- "Price": 120,
153
- "PrimaryImageUrl": "Products/91084_000_001.png",
154
- "RecordId": 68719492199,
155
- "ProductNumber": "91084",
156
- "TotalRatings": 0,
157
- "Description": "Golden 1/4\" flowers held by golden clasps.",
158
- "BasePrice": 120,
159
- "AttributeValues": [],
160
- "IsMasterProduct": false,
161
- "MasterProductId": 0,
162
- "DefaultUnitOfMeasure": "ea",
163
- "ExtensionProperties": []
164
- }
165
- ]
@@ -1,86 +0,0 @@
1
- import React from "react";
2
- import NavLink from "@evenicanpm/storefront-core/src/components-v2/nav-link/nav-link";
3
- import MenuItem from "@mui/material/MenuItem";
4
- import { SearchResultCard } from "../styles/index";
5
- import { ProductSearchResult } from "@msdyn365-commerce/retail-proxy";
6
- import { getProductDetailUrl } from "@/lib/build-product-detail-url";
7
- import { Box, Grid, useMediaQuery, useTheme } from "@mui/material";
8
- import LazyImage from "@evenicanpm/storefront-core/src/components-v2/LazyImage";
9
- import {
10
- H4,
11
- Span,
12
- } from "@evenicanpm/storefront-core/src/components-v2/Typography";
13
- import { currency } from "@/lib/lib";
14
- import ProductCard8 from "@evenicanpm/storefront-core/src/components-v2/product-cards/product-card-8/product-card";
15
- import { DialogType } from "../search-input-category";
16
-
17
- interface Props {
18
- results: ProductSearchResult[];
19
- handleCloseDrawer?: () => void; // Close search drawer in mobile screen
20
- openDialog: (type: DialogType, productId: number) => void;
21
- }
22
-
23
- export default function SearchResult({
24
- results,
25
- handleCloseDrawer,
26
- openDialog,
27
- }: Props) {
28
- const theme = useTheme();
29
- const downMd = useMediaQuery(theme.breakpoints.down(1150));
30
- return (
31
- <SearchResultCard>
32
- {downMd ? (
33
- <>
34
- {results.map((item, i) => (
35
- <MenuItem key={item?.Name || "" + i} onClick={handleCloseDrawer}>
36
- <NavLink href={getProductDetailUrl(item)} key={item.RecordId}>
37
- <Box display="flex" alignItems="center">
38
- <Box position="relative" height={130} width={130}>
39
- <LazyImage
40
- height={300}
41
- width={300}
42
- alt="product"
43
- className="product-img"
44
- src={item.PrimaryImageUrl ?? ""}
45
- />
46
- </Box>
47
- <Box flex="1" ml={2} whiteSpace="normal">
48
- <H4>{item.Name}</H4>
49
- <Span>{currency(item.Price)}</Span>
50
- </Box>
51
- </Box>
52
- </NavLink>
53
- </MenuItem>
54
- ))}
55
- </>
56
- ) : (
57
- <Grid container>
58
- {results.map((item) => (
59
- <Grid
60
- key={item.ItemId}
61
- item
62
- xs={12}
63
- sm={6}
64
- md={4}
65
- onClick={handleCloseDrawer}
66
- >
67
- <ProductCard8
68
- slug={item.ItemId ?? ""}
69
- price={item.Price}
70
- title={item.Name ?? ""}
71
- thumbnail={item.PrimaryImageUrl ?? ""}
72
- id={item.RecordId ?? ""}
73
- rating={item.AverageRating ?? 0}
74
- reviews={item.TotalRatings ?? 0}
75
- categories={[]} // TODO: Category info not available in item
76
- openDialog={openDialog}
77
- enableWishlistDialog={false}
78
- enableQuickViewDialog={false} // Enable quick view dialog
79
- />
80
- </Grid>
81
- ))}
82
- </Grid>
83
- )}
84
- </SearchResultCard>
85
- );
86
- }
@@ -1,63 +0,0 @@
1
- "use client";
2
-
3
- import { ChangeEvent, useState, useEffect, useCallback } from "react";
4
- import useSearchProducts from "@/services/product/mutations/search-products";
5
- import { ProductSearchResult } from "@msdyn365-commerce/retail-proxy";
6
-
7
- const DEBOUNCE_TIME = 100;
8
-
9
- export default function useSearch() {
10
- const [resultList, setResultList] = useState<ProductSearchResult[]>([]);
11
- const [categoryId, setCategoryId] = useState<string | null>(null);
12
- const [categoryTitle, setCategoryTitle] = useState("All Categories");
13
- const [searchText, setSearchText] = useState("");
14
- const [debouncedSearchText, setDebouncedSearchText] = useState("");
15
-
16
- const { mutateAsync: searchProducts } = useSearchProducts();
17
-
18
- const handleSearch = useCallback((e: ChangeEvent<HTMLInputElement>) => {
19
- setSearchText(e.target.value);
20
- }, []);
21
-
22
- const handleCategoryChange = useCallback(
23
- (cat: { name: string; id: string }) => {
24
- setCategoryId(cat.id);
25
- setCategoryTitle(cat.name);
26
- },
27
- [],
28
- );
29
-
30
- // Debounce search input
31
- useEffect(() => {
32
- const timeoutId = setTimeout(() => {
33
- setDebouncedSearchText(searchText);
34
- }, DEBOUNCE_TIME);
35
- return () => clearTimeout(timeoutId);
36
- }, [searchText]);
37
-
38
- useEffect(() => {
39
- const getProducts = async () => {
40
- if (!debouncedSearchText) {
41
- setResultList([]);
42
- return;
43
- }
44
-
45
- const results = await searchProducts({
46
- searchText: debouncedSearchText,
47
- category: 0, // Category filter not used in mobile search
48
- });
49
-
50
- setResultList(results);
51
- };
52
-
53
- getProducts();
54
- }, [debouncedSearchText, categoryId, searchProducts]);
55
-
56
- return {
57
- category: categoryId,
58
- resultList,
59
- handleSearch,
60
- categoryTitle,
61
- handleCategoryChange,
62
- };
63
- }
@@ -1,2 +0,0 @@
1
- export { default as SearchInput } from "./search-input";
2
- export { default as SearchInputWithCategory } from "./search-input-category";
@@ -1,110 +0,0 @@
1
- import SearchInputWithCategories from "./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 "@evenicanpm/storefront-core/src/components-v2/navbar/utils/transform-nav.test";
6
- import NavProvider from "@evenicanpm/storefront-core/src/providers/nav-provider/index";
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
- });