@meeovi/layer-commerce 1.0.11 → 1.0.14

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 (360) hide show
  1. package/app/cart/useCart.ts +1 -0
  2. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +39 -0
  3. package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +15 -0
  4. package/app/components/catalog/product/ProductAccordion/types.ts +5 -0
  5. package/app/components/catalog/product/ProductProperties/ProductProperties.vue +50 -0
  6. package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +15 -0
  7. package/app/components/catalog/product/ProductProperties/types.ts +5 -0
  8. package/app/components/catalog/product/ProductSlider/ProductSlider.vue +28 -0
  9. package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +14 -0
  10. package/app/components/catalog/product/ProductSlider/types.ts +7 -0
  11. package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +12 -0
  12. package/app/components/catalog/product/RecommendedProducts/types.ts +5 -0
  13. package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +11 -0
  14. package/app/components/catalog/product/add-attribute.vue +54 -0
  15. package/app/components/catalog/product/add-product-type.vue +54 -0
  16. package/app/components/catalog/product/add-product.vue +53 -0
  17. package/app/components/catalog/product/add-showcase.vue +52 -0
  18. package/app/components/catalog/product/add-station.vue +54 -0
  19. package/app/components/catalog/product/bestsellers.vue +57 -0
  20. package/app/components/catalog/product/bidding.vue +93 -0
  21. package/app/components/catalog/product/colorOptions.vue +58 -0
  22. package/app/components/catalog/product/deals.vue +46 -0
  23. package/app/components/catalog/product/exclusives.vue +56 -0
  24. package/app/components/catalog/product/featuredproducts.vue +57 -0
  25. package/app/components/catalog/product/giftCard.vue +63 -0
  26. package/app/components/catalog/product/latestproducts.vue +46 -0
  27. package/app/components/catalog/product/productCard.vue +105 -0
  28. package/app/components/catalog/product/productCompare.vue +60 -0
  29. package/app/components/catalog/product/productCompareTable.vue +441 -0
  30. package/app/components/catalog/product/productDetails.vue +126 -0
  31. package/app/components/catalog/product/productFaqs.vue +17 -0
  32. package/app/components/catalog/product/productGallery.vue +16 -0
  33. package/app/components/catalog/product/productQty.vue +54 -0
  34. package/app/components/catalog/product/productReviews.vue +56 -0
  35. package/app/components/catalog/product/productSpecs.vue +116 -0
  36. package/app/components/catalog/product/radiostation.vue +36 -0
  37. package/app/components/catalog/product/recentlyviewed.vue +43 -0
  38. package/app/components/catalog/product/relatedbrands.vue +54 -0
  39. package/app/components/catalog/product/relatedproducts.vue +43 -0
  40. package/app/components/catalog/product/relatedstations.vue +40 -0
  41. package/app/components/catalog/product/shippingOptions.vue +41 -0
  42. package/app/components/catalog/product/sizeOptions.vue +42 -0
  43. package/app/components/catalog/product/update-attribute-set.vue +209 -0
  44. package/app/components/catalog/product/update-attribute.vue +118 -0
  45. package/app/components/catalog/product/update-product.vue +372 -0
  46. package/app/components/catalog/product/update-showcase.vue +153 -0
  47. package/app/components/catalog/shops/relatedstores.vue +37 -0
  48. package/app/components/catalog/shops/restaurant.vue +66 -0
  49. package/app/components/catalog/shops/stores.vue +44 -0
  50. package/app/components/catalog/vendor/README.md +3 -0
  51. package/app/components/catalog/vendor/blocks/biggestcustomers.vue +33 -0
  52. package/app/components/catalog/vendor/blocks/lowestselling.vue +33 -0
  53. package/app/components/catalog/vendor/blocks/topcategories.vue +33 -0
  54. package/app/components/catalog/vendor/blocks/topproducts.vue +27 -0
  55. package/app/components/catalog/vendor/pages/attributes.vue +43 -0
  56. package/app/components/catalog/vendor/pages/commissions.vue +43 -0
  57. package/app/components/catalog/vendor/pages/crm.vue +67 -0
  58. package/app/components/catalog/vendor/pages/dashboard.vue +46 -0
  59. package/app/components/catalog/vendor/pages/emails.vue +43 -0
  60. package/app/components/catalog/vendor/pages/enquiries.vue +43 -0
  61. package/app/components/catalog/vendor/pages/invoices.vue +43 -0
  62. package/app/components/catalog/vendor/pages/orders.vue +68 -0
  63. package/app/components/catalog/vendor/pages/products.vue +55 -0
  64. package/app/components/catalog/vendor/pages/reviews.vue +48 -0
  65. package/app/components/catalog/vendor/pages/shipments.vue +43 -0
  66. package/app/components/catalog/vendor/pages/stores.vue +43 -0
  67. package/app/components/categories/chart/[id].vue +200 -0
  68. package/app/components/categories/chart/add-chart.vue +142 -0
  69. package/app/components/categories/chart/chart.vue +82 -0
  70. package/app/components/categories/chart/monthlyChart.vue +46 -0
  71. package/app/components/categories/chart/weeklyChart.vue +46 -0
  72. package/app/components/categories/chart/yearlyChart.vue +46 -0
  73. package/app/components/categories/charts.vue +118 -0
  74. package/app/components/categories/deals.vue +101 -0
  75. package/app/components/categories/eats.vue +49 -0
  76. package/app/components/categories/restaurants.vue +26 -0
  77. package/app/components/categories/station/[id].vue +72 -0
  78. package/app/components/categories/stations.vue +124 -0
  79. package/app/components/categories/time/time.vue +63 -0
  80. package/app/components/categories/travel.vue +75 -0
  81. package/app/components/categories/weather/weather.vue +44 -0
  82. package/app/components/content/blocks/breadcrumbs.vue +0 -0
  83. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  84. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  85. package/app/components/content/blocks/videoproduct.vue +9 -0
  86. package/app/components/content/pages/checkout.vue +118 -0
  87. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  88. package/app/components/content/pages/pickup-locations.vue +238 -0
  89. package/app/components/content/pages/showcases.vue +90 -0
  90. package/app/components/content/pages/success.vue +60 -0
  91. package/app/components/marketing/add-brand.vue +54 -0
  92. package/app/components/marketing/add-incentive.vue +54 -0
  93. package/app/components/marketing/promotions/giftcards.vue +102 -0
  94. package/app/components/marketing/promotions/subscriptions.vue +121 -0
  95. package/app/components/marketing/update-incentive.vue +326 -0
  96. package/app/components/menus/lowernav.vue +78 -0
  97. package/app/components/partials/LocaleSelector.vue +24 -0
  98. package/app/components/partials/ShoppingCart.vue +128 -0
  99. package/app/components/partials/StripePayment.vue +149 -0
  100. package/app/components/partials/addToCartBtn.vue +40 -0
  101. package/app/components/partials/cartItem.vue +124 -0
  102. package/app/components/partials/checkoutButton.vue +44 -0
  103. package/app/components/partials/compareBtn.vue +68 -0
  104. package/app/components/partials/ratings.vue +13 -0
  105. package/app/components/partials/store/CurrencySelector.vue +133 -0
  106. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  107. package/app/components/placeholders/Comments.vue +15 -0
  108. package/app/components/placeholders/CreateListBtn.vue +7 -0
  109. package/app/components/placeholders/Event.vue +9 -0
  110. package/app/components/placeholders/ListShowcases.vue +9 -0
  111. package/app/components/placeholders/Short.vue +9 -0
  112. package/app/components/placeholders/Space.vue +9 -0
  113. package/app/components/placeholders/Tag.vue +7 -0
  114. package/app/components/related/brandCard.vue +41 -0
  115. package/app/components/related/incentiveCard.vue +44 -0
  116. package/app/components/related/invoiceCard.vue +43 -0
  117. package/app/components/related/orderCard.vue +43 -0
  118. package/app/components/related/relatedproducts.vue +17 -0
  119. package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
  120. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  121. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  122. package/app/components/sales/CheckoutAddress/types.ts +16 -0
  123. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
  124. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  125. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  126. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  127. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  128. package/app/components/sales/OrderSummary/types.ts +5 -0
  129. package/app/components/sales/incentives.vue +223 -0
  130. package/app/components/sales/invoices.vue +107 -0
  131. package/app/components/sales/orders.vue +378 -0
  132. package/app/components/sales/shipments.vue +65 -0
  133. package/app/components/sales/transactions.vue +109 -0
  134. package/app/components/shop/add-shop.vue +54 -0
  135. package/app/components/shop/cart/cartItem.vue +182 -0
  136. package/app/components/shop/cart/checkout.vue +415 -0
  137. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  138. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  139. package/app/components/shop/checkout/addressBilling.vue +263 -0
  140. package/app/components/shop/checkout/addressShipping.vue +175 -0
  141. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  142. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  143. package/app/composables/_types.ts +18 -0
  144. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  145. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  146. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  147. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  148. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  149. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  150. package/app/composables/cart/registry.ts +20 -0
  151. package/app/composables/cart/types.ts +18 -0
  152. package/app/composables/cart/useCart.ts +15 -0
  153. package/app/composables/config.ts +19 -0
  154. package/app/composables/defs/apiDefinitions.ts +55 -0
  155. package/app/composables/defs/extension.feature +40 -0
  156. package/app/composables/defs/extension.mocks.ts +39 -0
  157. package/app/composables/defs/extension.test.ts +280 -0
  158. package/app/composables/defs/extension.ts +236 -0
  159. package/app/composables/defs/index.ts +3 -0
  160. package/app/composables/defs/types.ts +136 -0
  161. package/app/composables/domain/cart.ts +0 -0
  162. package/app/composables/domain/category.ts +0 -0
  163. package/app/composables/domain/order.ts +0 -0
  164. package/app/composables/domain/price.ts +0 -0
  165. package/app/composables/domain/product.ts +10 -0
  166. package/app/composables/domain/reward.ts +0 -0
  167. package/app/composables/domain/transactions.ts +0 -0
  168. package/app/composables/featured-products.ts +20 -0
  169. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  170. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  171. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  172. package/app/composables/helpers/index.ts +1 -0
  173. package/app/composables/index.ts +6 -0
  174. package/app/composables/methods/auth.ts +83 -0
  175. package/app/composables/methods/cart.ts +119 -0
  176. package/app/composables/methods/category.ts +27 -0
  177. package/app/composables/methods/checkout.ts +54 -0
  178. package/app/composables/methods/customer.ts +52 -0
  179. package/app/composables/methods/helpers.ts +5 -0
  180. package/app/composables/methods/index.ts +75 -0
  181. package/app/composables/methods/order.ts +39 -0
  182. package/app/composables/methods/product.ts +95 -0
  183. package/app/composables/methods/settings.ts +16 -0
  184. package/app/composables/models/cart.ts +95 -0
  185. package/app/composables/models/category.ts +13 -0
  186. package/app/composables/models/checkout.ts +17 -0
  187. package/app/composables/models/customer.ts +16 -0
  188. package/app/composables/models/facets.ts +25 -0
  189. package/app/composables/models/index.ts +94 -0
  190. package/app/composables/models/order.ts +43 -0
  191. package/app/composables/models/product.ts +73 -0
  192. package/app/composables/models/shared.ts +75 -0
  193. package/app/composables/orders.ts +69 -0
  194. package/app/composables/products/registry.ts +20 -0
  195. package/app/composables/products/types.ts +13 -0
  196. package/app/composables/products/useEvents.ts +0 -0
  197. package/app/composables/products/useGiftCards.ts +0 -0
  198. package/app/composables/products/useProducts.ts +12 -0
  199. package/app/composables/products/useSubscriptions.ts +0 -0
  200. package/app/composables/products.ts +30 -0
  201. package/app/composables/registry.ts +21 -0
  202. package/app/composables/useAuth.ts +43 -0
  203. package/app/composables/useBreakpoints/index.ts +1 -0
  204. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  205. package/app/composables/useCache.ts +38 -0
  206. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  207. package/app/composables/useCart/index.ts +1 -0
  208. package/app/composables/useCart/types.ts +17 -0
  209. package/app/composables/useCart/useCart.ts +46 -0
  210. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  211. package/app/composables/useCartShippingMethods/index.ts +1 -0
  212. package/app/composables/useCartShippingMethods/types.ts +17 -0
  213. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  214. package/app/composables/useCatalog.ts +64 -0
  215. package/app/composables/useContent.ts +57 -0
  216. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  217. package/app/composables/useCustomer/index.ts +2 -0
  218. package/app/composables/useCustomer/types.ts +17 -0
  219. package/app/composables/useCustomer/useCustomer.ts +40 -0
  220. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  221. package/app/composables/useCustomerAddress/index.ts +2 -0
  222. package/app/composables/useCustomerAddress/types.ts +17 -0
  223. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  224. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  225. package/app/composables/useCustomerOrder/adress.ts +10 -0
  226. package/app/composables/useCustomerOrder/index.ts +2 -0
  227. package/app/composables/useCustomerOrder/product.ts +37 -0
  228. package/app/composables/useCustomerOrder/types.ts +40 -0
  229. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  230. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  231. package/app/composables/useCustomerOrders/index.ts +2 -0
  232. package/app/composables/useCustomerOrders/types.ts +20 -0
  233. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  234. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  235. package/app/composables/useCustomerReturns/index.ts +2 -0
  236. package/app/composables/useCustomerReturns/types.ts +17 -0
  237. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  238. package/app/composables/useHandleError/index.ts +1 -0
  239. package/app/composables/useHandleError/types.ts +11 -0
  240. package/app/composables/useHandleError/useHandleError.ts +27 -0
  241. package/app/composables/useInventory.ts +21 -0
  242. package/app/composables/useLoading.ts +21 -0
  243. package/app/composables/useNotification.ts +21 -0
  244. package/app/composables/usePageTitle.ts +16 -0
  245. package/app/composables/useProduct/index.ts +2 -0
  246. package/app/composables/useProduct/types.ts +17 -0
  247. package/app/composables/useProduct/useProduct.ts +42 -0
  248. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  249. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  250. package/app/composables/useProductAttribute/index.ts +1 -0
  251. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  252. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  253. package/app/composables/useProductRecommended/index.ts +1 -0
  254. package/app/composables/useProductRecommended/types.ts +17 -0
  255. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  256. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  257. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  258. package/app/composables/useProductReviews/index.ts +2 -0
  259. package/app/composables/useProductReviews/types.ts +17 -0
  260. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  261. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  262. package/app/composables/useProducts/types.ts +22 -0
  263. package/app/composables/useProducts/useProducts.ts +41 -0
  264. package/app/composables/useTax.ts +17 -0
  265. package/app/composables/validationRules/index.ts +1 -0
  266. package/app/composables/validationRules/password.feature +67 -0
  267. package/app/composables/validationRules/password.test.ts +89 -0
  268. package/app/composables/validationRules/password.ts +25 -0
  269. package/app/composables/vendors/index.ts +0 -0
  270. package/app/composables/vendors/registry.ts +0 -0
  271. package/app/composables/vendors/useAffiliates.ts +0 -0
  272. package/app/composables/vendors/useCommission.ts +0 -0
  273. package/app/modules/vue-head/composables/useHead.ts +22 -0
  274. package/app/pages/brand/[...slug].vue +92 -0
  275. package/app/pages/brands.vue +90 -0
  276. package/app/pages/cart.vue +142 -0
  277. package/app/pages/compare.vue +166 -0
  278. package/app/pages/departments/[...slug].vue +385 -0
  279. package/app/pages/departments/category/[...slug].vue +135 -0
  280. package/app/pages/incentive/[...id].vue +66 -0
  281. package/app/pages/invoice/[id].vue +309 -0
  282. package/app/pages/order/[id].vue +327 -0
  283. package/app/pages/product/[...id].vue +309 -0
  284. package/app/pages/product/showcases/index.vue +86 -0
  285. package/app/pages/shipment/[...id].vue +176 -0
  286. package/app/pages/shop/[...slug].vue +158 -0
  287. package/app/pages/shops.vue +76 -0
  288. package/app/pages/subscription/[...id].vue +147 -0
  289. package/app/pages/transaction/[...id].vue +74 -0
  290. package/app/services/magento.ts +49 -0
  291. package/app/stores/cart.ts +218 -0
  292. package/app/stores/cartStore.ts +316 -0
  293. package/app/stores/checkout.ts +19 -0
  294. package/app/stores/compare.ts +65 -0
  295. package/app/stores/currency.js +29 -0
  296. package/app/stores/digital-products.js +11 -0
  297. package/app/stores/index.js +0 -0
  298. package/app/stores/orders.ts +161 -0
  299. package/app/stores/product.ts +26 -0
  300. package/app/stores/productList.ts +0 -0
  301. package/app/stores/productListInfo.ts +0 -0
  302. package/app/stores/products.ts +116 -0
  303. package/app/stores/recentlyViewedProducts.ts +0 -0
  304. package/app/stores/review.ts +25 -0
  305. package/app/stores/storeInPickUp.ts +22 -0
  306. package/app/stores/user.ts +20 -0
  307. package/app/stores/wishlist.ts +19 -0
  308. package/app/types/Order.type.ts +181 -0
  309. package/app/types/checkout.ts +6 -0
  310. package/app/types/imports.d.ts +28 -0
  311. package/app/types/index.ts +291 -0
  312. package/app/types/nuxt-imports.d.ts +5 -0
  313. package/app/types/product-state.ts +8 -0
  314. package/app/types/product.ts +22 -0
  315. package/app/types/review-state.ts +7 -0
  316. package/app/types/review.ts +2 -0
  317. package/app/types/storeInPickUp.ts +2 -0
  318. package/app/types/storePickup-state.ts +5 -0
  319. package/app/types/vue-globals.d.ts +9 -0
  320. package/app/types/wishlist-state.ts +5 -0
  321. package/app/types/wishlist.ts +2 -0
  322. package/app/utils/client.ts +26 -0
  323. package/app/utils/countryList.ts +14 -0
  324. package/app/utils/currency.js +56 -0
  325. package/app/utils/errorHandler.ts +16 -0
  326. package/app/utils/glossary.ts +0 -0
  327. package/app/utils/importExport.ts +0 -0
  328. package/app/utils/index.ts +53 -0
  329. package/app/utils/normalizer.ts +23 -0
  330. package/app/utils/normalizers/magento.ts +29 -0
  331. package/app/utils/normalizers/shopify.ts +29 -0
  332. package/app/utils/print.ts +0 -0
  333. package/app/utils/shopThemes.ts +0 -0
  334. package/app/utils/statistics.ts +0 -0
  335. package/app/utils/stock.ts +0 -0
  336. package/app/utils/stripe.ts +16 -0
  337. package/app/utils/taxation.ts +0 -0
  338. package/app/utils/tellFriends.ts +0 -0
  339. package/composables/useAuth.ts +2 -0
  340. package/composables/useCache.ts +2 -0
  341. package/composables/useInventory.ts +2 -0
  342. package/composables/useLoading.ts +2 -0
  343. package/composables/useNotification.ts +2 -0
  344. package/composables/useTax.ts +2 -0
  345. package/graphql/queries-mutations_subscriptions/types/ProductCompare.type.ts +20 -0
  346. package/package.json +5 -12
  347. package/services/magento.ts +2 -0
  348. package/tsconfig.json +36 -0
  349. package/types/checkout.d.ts +6 -0
  350. package/types/checkout.ts +6 -0
  351. package/types/nuxt-imports.d.ts +5 -0
  352. package/types/product.d.ts +5 -0
  353. package/types/product.ts +3 -0
  354. package/types/review.d.ts +1 -0
  355. package/types/review.ts +1 -0
  356. package/types/storeInPickUp.d.ts +1 -0
  357. package/types/storeInPickUp.ts +1 -0
  358. package/types/wishlist.d.ts +1 -0
  359. package/types/wishlist.ts +1 -0
  360. package/utils/errorHandler.ts +2 -0
@@ -0,0 +1,65 @@
1
+ // stores/compare.ts
2
+ import { defineStore } from 'pinia';
3
+ import type {
4
+ ComparableAttribute,
5
+ ComparableItem,
6
+ ComparableProduct,
7
+ CompareList,
8
+ } from '~/graphql/queries-mutations_subscriptions/types/ProductCompare.type';
9
+
10
+ export const useCompareStore = defineStore('compare', {
11
+ state: () => ({
12
+ isLoading: false,
13
+ count: 0,
14
+ attributes: [] as ComparableAttribute[],
15
+ products: [] as ComparableProduct[],
16
+ productSkus: [] as string[],
17
+ items: [] as ComparableItem[]
18
+ }),
19
+
20
+ actions: {
21
+ toggleLoader(isLoading: boolean) {
22
+ this.isLoading = isLoading;
23
+ },
24
+
25
+ setCompareList(payload: CompareList) {
26
+ this.attributes = payload.attributes || [];
27
+ this.products = payload.products || [];
28
+ this.items = payload.items || [];
29
+ },
30
+
31
+ removeComparedProduct(productSku: string) {
32
+ this.products = this.products.filter(product => product.sku !== productSku);
33
+ this.productSkus = this.productSkus.filter(sku => sku !== productSku);
34
+ this.items = this.items.filter(item => item.product.sku !== productSku);
35
+ },
36
+
37
+ clearComparedProducts() {
38
+ this.products = [];
39
+ this.productSkus = [];
40
+ this.items = [];
41
+ this.count = 0;
42
+ },
43
+
44
+ setCompareListSkus(productSkus: string[]) {
45
+ this.productSkus = productSkus;
46
+ },
47
+
48
+ addComparedProductSku(productSku: string) {
49
+ if (!this.productSkus.includes(productSku)) {
50
+ this.productSkus.push(productSku);
51
+ }
52
+ },
53
+
54
+ updateCompareTotals(compareTotals: string) {
55
+ this.count = parseInt(compareTotals, 10); // Convert string to number
56
+ }
57
+ },
58
+
59
+ getters: {
60
+ getCompareCount: (state) => state.count,
61
+ getComparedProducts: (state) => state.products,
62
+ getComparedProductSkus: (state) => state.productSkus,
63
+ getIsLoading: (state) => state.isLoading
64
+ }
65
+ });
@@ -0,0 +1,29 @@
1
+ import { defineStore } from 'pinia'
2
+
3
+ export const useCurrencyStore = defineStore('currency', {
4
+ state: () => ({
5
+ currentCurrency: null,
6
+ exchangeRates: {}
7
+ }),
8
+
9
+ actions: {
10
+ setCurrency(currency) {
11
+ this.currentCurrency = currency
12
+ },
13
+
14
+ setExchangeRates(rates) {
15
+ this.exchangeRates = rates
16
+ },
17
+
18
+ async updateCurrency(currency) {
19
+ this.setCurrency(currency)
20
+ // Here you would typically make an API call to update the user's preference
21
+ // if they are logged in
22
+ }
23
+ },
24
+
25
+ getters: {
26
+ getCurrentCurrency: (state) => state.currentCurrency,
27
+ getExchangeRates: (state) => state.exchangeRates
28
+ }
29
+ })
@@ -0,0 +1,11 @@
1
+ // stores/digital-products.js
2
+ export const useDigitalProducts = defineStore('digital-products', {
3
+ state: () => ({
4
+ downloads: {},
5
+ }),
6
+ actions: {
7
+ downloadProduct(productId) {
8
+ // Download logic
9
+ },
10
+ },
11
+ });
File without changes
@@ -0,0 +1,161 @@
1
+ // stores/orders.ts - Pinia store for order management
2
+ import type { Order, Return, Transaction, Invoice, CreditMemo, OrderFilters } from '~/app/types'
3
+
4
+ export const useOrdersStore = defineStore('orders', () => {
5
+ const orders = ref<Order[]>([])
6
+ const currentOrder = ref<Order | null>(null)
7
+ const returns = ref<Return[]>([])
8
+ const transactions = ref<Transaction[]>([])
9
+ const invoices = ref<Invoice[]>([])
10
+ const creditMemos = ref<CreditMemo[]>([])
11
+ const loading = ref(false)
12
+ const error = ref<string | null>(null)
13
+
14
+ // Import composables
15
+ const { getOrders, getOrderById } = useOrders()
16
+ const { getReturns, createReturn } = useReturns()
17
+ const { getTransactions } = useTransactions()
18
+ const { getInvoices } = useInvoices()
19
+ const { getCreditMemos } = useCreditMemos()
20
+
21
+ const fetchOrders = async (filters: OrderFilters = {}) => {
22
+ loading.value = true
23
+ error.value = null
24
+ try {
25
+ orders.value = await getOrders(filters)
26
+ } catch (err: any) {
27
+ error.value = err.message
28
+ console.error('Error fetching orders:', err)
29
+ } finally {
30
+ loading.value = false
31
+ }
32
+ }
33
+
34
+ const fetchOrder = async (id: string) => {
35
+ loading.value = true
36
+ error.value = null
37
+ try {
38
+ currentOrder.value = await getOrderById(id)
39
+ } catch (err: any) {
40
+ error.value = err.message
41
+ console.error('Error fetching order:', err)
42
+ } finally {
43
+ loading.value = false
44
+ }
45
+ }
46
+
47
+ const fetchReturns = async (options: { search?: string } = {}) => {
48
+ loading.value = true
49
+ error.value = null
50
+ try {
51
+ returns.value = await getReturns(options)
52
+ } catch (err: any) {
53
+ error.value = err.message
54
+ console.error('Error fetching returns:', err)
55
+ } finally {
56
+ loading.value = false
57
+ }
58
+ }
59
+
60
+ const submitReturn = async (returnData: any) => {
61
+ loading.value = true
62
+ error.value = null
63
+ try {
64
+ const newReturn = await createReturn(returnData)
65
+ returns.value.unshift(newReturn)
66
+ return newReturn
67
+ } catch (err: any) {
68
+ error.value = err.message
69
+ console.error('Error submitting return:', err)
70
+ throw err
71
+ } finally {
72
+ loading.value = false
73
+ }
74
+ }
75
+
76
+ const fetchTransactions = async (options: { search?: string } = {}) => {
77
+ loading.value = true
78
+ error.value = null
79
+ try {
80
+ transactions.value = await getTransactions(options)
81
+ } catch (err: any) {
82
+ error.value = err.message
83
+ console.error('Error fetching transactions:', err)
84
+ } finally {
85
+ loading.value = false
86
+ }
87
+ }
88
+
89
+ const fetchInvoices = async (options: { search?: string } = {}) => {
90
+ loading.value = true
91
+ error.value = null
92
+ try {
93
+ invoices.value = await getInvoices(options)
94
+ } catch (err: any) {
95
+ error.value = err.message
96
+ console.error('Error fetching invoices:', err)
97
+ } finally {
98
+ loading.value = false
99
+ }
100
+ }
101
+
102
+ const fetchCreditMemos = async (options: { search?: string } = {}) => {
103
+ loading.value = true
104
+ error.value = null
105
+ try {
106
+ creditMemos.value = await getCreditMemos(options)
107
+ } catch (err: any) {
108
+ error.value = err.message
109
+ console.error('Error fetching credit memos:', err)
110
+ } finally {
111
+ loading.value = false
112
+ }
113
+ }
114
+
115
+ // Computed properties
116
+ const ordersByStatus = computed(() => {
117
+ return orders.value.reduce((acc, order) => {
118
+ acc[order.status] = (acc[order.status] || 0) + 1
119
+ return acc
120
+ }, {} as Record<string, number>)
121
+ })
122
+
123
+ const totalRevenue = computed(() => {
124
+ return orders.value
125
+ .filter(order => !['cancelled', 'refunded'].includes(order.status))
126
+ .reduce((sum, order) => sum + order.total, 0)
127
+ })
128
+
129
+ const averageOrderValue = computed(() => {
130
+ const validOrders = orders.value.filter(order =>
131
+ !['cancelled', 'refunded'].includes(order.status)
132
+ )
133
+ return validOrders.length > 0 ? totalRevenue.value / validOrders.length : 0
134
+ })
135
+
136
+ return {
137
+ // State
138
+ orders: readonly(orders),
139
+ currentOrder: readonly(currentOrder),
140
+ returns: readonly(returns),
141
+ transactions: readonly(transactions),
142
+ invoices: readonly(invoices),
143
+ creditMemos: readonly(creditMemos),
144
+ loading: readonly(loading),
145
+ error: readonly(error),
146
+
147
+ // Computed
148
+ ordersByStatus,
149
+ totalRevenue,
150
+ averageOrderValue,
151
+
152
+ // Actions
153
+ fetchOrders,
154
+ fetchOrder,
155
+ fetchReturns,
156
+ submitReturn,
157
+ fetchTransactions,
158
+ fetchInvoices,
159
+ fetchCreditMemos
160
+ }
161
+ })
@@ -0,0 +1,26 @@
1
+ import { defineStore } from 'pinia';
2
+ import type { Product, ProductState } from '@/types/product';
3
+
4
+ export const useProductStore = defineStore('product', {
5
+ state: (): ProductState => ({
6
+ products: [],
7
+ selectedProduct: null,
8
+ isLoading: false
9
+ }),
10
+ actions: {
11
+ async fetchProducts() {
12
+ this.isLoading = true;
13
+ try {
14
+ const response = await $fetch<Product[]>('/api/products'); // Update API endpoint
15
+ this.products = response;
16
+ } catch (error) {
17
+ console.error('Error fetching products:', error);
18
+ } finally {
19
+ this.isLoading = false;
20
+ }
21
+ },
22
+ selectProduct(product: Product) {
23
+ this.selectedProduct = product;
24
+ }
25
+ }
26
+ });
File without changes
File without changes
@@ -0,0 +1,116 @@
1
+ // stores/products.ts - Pinia store for product management
2
+ import type { Product } from '~/app/types'
3
+ import { defineStore } from 'pinia'
4
+ import { ref, computed, readonly } from 'vue'
5
+ import { useProducts } from '~/app/composables/products'
6
+ import { useFeaturedProducts } from '~/app/composables/featured-products'
7
+
8
+ export const useProductsStore = defineStore('products', () => {
9
+ const products = ref<Product[]>([])
10
+ const featuredProducts = ref<Product[]>([])
11
+ const currentProduct = ref<Product | null>(null)
12
+ const categories = ref([])
13
+ const loading = ref(false)
14
+ const error = ref<string | null>(null)
15
+
16
+ // Import product composables
17
+ const { getProducts, getProductById, getProductsByCategory, searchProducts } = useProducts()
18
+ const { getFeaturedProducts } = useFeaturedProducts()
19
+
20
+ const fetchProducts = async (options: any = {}) => {
21
+ loading.value = true
22
+ error.value = null
23
+ try {
24
+ products.value = await getProducts(options)
25
+ } catch (err: any) {
26
+ error.value = err.message
27
+ console.error('Error fetching products:', err)
28
+ } finally {
29
+ loading.value = false
30
+ }
31
+ }
32
+
33
+ const fetchProduct = async (id: string) => {
34
+ loading.value = true
35
+ error.value = null
36
+ try {
37
+ currentProduct.value = await getProductById(id)
38
+ } catch (err: any) {
39
+ error.value = err.message
40
+ console.error('Error fetching product:', err)
41
+ } finally {
42
+ loading.value = false
43
+ }
44
+ }
45
+
46
+ const fetchFeaturedProducts = async (options: any = {}) => {
47
+ loading.value = true
48
+ error.value = null
49
+ try {
50
+ featuredProducts.value = await getFeaturedProducts(options)
51
+ } catch (err: any) {
52
+ error.value = err.message
53
+ console.error('Error fetching featured products:', err)
54
+ } finally {
55
+ loading.value = false
56
+ }
57
+ }
58
+
59
+ const fetchProductsByCategory = async (categoryId: string, options: any = {}) => {
60
+ loading.value = true
61
+ error.value = null
62
+ try {
63
+ products.value = await getProductsByCategory(categoryId, options)
64
+ } catch (err: any) {
65
+ error.value = err.message
66
+ console.error('Error fetching products by category:', err)
67
+ } finally {
68
+ loading.value = false
69
+ }
70
+ }
71
+
72
+ const searchForProducts = async (query: string, options: any = {}) => {
73
+ loading.value = true
74
+ error.value = null
75
+ try {
76
+ products.value = await searchProducts(query, options)
77
+ } catch (err: any) {
78
+ error.value = err.message
79
+ console.error('Error searching products:', err)
80
+ } finally {
81
+ loading.value = false
82
+ }
83
+ }
84
+
85
+ // Computed properties
86
+ const productsOnSale = computed(() => {
87
+ return products.value.filter(product =>
88
+ product.sale_price && product.sale_price < product.price
89
+ )
90
+ })
91
+
92
+ const productCount = computed(() => {
93
+ return products.value.length
94
+ })
95
+
96
+ return {
97
+ // State
98
+ products: readonly(products),
99
+ featuredProducts: readonly(featuredProducts),
100
+ currentProduct: readonly(currentProduct),
101
+ categories: readonly(categories),
102
+ loading: readonly(loading),
103
+ error: readonly(error),
104
+
105
+ // Computed
106
+ productsOnSale,
107
+ productCount,
108
+
109
+ // Actions
110
+ fetchProducts,
111
+ fetchProduct,
112
+ fetchFeaturedProducts,
113
+ fetchProductsByCategory,
114
+ searchForProducts
115
+ }
116
+ })
File without changes
@@ -0,0 +1,25 @@
1
+ import { defineStore } from 'pinia';
2
+ import type { Review, ReviewState } from '@/types/review';
3
+
4
+ export const useReviewStore = defineStore('review', {
5
+ state: (): ReviewState => ({
6
+ reviews: [],
7
+ isLoading: false
8
+ }),
9
+ actions: {
10
+ async fetchReviews(productId: string) {
11
+ this.isLoading = true;
12
+ try {
13
+ const response = await $fetch<Review[]>(`/api/reviews?productId=${productId}`);
14
+ this.reviews = response;
15
+ } catch (error) {
16
+ console.error('Error fetching reviews:', error);
17
+ } finally {
18
+ this.isLoading = false;
19
+ }
20
+ },
21
+ addReview(review: Review) {
22
+ this.reviews.push(review);
23
+ }
24
+ }
25
+ });
@@ -0,0 +1,22 @@
1
+ import { defineStore } from 'pinia';
2
+ import type { StorePickupState } from '@/types/storeInPickUp';
3
+
4
+ export const useStoreInPickupStore = defineStore('storeInPickUp', {
5
+ state: (): StorePickupState => ({
6
+ selectedStoreId: null,
7
+ stores: []
8
+ }),
9
+ actions: {
10
+ setSelectedStore(storeId: string) {
11
+ this.selectedStoreId = storeId;
12
+ },
13
+ async fetchStores() {
14
+ try {
15
+ const response = await $fetch('/api/stores');
16
+ this.stores = response;
17
+ } catch (error) {
18
+ console.error('Error fetching stores:', error);
19
+ }
20
+ }
21
+ }
22
+ });
@@ -0,0 +1,20 @@
1
+ import { defineStore } from 'pinia';
2
+ import { ref } from 'vue';
3
+
4
+ export const useUserStore = defineStore('user', () => {
5
+ const user = ref<any>({});
6
+
7
+ function setUser(newUser: any) {
8
+ user.value = newUser;
9
+ }
10
+
11
+ function clearUser() {
12
+ user.value = {};
13
+ }
14
+
15
+ return {
16
+ user,
17
+ setUser,
18
+ clearUser,
19
+ };
20
+ });
@@ -0,0 +1,19 @@
1
+ import { defineStore } from 'pinia';
2
+ import type { WishlistState } from '@/types/wishlist';
3
+
4
+ export const useWishlistStore = defineStore('wishlist', {
5
+ state: (): WishlistState => ({
6
+ items: [],
7
+ isLoading: false
8
+ }),
9
+ actions: {
10
+ addToWishlist(productId: string) {
11
+ if (!this.items.includes(productId)) {
12
+ this.items.push(productId);
13
+ }
14
+ },
15
+ removeFromWishlist(productId: string) {
16
+ this.items = this.items.filter(id => id !== productId);
17
+ }
18
+ }
19
+ });
@@ -0,0 +1,181 @@
1
+ // Order-specific types for the commerce layer
2
+ export interface Order {
3
+ id: string
4
+ order_number: string
5
+ customer_id: string
6
+ company_id?: string
7
+ status: OrderStatusType
8
+ order_type?: 'standard' | 'purchase_order' | 'subscription'
9
+
10
+ // Financial details
11
+ subtotal: number
12
+ tax_amount: number
13
+ shipping_amount: number
14
+ discount_amount: number
15
+ total: number
16
+ currency: string
17
+
18
+ // Customer information
19
+ customer_name: string
20
+ customer_email: string
21
+ customer_phone?: string
22
+
23
+ // Order items
24
+ order_items: OrderItem[]
25
+
26
+ // Addresses
27
+ shipping_address?: Address
28
+ billing_address?: Address
29
+
30
+ // Coupon/discount information
31
+ coupon_code?: string
32
+ coupon_id?: string
33
+ reward_points_used?: number
34
+ reward_discount_amount?: number
35
+
36
+ // Purchase order details (B2B)
37
+ po_number?: string
38
+ po_reference?: string
39
+
40
+ // Timestamps
41
+ created_at: string
42
+ updated_at: string
43
+ shipped_at?: string
44
+ delivered_at?: string
45
+ cancelled_at?: string
46
+ }
47
+
48
+ export interface OrderItem {
49
+ id: string
50
+ order_id: string
51
+ product_id: string
52
+ variant_id?: string
53
+ product_name: string
54
+ product_sku: string
55
+ quantity: number
56
+ price: number
57
+ total: number
58
+ product?: Product
59
+ variant?: ProductVariant
60
+ }
61
+
62
+ export interface Address {
63
+ id?: string
64
+ type?: 'shipping' | 'billing'
65
+ first_name: string
66
+ last_name: string
67
+ company?: string
68
+ street: string
69
+ street_2?: string
70
+ city: string
71
+ state: string
72
+ postal_code: string
73
+ country: string
74
+ phone?: string
75
+ }
76
+
77
+ export interface Product {
78
+ id: string
79
+ name: string
80
+ sku: string
81
+ price: number
82
+ sale_price?: number
83
+ description?: string
84
+ images?: ProductImage[]
85
+ inventory?: ProductInventory
86
+ }
87
+
88
+ export interface ProductVariant {
89
+ id: string
90
+ product_id: string
91
+ name: string
92
+ sku: string
93
+ price: number
94
+ attributes: Record<string, any>
95
+ }
96
+
97
+ export interface ProductImage {
98
+ id: string
99
+ url: string
100
+ alt_text?: string
101
+ sort_order?: number
102
+ }
103
+
104
+ export interface ProductInventory {
105
+ id: string
106
+ product_id: string
107
+ quantity: number
108
+ reserved_quantity?: number
109
+ available_quantity?: number
110
+ }
111
+
112
+ export type OrderStatusType =
113
+ | 'draft'
114
+ | 'pending'
115
+ | 'processing'
116
+ | 'shipped'
117
+ | 'delivered'
118
+ | 'cancelled'
119
+ | 'refunded'
120
+ | 'on_hold'
121
+
122
+ export interface OrderStatus {
123
+ status: 'success' | 'error' | 'partial'
124
+ message?: string
125
+ quantityAvailable?: number
126
+ }
127
+
128
+ export interface OrderMutationResult {
129
+ status: 'success' | 'error' | 'partial'
130
+ message?: string
131
+ order?: Order
132
+ quantityAvailable?: number
133
+ }
134
+
135
+ // Legacy types for backward compatibility
136
+ export interface ActiveOrder extends Order {}
137
+
138
+ // Order creation/update payloads
139
+ export interface CreateOrderPayload {
140
+ customer_id?: string
141
+ company_id?: string
142
+ order_type?: 'standard' | 'purchase_order' | 'subscription'
143
+ shipping_address?: Partial<Address>
144
+ billing_address?: Partial<Address>
145
+ po_number?: string
146
+ notes?: string
147
+ }
148
+
149
+ export interface UpdateOrderPayload {
150
+ status?: OrderStatusType
151
+ shipping_address?: Partial<Address>
152
+ billing_address?: Partial<Address>
153
+ notes?: string
154
+ tracking_number?: string
155
+ }
156
+
157
+ // Order filters for queries
158
+ export interface OrderFilters {
159
+ status?: OrderStatusType | OrderStatusType[]
160
+ customer_id?: string
161
+ company_id?: string
162
+ order_type?: string
163
+ date_from?: string
164
+ date_to?: string
165
+ search?: string
166
+ limit?: number
167
+ page?: number
168
+ }
169
+
170
+ // Order statistics
171
+ export interface OrderStats {
172
+ total_orders: number
173
+ total_revenue: number
174
+ average_order_value: number
175
+ orders_by_status: Record<OrderStatusType, number>
176
+ revenue_by_period: Array<{
177
+ period: string
178
+ revenue: number
179
+ orders: number
180
+ }>
181
+ }
@@ -0,0 +1,6 @@
1
+ export interface CheckoutState {
2
+ shippingAddress: string | null
3
+ paymentMethod: string | null
4
+ orderId: string
5
+ isLoading: boolean
6
+ }