@meeovi/layer-commerce 1.0.10 → 1.0.13

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 (324) hide show
  1. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +39 -0
  2. package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +15 -0
  3. package/app/components/catalog/product/ProductAccordion/types.ts +5 -0
  4. package/app/components/catalog/product/ProductProperties/ProductProperties.vue +50 -0
  5. package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +15 -0
  6. package/app/components/catalog/product/ProductProperties/types.ts +5 -0
  7. package/app/components/catalog/product/ProductSlider/ProductSlider.vue +28 -0
  8. package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +14 -0
  9. package/app/components/catalog/product/ProductSlider/types.ts +7 -0
  10. package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +12 -0
  11. package/app/components/catalog/product/RecommendedProducts/types.ts +5 -0
  12. package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +11 -0
  13. package/app/components/catalog/product/add-attribute.vue +54 -0
  14. package/app/components/catalog/product/add-product-type.vue +54 -0
  15. package/app/components/catalog/product/add-product.vue +53 -0
  16. package/app/components/catalog/product/add-showcase.vue +52 -0
  17. package/app/components/catalog/product/add-station.vue +54 -0
  18. package/app/components/catalog/product/bestsellers.vue +57 -0
  19. package/app/components/catalog/product/bidding.vue +93 -0
  20. package/app/components/catalog/product/colorOptions.vue +58 -0
  21. package/app/components/catalog/product/deals.vue +46 -0
  22. package/app/components/catalog/product/exclusives.vue +56 -0
  23. package/app/components/catalog/product/featuredproducts.vue +57 -0
  24. package/app/components/catalog/product/giftCard.vue +63 -0
  25. package/app/components/catalog/product/latestproducts.vue +46 -0
  26. package/app/components/catalog/product/productCard.vue +105 -0
  27. package/app/components/catalog/product/productCompare.vue +60 -0
  28. package/app/components/catalog/product/productCompareTable.vue +441 -0
  29. package/app/components/catalog/product/productDetails.vue +126 -0
  30. package/app/components/catalog/product/productFaqs.vue +17 -0
  31. package/app/components/catalog/product/productGallery.vue +16 -0
  32. package/app/components/catalog/product/productQty.vue +54 -0
  33. package/app/components/catalog/product/productReviews.vue +56 -0
  34. package/app/components/catalog/product/productSpecs.vue +116 -0
  35. package/app/components/catalog/product/radiostation.vue +36 -0
  36. package/app/components/catalog/product/recentlyviewed.vue +43 -0
  37. package/app/components/catalog/product/relatedbrands.vue +54 -0
  38. package/app/components/catalog/product/relatedproducts.vue +43 -0
  39. package/app/components/catalog/product/relatedstations.vue +40 -0
  40. package/app/components/catalog/product/shippingOptions.vue +41 -0
  41. package/app/components/catalog/product/sizeOptions.vue +42 -0
  42. package/app/components/catalog/product/update-attribute-set.vue +209 -0
  43. package/app/components/catalog/product/update-attribute.vue +118 -0
  44. package/app/components/catalog/product/update-product.vue +372 -0
  45. package/app/components/catalog/product/update-showcase.vue +153 -0
  46. package/app/components/catalog/shops/relatedstores.vue +37 -0
  47. package/app/components/catalog/shops/restaurant.vue +66 -0
  48. package/app/components/catalog/shops/stores.vue +44 -0
  49. package/app/components/catalog/vendor/README.md +3 -0
  50. package/app/components/catalog/vendor/blocks/biggestcustomers.vue +33 -0
  51. package/app/components/catalog/vendor/blocks/lowestselling.vue +33 -0
  52. package/app/components/catalog/vendor/blocks/topcategories.vue +33 -0
  53. package/app/components/catalog/vendor/blocks/topproducts.vue +27 -0
  54. package/app/components/catalog/vendor/pages/attributes.vue +43 -0
  55. package/app/components/catalog/vendor/pages/commissions.vue +43 -0
  56. package/app/components/catalog/vendor/pages/crm.vue +67 -0
  57. package/app/components/catalog/vendor/pages/dashboard.vue +46 -0
  58. package/app/components/catalog/vendor/pages/emails.vue +43 -0
  59. package/app/components/catalog/vendor/pages/enquiries.vue +43 -0
  60. package/app/components/catalog/vendor/pages/invoices.vue +43 -0
  61. package/app/components/catalog/vendor/pages/orders.vue +68 -0
  62. package/app/components/catalog/vendor/pages/products.vue +55 -0
  63. package/app/components/catalog/vendor/pages/reviews.vue +48 -0
  64. package/app/components/catalog/vendor/pages/shipments.vue +43 -0
  65. package/app/components/catalog/vendor/pages/stores.vue +43 -0
  66. package/app/components/categories/chart/[id].vue +200 -0
  67. package/app/components/categories/chart/add-chart.vue +142 -0
  68. package/app/components/categories/chart/chart.vue +82 -0
  69. package/app/components/categories/chart/monthlyChart.vue +46 -0
  70. package/app/components/categories/chart/weeklyChart.vue +46 -0
  71. package/app/components/categories/chart/yearlyChart.vue +46 -0
  72. package/app/components/categories/charts.vue +118 -0
  73. package/app/components/categories/deals.vue +101 -0
  74. package/app/components/categories/eats.vue +49 -0
  75. package/app/components/categories/restaurants.vue +26 -0
  76. package/app/components/categories/station/[id].vue +72 -0
  77. package/app/components/categories/stations.vue +124 -0
  78. package/app/components/categories/time/time.vue +63 -0
  79. package/app/components/categories/travel.vue +75 -0
  80. package/app/components/categories/weather/weather.vue +44 -0
  81. package/app/components/content/blocks/breadcrumbs.vue +0 -0
  82. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  83. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  84. package/app/components/content/blocks/videoproduct.vue +9 -0
  85. package/app/components/content/pages/checkout.vue +118 -0
  86. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  87. package/app/components/content/pages/pickup-locations.vue +238 -0
  88. package/app/components/content/pages/showcases.vue +90 -0
  89. package/app/components/content/pages/success.vue +60 -0
  90. package/app/components/marketing/add-brand.vue +54 -0
  91. package/app/components/marketing/add-incentive.vue +54 -0
  92. package/app/components/marketing/promotions/giftcards.vue +102 -0
  93. package/app/components/marketing/promotions/subscriptions.vue +121 -0
  94. package/app/components/marketing/update-incentive.vue +326 -0
  95. package/app/components/menus/lowernav.vue +78 -0
  96. package/app/components/partials/LocaleSelector.vue +24 -0
  97. package/app/components/partials/ShoppingCart.vue +128 -0
  98. package/app/components/partials/StripePayment.vue +149 -0
  99. package/app/components/partials/addToCartBtn.vue +40 -0
  100. package/app/components/partials/cartItem.vue +124 -0
  101. package/app/components/partials/checkoutButton.vue +44 -0
  102. package/app/components/partials/compareBtn.vue +68 -0
  103. package/app/components/partials/ratings.vue +13 -0
  104. package/app/components/partials/store/CurrencySelector.vue +133 -0
  105. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  106. package/app/components/placeholders/Comments.vue +15 -0
  107. package/app/components/placeholders/CreateListBtn.vue +7 -0
  108. package/app/components/placeholders/Event.vue +9 -0
  109. package/app/components/placeholders/ListShowcases.vue +9 -0
  110. package/app/components/placeholders/Short.vue +9 -0
  111. package/app/components/placeholders/Space.vue +9 -0
  112. package/app/components/placeholders/Tag.vue +7 -0
  113. package/app/components/related/brandCard.vue +41 -0
  114. package/app/components/related/incentiveCard.vue +44 -0
  115. package/app/components/related/invoiceCard.vue +43 -0
  116. package/app/components/related/orderCard.vue +43 -0
  117. package/app/components/related/relatedproducts.vue +17 -0
  118. package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
  119. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  120. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  121. package/app/components/sales/CheckoutAddress/types.ts +16 -0
  122. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
  123. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  124. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  125. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  126. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  127. package/app/components/sales/OrderSummary/types.ts +5 -0
  128. package/app/components/sales/incentives.vue +223 -0
  129. package/app/components/sales/invoices.vue +107 -0
  130. package/app/components/sales/orders.vue +378 -0
  131. package/app/components/sales/shipments.vue +65 -0
  132. package/app/components/sales/transactions.vue +109 -0
  133. package/app/components/shop/add-shop.vue +54 -0
  134. package/app/components/shop/cart/cartItem.vue +182 -0
  135. package/app/components/shop/cart/checkout.vue +415 -0
  136. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  137. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  138. package/app/components/shop/checkout/addressBilling.vue +263 -0
  139. package/app/components/shop/checkout/addressShipping.vue +175 -0
  140. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  141. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  142. package/app/composables/_types.ts +18 -0
  143. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  144. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  145. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  146. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  147. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  148. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  149. package/app/composables/cart/registry.ts +20 -0
  150. package/app/composables/cart/types.ts +18 -0
  151. package/app/composables/cart/useCart.ts +15 -0
  152. package/app/composables/config.ts +19 -0
  153. package/app/composables/defs/apiDefinitions.ts +55 -0
  154. package/app/composables/defs/extension.feature +40 -0
  155. package/app/composables/defs/extension.mocks.ts +39 -0
  156. package/app/composables/defs/extension.test.ts +280 -0
  157. package/app/composables/defs/extension.ts +236 -0
  158. package/app/composables/defs/index.ts +3 -0
  159. package/app/composables/defs/types.ts +136 -0
  160. package/app/composables/domain/cart.ts +0 -0
  161. package/app/composables/domain/category.ts +0 -0
  162. package/app/composables/domain/order.ts +0 -0
  163. package/app/composables/domain/price.ts +0 -0
  164. package/app/composables/domain/product.ts +8 -0
  165. package/app/composables/domain/reward.ts +0 -0
  166. package/app/composables/domain/transactions.ts +0 -0
  167. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  168. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  169. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  170. package/app/composables/helpers/index.ts +1 -0
  171. package/app/composables/index.ts +6 -0
  172. package/app/composables/methods/auth.ts +83 -0
  173. package/app/composables/methods/cart.ts +119 -0
  174. package/app/composables/methods/category.ts +27 -0
  175. package/app/composables/methods/checkout.ts +54 -0
  176. package/app/composables/methods/customer.ts +52 -0
  177. package/app/composables/methods/helpers.ts +5 -0
  178. package/app/composables/methods/index.ts +75 -0
  179. package/app/composables/methods/order.ts +39 -0
  180. package/app/composables/methods/product.ts +95 -0
  181. package/app/composables/methods/settings.ts +16 -0
  182. package/app/composables/models/cart.ts +95 -0
  183. package/app/composables/models/category.ts +13 -0
  184. package/app/composables/models/checkout.ts +17 -0
  185. package/app/composables/models/customer.ts +16 -0
  186. package/app/composables/models/facets.ts +25 -0
  187. package/app/composables/models/index.ts +94 -0
  188. package/app/composables/models/order.ts +43 -0
  189. package/app/composables/models/product.ts +73 -0
  190. package/app/composables/models/shared.ts +75 -0
  191. package/app/composables/products/registry.ts +20 -0
  192. package/app/composables/products/types.ts +13 -0
  193. package/app/composables/products/useEvents.ts +0 -0
  194. package/app/composables/products/useGiftCards.ts +0 -0
  195. package/app/composables/products/useProducts.ts +12 -0
  196. package/app/composables/products/useSubscriptions.ts +0 -0
  197. package/app/composables/registry.ts +21 -0
  198. package/app/composables/stores/cart.ts +218 -0
  199. package/app/composables/stores/cartStore.ts +300 -0
  200. package/app/composables/stores/checkout.ts +19 -0
  201. package/app/composables/stores/compare.ts +65 -0
  202. package/app/composables/stores/currency.js +29 -0
  203. package/app/composables/stores/digital-products.js +11 -0
  204. package/app/composables/stores/index.js +0 -0
  205. package/app/composables/stores/orders.ts +161 -0
  206. package/app/composables/stores/product.ts +26 -0
  207. package/app/composables/stores/productList.ts +0 -0
  208. package/app/composables/stores/productListInfo.ts +0 -0
  209. package/app/composables/stores/products.ts +112 -0
  210. package/app/composables/stores/recentlyViewedProducts.ts +0 -0
  211. package/app/composables/stores/review.ts +25 -0
  212. package/app/composables/stores/storeInPickUp.ts +22 -0
  213. package/app/composables/stores/user.ts +20 -0
  214. package/app/composables/stores/wishlist.ts +19 -0
  215. package/app/composables/types/Order.type.ts +181 -0
  216. package/app/composables/types/index.ts +285 -0
  217. package/app/composables/types/product.ts +14 -0
  218. package/app/composables/useBreakpoints/index.ts +1 -0
  219. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  220. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  221. package/app/composables/useCart/index.ts +1 -0
  222. package/app/composables/useCart/types.ts +17 -0
  223. package/app/composables/useCart/useCart.ts +46 -0
  224. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  225. package/app/composables/useCartShippingMethods/index.ts +1 -0
  226. package/app/composables/useCartShippingMethods/types.ts +17 -0
  227. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  228. package/app/composables/useCatalog.ts +64 -0
  229. package/app/composables/useContent/index.ts +1 -0
  230. package/app/composables/useContent/types.ts +44 -0
  231. package/app/composables/useContent/useContent.ts +45 -0
  232. package/app/composables/useContent.ts +57 -0
  233. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  234. package/app/composables/useCustomer/index.ts +2 -0
  235. package/app/composables/useCustomer/types.ts +17 -0
  236. package/app/composables/useCustomer/useCustomer.ts +40 -0
  237. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  238. package/app/composables/useCustomerAddress/index.ts +2 -0
  239. package/app/composables/useCustomerAddress/types.ts +17 -0
  240. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  241. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  242. package/app/composables/useCustomerOrder/adress.ts +10 -0
  243. package/app/composables/useCustomerOrder/index.ts +2 -0
  244. package/app/composables/useCustomerOrder/product.ts +37 -0
  245. package/app/composables/useCustomerOrder/types.ts +40 -0
  246. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  247. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  248. package/app/composables/useCustomerOrders/index.ts +2 -0
  249. package/app/composables/useCustomerOrders/types.ts +20 -0
  250. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  251. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  252. package/app/composables/useCustomerReturns/index.ts +2 -0
  253. package/app/composables/useCustomerReturns/types.ts +17 -0
  254. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  255. package/app/composables/useHandleError/index.ts +1 -0
  256. package/app/composables/useHandleError/types.ts +11 -0
  257. package/app/composables/useHandleError/useHandleError.ts +27 -0
  258. package/app/composables/usePageTitle.ts +16 -0
  259. package/app/composables/useProduct/index.ts +2 -0
  260. package/app/composables/useProduct/types.ts +17 -0
  261. package/app/composables/useProduct/useProduct.ts +42 -0
  262. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  263. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  264. package/app/composables/useProductAttribute/index.ts +1 -0
  265. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  266. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  267. package/app/composables/useProductRecommended/index.ts +1 -0
  268. package/app/composables/useProductRecommended/types.ts +17 -0
  269. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  270. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  271. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  272. package/app/composables/useProductReviews/index.ts +2 -0
  273. package/app/composables/useProductReviews/types.ts +17 -0
  274. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  275. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  276. package/app/composables/useProducts/types.ts +22 -0
  277. package/app/composables/useProducts/useProducts.ts +41 -0
  278. package/app/composables/utils/countryList.ts +14 -0
  279. package/app/composables/utils/currency.js +56 -0
  280. package/app/composables/utils/glossary.ts +0 -0
  281. package/app/composables/utils/importExport.ts +0 -0
  282. package/app/composables/utils/index.js +0 -0
  283. package/app/composables/utils/print.ts +0 -0
  284. package/app/composables/utils/shopThemes.ts +0 -0
  285. package/app/composables/utils/statistics.ts +0 -0
  286. package/app/composables/utils/stock.ts +0 -0
  287. package/app/composables/utils/stripe.ts +16 -0
  288. package/app/composables/utils/taxation.ts +0 -0
  289. package/app/composables/utils/tellFriends.ts +0 -0
  290. package/app/composables/validationRules/index.ts +1 -0
  291. package/app/composables/validationRules/password.feature +67 -0
  292. package/app/composables/validationRules/password.test.ts +89 -0
  293. package/app/composables/validationRules/password.ts +25 -0
  294. package/app/composables/vendors/index.ts +0 -0
  295. package/app/composables/vendors/registry.ts +0 -0
  296. package/app/composables/vendors/useAffiliates.ts +0 -0
  297. package/app/composables/vendors/useCommission.ts +0 -0
  298. package/app/modules/vue-head/composables/useHead.ts +3 -0
  299. package/app/pages/brand/[...slug].vue +92 -0
  300. package/app/pages/brands.vue +90 -0
  301. package/app/pages/cart.vue +142 -0
  302. package/app/pages/compare.vue +166 -0
  303. package/app/pages/departments/[...slug].vue +385 -0
  304. package/app/pages/departments/category/[...slug].vue +135 -0
  305. package/app/pages/incentive/[...id].vue +66 -0
  306. package/app/pages/invoice/[id].vue +309 -0
  307. package/app/pages/order/[id].vue +327 -0
  308. package/app/pages/product/[...id].vue +309 -0
  309. package/app/pages/product/showcases/index.vue +86 -0
  310. package/app/pages/shipment/[...id].vue +176 -0
  311. package/app/pages/shop/[...slug].vue +158 -0
  312. package/app/pages/shops.vue +76 -0
  313. package/app/pages/subscription/[...id].vue +147 -0
  314. package/app/pages/transaction/[...id].vue +74 -0
  315. package/app/types/shims-imports.d.ts +13 -0
  316. package/app/utils/client.ts +26 -0
  317. package/app/utils/index.ts +53 -0
  318. package/app/utils/normalizer.ts +23 -0
  319. package/app/utils/normalizers/magento.ts +29 -0
  320. package/app/utils/normalizers/shopify.ts +29 -0
  321. package/global.d.ts +149 -0
  322. package/index.js +3 -0
  323. package/package.json +3 -9
  324. package/tsconfig.json +31 -0
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <div class="contentPage">
3
+ <section data-bs-version="5.1" class="features02 essencem5 cid-uHg1VExDxg" id="features02-aq"
4
+ data-sortbtn="btn-primary">
5
+ <div class="container">
6
+ <div class="row">
7
+ <div class="col-12">
8
+ <div class="title-wrapper">
9
+ <h2 class="mbr-section-title mbr-fonts-style display-2">
10
+ <strong>{{ shop?.name }}</strong>
11
+ </h2>
12
+ </div>
13
+ </div>
14
+ <div class="col-12">
15
+ <div class="card-wrapper">
16
+ <div class="item-img">
17
+ <NuxtImg loading="lazy" class="align-end text-white" v-if="shop?.image"
18
+ :src="`${$directus.url}/assets/${shop?.image?.filename_disk}`" :alt="shop?.name" cover />
19
+ <div class="card-box">
20
+ <div class="icon-wrapper">
21
+ <span class="mbr-iconfont mobi-mbri-contact-form mobi-mbri"></span>
22
+ </div>
23
+ <h4 class="card-title mbr-fonts-style display-5">
24
+ <strong>{{ shop?.name }}</strong>
25
+ </h4>
26
+
27
+ <div>
28
+ <div>
29
+ <p>Email: {{ shop?.store_email }}</p>
30
+ </div>
31
+
32
+ <div>
33
+ <p>Phone: {{ shop?.store_phone }}</p>
34
+ </div>
35
+
36
+ <div>
37
+ <p>Shipping Policy: {{ shop?.store_shipping_policy }}</p>
38
+ </div>
39
+
40
+ <div>
41
+ <p>Address: {{ shop?.store_address }}</p>
42
+ </div>
43
+
44
+ <div>
45
+ <p>Country: {{ shop?.store_country }}</p>
46
+ </div>
47
+ </div>
48
+ <p class="card-text mbr-fonts-style display-7" v-dompurify-html="shop?.description"></p>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </section>
56
+
57
+ <v-card elevation="0">
58
+ <v-tabs v-model="tab" bg-color="info" align-tabs="center">
59
+ <v-tab v-for="(menu, index) in shopbar?.menus" :key="index">
60
+ <NuxtLink :to="menu?.url">{{ menu?.name }}</NuxtLink>
61
+ </v-tab>
62
+ </v-tabs>
63
+
64
+ <v-card-text>
65
+ <v-tabs-window v-model="tab">
66
+
67
+ <v-tabs-window-item :value="shopbar?.menus[1]?.value">
68
+ <div v-for="(products, index) in shop?.products" :key="index">
69
+ <productCard :product="products?.products_id" />
70
+ </div>
71
+ </v-tabs-window-item>
72
+
73
+ <v-tabs-window-item :value="shopbar?.menus[2]?.value">
74
+ <div v-for="(showcases, index) in shop?.showcases" :key="index">
75
+ <showcases :product="showcases?.showcases_id" />
76
+ </div>
77
+ </v-tabs-window-item>
78
+
79
+ <v-tabs-window-item :value="shopbar?.menus[3]?.value">
80
+ <div v-for="(comments, index) in shop?.comments" :key="index">
81
+ <comments :comments="comments?.comments_id" />
82
+ </div>
83
+ </v-tabs-window-item>
84
+
85
+ <v-tabs-window-item :value="shopbar?.menus[4]?.value">
86
+ <div v-for="(spaces, index) in shop?.spaces" :key="index">
87
+ <spaces :space="spaces?.spaces_id" />
88
+ </div>
89
+ </v-tabs-window-item>
90
+
91
+ <v-tabs-window-item :value="shopbar?.menus[5]?.value">
92
+ <div v-for="(events, index) in shop?.events" :key="index">
93
+ <events :space="events?.events_id" />
94
+ </div>
95
+ </v-tabs-window-item>
96
+ </v-tabs-window>
97
+ </v-card-text>
98
+ </v-card>
99
+ </div>
100
+ </template>
101
+
102
+ <script setup>
103
+ import { ref } from 'vue'
104
+ import showcases from '~/components/catalog/product/relatedproducts.vue'
105
+ import productCard from '~/components/catalog/product/productCard.vue'
106
+ import comments from '@/components/placeholders/Comments.vue'
107
+ import spaces from '@/components/placeholders/Space.vue'
108
+ import events from '@/components/placeholders/Event.vue'
109
+ import { useContentFallback } from '../../composables/useContent'
110
+
111
+ const route = useRoute();
112
+ const tab = ref(null);
113
+ const { $directus, $readItem } = useNuxtApp()
114
+
115
+ const slug = computed(() => {
116
+ const s = route.params.slug
117
+ return Array.isArray(s) ? s[0] : s
118
+ })
119
+
120
+ const content = useContentFallback()
121
+
122
+ const { data: shopRaw } = await useAsyncData('shop', () => {
123
+ return content.listShops({
124
+ fields: ['*',
125
+ 'media.*',
126
+ 'spaces.spaces_id.*',
127
+ 'events.events_id.*',
128
+ 'products.products_id.*',
129
+ 'products.products_id.image.*',
130
+ 'showcases.showcases_id.*',
131
+ 'comments.comments_id.*',
132
+ 'shorts.shorts_id.*',
133
+ 'image.*',
134
+ 'country.country_id.*'
135
+ ],
136
+ filter: {
137
+ slug: {
138
+ _eq: slug.value
139
+ }
140
+ },
141
+ limit: 1
142
+ })
143
+ })
144
+
145
+ const shop = computed(() => shopRaw.value?.[0] || null)
146
+
147
+ const { data: shopbar } = await useAsyncData('shopbar', () => {
148
+ return $directus.request($readItem('navigation', '55'))
149
+ })
150
+
151
+ definePageMeta({
152
+ layout: 'nolive',
153
+ });
154
+
155
+ useHead({
156
+ title: computed(() => shop.value?.name || 'Shop Page')
157
+ })
158
+ </script>
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <div class="contentPage">
3
+ <v-card elevation="0">
4
+ <v-toolbar title="Shops on Meeovi" color="green"></v-toolbar>
5
+ <v-tabs v-model="tab" bg-color="green" align-tabs="center">
6
+ <v-tab v-if="shopbar?.active === 'Active'" v-for="(menu, index) in shopbar?.menus" :key="index">
7
+ <NuxtLink :to="menu?.url">{{ menu?.name }}</NuxtLink>
8
+ </v-tab>
9
+ </v-tabs>
10
+
11
+ <v-card-text>
12
+ <v-tabs-window v-model="tab">
13
+ <v-tabs-window-item :value="shopbar?.menus[0]?.value">
14
+ <section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
15
+ <div class="container">
16
+ <div class="row justify-content-center">
17
+ <div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
18
+ <store :store="shop" />
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </section>
23
+ </v-tabs-window-item>
24
+
25
+ <v-tabs-window-item :value="shopbar?.menus[1]?.value">
26
+ <section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
27
+ <div class="container">
28
+ <div class="row justify-content-center">
29
+ <div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
30
+ <store :store="shop" />
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </section>
35
+ </v-tabs-window-item>
36
+
37
+ <v-tabs-window-item :value="shopbar?.menus[2]?.value">
38
+ <section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
39
+ <div class="container">
40
+ <div class="row justify-content-center">
41
+ <div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
42
+ <store :store="shop" />
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </section>
47
+ </v-tabs-window-item>
48
+ </v-tabs-window>
49
+ </v-card-text>
50
+ </v-card>
51
+ </div>
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import { ref } from 'vue'
56
+ import { useHead, useNuxtApp, useAsyncData } from '#imports'
57
+ import store from '../components/catalog/shops/stores.vue'
58
+
59
+ const tab = ref(null)
60
+
61
+ import { useContentFallback } from '../composables/useContent'
62
+ const content = useContentFallback()
63
+
64
+ const { data: stores } = await useAsyncData('stores', async () => {
65
+ return await content.listShops({ fields: ['*', { '*': ['*'] }] })
66
+ })
67
+
68
+ const { data: shopbar } = await useAsyncData('shopbar', () => {
69
+ const nuxtApp = useNuxtApp() as any
70
+ return nuxtApp.$directus ? nuxtApp.$directus.request(nuxtApp.$readItem('navigation', '55')) : null
71
+ })
72
+
73
+ useHead({
74
+ title: 'Shops on Meeovi',
75
+ })
76
+ </script>
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <div>
3
+ <!---->
4
+ <section data-bs-version="5.1" class="features14 cid-u3U56NDZtd" id="features15-7o" data-sortbtn="btn-primary">
5
+ <div class="container">
6
+ <div class="row justify-content-center">
7
+ <div class="card col-12 col-md-6 col-lg-4">
8
+ <div class="card-wrapper">
9
+ <span class="mbr-iconfont mobi-mbri-protect mobi-mbri m-auto"></span>
10
+ <div class="card-box">
11
+ <h4 class="card-title mbr-fonts-style mb-2 display-7"><strong>Subscribed On</strong></h4>
12
+ <h5 class="card-text mbr-fonts-style display-4">{{ subscription?.start_date}}</h5>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ <div class="card col-12 col-md-6 col-lg-4">
17
+ <div class="card-wrapper">
18
+ <span class="mbr-iconfont m-auto mobi-mbri-website-theme-2 mobi-mbri"></span>
19
+ <div class="card-box">
20
+ <h4 class="card-title mbr-fonts-style mb-2 display-7"><strong>Subscription #</strong></h4>
21
+ <h5 class="card-text mbr-fonts-style display-4">{{ subscription?.id}}</h5>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <div class="card col-12 col-md-6 col-lg-4">
26
+ <div class="card-wrapper">
27
+ <span class="mbr-iconfont m-auto mobi-mbri-features mobi-mbri"></span>
28
+ <div class="card-box">
29
+ <h4 class="card-title mbr-fonts-style mb-2 display-7">
30
+ <strong>View or Print Invoice</strong></h4>
31
+ <h5 class="card-text mbr-fonts-style display-4"></h5>
32
+ </div>
33
+
34
+ </div>
35
+ </div>
36
+
37
+ </div>
38
+ </div>
39
+ </section>
40
+
41
+ <section data-bs-version="5.1" class="contacts2 cid-u3U5tKf7Hq" id="contacts2-7p" data-sortbtn="btn-primary">
42
+ <div class="container">
43
+
44
+ <div class="row justify-content-center mt-4">
45
+ <div class="card col-12 col-md-6">
46
+ <div class="card-wrapper">
47
+ <div class="image-wrapper">
48
+ <span class="mbr-iconfont mobi-mbri-home mobi-mbri"></span>
49
+ </div>
50
+ <div class="text-wrapper">
51
+ <h6 class="card-title mbr-fonts-style mb-1 display-5">
52
+ <strong>Shipping Address</strong></h6>
53
+ <p class="mbr-text mbr-fonts-style display-7">{{ subscription?.customer?.customers_id?.address }}</p>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ <div class="card col-12 col-md-6">
58
+ <div class="card-wrapper">
59
+ <div class="image-wrapper">
60
+ <span class="mbr-iconfont mobi-mbri-cash mobi-mbri"></span>
61
+ </div>
62
+ <div class="text-wrapper">
63
+ <h6 class="card-title mbr-fonts-style mb-1 display-5">
64
+ <strong>Payment Method</strong></h6>
65
+ <p class="mbr-text mbr-fonts-style display-7">
66
+ <NuxtLink to="mailto:info@site.com" class="text-primary">{{ subscription?.customer?.customers_id?.payment }}</NuxtLink>
67
+ </p>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ <div class="card col-12 col-md-6">
72
+ <div class="card-wrapper">
73
+ <div class="image-wrapper">
74
+ <span class="mbr-iconfont mobi-mbri-contact-form mobi-mbri"></span>
75
+ </div>
76
+ <div class="text-wrapper">
77
+ <h6 class="card-title mbr-fonts-style mb-1 display-5">
78
+ <strong>Order Summary</strong></h6>
79
+ <p class="mbr-text mbr-fonts-style display-7" v-for="customers in subscription?.customer?.customers_id">Item(s) Subtotal: ${{ customer?.subscription?.orders_id?.total_before_tax }}
80
+ <br>Shipping &amp; Handling: ${{ customer?.subscription?.orders_id?.shipping_handling }}
81
+ <br>Total before tax: ${{ customer?.subscription?.orders_id?.total_before_tax }}
82
+ <br>Estimated tax to be collected: ${{ customer?.subscription?.orders_id?.tax }}
83
+ <br>Grand Total: ${{ customer?.subscription?.orders_id?.total_price }}</p>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ <div class="card col-12 col-md-6">
88
+ <div class="card-wrapper">
89
+ <div class="image-wrapper">
90
+ <span class="mbr-iconfont mobi-mbri-bulleted-list mobi-mbri"></span>
91
+ </div>
92
+ <div class="text-wrapper">
93
+ <h6 class="card-title mbr-fonts-style mb-1 display-5">
94
+ <strong>Receipt</strong></h6>
95
+ <p class="mbr-text mbr-fonts-style display-7"></p>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </section>
102
+ </div>
103
+ </template>
104
+
105
+ <script>
106
+ import productCard from '~/app/components/catalog/product/productCard.vue'
107
+
108
+
109
+ export default {
110
+ components: { productCard, profilebar},
111
+ data: () => ({
112
+ model: null,
113
+ url: process.env.DIRECTUS_URL,
114
+ }),
115
+ }
116
+ </script>
117
+
118
+ <script setup>
119
+ const route = useRoute();
120
+
121
+ const {
122
+ $directus,
123
+ $readItem
124
+ } = useNuxtApp()
125
+ const user = useSupabaseUser()
126
+
127
+ const {
128
+ data: subscription
129
+ } = await useAsyncData('subscription', () => {
130
+ return $directus.request($readItem('subscriptions', route.params.id, {
131
+ filter: {
132
+ user: {
133
+ _eq: `${user?.id}`
134
+ }
135
+ },
136
+ limit: 1
137
+ })).then(response => response?.[0])
138
+ })
139
+
140
+ useHead({
141
+ title: subscription?.value?.id || 'Subscription Page',
142
+ })
143
+
144
+ definePageMeta({
145
+ middleware: ['authenticated'],
146
+ })
147
+ </script>
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <div>
3
+ <!--<profilebar />-->
4
+ <section data-bs-version="5.1" class="features07 scalem5 cid-uhB4hw1yxB mbr-fullscreen" id="features07-9l">
5
+ <div class="container">
6
+ <div class="row">
7
+ <div class="col-12 col-lg-10 card">
8
+ <div class="title-wrapper">
9
+ <h2 class="mbr-section-title mbr-fonts-style display-5">
10
+ View Transaction</h2>
11
+ </div>
12
+ </div>
13
+ <div class="col-12 col-lg-12">
14
+ <div class="items-wrapper">
15
+ <div class="item features-without-image item-mb">
16
+ <div class="item-wrapper">
17
+ <div class="card-box">
18
+ <div class="icon-wrapper">
19
+ <span class="mbr-iconfont mobi-mbri-growing-chart mobi-mbri"></span>
20
+ </div>
21
+ <h4 class="card-title mbr-fonts-style display-7">
22
+ Transaction Information
23
+ </h4>
24
+ <a class="card-text mbr-fonts-style display-7" :href="`/order/${transaction?.orders?.orders_id?.id}`">Order #:
25
+ {{ transaction?.orders?.orders_id?.id }}</a>
26
+ <p class="card-text mbr-fonts-style display-7">Transaction ID: {{ transaction?.id }}</p>
27
+ <p class="card-text mbr-fonts-style display-7">Transaction Date:
28
+ {{ new Date(transaction?.created_at).toLocaleDateString() }}</p>
29
+ <p class="card-text mbr-fonts-style display-7">Is it Closed?
30
+ {{ transaction?.is_closed }}</p>
31
+ <p class="card-text mbr-fonts-style display-7">Parent Transaction ID: {{ transaction?.parent_id }}</p>
32
+ <p class="card-text mbr-fonts-style display-7">Payment ID: {{ transaction?.payment_id }}</p>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ <img src="../../assets/images/background10.jpg" :alt="transaction?.id">
41
+ </section>
42
+ </div>
43
+ </template>
44
+
45
+ <script setup>
46
+ const route = useRoute();
47
+
48
+ const {
49
+ $directus,
50
+ $readItem
51
+ } = useNuxtApp()
52
+ const user = useSupabaseUser()
53
+
54
+ const {
55
+ data: transaction
56
+ } = await useAsyncData('transaction', () => {
57
+ return $directus.request($readItem('transactions', route.params.id, {
58
+ filter: {
59
+ user: {
60
+ _eq: `${user?.id}`
61
+ }
62
+ },
63
+ limit: 1
64
+ })).then(response => response?.[0])
65
+ })
66
+
67
+ useHead({
68
+ title: 'Transaction' + transaction?.value?.id || 'Transaction Page',
69
+ })
70
+
71
+ definePageMeta({
72
+ //middleware: ['auth-logged-in'],
73
+ })
74
+ </script>
@@ -0,0 +1,13 @@
1
+ declare module '#imports' {
2
+ export function useRuntimeConfig(): any;
3
+ export function useState<T = any>(key: string, init?: T): any;
4
+ export function useFetch(...args: any[]): any;
5
+ export function defineNuxtPlugin(fn: any): any;
6
+ export const navigateTo: any;
7
+ export const useRouter: any;
8
+ export const useNuxtApp: any;
9
+ export const useRequestEvent: any;
10
+ export const useCookie: any;
11
+ export const useHeaders: any;
12
+ export const useQuery: any;
13
+ }
@@ -0,0 +1,26 @@
1
+ import * as CommercePkg from '#imports';
2
+ import { sdk } from '@meeovi/sdk';
3
+
4
+ const CommerceAny: any = CommercePkg as any;
5
+
6
+ /**
7
+ * Returns a commerce client. Prefer `@meeovi/commerce` client creation APIs
8
+ * when available, otherwise fall back to `sdk.commerce`.
9
+ */
10
+ export function getCommerceClient(provider?: string, providerConfig?: any) {
11
+ try {
12
+ if (typeof CommerceAny.createClient === 'function') {
13
+ return CommerceAny.createClient(provider, providerConfig);
14
+ }
15
+ if (typeof CommerceAny.init === 'function') {
16
+ return CommerceAny.init(providerConfig);
17
+ }
18
+ } catch (e) {
19
+ // swallow and fallback to sdk
20
+ }
21
+
22
+ // fallback: return the SDK's commerce helper (already used in many composables)
23
+ return sdk.commerce;
24
+ }
25
+
26
+ export default getCommerceClient;
@@ -0,0 +1,53 @@
1
+ import { NormalizerRegistry, CommerceNormalizer } from './normalizer';
2
+
3
+ // Keep imports loose because host `@meeovi/commerce` implementations may vary
4
+ import * as CommercePkg from '#imports';
5
+ const CommerceAny: any = CommercePkg as any;
6
+
7
+ export type Provider = string;
8
+
9
+ export interface CommerceLayerConfig {
10
+ provider: Provider;
11
+ providerConfig?: Record<string, any>;
12
+ normalizer?: CommerceNormalizer;
13
+ registry?: NormalizerRegistry;
14
+ }
15
+
16
+ export function createCommerceLayer(config: CommerceLayerConfig) {
17
+ const registry = config.registry ?? new NormalizerRegistry();
18
+ const normalizer = config.normalizer ?? registry.get(config.provider);
19
+
20
+ if (!normalizer) {
21
+ throw new Error('No normalizer found for provider: ' + config.provider);
22
+ }
23
+
24
+ // Create or obtain a client from `@meeovi/commerce` in a resilient way
25
+ const client = ((): any => {
26
+ try {
27
+ if (typeof CommerceAny.createClient === 'function') {
28
+ return CommerceAny.createClient(config.provider, config.providerConfig);
29
+ }
30
+ if (typeof CommerceAny.init === 'function') {
31
+ return CommerceAny.init(config.providerConfig);
32
+ }
33
+ return CommerceAny;
34
+ } catch (e) {
35
+ // In production, surface useful message while avoiding leaking secrets
36
+ throw new Error('Failed to initialize commerce client for provider: ' + config.provider);
37
+ }
38
+ })();
39
+
40
+ async function getProduct(id: string) {
41
+ const raw = await (client.getProduct?.(id) ?? client.fetchProduct?.(id) ?? client.product?.(id));
42
+ return normalizer!.normalizeProduct(raw);
43
+ }
44
+
45
+ return {
46
+ client,
47
+ getProduct,
48
+ registry,
49
+ normalizer,
50
+ } as const;
51
+ }
52
+
53
+ export default createCommerceLayer;
@@ -0,0 +1,23 @@
1
+ export interface CommerceNormalizer {
2
+ normalizeProduct(data: any): any;
3
+ normalizeCategory?(data: any): any;
4
+ normalizeCart?(data: any): any;
5
+ }
6
+
7
+ export class NormalizerRegistry {
8
+ private registry = new Map<string, CommerceNormalizer>();
9
+
10
+ register(name: string, normalizer: CommerceNormalizer) {
11
+ this.registry.set(name, normalizer);
12
+ }
13
+
14
+ get(name: string): CommerceNormalizer | undefined {
15
+ return this.registry.get(name);
16
+ }
17
+
18
+ list(): string[] {
19
+ return Array.from(this.registry.keys());
20
+ }
21
+ }
22
+
23
+ export default NormalizerRegistry;
@@ -0,0 +1,29 @@
1
+ import { CommerceNormalizer } from "../normalizer";
2
+
3
+ export const magentoNormalizer: CommerceNormalizer = {
4
+ normalizeProduct(data: any) {
5
+ return {
6
+ id: data?.id ?? data?.sku ?? data?.item_id,
7
+ title: data?.name ?? data?.title,
8
+ price:
9
+ data?.price ?? data?.price_range?.minimum_price?.final_price?.value,
10
+ description: data?.description ?? data?.short_description,
11
+ images: (data?.media_gallery_entries ?? []).map((m: any) => m.file || m.url),
12
+ raw: data,
13
+ };
14
+ },
15
+
16
+ normalizeCategory(data: any) {
17
+ return {
18
+ id: data?.id,
19
+ name: data?.name,
20
+ raw: data,
21
+ };
22
+ },
23
+
24
+ normalizeCart(data: any) {
25
+ return { raw: data };
26
+ },
27
+ };
28
+
29
+ export default magentoNormalizer;
@@ -0,0 +1,29 @@
1
+ import { CommerceNormalizer } from "../normalizer";
2
+
3
+ export const shopifyNormalizer: CommerceNormalizer = {
4
+ normalizeProduct(data: any) {
5
+ // Shopify payloads vary depending on SDK; this maps common fields
6
+ return {
7
+ id: data?.id ?? data?.variants?.[0]?.id,
8
+ title: data?.title ?? data?.name,
9
+ price: data?.variants?.[0]?.price ?? data?.price,
10
+ description: data?.body_html ?? data?.description,
11
+ images: (data?.images ?? []).map((i: any) => i?.src || i?.url),
12
+ raw: data,
13
+ };
14
+ },
15
+
16
+ normalizeCategory(data: any) {
17
+ return {
18
+ id: data?.id,
19
+ name: data?.title ?? data?.name,
20
+ raw: data,
21
+ };
22
+ },
23
+
24
+ normalizeCart(data: any) {
25
+ return { raw: data };
26
+ },
27
+ };
28
+
29
+ export default shopifyNormalizer;