@lmnto/h-mall-shared 1.0.1

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 (262) hide show
  1. package/app.css +457 -0
  2. package/bitbucket-pipelines.yml +223 -0
  3. package/package.json +43 -0
  4. package/public/gif/balloon.gif +0 -0
  5. package/public/gif/gift.gif +0 -0
  6. package/public/img/ai-dialog.png +0 -0
  7. package/public/img/ai-x1-banner.png +0 -0
  8. package/public/img/ai-x1.png +0 -0
  9. package/public/img/alert-Icon.png +0 -0
  10. package/public/img/aleta-payment-kyc-require.png +0 -0
  11. package/public/img/aleta-payment-pending.png +0 -0
  12. package/public/img/aleta-payment-rejected.png +0 -0
  13. package/public/img/aleta-payment-subscription-required.png +0 -0
  14. package/public/img/boost-banner-bg.png +0 -0
  15. package/public/img/boost-banner-right.png +0 -0
  16. package/public/img/boost-banner.png +0 -0
  17. package/public/img/boost-dialog-bg.png +0 -0
  18. package/public/img/boostPower.png +0 -0
  19. package/public/img/boostTooltip.png +0 -0
  20. package/public/img/brand-icon.svg +23 -0
  21. package/public/img/brand-text.svg +11 -0
  22. package/public/img/card-icon.png +0 -0
  23. package/public/img/cashback-Icon.png +0 -0
  24. package/public/img/crown.svg +9 -0
  25. package/public/img/empty-box.png +0 -0
  26. package/public/img/gen3-dialog.png +0 -0
  27. package/public/img/gen3-home-banner-bg.png +0 -0
  28. package/public/img/gen3-image.png +0 -0
  29. package/public/img/gift.png +0 -0
  30. package/public/img/img-placeholder-illustration.svg +6 -0
  31. package/public/img/logo.svg +31 -0
  32. package/public/img/offerBanner.png +0 -0
  33. package/public/img/pagenotfound.png +0 -0
  34. package/public/img/partial-pay-payment-successful.png +0 -0
  35. package/public/img/phoneShippingBG.png +0 -0
  36. package/public/img/placeholder-image.jpg +0 -0
  37. package/public/img/powerIcon.png +0 -0
  38. package/public/img/product-01.png +0 -0
  39. package/public/img/product-02.jpg +0 -0
  40. package/public/img/product-03.jpg +0 -0
  41. package/public/img/product-04.jpg +0 -0
  42. package/public/img/product-05.png +0 -0
  43. package/public/img/product-06.png +0 -0
  44. package/public/img/profile-avatar.svg +12 -0
  45. package/public/img/promotion-icon.png +0 -0
  46. package/public/img/session-expired.png +0 -0
  47. package/public/img/shipping-alert-icon.png +0 -0
  48. package/public/img/shippingIcon.png +0 -0
  49. package/public/img/smart-pay-banner-how.png +0 -0
  50. package/public/img/smart-pay-banner-own.png +0 -0
  51. package/public/img/smart-pay-chose.png +0 -0
  52. package/public/img/smart-pay-easy.png +0 -0
  53. package/public/img/smart-pay-payment.png +0 -0
  54. package/public/img/smart-plan-fire.gif +0 -0
  55. package/public/img/smart-plan-sparkle.gif +0 -0
  56. package/public/img/special.png +0 -0
  57. package/public/img/specialOfferBg.png +0 -0
  58. package/public/img/stop-shipping-banner.png +0 -0
  59. package/public/img/subscriptionBanner.png +0 -0
  60. package/public/img/subscriptionIcon.png +0 -0
  61. package/public/img/successIcon.png +0 -0
  62. package/public/img/wallet-icon.png +0 -0
  63. package/public/img/world-wide-shipping.png +0 -0
  64. package/public/next.svg +1 -0
  65. package/public/vercel.svg +1 -0
  66. package/shared/components/AddressFormComponent.tsx +215 -0
  67. package/shared/components/AddressShippingFormComponent.tsx +223 -0
  68. package/shared/components/AiPaymentDialog.tsx +95 -0
  69. package/shared/components/AppLoadingComponent.tsx +15 -0
  70. package/shared/components/AppLoadingComponentV2.tsx +18 -0
  71. package/shared/components/Button.tsx +48 -0
  72. package/shared/components/BuySubscriptionDialog.tsx +75 -0
  73. package/shared/components/CartDrawerComponent.tsx +324 -0
  74. package/shared/components/CashbackComponent.tsx +48 -0
  75. package/shared/components/CashbackMigrationComponent.tsx +41 -0
  76. package/shared/components/CommissionNonEligibleComponent.tsx +27 -0
  77. package/shared/components/CustomNextImage.tsx +50 -0
  78. package/shared/components/CustomNextLink.tsx +46 -0
  79. package/shared/components/EditAddressFormComponent.tsx +254 -0
  80. package/shared/components/EmptyCartMessageComponent.tsx +25 -0
  81. package/shared/components/EmptyCartMessageForCartPage.tsx +61 -0
  82. package/shared/components/EmptyLegacyOrderMessageForOrdersPage.tsx +52 -0
  83. package/shared/components/EmptyOrderMessageForOrdersPage.tsx +62 -0
  84. package/shared/components/EmptyOrderMessageForShippingOrdersPage.tsx +62 -0
  85. package/shared/components/Footer.tsx +71 -0
  86. package/shared/components/GreetingDialog.tsx +96 -0
  87. package/shared/components/Header.tsx +106 -0
  88. package/shared/components/HoldShippingDialog.tsx +165 -0
  89. package/shared/components/HomeBanners.tsx +298 -0
  90. package/shared/components/InactiveCartDialog.tsx +69 -0
  91. package/shared/components/InputCartQuantity.tsx +342 -0
  92. package/shared/components/Inputfield.tsx +110 -0
  93. package/shared/components/ListItemComponent.tsx +82 -0
  94. package/shared/components/LoadingIconComponent.tsx +284 -0
  95. package/shared/components/OrderNotFoundComponent.tsx +56 -0
  96. package/shared/components/PageHeader.tsx +42 -0
  97. package/shared/components/PhoneNumberCountries.tsx +133 -0
  98. package/shared/components/PhoneShippingDialog.tsx +77 -0
  99. package/shared/components/PickupDialog.tsx +92 -0
  100. package/shared/components/ProductNotFoundComponent.tsx +56 -0
  101. package/shared/components/ProductPriceComponent.tsx +32 -0
  102. package/shared/components/ProfileMenu.tsx +120 -0
  103. package/shared/components/RequestCreditNoteInvoiceDialog.tsx +214 -0
  104. package/shared/components/RequestInvoiceDialog.tsx +194 -0
  105. package/shared/components/SelectCities.tsx +133 -0
  106. package/shared/components/SelectComponent.tsx +334 -0
  107. package/shared/components/SelectCountries.tsx +179 -0
  108. package/shared/components/SelectPickUpStore.tsx +131 -0
  109. package/shared/components/SelectStates.tsx +144 -0
  110. package/shared/components/ServerTime.tsx +68 -0
  111. package/shared/components/SessionDialogComponent.tsx +60 -0
  112. package/shared/components/ShippingAddressFormDialogComponent.tsx +51 -0
  113. package/shared/components/Sidebar.tsx +281 -0
  114. package/shared/components/SpecialOfferDialog.tsx +193 -0
  115. package/shared/components/StatusComponents.tsx +25 -0
  116. package/shared/components/StepperComponent.tsx +79 -0
  117. package/shared/components/StepperSmartPayComponent.tsx +97 -0
  118. package/shared/components/SubscriptionPurchaseDialogComponent.tsx +81 -0
  119. package/shared/components/TableComponent.tsx +144 -0
  120. package/shared/components/TablePaginationComponent.tsx +151 -0
  121. package/shared/components/aleta/AletaManagerComponent.tsx +52 -0
  122. package/shared/components/aleta/KycPendingStatus.tsx +33 -0
  123. package/shared/components/aleta/KycRejectedStatus.tsx +53 -0
  124. package/shared/components/aleta/KycRequiredStatus.tsx +53 -0
  125. package/shared/components/aleta/SubscriptionRequiredStatus.tsx +45 -0
  126. package/shared/components/icons/AletaWalletIcon.tsx +21 -0
  127. package/shared/components/icons/BrandIcon.tsx +97 -0
  128. package/shared/components/icons/BrandText.tsx +47 -0
  129. package/shared/components/icons/CartIcon.tsx +21 -0
  130. package/shared/components/icons/DoneIcon.tsx +27 -0
  131. package/shared/components/icons/HomnifiIcon.tsx +23 -0
  132. package/shared/components/icons/InfoIcon.tsx +16 -0
  133. package/shared/components/icons/SmartPayProductIcon.tsx +31 -0
  134. package/shared/components/payments/DisclaimerAlertDialog.tsx +205 -0
  135. package/shared/components/payments/EmptyAssets.tsx +23 -0
  136. package/shared/components/payments/PaybyWalletItemComponent.tsx +116 -0
  137. package/shared/components/payments/PaymentAssetItemComponent.tsx +101 -0
  138. package/shared/components/payments/RequestProcessingDialog.tsx +123 -0
  139. package/shared/components/payments/WalletSectionManager.tsx +82 -0
  140. package/shared/components/payments/WalletSliderComponent.tsx +326 -0
  141. package/shared/components/payments/WalletTermsAndConditionComponent.tsx +88 -0
  142. package/shared/constants/address-shipping.schema.ts +56 -0
  143. package/shared/constants/address.schema.ts +56 -0
  144. package/shared/constants/app.ts +323 -0
  145. package/shared/constants/environment.ts +23 -0
  146. package/shared/constants/feature-flags.ts +15 -0
  147. package/shared/constants/query-keys.ts +106 -0
  148. package/shared/constants/routes.ts +41 -0
  149. package/shared/constants/socket.ts +15 -0
  150. package/shared/contexts/HomeProductsContext.tsx +51 -0
  151. package/shared/contexts/MainWrapperContext.tsx +289 -0
  152. package/shared/contexts/WebSocketContext.tsx +155 -0
  153. package/shared/hooks/useAddressForm.ts +169 -0
  154. package/shared/hooks/useAddresses.ts +28 -0
  155. package/shared/hooks/useAppForm.ts +39 -0
  156. package/shared/hooks/useCart.ts +207 -0
  157. package/shared/hooks/useCopy.ts +45 -0
  158. package/shared/hooks/useCountries.ts +27 -0
  159. package/shared/hooks/useCustomRouter.ts +51 -0
  160. package/shared/hooks/useDebounce.ts +21 -0
  161. package/shared/hooks/useInvoice.ts +41 -0
  162. package/shared/hooks/useOnlineUser.ts +38 -0
  163. package/shared/hooks/usePayments.ts +101 -0
  164. package/shared/hooks/useShippingAddressForm.ts +70 -0
  165. package/shared/hooks/useShippingAddresses.ts +33 -0
  166. package/shared/hooks/useStores.ts +29 -0
  167. package/shared/hooks/useUserActivity.ts +43 -0
  168. package/shared/i18n/client.ts +27 -0
  169. package/shared/i18n/locales/en.ts +383 -0
  170. package/shared/i18n/locales/it.ts +373 -0
  171. package/shared/i18n/server.ts +7 -0
  172. package/shared/services/addresses.service.ts +27 -0
  173. package/shared/services/api/core/ApiError.ts +29 -0
  174. package/shared/services/api/core/ApiRequestOptions.ts +25 -0
  175. package/shared/services/api/core/ApiResult.ts +11 -0
  176. package/shared/services/api/core/CancelablePromise.ts +130 -0
  177. package/shared/services/api/core/OpenAPI.ts +37 -0
  178. package/shared/services/api/core/request.ts +376 -0
  179. package/shared/services/api/index.ts +64 -0
  180. package/shared/services/api/models/AddAllProductToShippingCartDto.ts +7 -0
  181. package/shared/services/api/models/AddProductToCartDto.ts +8 -0
  182. package/shared/services/api/models/AddProductToShippingCartDto.ts +8 -0
  183. package/shared/services/api/models/AdminPlaceOrderDto.ts +16 -0
  184. package/shared/services/api/models/AssignPickupSerialNumberDto.ts +10 -0
  185. package/shared/services/api/models/CreateUserAddressDto.ts +19 -0
  186. package/shared/services/api/models/DeletCartProductsArrayDto.ts +7 -0
  187. package/shared/services/api/models/GenerateInvoiceDto.ts +7 -0
  188. package/shared/services/api/models/OrderConfirmationEmailDto.ts +8 -0
  189. package/shared/services/api/models/PlaceOrderDto.ts +9 -0
  190. package/shared/services/api/models/PlaceShipmentOrderDto.ts +8 -0
  191. package/shared/services/api/models/ProductBoostDto.ts +18 -0
  192. package/shared/services/api/models/RemoveAssignedSerialNumberDto.ts +9 -0
  193. package/shared/services/api/models/RemoveProductToCartDto.ts +8 -0
  194. package/shared/services/api/models/ShipmentItem.ts +8 -0
  195. package/shared/services/api/models/ShippingCartUpdateBillingAddressesDto.ts +7 -0
  196. package/shared/services/api/models/ShippingCartUpdateShippingMethodDto.ts +7 -0
  197. package/shared/services/api/models/UnfreezeWalletDto.ts +8 -0
  198. package/shared/services/api/models/UpdateCartBillingAddressesDto.ts +7 -0
  199. package/shared/services/api/models/UpdateCartPaymentMethodDto.ts +9 -0
  200. package/shared/services/api/models/UpdateCartShippingMethodDto.ts +7 -0
  201. package/shared/services/api/models/UpdateCartStoreDto.ts +7 -0
  202. package/shared/services/api/models/UpdateProductDto.ts +11 -0
  203. package/shared/services/api/models/UpdateShipmentItemStatusDto.ts +24 -0
  204. package/shared/services/api/models/UpdateShippingCartPaymentMethodDto.ts +9 -0
  205. package/shared/services/api/models/UpdateUserAddressDto.ts +19 -0
  206. package/shared/services/api/models/ValidateAuthCodeDto.ts +8 -0
  207. package/shared/services/api/models/WithdrawOrderWalletDto.ts +8 -0
  208. package/shared/services/api/services/AddressesService.ts +160 -0
  209. package/shared/services/api/services/AdminsDevicesService.ts +28 -0
  210. package/shared/services/api/services/AdminsOrdersService.ts +117 -0
  211. package/shared/services/api/services/AdminsPickupsService.ts +57 -0
  212. package/shared/services/api/services/AdminsProductsService.ts +86 -0
  213. package/shared/services/api/services/CartsService.ts +190 -0
  214. package/shared/services/api/services/CashBackQueueService.ts +39 -0
  215. package/shared/services/api/services/CategoriesService.ts +65 -0
  216. package/shared/services/api/services/DefaultService.ts +19 -0
  217. package/shared/services/api/services/FeaturesFlagsService.ts +20 -0
  218. package/shared/services/api/services/IossQueueService.ts +39 -0
  219. package/shared/services/api/services/OrderCallbackService.ts +67 -0
  220. package/shared/services/api/services/OrderEmailsService.ts +40 -0
  221. package/shared/services/api/services/OrderImportService.ts +228 -0
  222. package/shared/services/api/services/OrdersService.ts +183 -0
  223. package/shared/services/api/services/PaymentGatewayService.ts +19 -0
  224. package/shared/services/api/services/PaymentsService.ts +88 -0
  225. package/shared/services/api/services/ProductsService.ts +67 -0
  226. package/shared/services/api/services/ShipmentOrderCallbackService.ts +67 -0
  227. package/shared/services/api/services/ShipmentOrdersService.ts +88 -0
  228. package/shared/services/api/services/ShipmentsService.ts +30 -0
  229. package/shared/services/api/services/ShippingCartService.ts +247 -0
  230. package/shared/services/api/services/ShippingMethodsService.ts +20 -0
  231. package/shared/services/api/services/StoresService.ts +25 -0
  232. package/shared/services/api/services/SyncServiceQueueService.ts +39 -0
  233. package/shared/services/api/services/UpgradeOrdersService.ts +26 -0
  234. package/shared/services/api/services/UsersAuthService.ts +45 -0
  235. package/shared/services/api/services/UsersService.ts +53 -0
  236. package/shared/services/api/services/XeraQueueService.ts +39 -0
  237. package/shared/services/index.ts +0 -0
  238. package/shared/services/payment-method.service.ts +29 -0
  239. package/shared/stores/cartStore.ts +108 -0
  240. package/shared/stores/countriesStore.ts +62 -0
  241. package/shared/stores/formStore.ts +19 -0
  242. package/shared/stores/loadingStore.ts +12 -0
  243. package/shared/stores/userStore.ts +32 -0
  244. package/shared/types/SelectComponent.types.ts +31 -0
  245. package/shared/types/addressForm.ts +27 -0
  246. package/shared/types/cart.ts +208 -0
  247. package/shared/types/category.ts +6 -0
  248. package/shared/types/creditNote.ts +0 -0
  249. package/shared/types/feature-flags.ts +5 -0
  250. package/shared/types/icon.ts +5 -0
  251. package/shared/types/index.d.ts +84 -0
  252. package/shared/types/order.ts +332 -0
  253. package/shared/types/pagination.ts +5 -0
  254. package/shared/types/payments.ts +68 -0
  255. package/shared/types/product.ts +54 -0
  256. package/shared/types/shoppingCart.ts +219 -0
  257. package/shared/types/upgradeCart.ts +226 -0
  258. package/shared/types/user.ts +36 -0
  259. package/shared/utils/app.util.ts +261 -0
  260. package/shared/utils/notifications.util.ts +39 -0
  261. package/shared/utils/user-session.util.ts +171 -0
  262. package/tailwind.config.ts +234 -0
@@ -0,0 +1,284 @@
1
+ "use client";
2
+
3
+ import React from "react";
4
+
5
+ export default function LoadingIconComponent() {
6
+ return (
7
+ <svg
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ viewBox="0 0 100 100"
10
+ preserveAspectRatio="xMidYMid"
11
+ style={{
12
+ shapeRendering: "auto",
13
+ display: "block",
14
+ background: "transparent",
15
+ }}
16
+ width="150"
17
+ height="150"
18
+ >
19
+ <g>
20
+ <g transform="rotate(0 50 50)">
21
+ <rect
22
+ fill="#c5cef7"
23
+ height="21"
24
+ width="7"
25
+ ry="5.25"
26
+ rx="3.5"
27
+ y="7.5"
28
+ x="46.5"
29
+ >
30
+ <animate
31
+ repeatCount="indefinite"
32
+ begin="-0.9230769230769231s"
33
+ dur="1s"
34
+ keyTimes="0;1"
35
+ values="1;0"
36
+ attributeName="opacity"
37
+ ></animate>
38
+ </rect>
39
+ </g>
40
+ <g transform="rotate(27.692307692307693 50 50)">
41
+ <rect
42
+ fill="#c5cef7"
43
+ height="21"
44
+ width="7"
45
+ ry="5.25"
46
+ rx="3.5"
47
+ y="7.5"
48
+ x="46.5"
49
+ >
50
+ <animate
51
+ repeatCount="indefinite"
52
+ begin="-0.8461538461538461s"
53
+ dur="1s"
54
+ keyTimes="0;1"
55
+ values="1;0"
56
+ attributeName="opacity"
57
+ ></animate>
58
+ </rect>
59
+ </g>
60
+ <g transform="rotate(55.38461538461539 50 50)">
61
+ <rect
62
+ fill="#c5cef7"
63
+ height="21"
64
+ width="7"
65
+ ry="5.25"
66
+ rx="3.5"
67
+ y="7.5"
68
+ x="46.5"
69
+ >
70
+ <animate
71
+ repeatCount="indefinite"
72
+ begin="-0.7692307692307693s"
73
+ dur="1s"
74
+ keyTimes="0;1"
75
+ values="1;0"
76
+ attributeName="opacity"
77
+ ></animate>
78
+ </rect>
79
+ </g>
80
+ <g transform="rotate(83.07692307692308 50 50)">
81
+ <rect
82
+ fill="#c5cef7"
83
+ height="21"
84
+ width="7"
85
+ ry="5.25"
86
+ rx="3.5"
87
+ y="7.5"
88
+ x="46.5"
89
+ >
90
+ <animate
91
+ repeatCount="indefinite"
92
+ begin="-0.6923076923076923s"
93
+ dur="1s"
94
+ keyTimes="0;1"
95
+ values="1;0"
96
+ attributeName="opacity"
97
+ ></animate>
98
+ </rect>
99
+ </g>
100
+ <g transform="rotate(110.76923076923077 50 50)">
101
+ <rect
102
+ fill="#c5cef7"
103
+ height="21"
104
+ width="7"
105
+ ry="5.25"
106
+ rx="3.5"
107
+ y="7.5"
108
+ x="46.5"
109
+ >
110
+ <animate
111
+ repeatCount="indefinite"
112
+ begin="-0.6153846153846154s"
113
+ dur="1s"
114
+ keyTimes="0;1"
115
+ values="1;0"
116
+ attributeName="opacity"
117
+ ></animate>
118
+ </rect>
119
+ </g>
120
+ <g transform="rotate(138.46153846153845 50 50)">
121
+ <rect
122
+ fill="#c5cef7"
123
+ height="21"
124
+ width="7"
125
+ ry="5.25"
126
+ rx="3.5"
127
+ y="7.5"
128
+ x="46.5"
129
+ >
130
+ <animate
131
+ repeatCount="indefinite"
132
+ begin="-0.5384615384615384s"
133
+ dur="1s"
134
+ keyTimes="0;1"
135
+ values="1;0"
136
+ attributeName="opacity"
137
+ ></animate>
138
+ </rect>
139
+ </g>
140
+ <g transform="rotate(166.15384615384616 50 50)">
141
+ <rect
142
+ fill="#c5cef7"
143
+ height="21"
144
+ width="7"
145
+ ry="5.25"
146
+ rx="3.5"
147
+ y="7.5"
148
+ x="46.5"
149
+ >
150
+ <animate
151
+ repeatCount="indefinite"
152
+ begin="-0.46153846153846156s"
153
+ dur="1s"
154
+ keyTimes="0;1"
155
+ values="1;0"
156
+ attributeName="opacity"
157
+ ></animate>
158
+ </rect>
159
+ </g>
160
+ <g transform="rotate(193.84615384615384 50 50)">
161
+ <rect
162
+ fill="#c5cef7"
163
+ height="21"
164
+ width="7"
165
+ ry="5.25"
166
+ rx="3.5"
167
+ y="7.5"
168
+ x="46.5"
169
+ >
170
+ <animate
171
+ repeatCount="indefinite"
172
+ begin="-0.38461538461538464s"
173
+ dur="1s"
174
+ keyTimes="0;1"
175
+ values="1;0"
176
+ attributeName="opacity"
177
+ ></animate>
178
+ </rect>
179
+ </g>
180
+ <g transform="rotate(221.53846153846155 50 50)">
181
+ <rect
182
+ fill="#c5cef7"
183
+ height="21"
184
+ width="7"
185
+ ry="5.25"
186
+ rx="3.5"
187
+ y="7.5"
188
+ x="46.5"
189
+ >
190
+ <animate
191
+ repeatCount="indefinite"
192
+ begin="-0.3076923076923077s"
193
+ dur="1s"
194
+ keyTimes="0;1"
195
+ values="1;0"
196
+ attributeName="opacity"
197
+ ></animate>
198
+ </rect>
199
+ </g>
200
+ <g transform="rotate(249.23076923076923 50 50)">
201
+ <rect
202
+ fill="#c5cef7"
203
+ height="21"
204
+ width="7"
205
+ ry="5.25"
206
+ rx="3.5"
207
+ y="7.5"
208
+ x="46.5"
209
+ >
210
+ <animate
211
+ repeatCount="indefinite"
212
+ begin="-0.23076923076923078s"
213
+ dur="1s"
214
+ keyTimes="0;1"
215
+ values="1;0"
216
+ attributeName="opacity"
217
+ ></animate>
218
+ </rect>
219
+ </g>
220
+ <g transform="rotate(276.9230769230769 50 50)">
221
+ <rect
222
+ fill="#c5cef7"
223
+ height="21"
224
+ width="7"
225
+ ry="5.25"
226
+ rx="3.5"
227
+ y="7.5"
228
+ x="46.5"
229
+ >
230
+ <animate
231
+ repeatCount="indefinite"
232
+ begin="-0.15384615384615385s"
233
+ dur="1s"
234
+ keyTimes="0;1"
235
+ values="1;0"
236
+ attributeName="opacity"
237
+ ></animate>
238
+ </rect>
239
+ </g>
240
+ <g transform="rotate(304.61538461538464 50 50)">
241
+ <rect
242
+ fill="#c5cef7"
243
+ height="21"
244
+ width="7"
245
+ ry="5.25"
246
+ rx="3.5"
247
+ y="7.5"
248
+ x="46.5"
249
+ >
250
+ <animate
251
+ repeatCount="indefinite"
252
+ begin="-0.07692307692307693s"
253
+ dur="1s"
254
+ keyTimes="0;1"
255
+ values="1;0"
256
+ attributeName="opacity"
257
+ ></animate>
258
+ </rect>
259
+ </g>
260
+ <g transform="rotate(332.3076923076923 50 50)">
261
+ <rect
262
+ fill="#c5cef7"
263
+ height="21"
264
+ width="7"
265
+ ry="5.25"
266
+ rx="3.5"
267
+ y="7.5"
268
+ x="46.5"
269
+ >
270
+ <animate
271
+ repeatCount="indefinite"
272
+ begin="0s"
273
+ dur="1s"
274
+ keyTimes="0;1"
275
+ values="1;0"
276
+ attributeName="opacity"
277
+ ></animate>
278
+ </rect>
279
+ </g>
280
+ <g></g>
281
+ </g>
282
+ </svg>
283
+ );
284
+ }
@@ -0,0 +1,56 @@
1
+ "use client";
2
+
3
+ import { Typography } from "@material-tailwind/react";
4
+ import Image from "next/image";
5
+
6
+ import emptyBox from "../../public/img/empty-box.png";
7
+ import { ROUTES } from "../constants/routes";
8
+ import useCustomRouter from "../hooks/useCustomRouter";
9
+ import { _useScopedI18n } from "../i18n/client";
10
+ import ButtonCustom from "./Button";
11
+
12
+ export default function OrderNotFoundComponent() {
13
+ //
14
+ const scopeT = _useScopedI18n("sharedComponents.orderNotFoundComponent");
15
+
16
+ const { push } = useCustomRouter();
17
+
18
+ return (
19
+ <>
20
+ <div className="px-3 md:px-5 mr-1 flex cartAutoHeight">
21
+ <div className="">
22
+ <ul className="flex flex-col gap-y-6">{}</ul>
23
+ </div>
24
+ <div className="flex items-center justify-center flex-col w-full">
25
+ <Image
26
+ src={emptyBox.src}
27
+ alt="emptyBox"
28
+ width={100}
29
+ height={100}
30
+ className="mb-5"
31
+ />
32
+ <Typography
33
+ variant="h6"
34
+ className="text-center md:text-lg font-semibold text-black-500 mb-5"
35
+ >
36
+ {scopeT("title")}
37
+ </Typography>
38
+ <Typography
39
+ variant="h6"
40
+ className="text-center font-medium text-slate-400"
41
+ >
42
+ {scopeT("message")}
43
+ </Typography>
44
+
45
+ <ButtonCustom
46
+ onClick={() => push(ROUTES.dashboard.orders)}
47
+ className="font-normal mt-7"
48
+ icon={undefined}
49
+ >
50
+ {scopeT("redirectBtn")}
51
+ </ButtonCustom>
52
+ </div>
53
+ </div>
54
+ </>
55
+ );
56
+ }
@@ -0,0 +1,42 @@
1
+ import { Typography } from "@material-tailwind/react";
2
+ import { useMemo } from "react";
3
+
4
+ export type PageHeaderProps = {
5
+ name: string;
6
+ size?: "title" | "subtitle";
7
+ className?: string;
8
+ };
9
+
10
+ export default function PageHeader({
11
+ name,
12
+ size = "subtitle",
13
+ className,
14
+ }: PageHeaderProps) {
15
+ const renderTitle = useMemo(() => {
16
+ if (size == "title")
17
+ return (
18
+ <>
19
+ <Typography
20
+ variant="h5"
21
+ className={`text-base font-medium text-black-500 mb-3 ${className}`}
22
+ >
23
+ {name}
24
+ </Typography>
25
+ </>
26
+ );
27
+
28
+ if (size == "subtitle")
29
+ return (
30
+ <>
31
+ <Typography
32
+ variant="h6"
33
+ className={`text-sm font-medium text-black-500 mb-3 ${className}`}
34
+ >
35
+ {name}
36
+ </Typography>
37
+ </>
38
+ );
39
+ }, [size, name, className]);
40
+
41
+ return <>{renderTitle}</>;
42
+ }
@@ -0,0 +1,133 @@
1
+ import {
2
+ Button,
3
+ Menu,
4
+ MenuHandler,
5
+ MenuItem,
6
+ MenuList,
7
+ Typography,
8
+ } from "@material-tailwind/react";
9
+ import React, { useEffect, useState } from "react";
10
+ import { UseFormReturn } from "react-hook-form";
11
+ import { IoChevronDownOutline } from "react-icons/io5";
12
+
13
+ import { _useScopedI18n } from "../i18n/client";
14
+ import { countriesStore } from "../stores/countriesStore";
15
+ import { useFormStore } from "../stores/formStore";
16
+ import { renderTitleWithRedAsterisk } from "../utils/app.util";
17
+ import CustomNextImage from "./CustomNextImage";
18
+ import Inputfield from "./Inputfield";
19
+
20
+ export function PhoneNumberCountries({
21
+ formId,
22
+ fieldName,
23
+ }: {
24
+ formId: string;
25
+ fieldName: string;
26
+ }) {
27
+ const scopeT = _useScopedI18n("sharedComponents.phoneNumberComponent");
28
+
29
+ const { countries } = countriesStore();
30
+ const [country, setCountry] = React.useState(0);
31
+ const [selectedCallingCode, setSelectedCallingCode] = useState<number>();
32
+
33
+ const { reactHookUseForm } = useFormStore();
34
+ const form = (reactHookUseForm as { [key: string]: UseFormReturn<any> })?.[
35
+ formId
36
+ ];
37
+ const setValue = form?.setValue;
38
+ const watch = form?.watch;
39
+ const fieldKey = fieldName ?? fieldName?.toLowerCase();
40
+
41
+ const watchCountryIdField = watch?.(`countryId`);
42
+
43
+ const handleOnChange = (code: number, index: number) => {
44
+ if (!setValue) return;
45
+
46
+ setCountry(index);
47
+ setTimeout(() => {
48
+ setValue(`${fieldKey}`, code, {
49
+ shouldValidate: true,
50
+ });
51
+
52
+ setSelectedCallingCode(code);
53
+ const selectedCountry = countries?.find((c) => +c.callingCode == code);
54
+ setValue("minPhoneLength", selectedCountry.minPhoneLength);
55
+ }, 250);
56
+ };
57
+
58
+ useEffect(() => {
59
+ if (!setValue || !countries?.length) return;
60
+
61
+ const selectedCountry = countries?.find(
62
+ (c) => c.id == +watchCountryIdField,
63
+ );
64
+ const { callingCode, minPhoneLength } =
65
+ selectedCountry ?? countries?.[country];
66
+
67
+ (async () => await setSelectedCallingCode(+callingCode))();
68
+
69
+ setValue(`${fieldKey}`, +callingCode, {
70
+ shouldValidate: true,
71
+ });
72
+ setValue("minPhoneLength", minPhoneLength);
73
+ }, [fieldKey, countries, country, watchCountryIdField, setValue]);
74
+
75
+ return (
76
+ <>
77
+ <Typography
78
+ variant="lead"
79
+ className="text-xs font-medium text-black-400 mb-1"
80
+ >
81
+ {renderTitleWithRedAsterisk(`${scopeT("title")} *`)}
82
+ </Typography>
83
+ <div className="relative flex items-center w-auto z-90 mobileNumberField">
84
+ <Menu placement="bottom-start">
85
+ <MenuHandler>
86
+ <Button
87
+ ripple={false}
88
+ variant="text"
89
+ className="mt-1 p-3 text-sm flex items-center justify-between h-10 font-medium gap-x-1.5 rounded-md border border-r-0 rounded-r-none border-slate-100 bg-slate-50/60 hover:bg-slate-50 focus:bg-slate-50 active:bg-slate-50/60 whitespace-nowrap"
90
+ >
91
+ <div>+{selectedCallingCode}</div>
92
+ <div className="h-5 w-3">
93
+ <IoChevronDownOutline className="text-black-400 h-5 w-4 text-base" />
94
+ </div>
95
+ </Button>
96
+ </MenuHandler>
97
+ <MenuList className=" absolute max-h-[20rem] max-w-[18rem] z-[999999]">
98
+ {countries?.map((Item, index): any => {
99
+ return (
100
+ <MenuItem
101
+ key={Item.name}
102
+ value={Item.name}
103
+ className="flex items-center gap-2"
104
+ onClick={() => handleOnChange(+Item.callingCode, index)}
105
+ >
106
+ <CustomNextImage
107
+ src={Item.flag}
108
+ alt={Item.name}
109
+ className="h-4 w-5 rounded-sm object-cover"
110
+ height={30}
111
+ width={30}
112
+ />
113
+ {Item.name}{" "}
114
+ <span className="ml-auto">{Item.callingCode}</span>
115
+ </MenuItem>
116
+ );
117
+ })}
118
+ </MenuList>
119
+ </Menu>
120
+ <Inputfield
121
+ title={""}
122
+ type="number"
123
+ className="rounded-l-none flex-1"
124
+ placeholder={"00 - 000 - 000"}
125
+ value={undefined}
126
+ readOnly={undefined}
127
+ name="phone"
128
+ formId={formId}
129
+ />
130
+ </div>
131
+ </>
132
+ );
133
+ }
@@ -0,0 +1,77 @@
1
+ "use client";
2
+
3
+ import {
4
+ Dialog,
5
+ DialogBody,
6
+ DialogFooter,
7
+ DialogHeader,
8
+ Typography,
9
+ } from "@material-tailwind/react";
10
+ import React, { useState } from "react";
11
+
12
+ import shippingIcon from "../../public/img/shippingIcon.png";
13
+ // import { _useScopedI18n } from '../i18n/client';
14
+ import ButtonCustom from "./Button";
15
+ import CustomNextImage from "./CustomNextImage";
16
+
17
+ export function PhoneShippingDialog() {
18
+ //
19
+ // const scopeT = _useScopedI18n('sharedComponents.buySubscriptionComponent');
20
+
21
+ const [open, setOpen] = useState(true);
22
+ const handleClose = () => setOpen(!open);
23
+
24
+ return (
25
+ <>
26
+ <Dialog
27
+ open={open}
28
+ handler={handleClose}
29
+ size="xs"
30
+ className="md:!max-w-[500px] md:!min-w-[500px] p-0"
31
+ >
32
+ <DialogHeader className="phoneShippingBG w-full rounded-tl-lg rounded-tr-lg p-8 pb-14">
33
+ <div className="flex flex-col items-center md:w-1/2 mx-auto">
34
+ <CustomNextImage
35
+ src={shippingIcon.src}
36
+ alt="SessionIcon"
37
+ width={80}
38
+ height={80}
39
+ />
40
+ <Typography
41
+ variant="h3"
42
+ className="text-base md:text-xl font-semibold text-white text-center uppercase"
43
+ >
44
+ Gen 1 Phones Ready for Shipping!
45
+ </Typography>
46
+ </div>
47
+ </DialogHeader>
48
+
49
+ <DialogBody className="text-sm md:text-base text-slate-400 font-medium text-center pt-0">
50
+ <Typography
51
+ variant="h5"
52
+ className="text-sm md:text-xl font-medium text-black-500 mb-3"
53
+ >
54
+ Great news!
55
+ </Typography>
56
+
57
+ <Typography
58
+ variant="h5"
59
+ className="text-sm md:text-base font-medium text-black-400"
60
+ >
61
+ The Gen 1 phones you ordered are now ready to ship. Please proceed
62
+ to the Legacy Order Page to complete your delivery payment and
63
+ initiate shipping.
64
+ </Typography>
65
+ </DialogBody>
66
+ <DialogFooter className="gap-5 justify-end items-end">
67
+ <ButtonCustom icon={undefined} variant="text" onClick={handleClose}>
68
+ Cancel
69
+ </ButtonCustom>
70
+ <ButtonCustom icon={undefined} onClick={handleClose}>
71
+ Proceed
72
+ </ButtonCustom>
73
+ </DialogFooter>
74
+ </Dialog>
75
+ </>
76
+ );
77
+ }
@@ -0,0 +1,92 @@
1
+ import {
2
+ Dialog,
3
+ DialogBody,
4
+ DialogFooter,
5
+ DialogHeader,
6
+ IconButton,
7
+ Typography,
8
+ } from "@material-tailwind/react";
9
+ import Link from "next/link";
10
+ import React from "react";
11
+ import { IoIosCloseCircleOutline } from "react-icons/io";
12
+
13
+ import ButtonCustom from "./Button";
14
+
15
+ export function PickupDialog({
16
+ handleOpen,
17
+ open,
18
+ proceedToPayment,
19
+ isLoading,
20
+ }) {
21
+ return (
22
+ <>
23
+ <Dialog
24
+ size="xs"
25
+ open={open}
26
+ handler={handleOpen}
27
+ className="px-3 py-4 max-xs:px-0"
28
+ >
29
+ <DialogHeader className="justify-center pt-5 max-xs:px-0">
30
+ <Typography
31
+ variant="h2"
32
+ className="text-xl max-xs:text-[13px] mt-5 font-semibold text-black-500 mb-0 whitespace-nowrap overflow-hidden"
33
+ >
34
+ ⬆️ Pick-Up Confirmation Required ⬆️
35
+ </Typography>
36
+ <IconButton
37
+ size="sm"
38
+ variant="text"
39
+ className="!absolute right-3 top-3 outline-none"
40
+ onClick={async () => {
41
+ handleOpen(false);
42
+ }}
43
+ >
44
+ <IoIosCloseCircleOutline className="w-6 h-6 text-gray-500 cursor-pointer" />
45
+ </IconButton>
46
+ </DialogHeader>
47
+ <DialogBody className="">
48
+ <Typography
49
+ variant="h6"
50
+ className="text-sm max-xs:text-[12px] font-semibold leading-6 text-black-400 text-center"
51
+ >
52
+ Thank you for choosing the Pick-Up Option!
53
+ </Typography>
54
+ <Typography
55
+ variant="h6"
56
+ className="text-sm max-xs:text-[12px] font-semibold leading-6 text-black-400 text-center"
57
+ >
58
+ To schedule your Pick-Up, please Contact the Horys Technologies Team
59
+ at:{" "}
60
+ <Link
61
+ className="text-purple-500"
62
+ href="https://support.hmall.shop"
63
+ target="_blank"
64
+ >
65
+ {" "}
66
+ HMall Support
67
+ </Link>
68
+ </Typography>
69
+ <Typography
70
+ variant="h6"
71
+ className="text-sm max-xs:text-[12px] font-semibold leading-6 text-black-400 text-center"
72
+ >
73
+ Your order will be ready once the Pick-Up is Confirmed. 🚀
74
+ </Typography>
75
+ </DialogBody>
76
+ <DialogFooter className="justify-center">
77
+ <ButtonCustom
78
+ icon={""}
79
+ loading={isLoading}
80
+ disabled={isLoading}
81
+ className={""}
82
+ onClick={async () => {
83
+ await proceedToPayment();
84
+ }}
85
+ >
86
+ Continue
87
+ </ButtonCustom>
88
+ </DialogFooter>
89
+ </Dialog>
90
+ </>
91
+ );
92
+ }