@meeovi/layer-commerce 1.0.0 → 1.0.2

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 (296) 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 +69 -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 +61 -0
  22. package/app/components/catalog/product/exclusives.vue +58 -0
  23. package/app/components/catalog/product/featuredproducts.vue +69 -0
  24. package/app/components/catalog/product/giftCard.vue +63 -0
  25. package/app/components/catalog/product/latestproducts.vue +58 -0
  26. package/app/components/catalog/product/productCard.vue +71 -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 +120 -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 +58 -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 +47 -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 +52 -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/content/blocks/breadcrumbs.vue +0 -0
  67. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  68. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  69. package/app/components/content/blocks/videoproduct.vue +9 -0
  70. package/app/components/content/pages/checkout.vue +118 -0
  71. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  72. package/app/components/content/pages/pickup-locations.vue +238 -0
  73. package/app/components/content/pages/showcases.vue +90 -0
  74. package/app/components/content/pages/success.vue +60 -0
  75. package/app/components/marketing/add-brand.vue +54 -0
  76. package/app/components/marketing/add-incentive.vue +54 -0
  77. package/app/components/marketing/promotions/giftcards.vue +127 -0
  78. package/app/components/marketing/promotions/subscriptions.vue +134 -0
  79. package/app/components/marketing/update-incentive.vue +326 -0
  80. package/app/components/menus/lowernav.vue +78 -0
  81. package/app/components/partials/LocaleSelector.vue +24 -0
  82. package/app/components/partials/ShoppingCart.vue +128 -0
  83. package/app/components/partials/StripePayment.vue +149 -0
  84. package/app/components/partials/addToCartBtn.vue +40 -0
  85. package/app/components/partials/cartItem.vue +124 -0
  86. package/app/components/partials/checkoutButton.vue +44 -0
  87. package/app/components/partials/compareBtn.vue +68 -0
  88. package/app/components/partials/ratings.vue +13 -0
  89. package/app/components/partials/store/CurrencySelector.vue +133 -0
  90. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  91. package/app/components/related/brandCard.vue +41 -0
  92. package/app/components/related/incentiveCard.vue +44 -0
  93. package/app/components/related/invoiceCard.vue +43 -0
  94. package/app/components/related/orderCard.vue +43 -0
  95. package/app/components/related/relatedproducts.vue +17 -0
  96. package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
  97. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  98. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  99. package/app/components/sales/CheckoutAddress/types.ts +15 -0
  100. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
  101. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  102. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  103. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  104. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  105. package/app/components/sales/OrderSummary/types.ts +5 -0
  106. package/app/components/sales/incentives.vue +247 -0
  107. package/app/components/sales/invoices.vue +107 -0
  108. package/app/components/sales/orders.vue +378 -0
  109. package/app/components/sales/shipments.vue +65 -0
  110. package/app/components/sales/transactions.vue +109 -0
  111. package/app/components/shop/add-shop.vue +54 -0
  112. package/app/components/shop/cart/cartItem.vue +182 -0
  113. package/app/components/shop/cart/checkout.vue +415 -0
  114. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  115. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  116. package/app/components/shop/checkout/addressBilling.vue +263 -0
  117. package/app/components/shop/checkout/addressShipping.vue +175 -0
  118. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  119. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  120. package/app/composables/_types.ts +17 -0
  121. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  122. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  123. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  124. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  125. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  126. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  127. package/app/composables/cart/registry.ts +13 -0
  128. package/app/composables/cart/types.ts +18 -0
  129. package/app/composables/cart/useCart.ts +15 -0
  130. package/app/composables/config.ts +19 -0
  131. package/app/composables/defs/apiDefinitions.ts +55 -0
  132. package/app/composables/defs/extension.feature +40 -0
  133. package/app/composables/defs/extension.mocks.ts +39 -0
  134. package/app/composables/defs/extension.test.ts +280 -0
  135. package/app/composables/defs/extension.ts +236 -0
  136. package/app/composables/defs/index.ts +3 -0
  137. package/app/composables/defs/types.ts +136 -0
  138. package/app/composables/domain/cart.ts +0 -0
  139. package/app/composables/domain/category.ts +0 -0
  140. package/app/composables/domain/order.ts +0 -0
  141. package/app/composables/domain/price.ts +0 -0
  142. package/app/composables/domain/product.ts +8 -0
  143. package/app/composables/domain/reward.ts +0 -0
  144. package/app/composables/domain/transactions.ts +0 -0
  145. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  146. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  147. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  148. package/app/composables/helpers/index.ts +1 -0
  149. package/app/composables/index.ts +5 -0
  150. package/app/composables/methods/auth.ts +83 -0
  151. package/app/composables/methods/cart.ts +119 -0
  152. package/app/composables/methods/category.ts +27 -0
  153. package/app/composables/methods/checkout.ts +54 -0
  154. package/app/composables/methods/customer.ts +52 -0
  155. package/app/composables/methods/helpers.ts +5 -0
  156. package/app/composables/methods/index.ts +75 -0
  157. package/app/composables/methods/order.ts +39 -0
  158. package/app/composables/methods/product.ts +95 -0
  159. package/app/composables/methods/settings.ts +16 -0
  160. package/app/composables/models/cart.ts +95 -0
  161. package/app/composables/models/category.ts +13 -0
  162. package/app/composables/models/checkout.ts +17 -0
  163. package/app/composables/models/customer.ts +16 -0
  164. package/app/composables/models/facets.ts +25 -0
  165. package/app/composables/models/index.ts +94 -0
  166. package/app/composables/models/order.ts +43 -0
  167. package/app/composables/models/product.ts +73 -0
  168. package/app/composables/models/shared.ts +75 -0
  169. package/app/composables/products/registry.ts +13 -0
  170. package/app/composables/products/types.ts +13 -0
  171. package/app/composables/products/useEvents.ts +0 -0
  172. package/app/composables/products/useGiftCards.ts +0 -0
  173. package/app/composables/products/useProducts.ts +12 -0
  174. package/app/composables/products/useSubscriptions.ts +0 -0
  175. package/app/composables/stores/cart.ts +218 -0
  176. package/app/composables/stores/cartStore.ts +300 -0
  177. package/app/composables/stores/checkout.ts +19 -0
  178. package/app/composables/stores/compare.ts +65 -0
  179. package/app/composables/stores/currency.js +29 -0
  180. package/app/composables/stores/digital-products.js +11 -0
  181. package/app/composables/stores/index.js +0 -0
  182. package/app/composables/stores/orders.ts +161 -0
  183. package/app/composables/stores/product.ts +26 -0
  184. package/app/composables/stores/productList.ts +0 -0
  185. package/app/composables/stores/productListInfo.ts +0 -0
  186. package/app/composables/stores/products.ts +112 -0
  187. package/app/composables/stores/recentlyViewedProducts.ts +0 -0
  188. package/app/composables/stores/review.ts +25 -0
  189. package/app/composables/stores/storeInPickUp.ts +22 -0
  190. package/app/composables/stores/user.ts +20 -0
  191. package/app/composables/stores/wishlist.ts +19 -0
  192. package/app/composables/types/Order.type.ts +181 -0
  193. package/app/composables/types/index.ts +285 -0
  194. package/app/composables/types/product.ts +14 -0
  195. package/app/composables/useBreakpoints/index.ts +1 -0
  196. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  197. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  198. package/app/composables/useCart/index.ts +1 -0
  199. package/app/composables/useCart/types.ts +17 -0
  200. package/app/composables/useCart/useCart.ts +46 -0
  201. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  202. package/app/composables/useCartShippingMethods/index.ts +1 -0
  203. package/app/composables/useCartShippingMethods/types.ts +17 -0
  204. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  205. package/app/composables/useContent/index.ts +1 -0
  206. package/app/composables/useContent/types.ts +44 -0
  207. package/app/composables/useContent/useContent.ts +45 -0
  208. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  209. package/app/composables/useCustomer/index.ts +2 -0
  210. package/app/composables/useCustomer/types.ts +17 -0
  211. package/app/composables/useCustomer/useCustomer.ts +40 -0
  212. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  213. package/app/composables/useCustomerAddress/index.ts +2 -0
  214. package/app/composables/useCustomerAddress/types.ts +17 -0
  215. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  216. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  217. package/app/composables/useCustomerOrder/adress.ts +10 -0
  218. package/app/composables/useCustomerOrder/index.ts +2 -0
  219. package/app/composables/useCustomerOrder/product.ts +37 -0
  220. package/app/composables/useCustomerOrder/types.ts +40 -0
  221. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  222. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  223. package/app/composables/useCustomerOrders/index.ts +2 -0
  224. package/app/composables/useCustomerOrders/types.ts +20 -0
  225. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  226. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  227. package/app/composables/useCustomerReturns/index.ts +2 -0
  228. package/app/composables/useCustomerReturns/types.ts +17 -0
  229. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  230. package/app/composables/useHandleError/index.ts +1 -0
  231. package/app/composables/useHandleError/types.ts +11 -0
  232. package/app/composables/useHandleError/useHandleError.ts +27 -0
  233. package/app/composables/usePageTitle.ts +16 -0
  234. package/app/composables/useProduct/index.ts +2 -0
  235. package/app/composables/useProduct/types.ts +17 -0
  236. package/app/composables/useProduct/useProduct.ts +42 -0
  237. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  238. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  239. package/app/composables/useProductAttribute/index.ts +1 -0
  240. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  241. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  242. package/app/composables/useProductRecommended/index.ts +1 -0
  243. package/app/composables/useProductRecommended/types.ts +17 -0
  244. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  245. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  246. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  247. package/app/composables/useProductReviews/index.ts +2 -0
  248. package/app/composables/useProductReviews/types.ts +17 -0
  249. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  250. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  251. package/app/composables/useProducts/types.ts +17 -0
  252. package/app/composables/useProducts/useProducts.ts +41 -0
  253. package/app/composables/utils/countryList.ts +14 -0
  254. package/app/composables/utils/currency.js +56 -0
  255. package/app/composables/utils/glossary.ts +0 -0
  256. package/app/composables/utils/importExport.ts +0 -0
  257. package/app/composables/utils/index.js +0 -0
  258. package/app/composables/utils/print.ts +0 -0
  259. package/app/composables/utils/shopThemes.ts +0 -0
  260. package/app/composables/utils/statistics.ts +0 -0
  261. package/app/composables/utils/stock.ts +0 -0
  262. package/app/composables/utils/stripe.ts +16 -0
  263. package/app/composables/utils/taxation.ts +0 -0
  264. package/app/composables/utils/tellFriends.ts +0 -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/pages/brand/[...slug].vue +92 -0
  274. package/app/pages/brands.vue +90 -0
  275. package/app/pages/cart.vue +142 -0
  276. package/app/pages/compare.vue +166 -0
  277. package/app/pages/incentive/[...id].vue +66 -0
  278. package/app/pages/invoice/[id].vue +309 -0
  279. package/app/pages/order/[id].vue +327 -0
  280. package/app/pages/product/[...id].vue +309 -0
  281. package/app/pages/product/showcases/index.vue +86 -0
  282. package/app/pages/shipment/[...id].vue +176 -0
  283. package/app/pages/shop/[...slug].vue +164 -0
  284. package/app/pages/shops.vue +83 -0
  285. package/app/pages/subscription/[...id].vue +147 -0
  286. package/app/pages/transaction/[...id].vue +74 -0
  287. package/app/types/shims-imports.d.ts +13 -0
  288. package/app/utils/client.ts +26 -0
  289. package/app/utils/index.ts +53 -0
  290. package/app/utils/normalizer.ts +23 -0
  291. package/app/utils/normalizers/magento.ts +29 -0
  292. package/app/utils/normalizers/shopify.ts +29 -0
  293. package/dist/client.js +1 -1
  294. package/nuxt.config.ts +11 -0
  295. package/package.json +9 -24
  296. package/tsconfig.json +15 -0
@@ -0,0 +1,166 @@
1
+ <template>
2
+ <div class="compare-page">
3
+ <div class="container mx-auto px-4 py-8">
4
+ <h1 class="text-3xl font-bold mb-8">Compare Products</h1>
5
+
6
+ <div v-if="loading" class="text-center">
7
+ <p>Loading products...</p>
8
+ </div>
9
+
10
+ <div v-else-if="error" class="text-center text-red-500">
11
+ <p>Error loading products: {{ error.message }}</p>
12
+ </div>
13
+
14
+ <div v-else-if="!products.length" class="text-center">
15
+ <p>No products selected for comparison. Add products to your compare list to see them here.</p>
16
+ <NuxtLink to="/" class="mt-4 inline-block text-blue-500 hover:text-blue-700">
17
+ Continue Shopping
18
+ </NuxtLink>
19
+ </div>
20
+
21
+ <div v-else>
22
+ <productCompareTable
23
+ :products="products"
24
+ @remove-product="handleRemoveProduct"
25
+ />
26
+
27
+ <div class="mt-8 flex justify-between">
28
+ <button
29
+ @click="clearCompareList"
30
+ class="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600"
31
+ >
32
+ Clear Compare List
33
+ </button>
34
+ <NuxtLink
35
+ to="/"
36
+ class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
37
+ >
38
+ Continue Shopping
39
+ </NuxtLink>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </template>
45
+
46
+ <script setup>
47
+ import { ref, onMounted, computed } from 'vue';
48
+ import { useQuery, useMutation } from '@vue/apollo-composable';
49
+ import gql from 'graphql-tag';
50
+ import productCompareTable from '~/components/catalog/product/productCompareTable.vue';
51
+
52
+ // GraphQL query to get compared products
53
+ const COMPARED_PRODUCTS_QUERY = gql`
54
+ query GetComparedProducts {
55
+ customer {
56
+ compare_list {
57
+ items {
58
+ product {
59
+ uid
60
+ sku
61
+ name
62
+ image {
63
+ url
64
+ }
65
+ price_range {
66
+ minimum_price {
67
+ regular_price {
68
+ currency
69
+ value
70
+ }
71
+ }
72
+ }
73
+ categories {
74
+ name
75
+ }
76
+ rating_summary
77
+ review_count
78
+ reviews_summary
79
+ price_history
80
+ custom_attributes
81
+ features
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ `;
88
+
89
+ // GraphQL mutation to clear compare list
90
+ const CLEAR_COMPARE_LIST_MUTATION = gql`
91
+ mutation ClearCompareList {
92
+ clearCompareList {
93
+ compare_list {
94
+ items {
95
+ product {
96
+ uid
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ `;
103
+
104
+ // GraphQL mutation to remove a single product from compare list
105
+ const REMOVE_PRODUCT_MUTATION = gql`
106
+ mutation RemoveFromCompareList($productId: ID!) {
107
+ removeProductsFromCompareList(input: { product_ids: [$productId] }) {
108
+ compare_list {
109
+ items {
110
+ product {
111
+ uid
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ `;
118
+
119
+ const { result, loading, error, refetch } = useQuery(COMPARED_PRODUCTS_QUERY);
120
+ const { mutate: clearCompareListMutation } = useMutation(CLEAR_COMPARE_LIST_MUTATION);
121
+ const { mutate: removeProductMutation } = useMutation(REMOVE_PRODUCT_MUTATION);
122
+
123
+ const products = computed(() => {
124
+ return result.value?.customer?.compare_list?.items?.map(item => item.product) || [];
125
+ });
126
+
127
+ const clearCompareList = async () => {
128
+ try {
129
+ await clearCompareListMutation();
130
+ await refetch();
131
+ } catch (error) {
132
+ console.error('Failed to clear compare list:', error);
133
+ }
134
+ };
135
+
136
+ const handleRemoveProduct = async (productId) => {
137
+ try {
138
+ await removeProductMutation({
139
+ variables: {
140
+ productId
141
+ }
142
+ });
143
+ await refetch();
144
+ } catch (error) {
145
+ console.error('Failed to remove product from compare list:', error);
146
+ }
147
+ };
148
+
149
+ onMounted(async () => {
150
+ await refetch();
151
+ });
152
+ </script>
153
+
154
+ <style scoped>
155
+ .compare-page {
156
+ min-height: 100vh;
157
+ background-color: #f9fafb;
158
+ }
159
+
160
+ @media (max-width: 768px) {
161
+ .container {
162
+ padding-left: 1rem;
163
+ padding-right: 1rem;
164
+ }
165
+ }
166
+ </style>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div>
3
+ <section data-bs-version="5.1" class="firmm4_features1 features1 cid-uhBuptnWmV" id="features1-9v"
4
+ data-sortbtn="btn-primary">
5
+ <div class="container-fluid">
6
+ <div class="row justify-content-center">
7
+ <div class="card">
8
+ <div class="card_wrapper">
9
+ <div class="card-box">
10
+ <div class="icon_block">
11
+ <div class="iconfont-wrapper">
12
+ <span class="mbr-iconfont mobi-mbri-cart-full mobi-mbri"></span>
13
+ </div>
14
+ </div>
15
+ <p class="card-text mbr-fonts-style display-4">Invoice: {{ invoice?.id }}</p>
16
+ <p class="card-text mbr-fonts-style display-4">Invoice Date: {{ new Date(invoice?.created_at).toLocaleDateString() }}</p>
17
+ <p class="card-text mbr-fonts-style display-4">Order #: {{ invoice?.order_id?.orders_id?.id }}</p>
18
+ <p class="card-text mbr-fonts-style display-4">Order Date: {{ new Date(invoice?.updated_at).toLocaleDateString() }}
19
+ </p>
20
+ <p class="card-text mbr-fonts-style display-4">Bill to Name: {{ invoice?.user?.first_name }} {{ invoice?.user?.last_name }}</p>
21
+ <p class="card-text mbr-fonts-style display-4">Status: {{ invoice?.state }}</p>
22
+ <p class="card-text mbr-fonts-style display-4">Grand Total (Base): {{ invoice?.base_grand_total }}</p>
23
+ <p class="card-text mbr-fonts-style display-4">Grand Total (Purchased): {{ invoice?.grand_total }}</p>
24
+ <p class="btn_link mbr-fonts-style display-4"><NuxtLink :to="`/commerce/invoice/${invoice?.id}`" class="text-secondary">View<span class="mobi-mbri mobi-mbri-right mbr-iconfont"></span></NuxtLink></p>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </section>
31
+ </div>
32
+ </template>
33
+
34
+ <script setup>
35
+ import {
36
+ ref,
37
+ onMounted
38
+ } from 'vue';
39
+ const route = useRoute();
40
+ const {
41
+ $directus,
42
+ $readItem
43
+ } = useNuxtApp()
44
+ const user = useSupabaseUser()
45
+
46
+ const {
47
+ data: invoice
48
+ } = await useAsyncData('invoice', () => {
49
+ return $directus.request($readItem('invoices', route.params.id, {
50
+ filter: {
51
+ user: {
52
+ _eq: `${user?.id}`
53
+ }
54
+ },
55
+ limit: 1
56
+ })).then(response => response?.[0])
57
+ })
58
+
59
+ useHead({
60
+ title: 'Invoice' + invoice?.value?.id || 'Invoice Page',
61
+ })
62
+
63
+ definePageMeta({
64
+ //middleware: ['auth-logged-in'],
65
+ })
66
+ </script>
@@ -0,0 +1,309 @@
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 Invoice</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
+ <NuxtLink class="card-text mbr-fonts-style display-7" :to="`/order/${invoice?.order_id}`">Order #:
25
+ {{ invoice?.order_id }}</NuxtLink>
26
+ <p class="card-text mbr-fonts-style display-7">Order Date:
27
+ {{ new Date(invoice?.created_at).toLocaleDateString() }}</p>
28
+ <p class="card-text mbr-fonts-style display-7">Order Status:
29
+ {{ invoice?.state }}</p>
30
+ <p class="card-text mbr-fonts-style display-7">Purchased From: {{ invoice?.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: </p>
44
+ <p class="card-text mbr-fonts-style display-7">Email: {{ invoice?.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">{{ invoice?.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">{{ invoice?.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
+ {{ invoice?.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 Information
99
+ </h4>
100
+ <p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_address_id }}
101
+ </p>
102
+ <p class="card-text mbr-fonts-style display-7">Total Shipping Charges: {{ invoice?.shipping_amount }}</p>
103
+ <p class="card-text mbr-fonts-style display-7">
104
+ {{ invoice?.shipping_discount_tax_compensation_amount }}</p>
105
+ <p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_incl_tax }}</p>
106
+ <p class="card-text mbr-fonts-style display-7">{{ invoice?.shipping_tax_amount }}
107
+ </p>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <img src="../../assets/images/background2.jpg" alt="Invoices">
117
+ </section>
118
+
119
+ <v-card title="Invoice Items" flat>
120
+ <div class="container">
121
+ <v-data-table :headers="headers" :items="invoice?.items" :items-per-page="5" class="elevation-1">
122
+ <template v-slot:[`item.name`]="{ item }">
123
+ <strong>{{ item.name }}</strong>
124
+ </template>
125
+ <template v-slot:[`item.price_incl_tax`]="{ item }">
126
+ {{ item.price_incl_tax }}
127
+ </template>
128
+ <template v-slot:[`item.qty`]="{ item }">
129
+ {{ item.qty }}
130
+ </template>
131
+ <template v-slot:[`item.price`]="{ item }">
132
+ {{ item.price }}
133
+ </template>
134
+ <template v-slot:[`item.tax_amount`]="{ item }">
135
+ <span v-dompurify-html="item.tax_amount"></span>
136
+ </template>
137
+ <template v-slot:[`item.discount_amount`]="{ item }">
138
+ {{ item.discount_amount }}
139
+ </template>
140
+ <template v-slot:[`item.row_total`]="{ item }">
141
+ {{ item.row_total }}
142
+ </template>
143
+ </v-data-table>
144
+ </div>
145
+ </v-card>
146
+ <section data-bs-version="5.1" class="pricing1 lodgem5 cid-uhBqGPVpcI" id="apricing1-9s">
147
+ <div class="container">
148
+ <div class="row">
149
+ <div class="col-12">
150
+ <div class="mbr-section-head">
151
+ <h3 class="mbr-section-title mbr-fonts-style mb-0 display-5">
152
+ Invoice Totals</h3>
153
+
154
+ </div>
155
+ <div class="tabl-container">
156
+ <div class="tabl-item-row">
157
+ <div class="tabl-item-column">
158
+ <p class="card-text mbr-fonts-style mb-0 display-7">
159
+ Subtotal
160
+ </p>
161
+ </div>
162
+ <div class="tabl-item-column">
163
+ <p class="card-text mbr-fonts-style mb-0 display-7">
164
+ {{ invoice?.subtotal }}
165
+ </p>
166
+ </div>
167
+
168
+ </div>
169
+
170
+ <div class="tabl-item-row">
171
+ <div class="tabl-item-column">
172
+ <p class="card-text mbr-fonts-style mb-0 display-7">
173
+ Shipping & Handling
174
+ </p>
175
+ </div>
176
+ <div class="tabl-item-column">
177
+ <p class="card-text mbr-fonts-style mb-0 display-7">
178
+ {{ invoice?.base_shipping_incl_tax }}
179
+ </p>
180
+ </div>
181
+
182
+ </div>
183
+ <div class="tabl-item-row">
184
+ <div class="tabl-item-column">
185
+ <p class="card-text mbr-fonts-style mb-0 display-7">
186
+ Adjustment Refund
187
+ </p>
188
+ </div>
189
+ <div class="tabl-item-column">
190
+ <p class="card-text mbr-fonts-style mb-0 display-7">
191
+ {{ invoice?.adjustment_negative }} {{ invoice?.adjustment }}
192
+ {{ invoice?.adjustment_positive }}
193
+ </p>
194
+ </div>
195
+
196
+ </div>
197
+ <div class="tabl-item-row">
198
+ <div class="tabl-item-column">
199
+ <p class="card-text mbr-fonts-style mb-0 display-7">
200
+ Adjustment Fee
201
+ </p>
202
+ </div>
203
+ <div class="tabl-item-column">
204
+ <p class="card-text mbr-fonts-style mb-0 display-7">
205
+ {{ invoice?.base_adjustment_negative }} {{ invoice?.base_adjustment }}
206
+ {{ invoice?.base_adjustment_positive }}
207
+ </p>
208
+ </div>
209
+
210
+ </div>
211
+ <div class="tabl-item-row">
212
+ <div class="tabl-item-column">
213
+ <p class="card-text mbr-fonts-style mb-0 display-7">
214
+ Tax
215
+ </p>
216
+ </div>
217
+ <div class="tabl-item-column">
218
+ <p class="card-text mbr-fonts-style mb-0 display-7">
219
+ {{ invoice?.tax_amount }}
220
+ </p>
221
+ </div>
222
+ </div>
223
+ <div class="tabl-item-row">
224
+ <div class="tabl-item-column">
225
+ <p class="card-text mbr-fonts-style mb-0 display-7">
226
+ <strong>Grand Total</strong>
227
+ </p>
228
+ </div>
229
+ <div class="tabl-item-column">
230
+ <p class="card-text mbr-fonts-style mb-0 display-7">
231
+ <strong>{{ invoice?.grand_total }}</strong>
232
+ </p>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </section>
240
+ </div>
241
+ </template>
242
+
243
+ <script>
244
+
245
+ export default {
246
+ data: () => ({
247
+ headers: [{
248
+ text: 'Product',
249
+ value: 'name'
250
+ },
251
+ {
252
+ text: 'Price',
253
+ value: 'price_incl_tax'
254
+ },
255
+ {
256
+ text: 'Quantity',
257
+ value: 'qty'
258
+ },
259
+ {
260
+ text: 'Subtotal',
261
+ value: 'price'
262
+ },
263
+ {
264
+ text: 'Tax Amount',
265
+ value: 'tax_amount'
266
+ },
267
+ {
268
+ text: 'Discount Amount',
269
+ value: 'discount_amount'
270
+ },
271
+ {
272
+ text: 'Row Total',
273
+ value: 'tow_total',
274
+ },
275
+ ],
276
+ }),
277
+ }
278
+ </script>
279
+
280
+ <script setup>
281
+ const route = useRoute();
282
+ const {
283
+ $directus,
284
+ $readItem
285
+ } = useNuxtApp()
286
+ const user = useSupabaseUser()
287
+
288
+ const {
289
+ data: invoice
290
+ } = await useAsyncData('invoice', () => {
291
+ return $directus.request($readItem('invoices', route.params.id, {
292
+ filter: {
293
+ user: {
294
+ _eq: `${user?.id}`
295
+ }
296
+ },
297
+ limit: 1
298
+ })).then(response => response?.[0])
299
+ })
300
+
301
+ useHead({
302
+ title: 'Invoice' + invoice?.value?.id || 'Invoice Page',
303
+ })
304
+
305
+
306
+ definePageMeta({
307
+ //middleware: ['auth-logged-in'],
308
+ })
309
+ </script>