@evenicanpm/storefront-core 1.0.1 → 1.0.3

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 (525) hide show
  1. package/package.json +1 -1
  2. package/src/api-manager/README.md +30 -22
  3. package/src/api-manager/datasources/e4/{e4-address.datasource.ts → address/e4-address.datasource.ts} +10 -10
  4. package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +70 -0
  5. package/src/api-manager/datasources/e4/address/e4-address.translator.ts +98 -0
  6. package/src/api-manager/datasources/e4/{e4-cart.datasource.ts → cart/e4-cart.datasource.ts} +17 -16
  7. package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +94 -0
  8. package/src/api-manager/datasources/e4/cart/e4-cart.translator.ts +23 -0
  9. package/src/api-manager/datasources/e4/categories/e4-categories.datasource.ts +38 -0
  10. package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +161 -0
  11. package/src/api-manager/datasources/e4/e4.datasource.ts +8 -39
  12. package/src/api-manager/datasources/e4/graphqlRequestSdk.ts +8427 -0
  13. package/src/api-manager/datasources/e4/{e4-order.datasource.ts → order/e4-order.datasource.ts} +3 -3
  14. package/src/api-manager/datasources/e4/order/e4-order.remaps.ts +101 -0
  15. package/src/api-manager/datasources/e4/{e4-organization.datasource.ts → organization/e4-organization.datasource.ts} +1 -1
  16. package/src/api-manager/datasources/e4/{e4-product.datasource.ts → product/e4-product.datasource.ts} +13 -11
  17. package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +88 -0
  18. package/src/api-manager/datasources/e4/{e4.translator.ts → product/e4-product.translator.ts} +9 -329
  19. package/src/api-manager/datasources/e4/{e4-session.datasource.ts → session/e4-session.datasource.ts} +3 -3
  20. package/src/api-manager/datasources/e4/session/e4-session.translator.ts +18 -0
  21. package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +13 -6
  22. package/src/api-manager/datasources/e4/user/e4-user.remaps.ts +49 -0
  23. package/src/api-manager/datasources/e4/user/e4-user.translator.ts +23 -2
  24. package/src/api-manager/datasources/e4/utils/unwrap-e4-variants.ts +1 -1
  25. package/src/api-manager/index.ts +11 -6
  26. package/src/api-manager/schemas/user.schema.ts +3 -1
  27. package/src/api-manager/services/cart/mutations/add-to-cart.ts +1 -1
  28. package/src/api-manager/services/cart/mutations/checkout.ts +1 -2
  29. package/src/api-manager/services/product/server/product.server.ts +4 -1
  30. package/src/api-manager/types/Datasource.ts +1 -5
  31. package/src/cms/blocks/BlockManager.tsx +67 -0
  32. package/src/cms/blocks/Components/BrandLogosScroller.tsx +72 -0
  33. package/src/cms/blocks/Components/CategoryCard.tsx +47 -0
  34. package/src/cms/blocks/Components/CategoryCarousel/index.tsx +60 -0
  35. package/src/cms/blocks/Components/FeaturePill.tsx +99 -0
  36. package/src/cms/blocks/Components/FeaturedCategories.tsx +41 -0
  37. package/src/cms/blocks/Components/FeaturedProducts.tsx +41 -0
  38. package/src/cms/blocks/Components/Footer/data/index.ts +32 -0
  39. package/src/cms/blocks/Components/Footer/index.tsx +88 -0
  40. package/src/cms/blocks/Components/Footer/interfaces.ts +37 -0
  41. package/src/cms/blocks/Components/Footer/sections/FooterAppStore.tsx +45 -0
  42. package/src/cms/blocks/Components/Footer/sections/FooterContact.tsx +36 -0
  43. package/src/cms/blocks/Components/Footer/sections/FooterLinks.tsx +30 -0
  44. package/src/cms/blocks/Components/Footer/sections/FooterLogo.tsx +26 -0
  45. package/src/cms/blocks/Components/Footer/sections/FooterSocialLinks.tsx +70 -0
  46. package/src/cms/blocks/Components/Footer/styles/index.ts +39 -0
  47. package/src/cms/blocks/Components/Footer.tsx +77 -0
  48. package/src/cms/blocks/Components/Hero.tsx +73 -0
  49. package/src/cms/blocks/Components/HeroCarousel/index.tsx +42 -0
  50. package/src/cms/blocks/Components/Image.tsx +39 -0
  51. package/src/cms/blocks/Components/MediaCard.tsx +41 -0
  52. package/src/cms/blocks/Components/ProductCarousel/index.tsx +82 -0
  53. package/src/cms/blocks/Components/ProductSectionFullWidth/index.tsx +103 -0
  54. package/src/cms/blocks/Components/RichText.tsx +19 -0
  55. package/src/cms/blocks/Components/Seo/index.tsx +48 -0
  56. package/src/cms/blocks/Components/Services/index.tsx +21 -0
  57. package/src/cms/blocks/Components/Services/service-card.tsx +73 -0
  58. package/src/cms/blocks/Components/shared/featured-product-card.tsx +29 -0
  59. package/src/cms/blocks/Components/shared/product-category-item.tsx +49 -0
  60. package/src/cms/blocks/Components/shared/product-grid.tsx +48 -0
  61. package/src/cms/blocks/Components/shared/top-categories-card.tsx +66 -0
  62. package/src/cms/blocks/Components/shared/top-rating-product-card.tsx +66 -0
  63. package/src/cms/blocks/Icons/Components/Category.tsx +14 -0
  64. package/src/cms/blocks/Icons/Components/DottedStar.tsx +40 -0
  65. package/src/cms/blocks/Icons/Components/FallbackIcon.tsx +33 -0
  66. package/src/cms/blocks/Icons/Components/GiftBox.tsx +18 -0
  67. package/src/cms/blocks/Icons/Components/Light.tsx +13 -0
  68. package/src/cms/blocks/Icons/Components/NewArrival.tsx +18 -0
  69. package/src/cms/blocks/Icons/Components/RankBadge.tsx +39 -0
  70. package/src/cms/blocks/Icons/index.ts +32 -0
  71. package/src/cms/blocks/index.tsx +16 -0
  72. package/src/cms/blocks/interfaces.ts +240 -0
  73. package/src/components/Notifications/README.md +1 -1
  74. package/src/components/Notifications/notification-context.tsx +1 -1
  75. package/src/components/README.md +3 -8
  76. package/src/components/_components/MiniCartClient.tsx +1 -1
  77. package/src/components/_components/navbar/category-based-menu/components/categories.tsx +1 -1
  78. package/src/components/_components/navbar/mega-menu/mega-menu.tsx +1 -1
  79. package/src/components/_components/navbar/nav-list/nav-item-child.tsx +2 -2
  80. package/src/components/_components/product-cards/product-card-1/product-card-1-wrapper.tsx +1 -1
  81. package/src/components/_components/products-view/product-view-dialog.tsx +1 -1
  82. package/src/components/_components/settings/setting.tsx +1 -1
  83. package/src/components/_components/wishlist/add-to-wishlist-dialog.tsx +1 -1
  84. package/src/components/_components/wishlist/components/create-new-list.tsx +1 -1
  85. package/src/components/_components/wishlist/remove-from-wishlist-dialog.tsx +1 -1
  86. package/src/components/_components/wishlist-modal/add-to-wishlist-dialog.tsx +1 -1
  87. package/src/components/_components/wishlist-modal/remove-from-wishlist-dialog.tsx +1 -1
  88. package/src/components/countries-input.tsx +0 -1
  89. package/src/components-v2/BazaarCard.tsx +21 -0
  90. package/src/components-v2/BazaarImage.tsx +12 -0
  91. package/src/components-v2/BazaarMenu.tsx +47 -0
  92. package/src/components-v2/BazaarSwitch.tsx +37 -0
  93. package/src/components-v2/BazaarTextField.tsx +73 -0
  94. package/src/components-v2/BoxShadowCard.tsx +16 -0
  95. package/src/components-v2/DropZone.tsx +86 -0
  96. package/src/components-v2/HoverBox.tsx +22 -0
  97. package/src/components-v2/Image.tsx +5 -0
  98. package/src/components-v2/ImageWithFallback.tsx +51 -0
  99. package/src/components-v2/LazyImage.tsx +12 -0
  100. package/src/components-v2/Loading.tsx +36 -0
  101. package/src/components-v2/MiniCartClient.tsx +65 -0
  102. package/src/components-v2/README.md +4 -0
  103. package/src/components-v2/SearchInput.tsx +28 -0
  104. package/src/components-v2/SnackbarProvider.tsx +32 -0
  105. package/src/components-v2/T/index.tsx +15 -0
  106. package/src/components-v2/Typography.tsx +227 -0
  107. package/src/components-v2/WhiteButton.tsx +20 -0
  108. package/src/components-v2/accordion/accordion-header.tsx +43 -0
  109. package/src/components-v2/accordion/index.ts +1 -0
  110. package/src/components-v2/bazaar-types.ts +84 -0
  111. package/src/components-v2/carousel/carousel.tsx +72 -0
  112. package/src/components-v2/carousel/components/carousel-arrows.tsx +60 -0
  113. package/src/components-v2/carousel/components/carousel-dots.tsx +21 -0
  114. package/src/components-v2/carousel/index.ts +3 -0
  115. package/src/components-v2/carousel/styles/index.ts +93 -0
  116. package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +64 -0
  117. package/src/components-v2/carousel-cards/carousel-card-1/index.ts +1 -0
  118. package/src/components-v2/carousel-cards/carousel-card-1/styles.ts +34 -0
  119. package/src/components-v2/carousel-cards/carousel-card-2/carousel-card-2.tsx +78 -0
  120. package/src/components-v2/carousel-cards/carousel-card-2/index.ts +1 -0
  121. package/src/components-v2/carousel-cards/carousel-card-2/styles.ts +26 -0
  122. package/src/components-v2/carousel-cards/carousel-card-3/carousel-card-3.tsx +37 -0
  123. package/src/components-v2/carousel-cards/carousel-card-3/index.ts +1 -0
  124. package/src/components-v2/carousel-cards/carousel-card-3/styles.ts +28 -0
  125. package/src/components-v2/carousel-cards/carousel-card-4/carousel-card-4.tsx +81 -0
  126. package/src/components-v2/carousel-cards/carousel-card-4/index.ts +1 -0
  127. package/src/components-v2/carousel-cards/carousel-card-4/styles.ts +27 -0
  128. package/src/components-v2/categories/category-list/category-list.tsx +59 -0
  129. package/src/components-v2/categories/category-list/index.ts +1 -0
  130. package/src/components-v2/categories/category-list/styles.ts +29 -0
  131. package/src/components-v2/categories/category-list/types.ts +4 -0
  132. package/src/components-v2/categories/category-list-item/category-menu-item.tsx +37 -0
  133. package/src/components-v2/categories/category-list-item/index.ts +1 -0
  134. package/src/components-v2/categories/category-list-item/styles.ts +35 -0
  135. package/src/components-v2/categories/category-menu.tsx +51 -0
  136. package/src/components-v2/categories/mega-menu/banner.tsx +60 -0
  137. package/src/components-v2/categories/mega-menu/column-list.tsx +70 -0
  138. package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +37 -0
  139. package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +37 -0
  140. package/src/components-v2/categories/mega-menu/styles.ts +25 -0
  141. package/src/components-v2/categories/types.ts +16 -0
  142. package/src/components-v2/category-cards/category-card-1/category-card-1.tsx +21 -0
  143. package/src/components-v2/category-cards/category-card-1/index.ts +1 -0
  144. package/src/components-v2/category-cards/category-card-1/styles.ts +37 -0
  145. package/src/components-v2/countdown/count-box.tsx +19 -0
  146. package/src/components-v2/countdown/count-down.tsx +24 -0
  147. package/src/components-v2/countdown/index.tsx +2 -0
  148. package/src/components-v2/countdown/useCountDown.ts +41 -0
  149. package/src/components-v2/countries-input.tsx +73 -0
  150. package/src/components-v2/data-table/index.ts +2 -0
  151. package/src/components-v2/data-table/table-header.tsx +91 -0
  152. package/src/components-v2/data-table/table-pagination.tsx +36 -0
  153. package/src/components-v2/flex-box/flex-between.tsx +14 -0
  154. package/src/components-v2/flex-box/flex-box.tsx +9 -0
  155. package/src/components-v2/flex-box/flex-row-center.tsx +9 -0
  156. package/src/components-v2/flex-box/index.ts +5 -0
  157. package/src/components-v2/footer/components/about-links.tsx +23 -0
  158. package/src/components-v2/footer/components/app-store.tsx +38 -0
  159. package/src/components-v2/footer/components/customer-care-links.tsx +21 -0
  160. package/src/components-v2/footer/components/logo.tsx +23 -0
  161. package/src/components-v2/footer/components/social-links.tsx +43 -0
  162. package/src/components-v2/footer/data/index.ts +54 -0
  163. package/src/components-v2/footer/footer-1.tsx +62 -0
  164. package/src/components-v2/footer/footer-2.tsx +57 -0
  165. package/src/components-v2/footer/footer-3.tsx +53 -0
  166. package/src/components-v2/footer/footer-4.tsx +71 -0
  167. package/src/components-v2/footer/index.ts +4 -0
  168. package/src/components-v2/footer/styles/index.ts +42 -0
  169. package/src/components-v2/header/components/categories-menu.tsx +23 -0
  170. package/src/components-v2/header/components/mobile-header.tsx +75 -0
  171. package/src/components-v2/header/components/user.test.tsx +200 -0
  172. package/src/components-v2/header/components/user.tsx +204 -0
  173. package/src/components-v2/header/header.tsx +63 -0
  174. package/src/components-v2/header/hooks/use-header.ts +13 -0
  175. package/src/components-v2/header/index.ts +1 -0
  176. package/src/components-v2/header/sticky-header.tsx +17 -0
  177. package/src/components-v2/header/styles/index.ts +24 -0
  178. package/src/components-v2/icons/cart-bag.tsx +13 -0
  179. package/src/components-v2/icons/category-outline.tsx +29 -0
  180. package/src/components-v2/icons/category.tsx +12 -0
  181. package/src/components-v2/icons/home.tsx +19 -0
  182. package/src/components-v2/icons/search.tsx +13 -0
  183. package/src/components-v2/icons/shopping-bag-outlined.tsx +13 -0
  184. package/src/components-v2/icons/up-down.tsx +21 -0
  185. package/src/components-v2/icons/user.tsx +13 -0
  186. package/src/components-v2/icons/user2.tsx +14 -0
  187. package/src/components-v2/mini-cart/__tests__/cart-item.test.tsx +174 -0
  188. package/src/components-v2/mini-cart/__tests__/mini-cart.test.tsx +121 -0
  189. package/src/components-v2/mini-cart/__tests__/test-cart-empty.json +84 -0
  190. package/src/components-v2/mini-cart/__tests__/test-cart-with-item.json +244 -0
  191. package/src/components-v2/mini-cart/components/bottom-actions.tsx +27 -0
  192. package/src/components-v2/mini-cart/components/cart-item.tsx +147 -0
  193. package/src/components-v2/mini-cart/components/empty-view.tsx +29 -0
  194. package/src/components-v2/mini-cart/components/top-header.tsx +37 -0
  195. package/src/components-v2/mini-cart/index.ts +1 -0
  196. package/src/components-v2/mini-cart/mini-cart.tsx +107 -0
  197. package/src/components-v2/mobile-navigation/index.ts +3 -0
  198. package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +73 -0
  199. package/src/components-v2/mobile-navigation/styles/index.ts +63 -0
  200. package/src/components-v2/nav-link/index.ts +5 -0
  201. package/src/components-v2/nav-link/nav-link-2.tsx +32 -0
  202. package/src/components-v2/nav-link/nav-link-3.tsx +67 -0
  203. package/src/components-v2/nav-link/nav-link.tsx +53 -0
  204. package/src/components-v2/navbar/categories.tsx +27 -0
  205. package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +52 -0
  206. package/src/components-v2/navbar/category-based-menu/components/categories.tsx +44 -0
  207. package/src/components-v2/navbar/category-based-menu/components/category-item.tsx +31 -0
  208. package/src/components-v2/navbar/category-based-menu/components/child-categories.tsx +38 -0
  209. package/src/components-v2/navbar/category-based-menu/index.ts +1 -0
  210. package/src/components-v2/navbar/category-based-menu/styles.ts +81 -0
  211. package/src/components-v2/navbar/category-based-menu/types.ts +18 -0
  212. package/src/components-v2/navbar/index.ts +1 -0
  213. package/src/components-v2/navbar/mega-menu/category-list.tsx +29 -0
  214. package/src/components-v2/navbar/mega-menu/index.ts +1 -0
  215. package/src/components-v2/navbar/mega-menu/mega-menu.tsx +71 -0
  216. package/src/components-v2/navbar/mega-menu/styles.ts +43 -0
  217. package/src/components-v2/navbar/mobile-menu/index.ts +1 -0
  218. package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +70 -0
  219. package/src/components-v2/navbar/mobile-menu/render-levels.test.tsx +71 -0
  220. package/src/components-v2/navbar/mobile-menu/render-levels.tsx +62 -0
  221. package/src/components-v2/navbar/nav-list/cms-nav.test.tsx +84 -0
  222. package/src/components-v2/navbar/nav-list/index.ts +1 -0
  223. package/src/components-v2/navbar/nav-list/nav-item-child.tsx +66 -0
  224. package/src/components-v2/navbar/nav-list/nav-list.tsx +119 -0
  225. package/src/components-v2/navbar/navbar.tsx +43 -0
  226. package/src/components-v2/navbar/styles.ts +90 -0
  227. package/src/components-v2/navbar/utils/transform-nav.test.ts +209 -0
  228. package/src/components-v2/navbar/utils/transform-nav.ts +43 -0
  229. package/src/components-v2/newsletter/index.ts +1 -0
  230. package/src/components-v2/newsletter/newsletter.tsx +112 -0
  231. package/src/components-v2/newsletter/social-icons.tsx +35 -0
  232. package/src/components-v2/newsletter/styles.ts +65 -0
  233. package/src/components-v2/page-sidenav/grocery-side-nav/components/link-item.tsx +21 -0
  234. package/src/components-v2/page-sidenav/grocery-side-nav/components/list-item.tsx +27 -0
  235. package/src/components-v2/page-sidenav/grocery-side-nav/components/nav-accordion.tsx +36 -0
  236. package/src/components-v2/page-sidenav/grocery-side-nav/components/render-child.tsx +26 -0
  237. package/src/components-v2/page-sidenav/grocery-side-nav/grocery-side-nav.tsx +32 -0
  238. package/src/components-v2/page-sidenav/grocery-side-nav/index.ts +1 -0
  239. package/src/components-v2/page-sidenav/grocery-side-nav/styles/index.ts +11 -0
  240. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/list-item.tsx +27 -0
  241. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/nav-accordion.tsx +44 -0
  242. package/src/components-v2/page-sidenav/health-beauty-side-nav/components/render-child.tsx +20 -0
  243. package/src/components-v2/page-sidenav/health-beauty-side-nav/health-beauty-side-nav.tsx +43 -0
  244. package/src/components-v2/page-sidenav/health-beauty-side-nav/index.ts +1 -0
  245. package/src/components-v2/page-sidenav/health-beauty-side-nav/styles/index.ts +27 -0
  246. package/src/components-v2/page-sidenav/side-navbar/components/list-item.tsx +25 -0
  247. package/src/components-v2/page-sidenav/side-navbar/components/nav-accordion.tsx +46 -0
  248. package/src/components-v2/page-sidenav/side-navbar/components/render-child.tsx +20 -0
  249. package/src/components-v2/page-sidenav/side-navbar/index.ts +1 -0
  250. package/src/components-v2/page-sidenav/side-navbar/side-nav-bar.tsx +77 -0
  251. package/src/components-v2/page-sidenav/side-navbar/styles/index.ts +73 -0
  252. package/src/components-v2/page-sidenav/side-navbar-2/components/button-content.tsx +32 -0
  253. package/src/components-v2/page-sidenav/side-navbar-2/components/sidebar-accordion.tsx +66 -0
  254. package/src/components-v2/page-sidenav/side-navbar-2/index.ts +1 -0
  255. package/src/components-v2/page-sidenav/side-navbar-2/side-navbar-2.tsx +63 -0
  256. package/src/components-v2/page-sidenav/side-navbar-2/styles/index.ts +68 -0
  257. package/src/components-v2/product-cards/discount-chip.tsx +43 -0
  258. package/src/components-v2/product-cards/product-card-1/components/hover-actions.tsx +37 -0
  259. package/src/components-v2/product-cards/product-card-1/components/quantity-buttons.tsx +65 -0
  260. package/src/components-v2/product-cards/product-card-1/index.ts +1 -0
  261. package/src/components-v2/product-cards/product-card-1/product-card-1-wrapper.tsx +304 -0
  262. package/src/components-v2/product-cards/product-card-1/product-card.tsx +107 -0
  263. package/src/components-v2/product-cards/product-card-1/styles/index.ts +46 -0
  264. package/src/components-v2/product-cards/product-card-10/index.ts +1 -0
  265. package/src/components-v2/product-cards/product-card-10/product-card.tsx +128 -0
  266. package/src/components-v2/product-cards/product-card-10/styles/index.ts +38 -0
  267. package/src/components-v2/product-cards/product-card-11/index.ts +1 -0
  268. package/src/components-v2/product-cards/product-card-11/product-card.tsx +66 -0
  269. package/src/components-v2/product-cards/product-card-11/styles/index.ts +16 -0
  270. package/src/components-v2/product-cards/product-card-12/index.ts +1 -0
  271. package/src/components-v2/product-cards/product-card-12/product-card.tsx +42 -0
  272. package/src/components-v2/product-cards/product-card-12/styles/index.ts +16 -0
  273. package/src/components-v2/product-cards/product-card-13/index.ts +1 -0
  274. package/src/components-v2/product-cards/product-card-13/product-card.tsx +48 -0
  275. package/src/components-v2/product-cards/product-card-13/styles/index.ts +25 -0
  276. package/src/components-v2/product-cards/product-card-14/index.ts +1 -0
  277. package/src/components-v2/product-cards/product-card-14/product-card.tsx +125 -0
  278. package/src/components-v2/product-cards/product-card-14/styles/index.ts +40 -0
  279. package/src/components-v2/product-cards/product-card-15/index.ts +1 -0
  280. package/src/components-v2/product-cards/product-card-15/product-card.tsx +121 -0
  281. package/src/components-v2/product-cards/product-card-15/styles/index.ts +57 -0
  282. package/src/components-v2/product-cards/product-card-16/components/quantity-buttons.tsx +54 -0
  283. package/src/components-v2/product-cards/product-card-16/index.ts +1 -0
  284. package/src/components-v2/product-cards/product-card-16/product-card.tsx +116 -0
  285. package/src/components-v2/product-cards/product-card-16/styles/index.ts +18 -0
  286. package/src/components-v2/product-cards/product-card-2/components/favorite-button.tsx +29 -0
  287. package/src/components-v2/product-cards/product-card-2/components/product-price.tsx +26 -0
  288. package/src/components-v2/product-cards/product-card-2/index.ts +1 -0
  289. package/src/components-v2/product-cards/product-card-2/product-card.tsx +70 -0
  290. package/src/components-v2/product-cards/product-card-3/components/hover-actions.tsx +83 -0
  291. package/src/components-v2/product-cards/product-card-3/index.ts +1 -0
  292. package/src/components-v2/product-cards/product-card-3/product-card.tsx +110 -0
  293. package/src/components-v2/product-cards/product-card-3/styles/index.ts +89 -0
  294. package/src/components-v2/product-cards/product-card-4/components/hover-actions.tsx +50 -0
  295. package/src/components-v2/product-cards/product-card-4/index.ts +1 -0
  296. package/src/components-v2/product-cards/product-card-4/product-card.tsx +128 -0
  297. package/src/components-v2/product-cards/product-card-4/styles/index.ts +66 -0
  298. package/src/components-v2/product-cards/product-card-5/components/button-actions.tsx +49 -0
  299. package/src/components-v2/product-cards/product-card-5/components/hover-actions.tsx +50 -0
  300. package/src/components-v2/product-cards/product-card-5/index.ts +1 -0
  301. package/src/components-v2/product-cards/product-card-5/product-card.tsx +137 -0
  302. package/src/components-v2/product-cards/product-card-5/styles/index.ts +94 -0
  303. package/src/components-v2/product-cards/product-card-6/components/hover-actions.tsx +50 -0
  304. package/src/components-v2/product-cards/product-card-6/index.ts +1 -0
  305. package/src/components-v2/product-cards/product-card-6/product-card.tsx +121 -0
  306. package/src/components-v2/product-cards/product-card-6/styles/index.ts +63 -0
  307. package/src/components-v2/product-cards/product-card-7/components/product-status.tsx +18 -0
  308. package/src/components-v2/product-cards/product-card-7/components/quantity-buttons.tsx +47 -0
  309. package/src/components-v2/product-cards/product-card-7/index.ts +1 -0
  310. package/src/components-v2/product-cards/product-card-7/product-card.tsx +139 -0
  311. package/src/components-v2/product-cards/product-card-7/styles/index.ts +98 -0
  312. package/src/components-v2/product-cards/product-card-8/index.ts +1 -0
  313. package/src/components-v2/product-cards/product-card-8/product-card.tsx +151 -0
  314. package/src/components-v2/product-cards/product-card-8/styles/index.ts +61 -0
  315. package/src/components-v2/product-cards/product-card-9/components/add-to-cart.tsx +63 -0
  316. package/src/components-v2/product-cards/product-card-9/components/favorite-button.tsx +27 -0
  317. package/src/components-v2/product-cards/product-card-9/components/tags.tsx +33 -0
  318. package/src/components-v2/product-cards/product-card-9/index.ts +1 -0
  319. package/src/components-v2/product-cards/product-card-9/product-card.tsx +169 -0
  320. package/src/components-v2/product-cards/product-card-wishlist/components/hover-actions.tsx +37 -0
  321. package/src/components-v2/product-cards/product-card-wishlist/index.ts +1 -0
  322. package/src/components-v2/product-cards/product-card-wishlist/product-card.tsx +118 -0
  323. package/src/components-v2/product-cards/product-card-wishlist/styles/index.ts +53 -0
  324. package/src/components-v2/product-cards/product-price.tsx +26 -0
  325. package/src/components-v2/product-cards/product-rating.tsx +28 -0
  326. package/src/components-v2/product-cards/product-title.tsx +24 -0
  327. package/src/components-v2/product-cards/use-product.ts +35 -0
  328. package/src/components-v2/product-dimensions/components/dimensions-group-error.tsx +46 -0
  329. package/src/components-v2/product-dimensions/components/dimensions-group-label.tsx +27 -0
  330. package/src/components-v2/product-dimensions/components/dimensions-group-list-chip.tsx +78 -0
  331. package/src/components-v2/product-dimensions/components/dimensions-group-list.tsx +24 -0
  332. package/src/components-v2/product-dimensions/components/dimensions-group.tsx +55 -0
  333. package/src/components-v2/product-dimensions/components/dimensions.tsx +84 -0
  334. package/src/components-v2/product-dimensions/index.tsx +38 -0
  335. package/src/components-v2/product-dimensions/utils/has-selected-dimension.ts +20 -0
  336. package/src/components-v2/product-quantity-buttons/product-quantity-buttons.tsx +88 -0
  337. package/src/components-v2/products-view/product-view-dialog.tsx +218 -0
  338. package/src/components-v2/products-view/products-grid-view.tsx +52 -0
  339. package/src/components-v2/products-view/products-list-view.tsx +49 -0
  340. package/src/components-v2/progress/index.ts +1 -0
  341. package/src/components-v2/progress/progress.tsx +77 -0
  342. package/src/components-v2/scrollbar/index.ts +1 -0
  343. package/src/components-v2/scrollbar/scrollbar.tsx +27 -0
  344. package/src/components-v2/scrollbar/styles.ts +15 -0
  345. package/src/components-v2/search-box/__test__/search-input-category.test.tsx +110 -0
  346. package/src/components-v2/search-box/__test__/search-input.test.tsx +137 -0
  347. package/src/components-v2/search-box/__test__/search-results.json +165 -0
  348. package/src/components-v2/search-box/components/category-dropdown.tsx +61 -0
  349. package/src/components-v2/search-box/components/search-result.tsx +86 -0
  350. package/src/components-v2/search-box/hooks/use-search.ts +63 -0
  351. package/src/components-v2/search-box/index.ts +2 -0
  352. package/src/components-v2/search-box/search-input-category.test.tsx +110 -0
  353. package/src/components-v2/search-box/search-input-category.tsx +203 -0
  354. package/src/components-v2/search-box/search-input.test.tsx +41 -0
  355. package/src/components-v2/search-box/search-input.tsx +66 -0
  356. package/src/components-v2/search-box/styles/index.ts +47 -0
  357. package/src/components-v2/section-header/index.ts +2 -0
  358. package/src/components-v2/section-header/section-creator.tsx +29 -0
  359. package/src/components-v2/section-header/section-header.tsx +44 -0
  360. package/src/components-v2/service-cards/icon-component.tsx +18 -0
  361. package/src/components-v2/service-cards/service-card-1/index.ts +1 -0
  362. package/src/components-v2/service-cards/service-card-1/service-card-1.tsx +42 -0
  363. package/src/components-v2/service-cards/service-card-2/index.ts +1 -0
  364. package/src/components-v2/service-cards/service-card-2/service-card-2.tsx +37 -0
  365. package/src/components-v2/service-cards/service-card-3/index.ts +1 -0
  366. package/src/components-v2/service-cards/service-card-3/service-card-3.tsx +28 -0
  367. package/src/components-v2/service-cards/service-card-3/styles.ts +23 -0
  368. package/src/components-v2/settings/index.ts +1 -0
  369. package/src/components-v2/settings/setting.tsx +141 -0
  370. package/src/components-v2/settings/styles.ts +57 -0
  371. package/src/components-v2/shop-card/index.ts +1 -0
  372. package/src/components-v2/shop-card/shop-card.tsx +152 -0
  373. package/src/components-v2/shop-card/styles.ts +33 -0
  374. package/src/components-v2/side-nav/index.ts +1 -0
  375. package/src/components-v2/side-nav/side-nav.tsx +49 -0
  376. package/src/components-v2/site-logo.tsx +17 -0
  377. package/src/components-v2/sticky/Sticky.tsx +62 -0
  378. package/src/components-v2/sticky/index.ts +1 -0
  379. package/src/components-v2/sticky/styles.ts +38 -0
  380. package/src/components-v2/sticky-wrapper/index.ts +1 -0
  381. package/src/components-v2/sticky-wrapper/sticky-wrapper.tsx +21 -0
  382. package/src/components-v2/sticky-wrapper/styles.ts +25 -0
  383. package/src/components-v2/stories/story-content/index.ts +1 -0
  384. package/src/components-v2/stories/story-content/story-content.tsx +28 -0
  385. package/src/components-v2/stories/story-content/styles.ts +22 -0
  386. package/src/components-v2/stories/story-item/index.ts +1 -0
  387. package/src/components-v2/stories/story-item/story-item.tsx +24 -0
  388. package/src/components-v2/stories/story-item/styles.ts +11 -0
  389. package/src/components-v2/stories/story-viewer/index.ts +1 -0
  390. package/src/components-v2/stories/story-viewer/story-viewer.tsx +44 -0
  391. package/src/components-v2/stories/story-viewer/styles.ts +15 -0
  392. package/src/components-v2/subscribe-input/index.ts +1 -0
  393. package/src/components-v2/subscribe-input/styles.ts +14 -0
  394. package/src/components-v2/subscribe-input/subscribe-input.tsx +43 -0
  395. package/src/components-v2/topbar/index.ts +1 -0
  396. package/src/components-v2/topbar/styles.ts +55 -0
  397. package/src/components-v2/topbar/top-bar.tsx +115 -0
  398. package/src/components-v2/utils/constants.ts +8 -0
  399. package/src/components-v2/wishlist/add-to-wishlist-dialog.tsx +161 -0
  400. package/src/components-v2/wishlist/components/create-new-list.tsx +167 -0
  401. package/src/components-v2/wishlist/components/create-wishlist-button.tsx +40 -0
  402. package/src/components-v2/wishlist/components/dashboard-header.tsx +123 -0
  403. package/src/components-v2/wishlist/components/navigation.tsx +87 -0
  404. package/src/components-v2/wishlist/components/no-records.tsx +20 -0
  405. package/src/components-v2/wishlist/components/wishlist-modal-item.tsx +66 -0
  406. package/src/components-v2/wishlist/remove-from-wishlist-dialog.tsx +175 -0
  407. package/src/components-v2/wishlist/styles.ts +61 -0
  408. package/src/components-v2/wishlist-modal/TODO.md +10 -0
  409. package/src/components-v2/wishlist-modal/add-to-wishlist-button.tsx +69 -0
  410. package/src/components-v2/wishlist-modal/add-to-wishlist-dialog.tsx +161 -0
  411. package/src/components-v2/wishlist-modal/remove-from-wishlist-dialog.tsx +174 -0
  412. package/src/components-v2/wishlist-modal/wishlist-modal-item.tsx +65 -0
  413. package/src/pages/README.md +4 -0
  414. package/src/pages/product-details/product-intro/product-intro.tsx +3 -1
  415. package/src/pages/product-list/quick-view-dialog-content.tsx +4 -2
  416. package/src/pages-v2/README.md +4 -0
  417. package/src/pages-v2/account/addresses/address-form.tsx +289 -0
  418. package/src/pages-v2/account/addresses/address-item.tsx +104 -0
  419. package/src/pages-v2/account/dashboard-header.tsx +123 -0
  420. package/src/pages-v2/account/navigation.tsx +87 -0
  421. package/src/pages-v2/account/no-records.tsx +20 -0
  422. package/src/pages-v2/account/orders/icons/delivery.tsx +14 -0
  423. package/src/pages-v2/account/orders/icons/package-box.tsx +13 -0
  424. package/src/pages-v2/account/orders/icons/truck-filled.tsx +14 -0
  425. package/src/pages-v2/account/orders/order-progress.tsx +114 -0
  426. package/src/pages-v2/account/orders/order-row.tsx +64 -0
  427. package/src/pages-v2/account/orders/order-summary.tsx +87 -0
  428. package/src/pages-v2/account/orders/ordered-products.tsx +121 -0
  429. package/src/pages-v2/account/profile/profile-button.test.tsx +59 -0
  430. package/src/pages-v2/account/profile/profile-button.tsx +50 -0
  431. package/src/pages-v2/account/profile/user-info.tsx +62 -0
  432. package/src/pages-v2/account/styles.ts +32 -0
  433. package/src/pages-v2/account/table-row.tsx +19 -0
  434. package/src/pages-v2/account/wishlist/create-new-list.tsx +167 -0
  435. package/src/pages-v2/account/wishlist/create-wishlist-button.tsx +40 -0
  436. package/src/pages-v2/account/wishlist/wishlist-item.tsx +82 -0
  437. package/src/pages-v2/blog/pagination.tsx +38 -0
  438. package/src/pages-v2/cart/cart-item.tsx +312 -0
  439. package/src/pages-v2/cart/checkout-form.tsx +122 -0
  440. package/src/pages-v2/cart/coupon-entry.tsx +90 -0
  441. package/src/pages-v2/cart/estimate-shipping.tsx +183 -0
  442. package/src/pages-v2/cart/wrapper.tsx +30 -0
  443. package/src/pages-v2/checkout/checkout-alt-form/address-card.tsx +76 -0
  444. package/src/pages-v2/checkout/checkout-alt-form/checkout-form.tsx +131 -0
  445. package/src/pages-v2/checkout/checkout-alt-form/checkout-step.tsx +120 -0
  446. package/src/pages-v2/checkout/checkout-alt-form/customer-information.tsx +94 -0
  447. package/src/pages-v2/checkout/checkout-alt-form/delivery-address.tsx +174 -0
  448. package/src/pages-v2/checkout/checkout-alt-form/delivery-date.tsx +114 -0
  449. package/src/pages-v2/checkout/checkout-alt-form/delivery-options.tsx +190 -0
  450. package/src/pages-v2/checkout/checkout-alt-form/edit-address-form.tsx +130 -0
  451. package/src/pages-v2/checkout/checkout-alt-form/heading.tsx +50 -0
  452. package/src/pages-v2/checkout/checkout-alt-form/index.ts +1 -0
  453. package/src/pages-v2/checkout/checkout-alt-form/new-address-form.tsx +299 -0
  454. package/src/pages-v2/checkout/checkout-alt-form/node.tsx +9 -0
  455. package/src/pages-v2/checkout/checkout-alt-form/payment-details.tsx +347 -0
  456. package/src/pages-v2/checkout/checkout-alt-form/safe-card-preview-data.tsx +36 -0
  457. package/src/pages-v2/checkout/checkout-alt-form/types.ts +20 -0
  458. package/src/pages-v2/checkout/checkout-alt-summary/cart-item.tsx +42 -0
  459. package/src/pages-v2/checkout/checkout-alt-summary/checkout-alt-summary.tsx +42 -0
  460. package/src/pages-v2/checkout/checkout-alt-summary/index.ts +1 -0
  461. package/src/pages-v2/checkout/checkout-alt-summary/list-item.tsx +31 -0
  462. package/src/pages-v2/confirmation/address.tsx +25 -0
  463. package/src/pages-v2/confirmation/confirmation-summary.tsx +55 -0
  464. package/src/pages-v2/confirmation/ordered-products.tsx +115 -0
  465. package/src/pages-v2/product-details/available-shops.tsx +48 -0
  466. package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +63 -0
  467. package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +257 -0
  468. package/src/pages-v2/product-details/bopis/pickup-option-select.tsx +127 -0
  469. package/src/pages-v2/product-details/bopis/search-header.tsx +69 -0
  470. package/src/pages-v2/product-details/checkbox-label.tsx +20 -0
  471. package/src/pages-v2/product-details/currency.ts +64 -0
  472. package/src/pages-v2/product-details/frequently-bought.tsx +97 -0
  473. package/src/pages-v2/product-details/frequently-product-card.tsx +63 -0
  474. package/src/pages-v2/product-details/product-comment.tsx +49 -0
  475. package/src/pages-v2/product-details/product-description.tsx +22 -0
  476. package/src/pages-v2/product-details/product-filter-card.tsx +265 -0
  477. package/src/pages-v2/product-details/product-intro/product-intro-images.tsx +90 -0
  478. package/src/pages-v2/product-details/product-intro/product-intro.tsx +256 -0
  479. package/src/pages-v2/product-details/product-review.tsx +131 -0
  480. package/src/pages-v2/product-details/product-tabs.tsx +51 -0
  481. package/src/pages-v2/product-details/related-products.tsx +42 -0
  482. package/src/pages-v2/product-details/types.ts +11 -0
  483. package/src/pages-v2/product-list/breadcrumbs.tsx +39 -0
  484. package/src/pages-v2/product-list/checkbox-label.tsx +20 -0
  485. package/src/pages-v2/product-list/facet-group.tsx +125 -0
  486. package/src/pages-v2/product-list/facet.tsx +36 -0
  487. package/src/pages-v2/product-list/list-filter.tsx +43 -0
  488. package/src/pages-v2/product-list/pagination.tsx +80 -0
  489. package/src/pages-v2/product-list/product-list-context.tsx +302 -0
  490. package/src/pages-v2/product-list/product-list-state.ts +187 -0
  491. package/src/pages-v2/product-list/product-rating.tsx +16 -0
  492. package/src/pages-v2/product-list/quick-view-dialog-content.tsx +207 -0
  493. package/src/pages-v2/product-list/quick-view-dialog.tsx +54 -0
  494. package/src/pages-v2/product-list/range-filter.tsx +125 -0
  495. package/src/pages-v2/product-list/scrollbar.tsx +38 -0
  496. package/src/pages-v2/product-list/search-bar.tsx +162 -0
  497. package/src/pages-v2/product-list/selected-facets.tsx +80 -0
  498. package/src/pages-v2/product-list/side-nav.tsx +49 -0
  499. package/src/pages-v2/product-list/swatch.tsx +80 -0
  500. package/src/pages-v2/product-list/types.ts +18 -0
  501. package/src/pages-v2/product-list/use-product-list.ts +12 -0
  502. package/src/pages-v2/product-list/useCategoryFilter.tsx +26 -0
  503. package/src/pages-v2/product-list/utils/facet-helpers.ts +5 -0
  504. package/src/pages-v2/product-list/utils/generate-breadcrumbs.ts +30 -0
  505. package/src/pages-v2/product-list/utils/getCategoryFilterFromSlug.ts +153 -0
  506. package/src/pages-v2/product-list/utils/product-list-helper.ts +111 -0
  507. package/src/pages-v2/product-list/utils/product-list-types.ts +41 -0
  508. package/src/pages-v2/product-list/utils/search-for-category.ts +76 -0
  509. package/src/pages-v2/product-list/utils/sort-options.ts +44 -0
  510. package/src/pages-v2/product-list/utils/use-previous-refiners.ts +14 -0
  511. package/src/pages-v2/quickorder/order-upload.tsx +150 -0
  512. package/src/pages-v2/quickorder/quick-order-form.tsx +346 -0
  513. package/src/pages-v2/quickorder/quick-order-row.tsx +144 -0
  514. package/src/providers/nav-provider/index.tsx +59 -0
  515. package/src/providers/nav-provider/utils/createLink.ts +15 -0
  516. package/src/providers/notifications/README.md +15 -0
  517. package/src/providers/notifications/notification-context.tsx +82 -0
  518. package/src/providers/notifications/use-notification.ts +12 -0
  519. package/tsconfig.json +3 -2
  520. package/typedoc.js +10 -0
  521. package/src/api-manager/api-manager.config.json +0 -12
  522. package/src/api-manager/datasources/e4/e4.remaps.ts +0 -355
  523. package/src/api-manager/datasources/e4/e4.translator.test.ts +0 -202
  524. /package/src/hooks/{use-cart.tsx → use-cart.ts} +0 -0
  525. /package/src/hooks/{use-variants.tsx → use-variants.ts} +0 -0
@@ -0,0 +1,289 @@
1
+ import React from "react";
2
+ import {
3
+ Box,
4
+ Button,
5
+ FormControl,
6
+ InputLabel,
7
+ TextField,
8
+ MenuItem,
9
+ Select,
10
+ OutlinedInput,
11
+ } from "@mui/material";
12
+ import Grid from "@mui/material/Grid2";
13
+ import { useLocale, useTranslations } from "next-intl";
14
+ import { useNotification } from "@evenicanpm/storefront-core/src/providers/notifications/use-notification";
15
+ import { useRouter } from "next/navigation";
16
+ // Forms
17
+ import { useFormik } from "formik";
18
+ import { z } from "zod";
19
+ import { withZodSchema } from "formik-validator-zod";
20
+ // API and Interfaces
21
+ import { Address } from "@/api-manager/schemas/address.schema";
22
+ import { CountryRegionInfo } from "@msdyn365-commerce/retail-proxy";
23
+ import getCountries from "@/api-manager/services/address/queries/get-countries";
24
+ import getStates from "@/api-manager/services/address/queries/get-states";
25
+ import useCreateAddress from "@/api-manager/services/address/mutations/create-address";
26
+ import useUpdateAddress from "@/api-manager/services/address/mutations/update-address";
27
+
28
+ // =============================================================
29
+ type Props = { address: Address };
30
+ // =============================================================
31
+ export default function AddressForm({ address }: Props) {
32
+ const [tn, t] = ["Account.Addresses", "Address"].map(useTranslations);
33
+ const { setNotification } = useNotification();
34
+ const router = useRouter();
35
+ const locale = useLocale();
36
+
37
+ const { data: countries } = getCountries.useData({ locale });
38
+ const defaultCountry = countries?.find(
39
+ (c) => c.CountryRegionId === address?.ThreeLetterISORegionName,
40
+ );
41
+ const [selectedCountry, setSelectedCountry] =
42
+ React.useState<CountryRegionInfo | null>(defaultCountry ?? null);
43
+ const { data: states } = getStates.useData({
44
+ countryId: selectedCountry?.CountryRegionId,
45
+ });
46
+
47
+ const { mutateAsync: createAddress } = useCreateAddress();
48
+ const { mutateAsync: updateAddress } = useUpdateAddress();
49
+
50
+ React.useEffect(() => {
51
+ if (!selectedCountry && defaultCountry) {
52
+ setSelectedCountry(defaultCountry);
53
+ }
54
+ }, [defaultCountry, selectedCountry]);
55
+
56
+ const FormSchema = z.object({
57
+ Name: z.string().nonempty(t("Validation.required", { field: t("name") })),
58
+ Street: z
59
+ .string()
60
+ .nonempty(t("Validation.required", { field: t("street") })),
61
+ City: z.string().nonempty(t("Validation.required", { field: t("city") })),
62
+ State: z.string().nonempty(t("Validation.required", { field: t("state") })),
63
+ ZipCode: z
64
+ .string()
65
+ .nonempty(t("Validation.required", { field: t("zipCode") })),
66
+ Country: z
67
+ .string()
68
+ .nonempty(t("Validation.required", { field: t("country") })),
69
+ Phone: z.string().optional().default(""),
70
+ });
71
+ type FormSchemaType = z.infer<typeof FormSchema>;
72
+
73
+ const handleSubmit = async (values: FormSchemaType) => {
74
+ let newAddress: Address = {
75
+ Name: values.Name,
76
+ Street: values.Street,
77
+ City: values.City,
78
+ State: values.State,
79
+ ZipCode: values.ZipCode,
80
+ TwoLetterISORegionName: selectedCountry?.ISOCode,
81
+ ThreeLetterISORegionName: selectedCountry?.CountryRegionId,
82
+ Phone: values.Phone || undefined,
83
+ };
84
+
85
+ try {
86
+ if (address?.Id && address?.Id !== "new") {
87
+ newAddress = { ...newAddress, Id: address?.Id };
88
+ await updateAddress(newAddress);
89
+ } else {
90
+ await createAddress(newAddress);
91
+ }
92
+ setNotification({
93
+ message: tn("addressSuccess"),
94
+ severity: "success",
95
+ });
96
+ router.push("/account/addresses");
97
+ } catch (error) {
98
+ setNotification({
99
+ message: tn("addressFailed"),
100
+ severity: "error",
101
+ });
102
+ }
103
+ };
104
+
105
+ const setValues = (address: Address) => {
106
+ return {
107
+ Name: address?.Name || "",
108
+ Street: address?.Street || "",
109
+ City: address?.City || "",
110
+ State: address?.State || "",
111
+ ZipCode: address?.ZipCode || "",
112
+ Country: address?.ThreeLetterISORegionName || "",
113
+ Phone: address?.Phone || "",
114
+ };
115
+ };
116
+
117
+ const intialValues = setValues(address);
118
+
119
+ const formik = useFormik<FormSchemaType>({
120
+ initialValues: intialValues,
121
+ onSubmit: handleSubmit,
122
+ validate: withZodSchema(FormSchema),
123
+ });
124
+
125
+ return (
126
+ <form onSubmit={formik.handleSubmit}>
127
+ <Grid container spacing={3}>
128
+ <Grid size={{ sm: 6, xs: 12 }}>
129
+ <TextField
130
+ name="Name"
131
+ fullWidth
132
+ autoComplete="off"
133
+ label={t("name")}
134
+ value={formik.values.Name}
135
+ onChange={formik.handleChange}
136
+ onBlur={formik.handleBlur}
137
+ error={formik.touched.Name && Boolean(formik.errors.Name)}
138
+ helperText={formik.touched.Name && formik.errors.Name}
139
+ required
140
+ />
141
+ </Grid>
142
+ <Grid size={{ sm: 6, xs: 12 }}>
143
+ <TextField
144
+ name="Street"
145
+ fullWidth
146
+ autoComplete="off"
147
+ label={t("street")}
148
+ value={formik.values.Street}
149
+ onChange={formik.handleChange}
150
+ onBlur={formik.handleBlur}
151
+ error={formik.touched.Street && Boolean(formik.errors.Street)}
152
+ helperText={formik.touched.Street && formik.errors.Street}
153
+ required
154
+ />
155
+ </Grid>
156
+ <Grid size={{ sm: 6, xs: 12 }}>
157
+ <TextField
158
+ name="City"
159
+ fullWidth
160
+ autoComplete="off"
161
+ label={t("city")}
162
+ value={formik.values.City}
163
+ onChange={formik.handleChange}
164
+ onBlur={formik.handleBlur}
165
+ error={formik.touched.City && Boolean(formik.errors.City)}
166
+ helperText={formik.touched.City && formik.errors.City}
167
+ required
168
+ />
169
+ </Grid>
170
+ <Grid size={{ sm: 6, xs: 12 }}>
171
+ <FormControl
172
+ fullWidth
173
+ size="small"
174
+ error={formik.touched.Country && Boolean(formik.errors.Country)}
175
+ >
176
+ <InputLabel required id="Country">
177
+ {t("country")}
178
+ </InputLabel>
179
+ <Select
180
+ labelId="Country"
181
+ name="Country"
182
+ input={<OutlinedInput label={t("country")} />}
183
+ value={formik.values.Country}
184
+ onChange={(event) => {
185
+ const countryId = event.target.value;
186
+
187
+ // Update selected country
188
+ const selected =
189
+ countries?.find((c) => c.CountryRegionId === countryId) ||
190
+ null;
191
+ setSelectedCountry(selected);
192
+
193
+ formik.setFieldValue("Country", countryId);
194
+ // Reset state field when country changes
195
+ formik.setFieldValue("State", "");
196
+ }}
197
+ onBlur={formik.handleBlur}
198
+ required
199
+ >
200
+ <MenuItem value="">Select Country</MenuItem>
201
+ {countries?.map(({ ShortName, CountryRegionId }, index) => (
202
+ <MenuItem value={CountryRegionId} key={index}>
203
+ {ShortName}
204
+ </MenuItem>
205
+ ))}
206
+ </Select>
207
+ {formik.touched.Country && formik.errors.Country && (
208
+ <Box
209
+ component="span"
210
+ sx={{ color: "error.main", fontSize: "0.75rem", mt: 0.5 }}
211
+ >
212
+ {formik.errors.Country}
213
+ </Box>
214
+ )}
215
+ </FormControl>
216
+ </Grid>
217
+ <Grid size={{ sm: 6, xs: 12 }}>
218
+ <FormControl
219
+ fullWidth
220
+ size="small"
221
+ error={formik.touched.State && Boolean(formik.errors.State)}
222
+ >
223
+ <InputLabel required id="State">
224
+ {t("state")}
225
+ </InputLabel>
226
+ <Select
227
+ labelId="State"
228
+ name="State"
229
+ input={<OutlinedInput label={t("state")} />}
230
+ value={formik.values.State}
231
+ onChange={formik.handleChange}
232
+ onBlur={formik.handleBlur}
233
+ required
234
+ >
235
+ <MenuItem value="">Select a state</MenuItem>
236
+ {states?.map(({ StateName, StateId }, index) => (
237
+ <MenuItem value={StateId} key={index}>
238
+ {StateName}
239
+ </MenuItem>
240
+ ))}
241
+ </Select>
242
+ {formik.touched.State && formik.errors.State && (
243
+ <Box
244
+ component="span"
245
+ sx={{ color: "error.main", fontSize: "0.75rem", mt: 0.5 }}
246
+ >
247
+ {formik.errors.State}
248
+ </Box>
249
+ )}
250
+ </FormControl>
251
+ </Grid>
252
+
253
+ <Grid size={{ sm: 6, xs: 12 }}>
254
+ <TextField
255
+ name="ZipCode"
256
+ fullWidth
257
+ autoComplete="off"
258
+ label={t("zipCode")}
259
+ value={formik.values.ZipCode}
260
+ onChange={formik.handleChange}
261
+ onBlur={formik.handleBlur}
262
+ error={formik.touched.ZipCode && Boolean(formik.errors.ZipCode)}
263
+ helperText={formik.touched.ZipCode && formik.errors.ZipCode}
264
+ required
265
+ />
266
+ </Grid>
267
+ <Grid size={{ sm: 6, xs: 12 }}>
268
+ <TextField
269
+ name="Phone"
270
+ fullWidth
271
+ autoComplete="off"
272
+ label={t("phone")}
273
+ value={formik.values.Phone}
274
+ onChange={formik.handleChange}
275
+ onBlur={formik.handleBlur}
276
+ error={formik.touched.Phone && Boolean(formik.errors.Phone)}
277
+ helperText={formik.touched.Phone && formik.errors.Phone}
278
+ required
279
+ />
280
+ </Grid>
281
+ </Grid>
282
+ <Grid size={{ sm: 6, xs: 12 }} sx={{ mt: 3 }}>
283
+ <Button type="submit" variant="contained" color="primary">
284
+ {t("save")}
285
+ </Button>
286
+ </Grid>
287
+ </form>
288
+ );
289
+ }
@@ -0,0 +1,104 @@
1
+ import IconButton from "@mui/material/IconButton";
2
+ import { Button, Box, Chip } from "@mui/material";
3
+ import { useTranslations } from "next-intl";
4
+ import { useRouter } from "next/navigation";
5
+ import { useNotification } from "@evenicanpm/storefront-core/src/providers/notifications/use-notification";
6
+ // MUI ICON COMPONENTS
7
+ import { MdEdit as Edit } from "react-icons/md";
8
+ import { MdDelete as Delete } from "react-icons/md";
9
+ // GLOBAL CUSTOM COMPONENTS
10
+ import { Paragraph } from "@evenicanpm/storefront-core/src/components-v2/Typography";
11
+ // LOCAL CUSTOM COMPONENT
12
+ import TableRow from "../table-row";
13
+ // API
14
+ import useDeleteAddress from "@/api-manager/services/address/mutations/delete-address";
15
+ import useUpdateUser from "@/api-manager/services/user/mutations/update-user";
16
+ import { Address } from "@/api-manager/schemas/address.schema";
17
+
18
+ interface Props {
19
+ address: Address;
20
+ }
21
+
22
+ export default function AddressListItem({ address }: Props) {
23
+ const router = useRouter();
24
+ const t = useTranslations("Account.Addresses");
25
+ const { setNotification } = useNotification();
26
+
27
+ const { mutateAsync: updateUser } = useUpdateUser();
28
+ const { mutateAsync: deleteAddress } = useDeleteAddress();
29
+
30
+ const setPrimaryAddress = (id: string) => {
31
+ updateUser({ AccountNumber: "", DefaultShippingAddressId: id });
32
+ };
33
+
34
+ const editAddress = (id: string) => {
35
+ router.push(`/account/addresses/${id}`);
36
+ };
37
+ const handleDelete = async (id: string) => {
38
+ try {
39
+ await deleteAddress(id);
40
+ setNotification({
41
+ message: t("deleteAddressSuccess"),
42
+ severity: "success",
43
+ });
44
+ } catch (error) {
45
+ setNotification({
46
+ message: t("deleteAddressFailed"),
47
+ severity: "error",
48
+ });
49
+ }
50
+ };
51
+
52
+ return (
53
+ <TableRow
54
+ sx={{
55
+ display: "grid",
56
+ gridTemplateColumns: "1fr 2fr 1fr 1.5fr", // Define equal column structure
57
+ alignItems: "center",
58
+ gap: 2,
59
+ padding: "10px 15px",
60
+ }}
61
+ >
62
+ <Paragraph ellipsis>{address?.Name}</Paragraph>
63
+ <Paragraph ellipsis>{address?.FullAddress}</Paragraph>
64
+ <Paragraph ellipsis>{address?.Phone}</Paragraph>
65
+
66
+ {/* Actions Column */}
67
+ <Box display="flex" alignItems="center" gap={1} justifySelf="end">
68
+ {address?.IsPrimary ? (
69
+ <Chip size="small" label={t("primaryFlag")} color="primary" />
70
+ ) : (
71
+ <Button
72
+ color="secondary"
73
+ variant="outlined"
74
+ size="small"
75
+ onClick={() => {
76
+ const rid = address.RecordId?.toString();
77
+ setPrimaryAddress(address.Id ?? rid ?? "");
78
+ }}
79
+ >
80
+ {t("btnPrimaryAddress")}
81
+ </Button>
82
+ )}
83
+
84
+ <IconButton
85
+ onClick={() => {
86
+ const rid = address.RecordId?.toString();
87
+ editAddress(address.Id ?? rid ?? "");
88
+ }}
89
+ >
90
+ <Edit fontSize="large" color="inherit" />
91
+ </IconButton>
92
+
93
+ <IconButton
94
+ onClick={() => {
95
+ const rid = address.RecordId?.toString();
96
+ handleDelete(address.Id ?? rid ?? "");
97
+ }}
98
+ >
99
+ <Delete fontSize="large" color="inherit" />
100
+ </IconButton>
101
+ </Box>
102
+ </TableRow>
103
+ );
104
+ }
@@ -0,0 +1,123 @@
1
+ import React, { ReactNode } from "react";
2
+ import Link from "next/link";
3
+ import { Box, Button, IconButton, Theme, styled } from "@mui/material";
4
+ import useMediaQuery from "@mui/material/useMediaQuery";
5
+ import { useTranslations } from "next-intl";
6
+ // ICON COMPONENTS
7
+ import { MdMenu as Menu } from "react-icons/md";
8
+ // GLOBAL CUSTOM COMPONENTS
9
+ import SideNav from "@evenicanpm/storefront-core/src/components-v2/side-nav/index";
10
+ import { H2 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
11
+ import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
12
+ // LOCAL CUSTOM COMPONENTS
13
+ import Navigation from "./navigation";
14
+ import { IconType } from "react-icons";
15
+
16
+ // STYLED COMPONENT
17
+ const StyledBox = styled("div")(({ theme }) => ({
18
+ display: "flex",
19
+ marginTop: theme.spacing(-2),
20
+ marginBottom: theme.spacing(3),
21
+ "& .headerHold": {
22
+ flexGrow: 1,
23
+ alignItems: "center",
24
+ justifyContent: "space-between",
25
+ },
26
+ [theme.breakpoints.up("md")]: {
27
+ "& .sidenav": { display: "none" },
28
+ },
29
+ [theme.breakpoints.down("md")]: {
30
+ flexDirection: "column",
31
+ },
32
+ }));
33
+
34
+ // ==============================================================
35
+
36
+ type WithButtons = {
37
+ title: string;
38
+ titleMessage?: string;
39
+ buttons: ReactNode;
40
+ Icon: IconType;
41
+ href?: never;
42
+ buttonText?: never;
43
+ };
44
+
45
+ type WithGeneratedButton = {
46
+ title: string;
47
+ titleMessage?: string;
48
+ href?: string;
49
+ buttonText?: string;
50
+ Icon: IconType;
51
+ buttons?: ReactNode;
52
+ };
53
+
54
+ type Props = WithButtons | WithGeneratedButton;
55
+
56
+ // ==============================================================
57
+
58
+ export default function DashboardHeader({
59
+ title,
60
+ titleMessage,
61
+ buttons,
62
+ href,
63
+ buttonText,
64
+ Icon,
65
+ }: Props) {
66
+ const t = useTranslations();
67
+ const isTablet = useMediaQuery((theme: Theme) =>
68
+ theme.breakpoints.down(1025),
69
+ );
70
+
71
+ const GENERATED_BUTTON = href ? (
72
+ <Button
73
+ href={href}
74
+ color="primary"
75
+ LinkComponent={Link}
76
+ sx={{ bgcolor: "primary.light", px: 4 }}
77
+ >
78
+ {t(buttonText)}
79
+ </Button>
80
+ ) : null;
81
+
82
+ const HEADER_LINKS = (
83
+ <FlexBox gap={1} justifyContent="flex-end">
84
+ {buttons || GENERATED_BUTTON}
85
+ </FlexBox>
86
+ );
87
+
88
+ return (
89
+ <StyledBox>
90
+ <FlexBox mt={2} className="headerHold">
91
+ <FlexBox alignItems="center" gap={0.5}>
92
+ {Icon && (
93
+ <IconButton color="primary">
94
+ <Icon />
95
+ </IconButton>
96
+ )}
97
+ <H2 my={0} lineHeight={1} ellipsis>
98
+ {titleMessage ? titleMessage : t(title)}
99
+ </H2>
100
+ </FlexBox>
101
+
102
+ <FlexBox className="button-container" justifyContent="flex-end">
103
+ {!isTablet && HEADER_LINKS}
104
+ </FlexBox>
105
+
106
+ <div className="sidenav">
107
+ <SideNav
108
+ position="left"
109
+ handler={(close) => (
110
+ <IconButton onClick={close}>
111
+ <Menu fontSize="small" />
112
+ </IconButton>
113
+ )}
114
+ >
115
+ <Navigation />
116
+ </SideNav>
117
+ </div>
118
+ </FlexBox>
119
+
120
+ {isTablet ? <Box mt={2}>{HEADER_LINKS}</Box> : null}
121
+ </StyledBox>
122
+ );
123
+ }
@@ -0,0 +1,87 @@
1
+ "use client";
2
+
3
+ import { usePathname } from "next/navigation";
4
+ import { Fragment } from "react";
5
+ import { useTranslations } from "next-intl";
6
+
7
+ // ICON COMPONENTS
8
+ import {
9
+ MdOutlineShoppingBag as ShoppingBagOutlined,
10
+ MdFavoriteBorder as FavoriteBorder,
11
+ MdPerson as Person,
12
+ MdPlace as Place,
13
+ } from "react-icons/md";
14
+
15
+ // GLOBAL CUSTOM COMPONENTS
16
+ import FlexBox from "@evenicanpm/storefront-core/src/components-v2/flex-box/flex-box";
17
+ import {
18
+ Paragraph,
19
+ Span,
20
+ } from "@evenicanpm/storefront-core/src/components-v2/Typography";
21
+
22
+ // API
23
+ import getUser from "@/api-manager/services/user/queries/get-user";
24
+ import getUserCounts from "@/api-manager/services/user/queries/get-user-counts";
25
+
26
+ // STYLED COMPONENTS
27
+ import { MainContainer, StyledNavLink } from "./styles";
28
+
29
+ const MENU_ITEMS = [
30
+ {
31
+ title: "DASHBOARD",
32
+ list: [
33
+ {
34
+ href: "/account/orders",
35
+ title: "orders",
36
+ Icon: ShoppingBagOutlined,
37
+ count: 0,
38
+ },
39
+ { href: "/account/wish-lists", title: "wishlists", Icon: FavoriteBorder },
40
+ ],
41
+ },
42
+ {
43
+ title: "ACCOUNT SETTINGS",
44
+ list: [
45
+ { href: "/account/profile", title: "profile", Icon: Person },
46
+ { href: "/account/addresses", title: "addresses", Icon: Place, count: 0 },
47
+ ],
48
+ },
49
+ ];
50
+
51
+ export default function Navigation() {
52
+ const pathname = usePathname();
53
+ const t = useTranslations("Account.Menu");
54
+
55
+ const { data: user } = getUser.useData();
56
+ const { data: counts } = getUserCounts.useData(String(user?.RecordId) || "");
57
+
58
+ MENU_ITEMS[0].list[0].count = counts?.orderCount;
59
+ MENU_ITEMS[1].list[1].count = counts?.addressCount;
60
+
61
+ return (
62
+ <MainContainer>
63
+ {MENU_ITEMS.map((item) => (
64
+ <Fragment key={item.title}>
65
+ <Paragraph p="26px 30px 1rem" color="grey.600" fontSize={12}>
66
+ {item.title}
67
+ </Paragraph>
68
+
69
+ {item.list.map(({ Icon, count, href, title }) => (
70
+ <StyledNavLink
71
+ href={href}
72
+ key={title}
73
+ isCurrentPath={pathname.includes(href)}
74
+ >
75
+ <FlexBox alignItems="center" gap={1}>
76
+ <Icon color="inherit" fontSize="large" className="nav-icon" />
77
+ <Span>{t(title)}</Span>
78
+ </FlexBox>
79
+
80
+ <Span>{count}</Span>
81
+ </StyledNavLink>
82
+ ))}
83
+ </Fragment>
84
+ ))}
85
+ </MainContainer>
86
+ );
87
+ }
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { Box } from "@mui/material";
3
+ import { H4 } from "@evenicanpm/storefront-core/src/components-v2/Typography";
4
+ import { useTranslations } from "next-intl";
5
+
6
+ type Props = { message: string };
7
+
8
+ export default function NoRecords({ message }: Props) {
9
+ const t = useTranslations();
10
+ return (
11
+ <Box
12
+ display="flex"
13
+ justifyContent="center"
14
+ alignItems="center"
15
+ height="50vh"
16
+ >
17
+ <H4 color="grey.500">{t(message)}</H4>
18
+ </Box>
19
+ );
20
+ }
@@ -0,0 +1,14 @@
1
+ import createSvgIcon from "@mui/material/utils/createSvgIcon";
2
+
3
+ const Delivery = createSvgIcon(
4
+ <svg fill="currentColor" viewBox="0 0 32 32">
5
+ <path d="M24.0531 1.69349L23.7031 2.33374C23.5704 2.57647 23.3708 2.77603 23.1281 2.90874L22.4878 3.25874C22.4584 3.27482 22.4339 3.29852 22.4167 3.32735C22.3996 3.35619 22.3906 3.38909 22.3906 3.42262C22.3906 3.45614 22.3996 3.48905 22.4167 3.51788C22.4339 3.54671 22.4584 3.57041 22.4878 3.58649L23.1281 3.93649C23.3708 4.0692 23.5704 4.26876 23.7031 4.51149L24.0531 5.15174C24.0691 5.18122 24.0928 5.20583 24.1217 5.22297C24.1506 5.24011 24.1835 5.24916 24.2171 5.24916C24.2506 5.24916 24.2836 5.24011 24.3124 5.22297C24.3413 5.20583 24.365 5.18122 24.3811 5.15174L24.7311 4.51149C24.8639 4.26884 25.0634 4.0693 25.3061 3.93649L25.9463 3.58649C25.9757 3.57041 26.0003 3.54671 26.0174 3.51788C26.0345 3.48905 26.0435 3.45614 26.0435 3.42262C26.0435 3.38909 26.0345 3.35619 26.0174 3.32735C26.0003 3.29852 25.9757 3.27482 25.9463 3.25874L25.3061 2.90874C25.0634 2.77593 24.8639 2.5764 24.7311 2.33374L24.3811 1.69349C24.365 1.66401 24.3413 1.63941 24.3124 1.62226C24.2836 1.60512 24.2506 1.59607 24.2171 1.59607C24.1835 1.59607 24.1506 1.60512 24.1217 1.62226C24.0928 1.63941 24.0691 1.66401 24.0531 1.69349Z" />
6
+ <path d="M27.4868 6.42496L27.2408 6.87496C27.1475 7.04555 27.0072 7.18577 26.8366 7.27896L26.3866 7.52496C26.3659 7.53626 26.3487 7.55292 26.3367 7.57317C26.3247 7.59343 26.3184 7.61654 26.3184 7.64008C26.3184 7.66363 26.3247 7.68674 26.3367 7.70699C26.3487 7.72725 26.3659 7.7439 26.3866 7.75521L26.8366 8.00121C27.0072 8.0944 27.1475 8.23462 27.2408 8.40521L27.4868 8.85521C27.4981 8.87593 27.5147 8.89323 27.535 8.90528C27.5552 8.91733 27.5784 8.9237 27.602 8.9237C27.6255 8.9237 27.6487 8.91733 27.6689 8.90528C27.6892 8.89323 27.7058 8.87593 27.7171 8.85521L27.9631 8.40521C28.0562 8.23422 28.1964 8.09357 28.3671 7.99996L28.8171 7.75396C28.8377 7.74265 28.855 7.726 28.867 7.70574C28.879 7.68549 28.8853 7.66238 28.8853 7.63883C28.8853 7.61529 28.879 7.59218 28.867 7.57192C28.855 7.55167 28.8377 7.53501 28.8171 7.52371L28.3671 7.27771C28.1966 7.18443 28.0564 7.04423 27.9631 6.87371L27.7171 6.42371C27.7057 6.40305 27.689 6.38584 27.6687 6.37389C27.6483 6.36195 27.6252 6.35571 27.6016 6.35584C27.578 6.35596 27.5549 6.36245 27.5347 6.37462C27.5145 6.38678 27.498 6.40417 27.4868 6.42496Z" />
7
+ <path d="M22.72 27.117C22.2155 26.7778 21.395 26.9463 20.616 27.144C20.3484 27.2145 20.0852 27.3007 19.8278 27.402C19.3339 27.6067 18.806 27.717 18.2715 27.727C17.6673 27.717 16.961 27.5575 16.5123 27.8078C16.4668 27.8331 16.4165 27.8487 16.3647 27.8536C16.3129 27.8584 16.2606 27.8524 16.2112 27.8359C16.1618 27.8195 16.1164 27.7929 16.0779 27.7579C16.0393 27.723 16.0084 27.6803 15.9873 27.6328C15.951 27.541 15.9505 27.439 15.9859 27.3469C16.0214 27.2548 16.0901 27.1794 16.1785 27.1355C16.8433 26.7855 17.6623 27.0173 18.3395 27.1148C18.742 27.1795 19.1513 27.1907 19.5568 27.1483C19.6799 27.1304 19.7915 27.066 19.8685 26.9684C19.9456 26.8707 19.9823 26.7472 19.971 26.6233C19.9497 26.5028 19.8999 26.3892 19.8257 26.2919C19.7515 26.1946 19.6551 26.1165 19.5445 26.064C19.1475 25.8553 17.709 25.464 16.7735 25.273C15.285 24.9739 13.739 25.1859 12.386 25.8748C11.6408 26.2278 9.50876 27.6795 8.98101 28.504C8.90689 28.6092 8.8747 28.7382 8.89076 28.8658C8.94426 29.3465 10.3875 30.7326 10.8303 30.8761C10.9111 30.9062 10.9981 30.9159 11.0836 30.9044C11.1692 30.8929 11.2505 30.8605 11.3205 30.8101C11.5873 30.6386 12.174 30.0625 12.765 29.855C13.8595 29.47 15.6748 29.8025 16.5585 29.7815C17.8585 29.7503 22.201 28.6373 22.8718 28.0315C23.1388 27.7913 23.0415 27.333 22.72 27.117Z" />
8
+ <path d="M13.1345 8.16596L13.8048 5.48721H17.1298L17.799 8.16596H24.5925L21.679 5.69996C21.5161 5.56197 21.3095 5.48623 21.096 5.48621H9.8383C9.62479 5.48623 9.41822 5.56197 9.2553 5.69996L6.3418 8.16596H13.1345Z" />
9
+ <path d="M17.8989 8.91602V14.55C17.899 14.6265 17.8796 14.7017 17.8426 14.7686C17.8056 14.8355 17.7523 14.8919 17.6875 14.9325C17.6228 14.9731 17.5488 14.9967 17.4725 15.0009C17.3961 15.0051 17.32 14.9898 17.2512 14.9565L15.7702 14.13C15.6883 14.0597 15.584 14.0211 15.476 14.0211C15.3681 14.0211 15.2638 14.0597 15.1819 14.13L13.6854 14.9598C13.6166 14.9926 13.5406 15.0075 13.4645 15.003C13.3884 14.9986 13.3146 14.9749 13.2501 14.9342C13.1856 14.8936 13.1325 14.8373 13.0956 14.7705C13.0588 14.7038 13.0395 14.6288 13.0394 14.5525V8.91602H5.95117V22.7145C5.95117 22.9143 6.03052 23.1059 6.17178 23.2472C6.31303 23.3885 6.50462 23.468 6.70442 23.468H24.2347C24.4345 23.468 24.6262 23.3886 24.7675 23.2473C24.9088 23.106 24.9882 22.9144 24.9882 22.7145V8.91602H17.8989Z" />
10
+ </svg>,
11
+ "Delivery",
12
+ );
13
+
14
+ export default Delivery;
@@ -0,0 +1,13 @@
1
+ import createSvgIcon from "@mui/material/utils/createSvgIcon";
2
+
3
+ const PackageBox = createSvgIcon(
4
+ <svg fill="currentColor" viewBox="0 0 32 32">
5
+ <path d="M7.40692 11.3465L20.5779 4.304L16.0004 2L2.41992 8.836L7.40692 11.3465Z" />
6
+ <path d="M24.5773 6.3175L11.4062 13.36L15.9998 15.6725L29.5803 8.83601L24.5773 6.3175Z" />
7
+ <path d="M15.625 16.3275L11 13.9995V19.1145L9 17.101H7V11.986L2 9.46948V23.1415L15.625 30V16.3275Z" />
8
+ <path d="M16.375 16.3275V30L30 23.1415V9.46948L16.375 16.3275Z" />
9
+ </svg>,
10
+ "PackageBox",
11
+ );
12
+
13
+ export default PackageBox;
@@ -0,0 +1,14 @@
1
+ import createSvgIcon from "@mui/material/utils/createSvgIcon";
2
+
3
+ const TruckFilled = createSvgIcon(
4
+ <svg fill="currentColor" viewBox="0 0 36 36">
5
+ <path
6
+ fillRule="evenodd"
7
+ clipRule="evenodd"
8
+ d="M5.1302 7.5H22.4118C22.8992 7.5 23.2941 7.89504 23.2941 8.38236V10.1471H28.322C28.8735 10.1471 29.3583 10.5127 29.5098 11.043L31.0223 16.3368C31.1997 16.368 31.3647 16.4529 31.4937 16.5819L32.7416 17.8298C32.907 17.9952 33 18.2198 33 18.4538V24.2648C33 24.752 32.6049 25.1471 32.1177 25.1471H29.4707C29.4707 27.0963 27.8904 28.6764 25.9412 28.6764C23.9919 28.6764 22.4118 27.0963 22.4118 25.1471H13.5882C13.5882 27.0963 12.0081 28.6764 10.0588 28.6764C8.10959 28.6764 6.52941 27.0963 6.52941 25.1471H3.88236C3.39504 25.1471 3 24.752 3 24.2648V9.63019C3 9.39618 3.09296 9.17175 3.25844 9.00627L4.50627 7.75843C4.67175 7.59295 4.89618 7.5 5.1302 7.5ZM29.1833 16.3236L27.9227 11.9118H23.2941V15.4412C23.2941 15.9285 23.6892 16.3236 24.1764 16.3236H29.1833ZM25.9412 23.3823C26.9159 23.3823 27.7059 24.1725 27.7059 25.1471C27.7059 26.1218 26.9159 26.9118 25.9412 26.9118C24.9666 26.9118 24.1764 26.1218 24.1764 25.1471C24.1764 24.1725 24.9666 23.3823 25.9412 23.3823ZM8.29412 25.1471C8.29412 26.1218 9.08421 26.9118 10.0588 26.9118C11.0334 26.9118 11.8235 26.1218 11.8235 25.1471C11.8235 24.1725 11.0334 23.3823 10.0588 23.3823C9.08421 23.3823 8.29412 24.1725 8.29412 25.1471Z"
9
+ />
10
+ </svg>,
11
+ "TruckFilled",
12
+ );
13
+
14
+ export default TruckFilled;