@mframework/layer-commerce 0.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 (355) hide show
  1. package/README.md +101 -0
  2. package/app/cart/useCart.ts +1 -0
  3. package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
  4. package/app/components/DateSelect/DateSelect.config.ts +15 -0
  5. package/app/components/Field/Field.config.ts +14 -0
  6. package/app/components/FieldDate/FieldDate.config.ts +16 -0
  7. package/app/components/Form/Form.type.ts +8 -0
  8. package/app/components/Product/Product.config.ts +19 -0
  9. package/app/components/Product/Stock.config.ts +15 -0
  10. package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
  11. package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
  12. package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
  13. package/app/composables/_types.ts +18 -0
  14. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  15. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  16. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  17. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  18. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  19. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  20. package/app/composables/cart/registry.ts +20 -0
  21. package/app/composables/cart/types.ts +18 -0
  22. package/app/composables/cart/useCart.ts +15 -0
  23. package/app/composables/config.ts +19 -0
  24. package/app/composables/defs/apiDefinitions.ts +55 -0
  25. package/app/composables/defs/extension.feature +40 -0
  26. package/app/composables/defs/extension.mocks.ts +39 -0
  27. package/app/composables/defs/extension.test.ts +280 -0
  28. package/app/composables/defs/extension.ts +236 -0
  29. package/app/composables/defs/index.ts +3 -0
  30. package/app/composables/defs/typeHelpers.ts +8 -0
  31. package/app/composables/defs/types.ts +136 -0
  32. package/app/composables/domain/product.ts +12 -0
  33. package/app/composables/featured-products.ts +20 -0
  34. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  35. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  36. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  37. package/app/composables/helpers/index.ts +1 -0
  38. package/app/composables/index.ts +9 -0
  39. package/app/composables/methods/auth.ts +83 -0
  40. package/app/composables/methods/cart.ts +119 -0
  41. package/app/composables/methods/category.ts +27 -0
  42. package/app/composables/methods/checkout.ts +54 -0
  43. package/app/composables/methods/customer.ts +52 -0
  44. package/app/composables/methods/helpers.ts +5 -0
  45. package/app/composables/methods/index.ts +75 -0
  46. package/app/composables/methods/order.ts +39 -0
  47. package/app/composables/methods/product.ts +95 -0
  48. package/app/composables/methods/settings.ts +16 -0
  49. package/app/composables/models/cart.ts +95 -0
  50. package/app/composables/models/category.ts +13 -0
  51. package/app/composables/models/checkout.ts +17 -0
  52. package/app/composables/models/customer.ts +16 -0
  53. package/app/composables/models/facets.ts +25 -0
  54. package/app/composables/models/index.ts +94 -0
  55. package/app/composables/models/order.ts +43 -0
  56. package/app/composables/models/product.ts +73 -0
  57. package/app/composables/models/shared.ts +75 -0
  58. package/app/composables/orders.ts +69 -0
  59. package/app/composables/products/registry.ts +86 -0
  60. package/app/composables/products/types.ts +8 -0
  61. package/app/composables/products/useEvents.ts +26 -0
  62. package/app/composables/products/useGiftCards.ts +29 -0
  63. package/app/composables/products/useProducts.ts +12 -0
  64. package/app/composables/products/useSubscriptions.ts +29 -0
  65. package/app/composables/products.ts +30 -0
  66. package/app/composables/registry.ts +24 -0
  67. package/app/composables/useAuth.ts +43 -0
  68. package/app/composables/useBreakpoints/index.ts +1 -0
  69. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  70. package/app/composables/useCache.ts +38 -0
  71. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  72. package/app/composables/useCart/index.ts +1 -0
  73. package/app/composables/useCart/types.ts +17 -0
  74. package/app/composables/useCart/useCart.ts +46 -0
  75. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  76. package/app/composables/useCartShippingMethods/index.ts +1 -0
  77. package/app/composables/useCartShippingMethods/types.ts +17 -0
  78. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  79. package/app/composables/useCatalog.ts +26 -0
  80. package/app/composables/useContent.ts +26 -0
  81. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  82. package/app/composables/useCustomer/index.ts +2 -0
  83. package/app/composables/useCustomer/types.ts +17 -0
  84. package/app/composables/useCustomer/useCustomer.ts +40 -0
  85. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  86. package/app/composables/useCustomerAddress/index.ts +2 -0
  87. package/app/composables/useCustomerAddress/types.ts +17 -0
  88. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  89. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  90. package/app/composables/useCustomerOrder/adress.ts +10 -0
  91. package/app/composables/useCustomerOrder/index.ts +2 -0
  92. package/app/composables/useCustomerOrder/product.ts +37 -0
  93. package/app/composables/useCustomerOrder/types.ts +40 -0
  94. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  95. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  96. package/app/composables/useCustomerOrders/index.ts +2 -0
  97. package/app/composables/useCustomerOrders/types.ts +20 -0
  98. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  99. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  100. package/app/composables/useCustomerReturns/index.ts +2 -0
  101. package/app/composables/useCustomerReturns/types.ts +17 -0
  102. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  103. package/app/composables/useHandleError/index.ts +1 -0
  104. package/app/composables/useHandleError/types.ts +11 -0
  105. package/app/composables/useHandleError/useHandleError.ts +27 -0
  106. package/app/composables/useInventory.ts +29 -0
  107. package/app/composables/useLoading.ts +21 -0
  108. package/app/composables/useNotification.ts +21 -0
  109. package/app/composables/usePageTitle.ts +20 -0
  110. package/app/composables/useProduct/index.ts +2 -0
  111. package/app/composables/useProduct/types.ts +17 -0
  112. package/app/composables/useProduct/useProduct.ts +42 -0
  113. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  114. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  115. package/app/composables/useProductAttribute/index.ts +1 -0
  116. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  117. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  118. package/app/composables/useProductRecommended/index.ts +1 -0
  119. package/app/composables/useProductRecommended/types.ts +17 -0
  120. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  121. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  122. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  123. package/app/composables/useProductReviews/index.ts +2 -0
  124. package/app/composables/useProductReviews/types.ts +17 -0
  125. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  126. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  127. package/app/composables/useProducts/types.ts +22 -0
  128. package/app/composables/useProducts/useProducts.ts +41 -0
  129. package/app/composables/useTax.ts +27 -0
  130. package/app/composables/validationRules/index.ts +1 -0
  131. package/app/composables/validationRules/password.feature +67 -0
  132. package/app/composables/validationRules/password.test.ts +89 -0
  133. package/app/composables/validationRules/password.ts +25 -0
  134. package/app/normalizers/Cart.query.ts +729 -0
  135. package/app/normalizers/Cart.type.ts +285 -0
  136. package/app/normalizers/Category.query.ts +146 -0
  137. package/app/normalizers/Category.type.ts +55 -0
  138. package/app/normalizers/CheckEmail.query.ts +28 -0
  139. package/app/normalizers/Checkout.query.ts +253 -0
  140. package/app/normalizers/Checkout.type.ts +77 -0
  141. package/app/normalizers/CmsBlock.query.ts +57 -0
  142. package/app/normalizers/CmsBlock.type.ts +25 -0
  143. package/app/normalizers/CmsPage.query.ts +59 -0
  144. package/app/normalizers/CmsPage.type.ts +26 -0
  145. package/app/normalizers/Config.query.ts +224 -0
  146. package/app/normalizers/Config.type.ts +196 -0
  147. package/app/normalizers/ContactForm.query.ts +49 -0
  148. package/app/normalizers/CreditMemo.type.ts +49 -0
  149. package/app/normalizers/GiftCard.type.ts +24 -0
  150. package/app/normalizers/Invoice.type.ts +58 -0
  151. package/app/normalizers/Menu.query.ts +54 -0
  152. package/app/normalizers/Menu.type.ts +22 -0
  153. package/app/normalizers/MyAccount.query.ts +268 -0
  154. package/app/normalizers/MyAccount.type.ts +129 -0
  155. package/app/normalizers/NewsletterSubscription.query.ts +38 -0
  156. package/app/normalizers/Order.query.ts +741 -0
  157. package/app/normalizers/Order.type.ts +268 -0
  158. package/app/normalizers/Payment.type.ts +28 -0
  159. package/app/normalizers/ProductAlerts.query.ts +23 -0
  160. package/app/normalizers/ProductCompare.query.ts +226 -0
  161. package/app/normalizers/ProductCompare.type.ts +90 -0
  162. package/app/normalizers/ProductList.query.ts +1620 -0
  163. package/app/normalizers/ProductList.type.ts +726 -0
  164. package/app/normalizers/Region.query.ts +58 -0
  165. package/app/normalizers/Region.type.ts +23 -0
  166. package/app/normalizers/Return.type.ts +50 -0
  167. package/app/normalizers/Review.query.ts +81 -0
  168. package/app/normalizers/Review.type.ts +42 -0
  169. package/app/normalizers/Slider.query.ts +72 -0
  170. package/app/normalizers/Slider.type.ts +26 -0
  171. package/app/normalizers/StoreInPickUp.query.ts +54 -0
  172. package/app/normalizers/StoreInPickUp.type.ts +59 -0
  173. package/app/normalizers/Subscription.type.ts +25 -0
  174. package/app/normalizers/Transaction.type.ts +20 -0
  175. package/app/normalizers/UrlRewrites.query.ts +55 -0
  176. package/app/normalizers/UrlRewrites.type.ts +25 -0
  177. package/app/normalizers/Wishlist.query.ts +202 -0
  178. package/app/normalizers/Wishlist.type.ts +42 -0
  179. package/app/pages/brand/[...slug].vue +76 -0
  180. package/app/pages/brands.vue +67 -0
  181. package/app/pages/cart.vue +142 -0
  182. package/app/pages/compare.vue +166 -0
  183. package/app/pages/departments/[...slug].vue +353 -0
  184. package/app/pages/departments/category/[...slug].vue +114 -0
  185. package/app/pages/incentive/[...id].vue +66 -0
  186. package/app/pages/invoice/[id].vue +309 -0
  187. package/app/pages/order/[id].vue +327 -0
  188. package/app/pages/product/[...id].vue +309 -0
  189. package/app/pages/product/showcases/index.vue +86 -0
  190. package/app/pages/shipment/[...id].vue +176 -0
  191. package/app/pages/shop/[...slug].vue +158 -0
  192. package/app/pages/shops.vue +76 -0
  193. package/app/pages/subscription/[...id].vue +147 -0
  194. package/app/pages/transaction/[...id].vue +74 -0
  195. package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
  196. package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
  197. package/app/routes/Checkout/Checkout.config.ts +3 -0
  198. package/app/routes/Checkout/Checkout.type.ts +14 -0
  199. package/app/routes/MyAccount/MyAccount.config.ts +1 -0
  200. package/app/routes/SearchPage/SearchPage.config.ts +1 -0
  201. package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
  202. package/app/stores/Cart/Cart.type.ts +26 -0
  203. package/app/stores/MyAccount/MyAccount.action.ts +7 -0
  204. package/app/stores/Notification/Notification.action.ts +40 -0
  205. package/app/stores/Notification/Notification.type.ts +16 -0
  206. package/app/stores/Popup/Popup.action.ts +30 -0
  207. package/app/stores/Product/Product.dispatcher.ts +53 -0
  208. package/app/stores/Product/Product.reducer.ts +12 -0
  209. package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
  210. package/app/stores/ProductList/ProductList.reducer.ts +13 -0
  211. package/app/stores/Store.type.ts +31 -0
  212. package/app/stores/Wishlist/Wishlist.type.ts +12 -0
  213. package/app/stores/cart.ts +218 -0
  214. package/app/stores/cartStore.ts +224 -0
  215. package/app/stores/checkout.ts +18 -0
  216. package/app/stores/compare.ts +65 -0
  217. package/app/stores/currency.js +29 -0
  218. package/app/stores/digital-products.js +11 -0
  219. package/app/stores/orders.ts +172 -0
  220. package/app/stores/product.ts +34 -0
  221. package/app/stores/productList.ts +35 -0
  222. package/app/stores/productListInfo.ts +0 -0
  223. package/app/stores/products.ts +118 -0
  224. package/app/stores/recentlyViewedProducts.ts +56 -0
  225. package/app/stores/review.ts +33 -0
  226. package/app/stores/storeInPickUp.ts +21 -0
  227. package/app/stores/user.ts +20 -0
  228. package/app/stores/wishlist.ts +46 -0
  229. package/app/types/Account.type.ts +141 -0
  230. package/app/types/Breadcrumbs.type.ts +23 -0
  231. package/app/types/CMS.type.ts +33 -0
  232. package/app/types/Category.type.ts +67 -0
  233. package/app/types/Checkout.type.ts +58 -0
  234. package/app/types/Common.type.ts +77 -0
  235. package/app/types/Config.type.ts +47 -0
  236. package/app/types/Device.type.ts +37 -0
  237. package/app/types/Direction.type.ts +23 -0
  238. package/app/types/Downloadable.type.ts +24 -0
  239. package/app/types/Error.type.ts +22 -0
  240. package/app/types/Field.type.ts +151 -0
  241. package/app/types/Global.type.ts +156 -0
  242. package/app/types/Graphql.type.ts +4497 -0
  243. package/app/types/Layout.type.ts +18 -0
  244. package/app/types/Menu.type.ts +39 -0
  245. package/app/types/MiniCart.type.ts +61 -0
  246. package/app/types/NotificationList.type.ts +34 -0
  247. package/app/types/Order.type.ts +174 -0
  248. package/app/types/Price.type.ts +72 -0
  249. package/app/types/ProductCompare.type.ts +24 -0
  250. package/app/types/ProductList.type.ts +351 -0
  251. package/app/types/Rating.type.ts +42 -0
  252. package/app/types/Router.type.ts +67 -0
  253. package/app/types/Slider.type.ts +25 -0
  254. package/app/types/StockStatus.type.ts +21 -0
  255. package/app/types/domain/index.ts +94 -0
  256. package/app/types/index.ts +33 -0
  257. package/app/types/shims.d.ts +52 -0
  258. package/app/types/tilework-opus.d.ts +48 -0
  259. package/app/utils/Address/Address.type.ts +28 -0
  260. package/app/utils/Address/index.ts +325 -0
  261. package/app/utils/Auth/IsSignedIn.ts +4 -0
  262. package/app/utils/Auth/Token.ts +9 -0
  263. package/app/utils/Base64/Base64.ts +16 -0
  264. package/app/utils/Base64/index.ts +12 -0
  265. package/app/utils/Browser/Browser.ts +29 -0
  266. package/app/utils/Browser/index.ts +12 -0
  267. package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
  268. package/app/utils/BrowserDatabase/index.ts +12 -0
  269. package/app/utils/CSS/CSS.ts +65 -0
  270. package/app/utils/CSS/index.ts +12 -0
  271. package/app/utils/Cache/Cache.ts +99 -0
  272. package/app/utils/Cart/Cart.ts +300 -0
  273. package/app/utils/Cart/Cart.type.ts +76 -0
  274. package/app/utils/Cart/Token.ts +59 -0
  275. package/app/utils/Cart/index.ts +13 -0
  276. package/app/utils/Category/Filters.ts +39 -0
  277. package/app/utils/Category/index.ts +12 -0
  278. package/app/utils/Common/index.ts +32 -0
  279. package/app/utils/Compare/Compare.ts +89 -0
  280. package/app/utils/Compare/index.ts +12 -0
  281. package/app/utils/Currency/Currency.ts +84 -0
  282. package/app/utils/Currency/index.ts +12 -0
  283. package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
  284. package/app/utils/DynamicReducer/Helper.ts +30 -0
  285. package/app/utils/DynamicReducer/index.tsx +35 -0
  286. package/app/utils/ElementTransition/ElementTransition.ts +100 -0
  287. package/app/utils/Form/Extract.ts +316 -0
  288. package/app/utils/Form/Form.ts +46 -0
  289. package/app/utils/Form/Form.type.ts +60 -0
  290. package/app/utils/Form/Transform.ts +33 -0
  291. package/app/utils/FormPortalCollector/index.ts +45 -0
  292. package/app/utils/History/History.type.ts +31 -0
  293. package/app/utils/History/index.ts +17 -0
  294. package/app/utils/Manipulations/Array.ts +18 -0
  295. package/app/utils/Manipulations/Date.ts +36 -0
  296. package/app/utils/Manipulations/index.ts +14 -0
  297. package/app/utils/Media/Media.ts +27 -0
  298. package/app/utils/Media/index.ts +13 -0
  299. package/app/utils/Menu/Menu.ts +116 -0
  300. package/app/utils/Menu/Menu.type.ts +37 -0
  301. package/app/utils/Menu/index.ts +12 -0
  302. package/app/utils/Mobile/index.ts +13 -0
  303. package/app/utils/Mobile/isMobile.ts +34 -0
  304. package/app/utils/Orders/Orders.ts +71 -0
  305. package/app/utils/Orders/Orders.type.ts +19 -0
  306. package/app/utils/Orders/index.ts +13 -0
  307. package/app/utils/Polyfill/index.ts +336 -0
  308. package/app/utils/Preload/CategoryPreload.ts +74 -0
  309. package/app/utils/Preload/ProductPreload.ts +28 -0
  310. package/app/utils/Preload/index.ts +75 -0
  311. package/app/utils/Price/Price.config.ts +189 -0
  312. package/app/utils/Price/Price.ts +63 -0
  313. package/app/utils/Price/index.ts +12 -0
  314. package/app/utils/Product/Extract.ts +652 -0
  315. package/app/utils/Product/Product.ts +575 -0
  316. package/app/utils/Product/Product.type.ts +260 -0
  317. package/app/utils/Product/Transform.ts +382 -0
  318. package/app/utils/Product/index.ts +12 -0
  319. package/app/utils/Promise/MakeCancelable.ts +44 -0
  320. package/app/utils/Promise/Promise.type.ts +15 -0
  321. package/app/utils/Promise/index.ts +13 -0
  322. package/app/utils/Query/Field.ts +71 -0
  323. package/app/utils/Query/Fragment.ts +22 -0
  324. package/app/utils/Query/PrepareDocument.ts +119 -0
  325. package/app/utils/Query/Query.type.ts +26 -0
  326. package/app/utils/Query/index.ts +15 -0
  327. package/app/utils/Request/Config.ts +21 -0
  328. package/app/utils/Request/DataContainer.ts +102 -0
  329. package/app/utils/Request/Debounce.ts +48 -0
  330. package/app/utils/Request/Error.ts +31 -0
  331. package/app/utils/Request/Hash.ts +88 -0
  332. package/app/utils/Request/LowPriorityLoad.ts +32 -0
  333. package/app/utils/Request/LowPriorityRender.ts +55 -0
  334. package/app/utils/Request/Mutation.ts +25 -0
  335. package/app/utils/Request/Query.ts +25 -0
  336. package/app/utils/Request/QueryDispatcher.ts +135 -0
  337. package/app/utils/Request/Request.ts +310 -0
  338. package/app/utils/Store/Store.type.ts +26 -0
  339. package/app/utils/Store/index.ts +71 -0
  340. package/app/utils/Url/Url.ts +297 -0
  341. package/app/utils/Url/index.ts +12 -0
  342. package/app/utils/Validator/Config.ts +96 -0
  343. package/app/utils/Validator/Validator.ts +268 -0
  344. package/app/utils/Validator/Validator.type.ts +47 -0
  345. package/app/utils/Validator/index.ts +12 -0
  346. package/app/utils/Wishlist/Wishlist.ts +65 -0
  347. package/app/utils/Wishlist/index.ts +12 -0
  348. package/app/utils/client.ts +280 -0
  349. package/app/utils/index.ts +53 -0
  350. package/app/utils/normalizer.ts +23 -0
  351. package/app/utils/normalizers/magento.ts +29 -0
  352. package/app/utils/normalizers/shopify.ts +29 -0
  353. package/nuxt.config.ts +11 -0
  354. package/package.json +43 -0
  355. package/tsconfig.json +45 -0
@@ -0,0 +1,309 @@
1
+ <template>
2
+ <div class="contentPage">
3
+ <div v-if="loading">Loading...</div>
4
+ <div v-else-if="error">Error: {{ error.message }}</div>
5
+ <div v-else-if="product">
6
+ <v-row>
7
+ <v-col cols="12">
8
+ <v-row>
9
+ <v-col cols="12">
10
+ <div>
11
+ <productDetails :productDetails="product" />
12
+ </div>
13
+ </v-col>
14
+ </v-row>
15
+ </v-col>
16
+
17
+ <v-col cols="12">
18
+ <v-card elevation="0">
19
+ <v-tabs v-model="tab" :bg-color="productbar?.color">
20
+ <div v-for="(menu, index) in productbar?.menus" :key="index">
21
+ <v-tab v-if="menu?.active === 'Active'" :value="menu?.value">{{ menu?.name }}</v-tab>
22
+ </div>
23
+ <!-- <v-tab value="four">FAQS</v-tab>
24
+ <v-tab value="five">Compare</v-tab>-->
25
+ <v-tab value="six" v-if="product?.type === 'Grouped Product'">Products</v-tab>
26
+ <v-tab value="seven" v-if="product?.type === 'Bundled Product'">Products</v-tab>
27
+ <v-tab value="eight" v-if="product?.type === 'Configurable Product'">Products</v-tab>
28
+ <v-tab value="nine" v-if="product?.product_types?.product_types_id?.name === 'Gift Card'">Redeem</v-tab>
29
+ </v-tabs>
30
+
31
+ <v-card-text>
32
+ <v-window v-model="tab">
33
+ <!--Product Description-->
34
+ <v-window-item :value="productbar?.menus[0]?.value">
35
+ <v-card variant="text">
36
+ <v-card-text style="font-size: 20px;" v-dompurify-html="product?.content"></v-card-text>
37
+ </v-card>
38
+ </v-window-item>
39
+
40
+ <!--Product Reviews-->
41
+ <v-window-item :value="productbar?.menus[1]?.value">
42
+ <!---<div v-if="product?.reviews?.items?.length > 0">
43
+ <div v-for="(review, index) in product?.reviews?.items" :key="index">
44
+ <productReviews :review="review" />
45
+ </div>
46
+ </div>-->
47
+ <comments :productName="product?.name"
48
+ :productImage="`${$directus.url}/assets/${product?.image?.filename_disk}`"
49
+ :productSku="product?.id" />
50
+ </v-window-item>
51
+
52
+ <!--Product Specifications-->
53
+ <v-window-item :value="productbar?.menus[2]?.value">
54
+ <productSpecs :product="product" />
55
+ </v-window-item>
56
+
57
+ <!--Product FAQs-->
58
+ <v-window-item :value="productbar?.menus[3]?.value">
59
+ <v-expansion-panels v-for="(faqs, index) in product?.faqs?.faqs_id" :key="index">
60
+ <v-expansion-panel :title="faqs.question" :text="faqs.answer">
61
+ </v-expansion-panel>
62
+ </v-expansion-panels>
63
+ </v-window-item>
64
+
65
+ <!--Product Compare List
66
+ <v-window-item :value="productbar?.menus[4]?.value">
67
+ <productCompare />
68
+ </v-window-item>-->
69
+
70
+ <!-- Group Products List -->
71
+ <v-window-item value="six">
72
+ <v-row v-if="product?.type === 'Grouped Product'">
73
+ <v-col cols="4" v-for="item in groupedProducts?.products" :key="item">
74
+ <productCard :product="item?.products_id" />
75
+ </v-col>
76
+ </v-row>
77
+
78
+ <v-row v-else>
79
+ <v-col cols="12">
80
+ <p>No products in this group.</p>
81
+ </v-col>
82
+ </v-row>
83
+ </v-window-item>
84
+
85
+ <!--Bundle Products List-->
86
+ <v-window-item value="seven">
87
+ <v-row v-if="product?.type === 'Bundled Product'">
88
+ <v-col cols="4" v-for="(product, index) in bundledProducts?.products" :key="index">
89
+ <productCard :product="product?.products_id" />
90
+ </v-col>
91
+ </v-row>
92
+
93
+ <v-row v-else>
94
+ <v-col cols="12">
95
+ <p>No products in this bundle.</p>
96
+ </v-col>
97
+ </v-row>
98
+ </v-window-item>
99
+
100
+ <!--Configurable Products List-->
101
+ <v-window-item value="eight">
102
+ <v-row v-if="product?.type === 'Configurable Product'">
103
+ <v-col cols="4" v-for="(product, index) in configurableProducts?.products" :key="index">
104
+ <productCard :product="product?.products_id" />
105
+ </v-col>
106
+ </v-row>
107
+
108
+ <v-row v-else>
109
+ <v-col cols="12">
110
+ <p>No products in this configuration.</p>
111
+ </v-col>
112
+ </v-row>
113
+ </v-window-item>
114
+
115
+ <!--Gift Cards Redeem Information-->
116
+ <v-window-item value="nine">
117
+ <v-row v-if="product?.product_types?.product_types_id?.name === 'Gift Card'">
118
+ <v-col cols="12">
119
+ <giftCard :gift="product" />
120
+ </v-col>
121
+ </v-row>
122
+
123
+ <v-row v-else>
124
+ <v-col cols="12">
125
+ <p>Not a valid Gift Card.</p>
126
+ </v-col>
127
+ </v-row>
128
+ </v-window-item>
129
+ </v-window>
130
+ </v-card-text>
131
+ </v-card>
132
+ </v-col>
133
+
134
+ <v-col cols="12">
135
+ <!--Crossell Products-->
136
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
137
+ <h4>This product goes great together with...</h4>
138
+ <!--Crossell Products-->
139
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
140
+ <v-slide-group-item v-for="(crossSell, index) in product?.cross_sell_products" :key="index"
141
+ v-slot="{ isSelected, toggle, selectedClass }">
142
+ <productCard :product="crossSell?.products_id" :class="['ma-4', selectedClass]" @click="toggle" />
143
+ <div class="d-flex fill-height align-center justify-center">
144
+ <v-scale-transition>
145
+ <v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
146
+ </v-scale-transition>
147
+ </div>
148
+ </v-slide-group-item>
149
+ </v-slide-group>
150
+ </v-sheet>
151
+
152
+ <!--Related Products-->
153
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
154
+ <h4>Related Products</h4>
155
+ <div v-if="product?.related_products?.length > 0">
156
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
157
+ <v-slide-group-item v-for="(relatedProduct, index) in product?.related_products" :key="index"
158
+ v-slot="{ isSelected, toggle, selectedClass }">
159
+ <productCard :product="relatedProduct?.products_id" :class="['ma-4', selectedClass]"
160
+ @click="toggle" />
161
+ <div class="d-flex fill-height align-center justify-center">
162
+ <v-scale-transition>
163
+ <v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
164
+ </v-scale-transition>
165
+ </div>
166
+ </v-slide-group-item>
167
+ </v-slide-group>
168
+ </div>
169
+ <div v-else>
170
+ <p>No related products available.</p>
171
+ </div>
172
+ </v-sheet>
173
+
174
+ <!--Product featured in Shops-->
175
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
176
+ <h4>Product featured in these Shops</h4>
177
+ <div v-if="product?.shops?.length > 0">
178
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
179
+ <v-slide-group-item v-for="(shops, index) in product?.shops" :key="index"
180
+ v-slot="{ isSelected, toggle, selectedClass }">
181
+ <shop :shop="shops?.shops_id" :class="['ma-4', selectedClass]" @click="toggle" />
182
+ <div class="d-flex fill-height align-center justify-center">
183
+ <v-scale-transition>
184
+ <v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
185
+ </v-scale-transition>
186
+ </div>
187
+ </v-slide-group-item>
188
+ </v-slide-group>
189
+ </div>
190
+ <div v-else>
191
+ <p>Not featured in any shops.</p>
192
+ </div>
193
+ </v-sheet>
194
+
195
+ <!--Product featured in Vibez-->
196
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
197
+ <h4>Product featured in these Vibez</h4>
198
+ <div v-if="product?.shorts?.length > 0">
199
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
200
+ <v-slide-group-item v-for="(shorts, index) in product?.shorts" :key="index"
201
+ v-slot="{ isSelected, toggle, selectedClass }">
202
+ <short :short="shorts?.shorts_id" :class="['ma-4', selectedClass]" @click="toggle" />
203
+ <div class="d-flex fill-height align-center justify-center">
204
+ <v-scale-transition>
205
+ <v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
206
+ </v-scale-transition>
207
+ </div>
208
+ </v-slide-group-item>
209
+ </v-slide-group>
210
+ </div>
211
+ <div v-else>
212
+ <p>Not featured in any shorts.</p>
213
+ </div>
214
+ </v-sheet>
215
+
216
+ <!--Product featured in Spaces-->
217
+ <v-sheet class="mx-auto sliderProducts row align-items-stretch items-row justify-content-center">
218
+ <h4>Product featured in these Spaces</h4>
219
+ <div v-if="product?.spaces?.length > 0">
220
+ <v-slide-group v-model="model" class="pa-4" selected-class="bg-success" show-arrows>
221
+ <v-slide-group-item v-for="(spaces, index) in product?.spaces" :key="index"
222
+ v-slot="{ isSelected, toggle, selectedClass }">
223
+ <spaces :space="spaces?.spaces_id" :class="['ma-4', selectedClass]" @click="toggle" />
224
+ <div class="d-flex fill-height align-center justify-center">
225
+ <v-scale-transition>
226
+ <v-icon v-if="isSelected" color="white" icon="mdi-close-circle-outline" size="48"></v-icon>
227
+ </v-scale-transition>
228
+ </div>
229
+ </v-slide-group-item>
230
+ </v-slide-group>
231
+ </div>
232
+ <div v-else>
233
+ <p>Not featured in any spaces.</p>
234
+ </div>
235
+ </v-sheet>
236
+ </v-col>
237
+ </v-row>
238
+ </div>
239
+ <div v-else>No product found</div>
240
+ </div>
241
+ </template>
242
+
243
+ <script setup>
244
+ import {
245
+ ref,
246
+ computed,
247
+ watch
248
+ } from 'vue';
249
+ import comments from '@/components/placeholders/Comments.vue'
250
+
251
+ import productDetails from '../../components/catalog/product/productDetails.vue'
252
+ import productSpecs from '../../components/catalog/product/productSpecs.vue'
253
+ import productCard from '../../components/catalog/product/productCard.vue'
254
+ import giftCard from '../../components/catalog/product/giftCard.vue'
255
+ import short from '@/components/placeholders/Short.vue'
256
+ import spaces from '@/components/placeholders/Space.vue'
257
+ import shop from '../../components/catalog/shops/stores.vue'
258
+
259
+ const tab = ref(null);
260
+ const model = ref(null);
261
+ const error = ref(null);
262
+ const loading = ref(false)
263
+
264
+ // Product query
265
+ const route = useRoute()
266
+
267
+ const { $commerce } = useNuxtApp()
268
+
269
+ const { data: product } = await useAsyncData('product', async () => {
270
+ return await $commerce.getProduct(route.params.id)
271
+ })
272
+
273
+ // Grouped/bundled products: Magento provider currently doesn't expose
274
+ // these specific relations via the generic interface. Fetch a small page
275
+ // of products as a fallback so the UI can render product cards.
276
+ const { data: groupedProducts } = await useAsyncData('groupedProducts', async () => {
277
+ return await $commerce.getProducts({ pageSize: 6 })
278
+ })
279
+
280
+ const { data: bundledProducts } = await useAsyncData('bundledProducts', async () => {
281
+ return await $commerce.getProducts({ pageSize: 6 })
282
+ })
283
+
284
+ const {
285
+ data: productBlocks
286
+ } = await useAsyncData('productBlocks', () => {
287
+ return $directus.request($readItem('page_blocks', '8', {
288
+ fields: ['*', 'media.directus_files_id.filename_disk', 'content.*'],
289
+ }))
290
+ })
291
+
292
+ const {
293
+ data: productbar
294
+ } = await useAsyncData('productbar', () => {
295
+ return $directus.request($readItem('navigation', '52'))
296
+ })
297
+
298
+ useHead({
299
+ title: computed(() => product?.value?.name || 'Product Page')
300
+ })
301
+
302
+ import { addViewed } from '../../composables/products/useRecentlyViewed'
303
+
304
+ watch(product, (newVal) => {
305
+ if (process.client && newVal?.id) {
306
+ addViewed(newVal.id)
307
+ }
308
+ }, { immediate: true })
309
+ </script>
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <div class="contentPage">
3
+ <v-card elevation="0">
4
+ <v-toolbar :title="showcasebar?.name" :color="showcasebar?.color"></v-toolbar>
5
+
6
+ <v-tabs v-model="tab" bg-color="purple">
7
+ <div v-for="(menu, index) in showcasebar?.menus" :key="index">
8
+ <v-tab v-if="menu?.active === 'Active'" :value="menu?.value">{{ menu?.name }}</v-tab>
9
+ </div>
10
+ </v-tabs>
11
+
12
+ <v-card-text>
13
+ <v-tabs-window v-model="tab">
14
+ <!--Bundle Products List-->
15
+ <v-window-item :value="showcasebar?.menus[0]?.value">
16
+ <v-row>
17
+ <v-col cols="4" v-for="(product, index) in bundledProducts" :key="index">
18
+ <productCard :product="product" />
19
+ </v-col>
20
+ </v-row>
21
+ </v-window-item>
22
+
23
+ <!-- Group Products List -->
24
+ <v-window-item :value="showcasebar?.menus[1]?.value">
25
+ <v-row>
26
+ <v-col cols="4" v-for="item in groupedProducts" :key="item">
27
+ <productCard :product="item" />
28
+ </v-col>
29
+ </v-row>
30
+ </v-window-item>
31
+
32
+ <!--Bundle Products List-->
33
+ <v-window-item :value="showcasebar?.menus[2]?.value">
34
+ <v-row>
35
+ <v-col cols="4" v-for="(product, index) in subscriptions" :key="index">
36
+ <productCard :product="product" />
37
+ </v-col>
38
+ </v-row>
39
+ </v-window-item>
40
+ </v-tabs-window>
41
+ </v-card-text>
42
+ </v-card>
43
+ </div>
44
+ </template>
45
+
46
+ <script setup>
47
+ import {
48
+ ref,
49
+ computed
50
+ } from 'vue'
51
+ import productCard from '~/components/catalog/product/productCard.vue'
52
+
53
+ const tab = ref(null);
54
+
55
+ const { $commerce } = useNuxtApp()
56
+
57
+ const { data: groupedProducts } = await useAsyncData('groupedProducts', async () => {
58
+ return await $commerce.getProducts({ pageSize: 12 })
59
+ })
60
+
61
+ const { data: bundledProducts } = await useAsyncData('bundledProducts', async () => {
62
+ return await $commerce.getProducts({ pageSize: 12 })
63
+ })
64
+
65
+ const { data: subscriptions } = await useAsyncData('subscriptions', async () => {
66
+ return await $commerce.getProducts({ pageSize: 12 })
67
+ })
68
+
69
+ const {
70
+ data: productBlocks
71
+ } = await useAsyncData('productBlocks', () => {
72
+ return $directus.request($readItem('page_blocks', '8', {
73
+ fields: ['*', 'media.directus_files_id.filename_disk', 'content.*'],
74
+ }))
75
+ })
76
+
77
+ const {
78
+ data: showcasebar
79
+ } = await useAsyncData('showcasebar', () => {
80
+ return $directus.request($readItem('navigation', '54'))
81
+ })
82
+
83
+ useHead({
84
+ title: 'Showcases',
85
+ });
86
+ </script>
@@ -0,0 +1,176 @@
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 Shipment</h2>
11
+ </div>
12
+ </div>
13
+ <div class="col-12 col-lg-8">
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
+ Order Information
23
+ </h4>
24
+ <a class="card-text mbr-fonts-style display-7" :href="`/order/${shipment?.order_id}`">Order #:
25
+ {{ shipment?.order_id }}</a>
26
+ <p class="card-text mbr-fonts-style display-7">Order Date:
27
+ {{ new Date(shipment?.created_at).toLocaleDateString() }}</p>
28
+ <p class="card-text mbr-fonts-style display-7">Order Status:
29
+ {{ shipment?.shipment_status }}</p>
30
+ <p class="card-text mbr-fonts-style display-7">Purchased From: {{ shipment?.store_id }}</p>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <div class="item features-without-image item-mb">
35
+ <div class="item-wrapper">
36
+ <div class="card-box">
37
+ <div class="icon-wrapper">
38
+ <span class="mbr-iconfont mobi-mbri-globe-2 mobi-mbri"></span>
39
+ </div>
40
+ <h4 class="card-title mbr-fonts-style display-7">
41
+ Account Information
42
+ </h4>
43
+ <p class="card-text mbr-fonts-style display-7">Customer Name: {{ shipment?.customer_id }}</p>
44
+ <p class="card-text mbr-fonts-style display-7">Email: {{ shipment?.email_sent }}</p>
45
+ <p class="card-text mbr-fonts-style display-7">Customer Group: </p>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ <div class="item features-without-image item-mb">
50
+ <div class="item-wrapper">
51
+ <div class="card-box">
52
+ <div class="icon-wrapper">
53
+ <span class="mbr-iconfont mobi-mbri-delivery mobi-mbri"></span>
54
+ </div>
55
+ <h4 class="card-title mbr-fonts-style display-7">
56
+ Billing Address
57
+ </h4>
58
+ <p class="card-text mbr-fonts-style display-7">{{ shipment?.billing_address_id }}
59
+ </p>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ <div class="item features-without-image item-mb">
64
+ <div class="item-wrapper">
65
+ <div class="card-box">
66
+ <div class="icon-wrapper">
67
+ <span class="mbr-iconfont mobi-mbri-refresh mobi-mbri"></span>
68
+ </div>
69
+ <h4 class="card-title mbr-fonts-style display-7">
70
+ Shipping Address
71
+ </h4>
72
+ <p class="card-text mbr-fonts-style display-7">{{ shipment?.shipping_address_id }}
73
+ </p>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div class="item features-without-image item-mb">
78
+ <div class="item-wrapper">
79
+ <div class="card-box">
80
+ <div class="icon-wrapper">
81
+ <span class="mbr-iconfont mobi-mbri-responsive-2 mobi-mbri"></span>
82
+ </div>
83
+ <h4 class="card-title mbr-fonts-style display-7">
84
+ Payment Information
85
+ </h4>
86
+ <p class="card-text mbr-fonts-style display-7">The order was placed using
87
+ {{ shipment?.order_currency_code }}</p>
88
+ </div>
89
+ </div>
90
+ </div>
91
+ <div class="item features-without-image item-mb">
92
+ <div class="item-wrapper">
93
+ <div class="card-box">
94
+ <div class="icon-wrapper">
95
+ <span class="mbr-iconfont mobi-mbri-cash mobi-mbri"></span>
96
+ </div>
97
+ <h4 class="card-title mbr-fonts-style display-7">
98
+ Shipping and Tracking Information
99
+ </h4>
100
+ <p class="card-text mbr-fonts-style display-7">Carrier: {{ shipment?.tracks?.carrier_code }}</p>
101
+ <p class="card-text mbr-fonts-style display-7">Title: {{ shipment?.tracks?.title }}</p>
102
+ <p class="card-text mbr-fonts-style display-7">Weight: {{ shipment?.tracks?.weight }}</p>
103
+ <p class="card-text mbr-fonts-style display-7">Description: {{ shipment?.tracks?.description }}</p>
104
+ <p class="card-text mbr-fonts-style display-7">Tracking #: {{ shipment?.tracks?.track_number }}</p>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <img src="../../assets/images/background2.jpg" alt="Shipments">
114
+ </section>
115
+
116
+ <v-card title="Shipment Items" flat>
117
+ <div class="container">
118
+ <v-data-table :headers="headers" :items="shipment?.items" :items-per-page="5" class="elevation-1">
119
+ <template v-slot:[`item.name`]="{ item }">
120
+ <strong>{{ item.name }}</strong>
121
+ </template>
122
+ <template v-slot:[`item.qty`]="{ item }">
123
+ {{ item.qty }}
124
+ </template>
125
+ </v-data-table>
126
+ </div>
127
+ </v-card>
128
+ </div>
129
+ </template>
130
+
131
+ <script>
132
+ export default {
133
+ data: () => ({
134
+ headers: [{
135
+ text: 'Product',
136
+ value: 'name'
137
+ },
138
+ {
139
+ text: 'Quantity',
140
+ value: 'qty'
141
+ }
142
+ ],
143
+ }),
144
+ }
145
+ </script>
146
+
147
+ <script setup>
148
+ const route = useRoute();
149
+
150
+ const {
151
+ $directus,
152
+ $readItem
153
+ } = useNuxtApp()
154
+ const user = useSupabaseUser()
155
+
156
+ const {
157
+ data: shipment
158
+ } = await useAsyncData('shipment', () => {
159
+ return $directus.request($readItem('shipments', route.params.id, {
160
+ filter: {
161
+ user: {
162
+ _eq: `${user?.id}`
163
+ }
164
+ },
165
+ limit: 1
166
+ })).then(response => response?.[0])
167
+ })
168
+
169
+ useHead({
170
+ title: 'Shipment' + shipment?.value?.id || 'Shipment Page',
171
+ })
172
+
173
+ definePageMeta({
174
+ //middleware: ['auth-logged-in'],
175
+ })
176
+ </script>