flowrix 1.0.1-beta.12 → 1.0.1-beta.120

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 (267) hide show
  1. package/dist/module.d.mts +1 -6
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +170 -30
  4. package/dist/runtime/composables/Blog/useBlogIndex.d.ts +2 -5
  5. package/dist/runtime/composables/Blog/useBlogSingle.js +2 -4
  6. package/dist/runtime/composables/Brand/brand.js +2 -0
  7. package/dist/runtime/composables/Cart/useCart.d.ts +40 -0
  8. package/dist/runtime/composables/Cart/useCart.js +10 -0
  9. package/dist/runtime/composables/Cart/useCartComponent.d.ts +1 -0
  10. package/dist/runtime/composables/Cart/useCartComponent.js +11 -0
  11. package/dist/runtime/composables/Cart/useCartDetail.d.ts +15 -5
  12. package/dist/runtime/composables/Cart/useCartDetail.js +3 -0
  13. package/dist/runtime/composables/Category/useCategoryIndex.d.ts +25 -32
  14. package/dist/runtime/composables/Category/useCategoryIndex.js +56 -44
  15. package/dist/runtime/composables/Checkout/PaymentMethods/useDirectDeposit.js +8 -0
  16. package/dist/runtime/composables/Checkout/PaymentMethods/useEway.js +16 -6
  17. package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.d.ts +40 -1
  18. package/dist/runtime/composables/Checkout/PaymentMethods/useFlowrixpay.js +10 -2
  19. package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.d.ts +40 -1
  20. package/dist/runtime/composables/Checkout/PaymentMethods/useOpayo.js +10 -2
  21. package/dist/runtime/composables/Checkout/PaymentMethods/usePaymentMethods.js +3 -14
  22. package/dist/runtime/composables/Checkout/PaymentMethods/usePaypal.js +8 -0
  23. package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.d.ts +2 -2
  24. package/dist/runtime/composables/Checkout/PaymentMethods/useStripe.js +8 -0
  25. package/dist/runtime/composables/Checkout/PaymentMethods/useZippay.js +8 -0
  26. package/dist/runtime/composables/Checkout/useCheckout.d.ts +85 -73
  27. package/dist/runtime/composables/Checkout/useCheckout.js +84 -53
  28. package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.d.ts +43 -0
  29. package/dist/runtime/composables/Checkout/useCheckoutBillingAddress.js +84 -0
  30. package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.d.ts +55 -0
  31. package/dist/runtime/composables/Checkout/useCheckoutShippingAddress.js +196 -0
  32. package/dist/runtime/composables/Checkout/useCreateAccount.d.ts +7 -7
  33. package/dist/runtime/composables/Checkout/useCreateAccount.js +3 -1
  34. package/dist/runtime/composables/Checkout/useDeliveryMethod.d.ts +2 -2
  35. package/dist/runtime/composables/Checkout/useDeliveryMethod.js +18 -11
  36. package/dist/runtime/composables/Customer/useBillingAddress.d.ts +112 -0
  37. package/dist/runtime/composables/Customer/useBillingAddress.js +93 -0
  38. package/dist/runtime/composables/Customer/useLogin.d.ts +9 -0
  39. package/dist/runtime/composables/Customer/useLogin.js +34 -0
  40. package/dist/runtime/composables/Customer/useOrders.d.ts +29 -0
  41. package/dist/runtime/composables/Customer/useOrders.js +56 -0
  42. package/dist/runtime/composables/Customer/usePasswordReset.d.ts +26 -0
  43. package/dist/runtime/composables/Customer/usePasswordReset.js +258 -0
  44. package/dist/runtime/composables/Customer/useProfile.d.ts +75 -0
  45. package/dist/runtime/composables/Customer/useProfile.js +106 -0
  46. package/dist/runtime/composables/Customer/useQuotations.d.ts +32 -0
  47. package/dist/runtime/composables/Customer/useQuotations.js +40 -0
  48. package/dist/runtime/composables/Customer/useRegister.d.ts +121 -13
  49. package/dist/runtime/composables/Customer/useRegister.js +310 -35
  50. package/dist/runtime/composables/Customer/useShippingAddress.d.ts +121 -0
  51. package/dist/runtime/composables/Customer/useShippingAddress.js +145 -0
  52. package/dist/runtime/composables/Customer/useUpdatePassword.d.ts +21 -0
  53. package/dist/runtime/composables/Customer/useUpdatePassword.js +130 -0
  54. package/dist/runtime/composables/Customer/useUserCards.d.ts +22 -0
  55. package/dist/runtime/composables/Customer/useUserCards.js +65 -0
  56. package/dist/runtime/composables/{useWishlists.d.ts → Customer/useWishlists.d.ts} +6 -19
  57. package/dist/runtime/composables/{useWishlists.js → Customer/useWishlists.js} +21 -29
  58. package/dist/runtime/composables/Extras/useCountry.d.ts +11 -6
  59. package/dist/runtime/composables/Extras/useCountry.js +5 -4
  60. package/dist/runtime/composables/Header/useHeader.d.ts +6 -20
  61. package/dist/runtime/composables/Header/useHeader.js +3 -2
  62. package/dist/runtime/composables/Product/CustomProduct/useCustomeScript.js +4 -5
  63. package/dist/runtime/composables/Product/CustomProduct/useSteps.d.ts +1 -1
  64. package/dist/runtime/composables/Product/useProductComponent.js +110 -0
  65. package/dist/runtime/composables/Product/useProductSlug.d.ts +8 -1
  66. package/dist/runtime/composables/Product/useQuickView.d.ts +8 -0
  67. package/dist/runtime/composables/Product/useQuickView.js +27 -0
  68. package/dist/runtime/composables/Product/useService.d.ts +1 -1
  69. package/dist/runtime/composables/Product/useService.js +0 -3
  70. package/dist/runtime/composables/Samples/useSamples.js +1 -1
  71. package/dist/runtime/composables/SideBar/Filters/useFilters.d.ts +2 -2
  72. package/dist/runtime/composables/SideBar/Filters/useSorting.d.ts +2 -2
  73. package/dist/runtime/composables/index.d.ts +18 -12
  74. package/dist/runtime/composables/index.js +18 -12
  75. package/dist/runtime/composables/useAddresses.js +6 -6
  76. package/dist/runtime/composables/useApp.d.ts +1 -0
  77. package/dist/runtime/composables/useApp.js +85 -0
  78. package/dist/runtime/composables/useCards.js +2 -2
  79. package/dist/runtime/composables/useDataLayer.js +1 -1
  80. package/dist/runtime/composables/useDotDigital.d.ts +3 -0
  81. package/dist/runtime/composables/useDotDigital.js +122 -0
  82. package/dist/runtime/composables/useLocation.d.ts +2 -12
  83. package/dist/runtime/composables/useMetaLayer.js +11 -11
  84. package/dist/runtime/composables/useQuotationCheckout.d.ts +78 -0
  85. package/dist/runtime/composables/useQuotationCheckout.js +137 -0
  86. package/dist/runtime/composables/useSubscriptions.d.ts +17 -10
  87. package/dist/runtime/composables/useSubscriptions.js +68 -33
  88. package/dist/runtime/composables/useTikTokDatalayer.js +7 -7
  89. package/dist/runtime/composables/useWebforms.d.ts +38 -9
  90. package/dist/runtime/composables/useWebforms.js +93 -60
  91. package/dist/runtime/middleware/flowrix.d.ts +5 -4
  92. package/dist/runtime/middleware/flowrix.js +40 -21
  93. package/dist/runtime/pages/404.d.vue.ts +3 -0
  94. package/dist/runtime/pages/404.vue +6 -0
  95. package/dist/runtime/pages/404.vue.d.ts +3 -0
  96. package/dist/runtime/pages/flowrix-default.d.vue.ts +3 -0
  97. package/dist/runtime/pages/flowrix-default.vue +43 -0
  98. package/dist/runtime/pages/flowrix-default.vue.d.ts +3 -0
  99. package/dist/runtime/plugin.d.ts +1 -1
  100. package/dist/runtime/plugins/router.d.ts +2 -0
  101. package/dist/runtime/plugins/router.js +11 -0
  102. package/dist/runtime/server/api/albums.d.ts +1 -0
  103. package/dist/runtime/server/api/albums.js +35 -7
  104. package/dist/runtime/server/api/auth/forgot.js +1 -2
  105. package/dist/runtime/server/api/auth/login.d.ts +7 -0
  106. package/dist/runtime/server/api/auth/login.js +4 -16
  107. package/dist/runtime/server/api/auth/logout.js +1 -2
  108. package/dist/runtime/server/api/auth/register.js +1 -2
  109. package/dist/runtime/server/api/auth/session.get.js +1 -3
  110. package/dist/runtime/server/api/auth/user/reset-password.js +1 -2
  111. package/dist/runtime/server/api/auth/user/session.js +1 -2
  112. package/dist/runtime/server/api/auth/user/verify-token.js +1 -2
  113. package/dist/runtime/server/api/banners.js +20 -15
  114. package/dist/runtime/server/api/brand/[...slug].js +55 -0
  115. package/dist/runtime/server/api/brand/index.d.ts +3 -0
  116. package/dist/runtime/server/api/brand/index.js +46 -0
  117. package/dist/runtime/server/api/cache/[...slug].delete.d.ts +4 -1
  118. package/dist/runtime/server/api/cache/[...slug].delete.js +4 -7
  119. package/dist/runtime/server/api/cache/clean.get.d.ts +5 -0
  120. package/dist/runtime/server/api/cache/clean.get.js +4 -7
  121. package/dist/runtime/server/api/cart/[slug]/add.d.ts +1 -1
  122. package/dist/runtime/server/api/cart/[slug]/add.js +11 -11
  123. package/dist/runtime/server/api/cart/[slug]/update.d.ts +1 -1
  124. package/dist/runtime/server/api/cart/[slug]/update.js +11 -11
  125. package/dist/runtime/server/api/{v2/[...slug].d.ts → cart/related.d.ts} +0 -1
  126. package/dist/runtime/server/api/cart/related.js +21 -0
  127. package/dist/runtime/server/api/cart/remove.d.ts +1 -1
  128. package/dist/runtime/server/api/cart/remove.js +10 -10
  129. package/dist/runtime/server/api/cart/service/[slug]/add.d.ts +1 -1
  130. package/dist/runtime/server/api/cart/service/[slug]/add.js +12 -12
  131. package/dist/runtime/server/api/catalog/brands.d.ts +3 -0
  132. package/dist/runtime/server/api/catalog/brands.js +52 -0
  133. package/dist/runtime/server/api/catalog/categories.js +28 -19
  134. package/dist/runtime/server/api/catalog/categoriesall.d.ts +3 -0
  135. package/dist/runtime/server/api/catalog/categoriesall.js +52 -0
  136. package/dist/runtime/server/api/catalog/featured.js +28 -17
  137. package/dist/runtime/server/api/catalog/posts.d.ts +3 -0
  138. package/dist/runtime/server/api/catalog/posts.js +52 -0
  139. package/dist/runtime/server/api/catalog/samples.js +28 -19
  140. package/dist/runtime/server/api/catalog/search.js +28 -19
  141. package/dist/runtime/server/api/category/[...slug].js +30 -20
  142. package/dist/runtime/server/api/check-404.d.ts +4 -0
  143. package/dist/runtime/server/api/check-404.js +8 -0
  144. package/dist/runtime/server/api/checkout/applyCoupon.d.ts +1 -1
  145. package/dist/runtime/server/api/checkout/applyCoupon.js +13 -13
  146. package/dist/runtime/server/api/checkout/configs.d.ts +1 -1
  147. package/dist/runtime/server/api/checkout/configs.js +11 -11
  148. package/dist/runtime/server/api/checkout/countries.d.ts +1 -1
  149. package/dist/runtime/server/api/checkout/countries.js +5 -9
  150. package/dist/runtime/server/api/checkout/paymentmethod.d.ts +1 -1
  151. package/dist/runtime/server/api/checkout/paymentmethod.js +16 -11
  152. package/dist/runtime/server/api/{blog/blog.d.ts → checkout/quotation/[slug].d.ts} +0 -1
  153. package/dist/runtime/server/api/checkout/quotation/[slug].js +20 -0
  154. package/dist/runtime/server/api/checkout/quotation/guest/[slug].d.ts +2 -0
  155. package/dist/runtime/server/api/checkout/quotation/guest/[slug].js +35 -0
  156. package/dist/runtime/server/api/checkout/quotation/guest/customer.d.ts +2 -0
  157. package/dist/runtime/server/api/checkout/quotation/guest/customer.js +20 -0
  158. package/dist/runtime/server/api/checkout/quotation/submit/[slug].d.ts +2 -0
  159. package/dist/runtime/server/api/checkout/quotation/submit/[slug].js +22 -0
  160. package/dist/runtime/server/api/checkvariables.d.ts +3 -0
  161. package/dist/runtime/server/api/checkvariables.js +35 -0
  162. package/dist/runtime/server/api/cmspost/[...slug].js +54 -0
  163. package/dist/runtime/server/api/cmspost/all.d.ts +3 -0
  164. package/dist/runtime/server/api/cmspost/all.js +52 -0
  165. package/dist/runtime/server/api/company/profile.d.ts +1 -1
  166. package/dist/runtime/server/api/company/profile.js +12 -7
  167. package/dist/runtime/server/api/contact-center/webforms/[id]/details.d.ts +1 -1
  168. package/dist/runtime/server/api/contact-center/webforms/[id]/details.js +50 -15
  169. package/dist/runtime/server/api/contact-center/webforms/create.d.ts +1 -1
  170. package/dist/runtime/server/api/contact-center/webforms/create.js +13 -9
  171. package/dist/runtime/server/api/countries.d.ts +2 -0
  172. package/dist/runtime/server/api/countries.js +44 -0
  173. package/dist/runtime/server/api/customer/address/add.js +1 -2
  174. package/dist/runtime/server/api/customer/address/delete.js +2 -3
  175. package/dist/runtime/server/api/customer/address/setshipping.js +1 -2
  176. package/dist/runtime/server/api/customer/address/update.js +1 -2
  177. package/dist/runtime/server/api/customer/cards/delete.js +2 -3
  178. package/dist/runtime/server/api/customer/cards/get.js +2 -3
  179. package/dist/runtime/server/api/customer/change-password.js +2 -3
  180. package/dist/runtime/server/api/customer/checkout.js +1 -2
  181. package/dist/runtime/server/api/customer/orders.js +2 -3
  182. package/dist/runtime/server/api/customer/profile/update.js +1 -2
  183. package/dist/runtime/server/api/customer/quotations.js +2 -3
  184. package/dist/runtime/server/api/customer/search.js +1 -2
  185. package/dist/runtime/server/api/customer/tax-invoice.js +1 -2
  186. package/dist/runtime/server/api/customer/wishlist/add.js +1 -2
  187. package/dist/runtime/server/api/customer/wishlist/createWishList.js +1 -2
  188. package/dist/runtime/server/api/customer/wishlist/deleteFromWishList.js +1 -2
  189. package/dist/runtime/server/api/customer/wishlist/deleteWishList.js +1 -2
  190. package/dist/runtime/server/api/customer/wishlist/get.js +2 -3
  191. package/dist/runtime/server/api/customer/wishlist/getWishListItems.js +1 -2
  192. package/dist/runtime/server/api/customer/wishlist/updateWishList.js +2 -3
  193. package/dist/runtime/server/api/featured.d.ts +3 -0
  194. package/dist/runtime/server/api/featured.js +52 -0
  195. package/dist/runtime/server/api/generate/robots.get.d.ts +2 -0
  196. package/dist/runtime/server/api/generate/robots.get.js +20 -0
  197. package/dist/runtime/server/api/generate/sitemap.get.d.ts +2 -0
  198. package/dist/runtime/server/api/generate/sitemap.get.js +32 -0
  199. package/dist/runtime/server/api/location.d.ts +1 -1
  200. package/dist/runtime/server/api/location.js +24 -12
  201. package/dist/runtime/server/api/nav/[id]/links.d.ts +1 -0
  202. package/dist/runtime/server/api/nav/[id]/links.js +46 -10
  203. package/dist/runtime/server/api/page/[...slug].js +54 -0
  204. package/dist/runtime/server/api/product/[...slug].js +28 -13
  205. package/dist/runtime/server/api/quickview/[slug].d.ts +2 -0
  206. package/dist/runtime/server/api/quickview/[slug].js +21 -0
  207. package/dist/runtime/server/api/reviews.d.ts +2 -0
  208. package/dist/runtime/server/api/reviews.js +23 -0
  209. package/dist/runtime/server/api/samples.d.ts +3 -0
  210. package/dist/runtime/server/api/samples.js +53 -0
  211. package/dist/runtime/server/api/search.d.ts +3 -0
  212. package/dist/runtime/server/api/search.js +53 -0
  213. package/dist/runtime/server/api/service/[slug].js +22 -16
  214. package/dist/runtime/server/api/service/availability.d.ts +1 -1
  215. package/dist/runtime/server/api/service/availability.js +14 -12
  216. package/dist/runtime/server/api/service/getall.d.ts +3 -0
  217. package/dist/runtime/server/api/service/getall.js +57 -0
  218. package/dist/runtime/server/api/shop.d.ts +3 -0
  219. package/dist/runtime/server/api/shop.js +53 -0
  220. package/dist/runtime/server/api/subscribe.d.ts +1 -1
  221. package/dist/runtime/server/api/subscribe.js +23 -14
  222. package/dist/runtime/server/api/v2/[...slug].get.d.ts +2 -0
  223. package/dist/runtime/server/api/v2/[...slug].get.js +32 -0
  224. package/dist/runtime/server/api/webform.d.ts +3 -0
  225. package/dist/runtime/server/api/webform.js +54 -0
  226. package/dist/runtime/server/tsconfig.json +3 -3
  227. package/dist/runtime/stores/Cart.d.ts +12 -0
  228. package/dist/runtime/stores/Cart.js +62 -17
  229. package/dist/runtime/stores/Checkout.d.ts +9 -15
  230. package/dist/runtime/stores/Checkout.js +24 -40
  231. package/dist/runtime/stores/Search.d.ts +1 -1
  232. package/dist/runtime/stores/Services.js +2 -2
  233. package/dist/runtime/stores/auth.d.ts +8 -11
  234. package/dist/runtime/stores/auth.js +385 -8
  235. package/dist/runtime/stores/countries.d.ts +1 -3
  236. package/dist/runtime/stores/countries.js +4 -8
  237. package/dist/runtime/stores/product/README.md +6 -6
  238. package/dist/runtime/stores/product/slug.d.ts +1 -17
  239. package/dist/runtime/stores/webforms.d.ts +24 -9
  240. package/dist/runtime/stores/webforms.js +105 -5
  241. package/dist/runtime/stores/wishlists.d.ts +114 -7
  242. package/dist/runtime/stores/wishlists.js +209 -15
  243. package/dist/runtime/utils/api.js +7 -13
  244. package/dist/runtime/utils/htmlCache.d.ts +2 -2
  245. package/dist/runtime/utils/htmlCache.js +23 -13
  246. package/dist/types.d.mts +6 -2
  247. package/package.json +15 -5
  248. package/dist/runtime/composables/Checkout/useBillingAddress.d.ts +0 -19
  249. package/dist/runtime/composables/Checkout/useBillingAddress.js +0 -82
  250. package/dist/runtime/composables/Checkout/useShippingAddress.d.ts +0 -9
  251. package/dist/runtime/composables/Checkout/useShippingAddress.js +0 -121
  252. package/dist/runtime/composables/useAuth.d.ts +0 -45
  253. package/dist/runtime/composables/useAuth.js +0 -180
  254. package/dist/runtime/composables/useCountries.d.ts +0 -12
  255. package/dist/runtime/composables/useCountries.js +0 -50
  256. package/dist/runtime/composables/useOrders.d.ts +0 -21
  257. package/dist/runtime/composables/useOrders.js +0 -82
  258. package/dist/runtime/composables/useQuotations.d.ts +0 -14
  259. package/dist/runtime/composables/useQuotations.js +0 -50
  260. package/dist/runtime/server/api/blog/[slug].js +0 -51
  261. package/dist/runtime/server/api/blog/blog.js +0 -17
  262. package/dist/runtime/server/api/brand/[slug].js +0 -58
  263. package/dist/runtime/server/api/page/[slug].js +0 -51
  264. package/dist/runtime/server/api/v2/[...slug].js +0 -9
  265. /package/dist/runtime/server/api/brand/{[slug].d.ts → [...slug].d.ts} +0 -0
  266. /package/dist/runtime/server/api/{blog/[slug].d.ts → cmspost/[...slug].d.ts} +0 -0
  267. /package/dist/runtime/server/api/page/{[slug].d.ts → [...slug].d.ts} +0 -0
@@ -0,0 +1,130 @@
1
+ import { ref } from "vue";
2
+ import { useAuthStore } from "../../stores/auth.js";
3
+ export function useUpdatePassword() {
4
+ const authStore = useAuthStore();
5
+ const loading = ref(false);
6
+ const errorMessage = ref("");
7
+ const successMessage = ref("");
8
+ const form = ref({
9
+ currentPassword: "",
10
+ newPassword: "",
11
+ confirmPassword: ""
12
+ });
13
+ const clearMessages = () => {
14
+ errorMessage.value = "";
15
+ successMessage.value = "";
16
+ };
17
+ const resetForm = () => {
18
+ form.value = {
19
+ currentPassword: "",
20
+ newPassword: "",
21
+ confirmPassword: ""
22
+ };
23
+ clearMessages();
24
+ };
25
+ const formatApiError = (message) => {
26
+ if (typeof message === "string") {
27
+ return message;
28
+ }
29
+ if (typeof message === "object" && message !== null) {
30
+ const errors = [];
31
+ Object.entries(message).forEach(([field, fieldErrors]) => {
32
+ const fieldName = field.replace(/_/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
33
+ if (Array.isArray(fieldErrors)) {
34
+ fieldErrors.forEach((error) => {
35
+ errors.push(`${fieldName}: ${error}`);
36
+ });
37
+ } else {
38
+ errors.push(`${fieldName}: ${fieldErrors}`);
39
+ }
40
+ });
41
+ return errors.join("\n");
42
+ }
43
+ return "An error occurred";
44
+ };
45
+ const validateForm = () => {
46
+ clearMessages();
47
+ if (!form.value.currentPassword?.trim()) {
48
+ errorMessage.value = "Current password is required!";
49
+ return false;
50
+ }
51
+ if (!form.value.newPassword?.trim()) {
52
+ errorMessage.value = "New password is required!";
53
+ return false;
54
+ }
55
+ if (!form.value.confirmPassword?.trim()) {
56
+ errorMessage.value = "Please confirm your new password!";
57
+ return false;
58
+ }
59
+ if (form.value.newPassword !== form.value.confirmPassword) {
60
+ errorMessage.value = "New password and confirm password do not match!";
61
+ return false;
62
+ }
63
+ if (form.value.newPassword.length < 6) {
64
+ errorMessage.value = "New password must be at least 6 characters long!";
65
+ return false;
66
+ }
67
+ if (form.value.currentPassword === form.value.newPassword) {
68
+ errorMessage.value = "New password must be different from current password!";
69
+ return false;
70
+ }
71
+ return true;
72
+ };
73
+ const updatePassword = async () => {
74
+ if (!validateForm()) {
75
+ console.log("Validation failed:", errorMessage.value);
76
+ return false;
77
+ }
78
+ loading.value = true;
79
+ clearMessages();
80
+ try {
81
+ const requestBody = {
82
+ current_password: form.value.currentPassword.trim(),
83
+ password: form.value.newPassword.trim(),
84
+ password_confirmation: form.value.confirmPassword.trim()
85
+ };
86
+ const response = await authStore.changePassword(requestBody);
87
+ if (!response) {
88
+ console.log("No response received");
89
+ errorMessage.value = "No response received from server. Please try again.";
90
+ return false;
91
+ }
92
+ if (response.status === "Success") {
93
+ successMessage.value = response.message || "Password updated successfully!";
94
+ setTimeout(() => {
95
+ resetForm();
96
+ }, 7e3);
97
+ setTimeout(() => {
98
+ successMessage.value = "";
99
+ }, 2e3);
100
+ return true;
101
+ } else if (response.status === "Error") {
102
+ console.log("Error response:", response.message);
103
+ errorMessage.value = formatApiError(response.message);
104
+ return false;
105
+ } else {
106
+ console.log("Unexpected response format:", response);
107
+ errorMessage.value = "Unexpected response from server. Please try again.";
108
+ return false;
109
+ }
110
+ } catch (err) {
111
+ console.error("Caught error:", err);
112
+ errorMessage.value = "An unexpected error occurred. Please try again.";
113
+ return false;
114
+ } finally {
115
+ loading.value = false;
116
+ console.log("Final state - Error:", errorMessage.value, "Success:", successMessage.value);
117
+ }
118
+ };
119
+ return {
120
+ // State
121
+ form,
122
+ loading,
123
+ errorMessage,
124
+ successMessage,
125
+ // Methods
126
+ updatePassword,
127
+ clearMessages,
128
+ resetForm
129
+ };
130
+ }
@@ -0,0 +1,22 @@
1
+ export interface Card {
2
+ id: string;
3
+ holder_name: string;
4
+ last_four_digits: string;
5
+ [key: string]: any;
6
+ }
7
+ export declare function useUserCards(): {
8
+ cards: import("vue").ComputedRef<{
9
+ [x: string]: any;
10
+ id: string;
11
+ holder_name: string;
12
+ last_four_digits: string;
13
+ }[]>;
14
+ loading: import("vue").Ref<boolean, boolean>;
15
+ deletingCardId: import("vue").Ref<string | null, string | null>;
16
+ errorMessage: import("vue").Ref<string, string>;
17
+ successMessage: import("vue").Ref<string, string>;
18
+ hasCards: import("vue").ComputedRef<boolean>;
19
+ fetchCards: () => Promise<void>;
20
+ deleteCard: (cardId: string) => Promise<boolean>;
21
+ clearMessages: () => void;
22
+ };
@@ -0,0 +1,65 @@
1
+ import { ref, computed } from "vue";
2
+ import { useAuthStore } from "../../stores/auth.js";
3
+ export function useUserCards() {
4
+ const authStore = useAuthStore();
5
+ const cards = ref([]);
6
+ const loading = ref(false);
7
+ const deletingCardId = ref(null);
8
+ const errorMessage = ref("");
9
+ const successMessage = ref("");
10
+ const cardsData = computed(() => cards.value || []);
11
+ const hasCards = computed(() => cards.value && cards.value.length > 0);
12
+ const clearMessages = () => {
13
+ errorMessage.value = "";
14
+ successMessage.value = "";
15
+ };
16
+ const fetchCards = async () => {
17
+ loading.value = true;
18
+ clearMessages();
19
+ try {
20
+ const cardsData2 = await authStore.fetchUserCards();
21
+ cards.value = Array.isArray(cardsData2) ? cardsData2 : [];
22
+ } catch (error) {
23
+ console.error("Failed to fetch cards:", error);
24
+ cards.value = [];
25
+ errorMessage.value = "Failed to load cards. Please try again.";
26
+ } finally {
27
+ loading.value = false;
28
+ }
29
+ };
30
+ const deleteCard = async (cardId) => {
31
+ deletingCardId.value = cardId;
32
+ clearMessages();
33
+ try {
34
+ const response = await authStore.deleteCard(cardId);
35
+ if (response.status === "Success") {
36
+ successMessage.value = response.message || "Card deleted successfully!";
37
+ cards.value = cards.value.filter((card) => card.id !== cardId);
38
+ return true;
39
+ } else {
40
+ errorMessage.value = response.message || "Failed to delete card. Please try again.";
41
+ return false;
42
+ }
43
+ } catch (error) {
44
+ console.error("Delete card error:", error);
45
+ errorMessage.value = error.message || "Failed to delete card. Please try again.";
46
+ return false;
47
+ } finally {
48
+ deletingCardId.value = null;
49
+ }
50
+ };
51
+ return {
52
+ // State
53
+ cards: cardsData,
54
+ loading,
55
+ deletingCardId,
56
+ errorMessage,
57
+ successMessage,
58
+ // Computed
59
+ hasCards,
60
+ // Methods
61
+ fetchCards,
62
+ deleteCard,
63
+ clearMessages
64
+ };
65
+ }
@@ -1,21 +1,6 @@
1
- import { type Wishlist, type WishlistProduct } from '../stores/wishlists.js';
2
- export interface ApiResponse<T> {
3
- status: string;
4
- message: string | Record<string, string[]> | null;
5
- data: T | null;
6
- }
7
- export interface CreateWishlistData {
8
- title: string;
9
- default: boolean;
10
- }
11
- export interface UpdateWishlistData {
12
- title: string;
13
- default: boolean;
14
- }
15
- export interface AddToWishlistData {
16
- }
1
+ import { type Wishlist, type WishlistProduct, type CreateWishlistData, type UpdateWishlistData, type AddToWishlistData, type ApiResponse } from '../../stores/wishlists.js';
17
2
  export declare function useWishlists(): {
18
- fetchWishlists: () => Promise<ApiResponse<Wishlist[]>>;
3
+ fetchWishlists: (force?: boolean) => Promise<ApiResponse<Wishlist[]>>;
19
4
  fetchWishlistProducts: (listId: number) => Promise<ApiResponse<{
20
5
  id: number;
21
6
  title: string;
@@ -30,9 +15,11 @@ export declare function useWishlists(): {
30
15
  deleteWishlist: (id: number) => Promise<ApiResponse<void>>;
31
16
  wishlists: import("vue").ComputedRef<{
32
17
  id: number;
33
- name?: string | undefined;
18
+ title: string;
19
+ default: boolean;
20
+ created_at: string;
34
21
  }[]>;
35
- wishlistProducts: import("vue").ComputedRef<import("../stores/index.js").WishlistProducts>;
22
+ wishlistProducts: (listId: number) => WishlistProduct[];
36
23
  loading: import("vue").ComputedRef<boolean>;
37
24
  error: import("vue").ComputedRef<string | null>;
38
25
  };
@@ -1,6 +1,7 @@
1
1
  import { computed } from "vue";
2
- import { useWishlistsStore } from "../stores/wishlists.js";
3
- import { useApi } from "../utils/api.js";
2
+ import {
3
+ useWishlistsStore
4
+ } from "../../stores/wishlists.js";
4
5
  function formatErrorMessage(message) {
5
6
  if (!message) return "An error occurred";
6
7
  if (typeof message === "string") {
@@ -18,14 +19,12 @@ function formatErrorMessage(message) {
18
19
  }
19
20
  export function useWishlists() {
20
21
  const store = useWishlistsStore();
21
- const { get, post } = useApi();
22
- async function fetchWishlists() {
22
+ async function fetchWishlists(force) {
23
23
  store.setLoading(true);
24
24
  store.setError(null);
25
25
  try {
26
- const response = await get("/customer/wishlist");
27
- if (response.status === "Success" && response.data) {
28
- store.setWishlists(response.data);
26
+ const response = await store.fetchWishlists(force || false);
27
+ if (response.status === "Success") {
29
28
  return response;
30
29
  } else {
31
30
  const errorMessage = formatErrorMessage(response.message);
@@ -45,10 +44,8 @@ export function useWishlists() {
45
44
  store.setLoading(true);
46
45
  store.setError(null);
47
46
  try {
48
- const response = await get(`/customer/wishlist/${listId}/products`);
49
- if (response.status === "Success" && response.data) {
50
- const products = response.data.products || [];
51
- store.setWishlistProducts(listId, products);
47
+ const response = await store.fetchWishlistProducts(listId);
48
+ if (response.status === "Success") {
52
49
  return response;
53
50
  } else {
54
51
  const errorMessage = formatErrorMessage(response.message);
@@ -68,9 +65,8 @@ export function useWishlists() {
68
65
  store.setLoading(true);
69
66
  store.setError(null);
70
67
  try {
71
- const response = await post("/customer/wishlist/add", data);
72
- if (response.status === "Success" && response.data) {
73
- store.addWishlist(response.data);
68
+ const response = await store.createWishlist(data);
69
+ if (response.status === "Success") {
74
70
  return response;
75
71
  } else {
76
72
  const errorMessage = formatErrorMessage(response.message);
@@ -90,9 +86,8 @@ export function useWishlists() {
90
86
  store.setLoading(true);
91
87
  store.setError(null);
92
88
  try {
93
- const response = await post(`/customer/wishlist/${listId}/${productSlug}/add`, data);
94
- if (response.status === "Success" && response.data) {
95
- store.addWishlistProduct(listId, response.data);
89
+ const response = await store.addToWishlist(listId, productSlug, data);
90
+ if (response.status === "Success") {
96
91
  return response;
97
92
  } else {
98
93
  const errorMessage = formatErrorMessage(response.message);
@@ -112,9 +107,8 @@ export function useWishlists() {
112
107
  store.setLoading(true);
113
108
  store.setError(null);
114
109
  try {
115
- const response = await post(`/customer/wishlist/${listId}/item/delete`, { ids: { productSlug } });
110
+ const response = await store.removeFromWishlist(listId, productSlug);
116
111
  if (response.status === "Success") {
117
- store.removeWishlistProduct(listId, productSlug);
118
112
  return response;
119
113
  } else {
120
114
  const errorMessage = formatErrorMessage(response.message);
@@ -134,9 +128,8 @@ export function useWishlists() {
134
128
  store.setLoading(true);
135
129
  store.setError(null);
136
130
  try {
137
- const response = await post(`/customer/wishlist/${id}/update`, data);
138
- if (response.status === "Success" && response.data) {
139
- store.updateWishlist(response.data);
131
+ const response = await store.updateWishlist(id, data);
132
+ if (response.status === "Success") {
140
133
  return response;
141
134
  } else {
142
135
  const errorMessage = formatErrorMessage(response.message);
@@ -156,10 +149,8 @@ export function useWishlists() {
156
149
  store.setLoading(true);
157
150
  store.setError(null);
158
151
  try {
159
- const response = await post(`/customer/wishlist/${id}/delete`, {});
152
+ const response = await store.deleteWishlist(id);
160
153
  if (response.status === "Success") {
161
- store.removeWishlist(id);
162
- store.clearWishlistProducts(id);
163
154
  return response;
164
155
  } else {
165
156
  const errorMessage = formatErrorMessage(response.message);
@@ -183,9 +174,10 @@ export function useWishlists() {
183
174
  removeFromWishlist,
184
175
  updateWishlist,
185
176
  deleteWishlist,
186
- wishlists: computed(() => store.wishlists),
187
- wishlistProducts: computed(() => store.wishlistProducts),
188
- loading: computed(() => store.loading),
189
- error: computed(() => store.error)
177
+ wishlists: computed(() => store.getWishlists),
178
+ // Fixed: Remove extra computed wrapper - direct getter for reactivity
179
+ wishlistProducts: (listId) => store.getWishlistProducts(listId),
180
+ loading: computed(() => store.isLoading),
181
+ error: computed(() => store.getError)
190
182
  };
191
183
  }
@@ -1,6 +1,11 @@
1
- export declare const useCountry: () => {
2
- data: any;
3
- error: any;
4
- refresh: any;
5
- execute: any;
6
- };
1
+ interface Country {
2
+ id: number;
3
+ name: string;
4
+ }
5
+ interface UseCountryReturn {
6
+ data: Ref<Country[] | null>;
7
+ error: Ref<Error | null>;
8
+ refresh: () => Promise<void>;
9
+ }
10
+ export declare const useCountry: () => UseCountryReturn;
11
+ export {};
@@ -1,11 +1,12 @@
1
+ import { useFetch } from "#imports";
1
2
  export const useCountry = () => {
2
- const { data, error, refresh, execute } = useAsyncData("countries", () => $fetch("/api/checkout/countries"), {
3
- server: true
3
+ const { data, error, refresh } = useFetch("/api/checkout/countries", {
4
+ server: true,
5
+ key: "countries"
4
6
  });
5
7
  return {
6
8
  data,
7
9
  error,
8
- refresh,
9
- execute
10
+ refresh
10
11
  };
11
12
  };
@@ -1,28 +1,14 @@
1
1
  export default function (): {
2
- NavMenu: import("pinia").Store<"NavMenu", import("#imports").NavMenuState, {}, {
3
- navMenu(id: number, location?: string): Promise<void>;
4
- }>;
5
- companyProfile: import("vue").ComputedRef<null>;
6
- cartStore: import("pinia").Store<"cart", import("#imports").CartState, {}, {}>;
7
- userData: {};
8
- menuData: import("vue").ComputedRef<{
9
- location: string;
10
- items: {
11
- title: string;
12
- url: string;
13
- sortorder: number;
14
- children?: /*elided*/ any[] | undefined;
15
- }[];
16
- } | undefined>;
2
+ NavMenu: any;
3
+ companyProfile: import("vue").ComputedRef<any>;
4
+ cartStore: any;
5
+ userData: any;
6
+ menuData: import("vue").ComputedRef<any>;
17
7
  mobile_menu: import("vue").Ref<boolean, boolean>;
18
8
  MainMenu: any;
19
9
  wordpressUrl: any;
20
10
  OpenMobileMenu: () => void;
21
- useSearch: import("pinia").Store<"SearchStore", {
22
- data: any[];
23
- }, {}, {
24
- fetchSearchData(query: string): Promise<any[]>;
25
- }>;
11
+ useSearch: any;
26
12
  getSearchData: (value: string) => void;
27
13
  handleSeachInput: (searchValue: string) => void;
28
14
  };
@@ -1,10 +1,11 @@
1
1
  import { defineAsyncComponent, ref, computed } from "vue";
2
- import { useNavMenu, useCompanyProfile, useAuth, useCartStore, useSearchStore } from "#imports";
2
+ import { useNavMenu, useCompanyProfile, useCartStore, useSearchStore } from "#imports";
3
+ import { useAuthStore } from "../../stores/auth.js";
3
4
  export default function() {
4
5
  const wordpressUrl = import.meta.env.VITE_APP_WORDPRESS_URL;
5
6
  const NavMenu = useNavMenu();
6
7
  const CompanyProfile = useCompanyProfile();
7
- const { user } = useAuth();
8
+ const { user } = useAuthStore();
8
9
  const cartStore = useCartStore();
9
10
  const useSearch = useSearchStore();
10
11
  const companyProfile = computed(() => CompanyProfile.profile);
@@ -11,7 +11,6 @@ export const useCustomScript = defineStore("CustomScript", {
11
11
  UNIT_RELATIVE: null,
12
12
  DISCOUNTS: null,
13
13
  measurementUnit: null,
14
- promotionSettings: null,
15
14
  B2BTYPE: null,
16
15
  USEBASEPRICE: null,
17
16
  BASEPRICE: null,
@@ -240,7 +239,7 @@ export const useCustomScript = defineStore("CustomScript", {
240
239
  showValue(h_aid, h_vid) {
241
240
  const element = document.querySelector(`${this.attributeClass + h_aid} [data-value="${h_vid}"]`);
242
241
  if (element) {
243
- element.parentElement.style.display = "block";
242
+ element.parentElement.style.display = "";
244
243
  element.removeAttribute("disabled");
245
244
  element.style.display = "";
246
245
  }
@@ -316,10 +315,10 @@ export const useCustomScript = defineStore("CustomScript", {
316
315
  markSelected(h_aid, h_vid) {
317
316
  const element = document.querySelector(`${this.attributeClass}${h_aid} [data-value="${h_vid}"]`);
318
317
  if (element) {
319
- element.parentElement.style.display = "block";
318
+ element.parentElement.style.display = "";
320
319
  element.setAttribute("selected", true);
321
320
  element.checked = true;
322
- element.style.display = "block";
321
+ element.style.display = "";
323
322
  element.classList.add("active");
324
323
  if (element.getAttribute("customselect") == "true") {
325
324
  element.dispatchEvent(new Event("change"));
@@ -336,7 +335,7 @@ export const useCustomScript = defineStore("CustomScript", {
336
335
  if (dataValueElement) {
337
336
  dataValueElement.setAttribute("selected", true);
338
337
  dataValueElement.checked = true;
339
- dataValueElement.style.display = "block";
338
+ dataValueElement.style.display = "";
340
339
  dataValueElement.classList.add("active");
341
340
  }
342
341
  if (value == 0 || value == "0") {
@@ -66,7 +66,7 @@ export default function (product: any, template?: string): {
66
66
  }>;
67
67
  activeStep: import("vue").Ref<number, number>;
68
68
  NextStep: (id: number) => false | undefined;
69
- sortedGroups: (groups: any) => any[];
69
+ sortedGroups: (groups: any) => never[];
70
70
  scrollToPosition: () => void;
71
71
  SingleStep: import("vue").Raw<object>;
72
72
  AddToCart: import("vue").Raw<object>;
@@ -1,6 +1,14 @@
1
1
  import { defineAsyncComponent } from "vue";
2
+ import { useHead, useRequestEvent, useRoute } from "#imports";
3
+ import { getRequestURL } from "h3";
4
+ import { GTM_view_item } from "../useDataLayer.js";
5
+ import { META_view_item } from "../useMetaLayer.js";
6
+ import { TikTok_view_item } from "../useTikTokDatalayer.js";
7
+ import { useCompanyProfile } from "../../stores/useCompanyProfile.js";
2
8
  export function useProductComponent(product) {
9
+ const route = useRoute();
3
10
  const templateName = "Template-" + product.template;
11
+ const companyProfile = useCompanyProfile();
4
12
  const components = import.meta.glob(
5
13
  "~/components/Product/Template*/index.vue"
6
14
  );
@@ -15,6 +23,108 @@ export function useProductComponent(product) {
15
23
  }
16
24
  }
17
25
  });
26
+ let websiteurl = "";
27
+ if (process.server) {
28
+ const event = useRequestEvent();
29
+ websiteurl = getRequestURL(event).origin;
30
+ } else {
31
+ websiteurl = window.location.origin;
32
+ }
33
+ const ifPromotioned = () => {
34
+ if (product.rpfloat > product.pricefloat) {
35
+ return {
36
+ "priceSpecification": [
37
+ {
38
+ "@type": "UnitPriceSpecification",
39
+ "price": product.rpfloat,
40
+ "priceCurrency": companyProfile.profile?.data?.currencyCode || "",
41
+ "priceComponentType": "https://schema.org/ListPrice"
42
+ }
43
+ ]
44
+ };
45
+ }
46
+ return [];
47
+ };
48
+ if (product?.faqs?.length) {
49
+ const faqSchema = {
50
+ "@context": "https://schema.org",
51
+ "@type": "FAQPage",
52
+ "name": `${product.name} - FAQs`,
53
+ "mainEntity": product?.faqs.map((faq) => ({
54
+ "@type": "Question",
55
+ "name": faq.question,
56
+ "acceptedAnswer": {
57
+ "@type": "Answer",
58
+ "text": faq.answer.replace(/<\/?p>/g, "")
59
+ // remove <p> tags
60
+ }
61
+ }))
62
+ };
63
+ useHead({
64
+ script: [
65
+ {
66
+ type: "application/ld+json",
67
+ id: "faq-schema",
68
+ children: JSON.stringify(faqSchema)
69
+ }
70
+ ]
71
+ });
72
+ }
73
+ useHead({
74
+ title: product?.meta_title || product?.name || "",
75
+ meta: [
76
+ {
77
+ name: "robots",
78
+ content: product?.robots || ""
79
+ },
80
+ {
81
+ name: "description",
82
+ content: product?.meta_description || ""
83
+ },
84
+ { property: "og:title", content: product?.meta_title || product?.name || "" },
85
+ { property: "og:description", content: product?.meta_description },
86
+ { property: "og:type", content: "website" },
87
+ { property: "og:url", content: `${websiteurl}${route.path}` },
88
+ { property: "og:image", content: product?.image },
89
+ // Optional but recommended
90
+ { name: "twitter:card", content: "summary_large_image" },
91
+ { name: "twitter:title", content: product?.meta_title || product?.name || "" },
92
+ { name: "twitter:description", content: product?.meta_description },
93
+ { name: "twitter:image", content: product?.image }
94
+ ],
95
+ script: [
96
+ {
97
+ type: "application/ld+json",
98
+ id: "product-schema",
99
+ children: JSON.stringify({
100
+ "@context": "https://schema.org/",
101
+ "@type": "Product",
102
+ "name": product?.name || "",
103
+ "image": [
104
+ product?.image || ""
105
+ ],
106
+ "description": product?.description || "",
107
+ "sku": product?.sku || "",
108
+ "brand": {
109
+ "@type": "Brand",
110
+ "name": product?.brand || ""
111
+ },
112
+ "offers": {
113
+ "@type": "Offer",
114
+ "url": `${websiteurl}${route.path}`,
115
+ "priceCurrency": companyProfile.profile?.data?.currencyCode || "",
116
+ "price": product?.pricefloat || 0,
117
+ "availability": "https://schema.org/InStock",
118
+ "itemCondition": "https://schema.org/NewCondition",
119
+ ...ifPromotioned()
120
+ }
121
+ })
122
+ }
123
+ ]
124
+ });
125
+ GTM_view_item(product, product?.rrpfloat, product?.rpfloat);
126
+ META_view_item(product, product?.rrpfloat, product?.rpfloat);
127
+ TikTok_view_item(product, product?.rrpfloat, product?.rpfloat);
18
128
  return {
19
129
  Template
20
130
  };
@@ -1 +1,8 @@
1
- export default function (): any;
1
+ export default function (): {
2
+ data: any;
3
+ error: any;
4
+ refresh: any;
5
+ execute: any;
6
+ pending: any;
7
+ slug: string;
8
+ };
@@ -0,0 +1,8 @@
1
+ export declare const useQuickView: (slug: string) => {
2
+ data: any;
3
+ error: any;
4
+ refresh: any;
5
+ execute: any;
6
+ pending: any;
7
+ };
8
+ export declare const useSendQuickValues: (attributes: Record<string, any>, slug: any) => Promise<unknown>;
@@ -0,0 +1,27 @@
1
+ import { useFetch } from "#imports";
2
+ import { readonly } from "vue";
3
+ export const useQuickView = (slug) => {
4
+ const { data, error, refresh, execute, pending } = useFetch(
5
+ `/api/quickview/${slug}`,
6
+ {
7
+ method: "POST",
8
+ body: { slug },
9
+ lazy: true,
10
+ server: false,
11
+ default: () => null
12
+ }
13
+ );
14
+ return {
15
+ data: readonly(data),
16
+ error: readonly(error),
17
+ refresh,
18
+ execute,
19
+ pending: readonly(pending)
20
+ };
21
+ };
22
+ export const useSendQuickValues = async (attributes, slug) => {
23
+ return await $fetch(`/api/quickview/${slug}`, {
24
+ method: "POST",
25
+ body: attributes
26
+ });
27
+ };