payaza-storefront-layouts 1.0.0

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 (629) hide show
  1. package/README.md +108 -0
  2. package/dist/components/learning/CertificateTemplates.d.ts +25 -0
  3. package/dist/components/learning/CertificateTemplates.d.ts.map +1 -0
  4. package/dist/components/learning/CertificateTemplates.js +31 -0
  5. package/dist/components/learning/CertificateViewer.d.ts +11 -0
  6. package/dist/components/learning/CertificateViewer.d.ts.map +1 -0
  7. package/dist/components/learning/CertificateViewer.js +114 -0
  8. package/dist/components/learning/MentorshipProgress.d.ts +18 -0
  9. package/dist/components/learning/MentorshipProgress.d.ts.map +1 -0
  10. package/dist/components/learning/MentorshipProgress.js +19 -0
  11. package/dist/components/ui/address-selector.d.ts +11 -0
  12. package/dist/components/ui/address-selector.d.ts.map +1 -0
  13. package/dist/components/ui/address-selector.js +21 -0
  14. package/dist/components/ui/avatar-image.d.ts +11 -0
  15. package/dist/components/ui/avatar-image.d.ts.map +1 -0
  16. package/dist/components/ui/avatar-image.js +39 -0
  17. package/dist/components/ui/background-patterns.d.ts +27 -0
  18. package/dist/components/ui/background-patterns.d.ts.map +1 -0
  19. package/dist/components/ui/background-patterns.js +5 -0
  20. package/dist/components/ui/badge.d.ts +10 -0
  21. package/dist/components/ui/badge.d.ts.map +1 -0
  22. package/dist/components/ui/badge.js +20 -0
  23. package/dist/components/ui/breadcrumbs.d.ts +11 -0
  24. package/dist/components/ui/breadcrumbs.d.ts.map +1 -0
  25. package/dist/components/ui/breadcrumbs.js +8 -0
  26. package/dist/components/ui/button.d.ts +11 -0
  27. package/dist/components/ui/button.d.ts.map +1 -0
  28. package/dist/components/ui/button.js +33 -0
  29. package/dist/components/ui/card.d.ts +10 -0
  30. package/dist/components/ui/card.d.ts.map +1 -0
  31. package/dist/components/ui/card.js +24 -0
  32. package/dist/components/ui/category-tree.d.ts +16 -0
  33. package/dist/components/ui/category-tree.d.ts.map +1 -0
  34. package/dist/components/ui/category-tree.js +74 -0
  35. package/dist/components/ui/checkout-button.d.ts +11 -0
  36. package/dist/components/ui/checkout-button.d.ts.map +1 -0
  37. package/dist/components/ui/checkout-button.js +174 -0
  38. package/dist/components/ui/guest-checkout-modal.d.ts +19 -0
  39. package/dist/components/ui/guest-checkout-modal.d.ts.map +1 -0
  40. package/dist/components/ui/guest-checkout-modal.js +92 -0
  41. package/dist/components/ui/image-skeleton.d.ts +7 -0
  42. package/dist/components/ui/image-skeleton.d.ts.map +1 -0
  43. package/dist/components/ui/image-skeleton.js +15 -0
  44. package/dist/components/ui/image-with-fallback.d.ts +9 -0
  45. package/dist/components/ui/image-with-fallback.d.ts.map +1 -0
  46. package/dist/components/ui/image-with-fallback.js +203 -0
  47. package/dist/components/ui/input.d.ts +6 -0
  48. package/dist/components/ui/input.d.ts.map +1 -0
  49. package/dist/components/ui/input.js +8 -0
  50. package/dist/components/ui/loading-skeleton-wrapper.d.ts +6 -0
  51. package/dist/components/ui/loading-skeleton-wrapper.d.ts.map +1 -0
  52. package/dist/components/ui/loading-skeleton-wrapper.js +10 -0
  53. package/dist/components/ui/modal.d.ts +11 -0
  54. package/dist/components/ui/modal.d.ts.map +1 -0
  55. package/dist/components/ui/modal.js +26 -0
  56. package/dist/components/ui/otp-input.d.ts +10 -0
  57. package/dist/components/ui/otp-input.d.ts.map +1 -0
  58. package/dist/components/ui/otp-input.js +57 -0
  59. package/dist/components/ui/out-of-stock-overlay.d.ts +8 -0
  60. package/dist/components/ui/out-of-stock-overlay.d.ts.map +1 -0
  61. package/dist/components/ui/out-of-stock-overlay.js +12 -0
  62. package/dist/components/ui/page-animate-wrapper.d.ts +7 -0
  63. package/dist/components/ui/page-animate-wrapper.d.ts.map +1 -0
  64. package/dist/components/ui/page-animate-wrapper.js +16 -0
  65. package/dist/components/ui/page-content-loader.d.ts +13 -0
  66. package/dist/components/ui/page-content-loader.d.ts.map +1 -0
  67. package/dist/components/ui/page-content-loader.js +12 -0
  68. package/dist/components/ui/page-loader.d.ts +20 -0
  69. package/dist/components/ui/page-loader.d.ts.map +1 -0
  70. package/dist/components/ui/page-loader.js +31 -0
  71. package/dist/components/ui/product-card.d.ts +11 -0
  72. package/dist/components/ui/product-card.d.ts.map +1 -0
  73. package/dist/components/ui/product-card.js +95 -0
  74. package/dist/components/ui/product-rating.d.ts +17 -0
  75. package/dist/components/ui/product-rating.d.ts.map +1 -0
  76. package/dist/components/ui/product-rating.js +54 -0
  77. package/dist/components/ui/review-form.d.ts +9 -0
  78. package/dist/components/ui/review-form.d.ts.map +1 -0
  79. package/dist/components/ui/review-form.js +28 -0
  80. package/dist/components/ui/route-skeleton-loader.d.ts +7 -0
  81. package/dist/components/ui/route-skeleton-loader.d.ts.map +1 -0
  82. package/dist/components/ui/route-skeleton-loader.js +75 -0
  83. package/dist/components/ui/sheet.d.ts +12 -0
  84. package/dist/components/ui/sheet.d.ts.map +1 -0
  85. package/dist/components/ui/sheet.js +29 -0
  86. package/dist/components/ui/skeleton.d.ts +3 -0
  87. package/dist/components/ui/skeleton.d.ts.map +1 -0
  88. package/dist/components/ui/skeleton.js +6 -0
  89. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts +6 -0
  90. package/dist/components/ui/skeletons/category-grid-skeleton.d.ts.map +1 -0
  91. package/dist/components/ui/skeletons/category-grid-skeleton.js +16 -0
  92. package/dist/components/ui/skeletons/checkout-skeleton.d.ts +2 -0
  93. package/dist/components/ui/skeletons/checkout-skeleton.d.ts.map +1 -0
  94. package/dist/components/ui/skeletons/checkout-skeleton.js +4 -0
  95. package/dist/components/ui/skeletons/index.d.ts +6 -0
  96. package/dist/components/ui/skeletons/index.d.ts.map +1 -0
  97. package/dist/components/ui/skeletons/index.js +5 -0
  98. package/dist/components/ui/skeletons/page-skeleton.d.ts +2 -0
  99. package/dist/components/ui/skeletons/page-skeleton.d.ts.map +1 -0
  100. package/dist/components/ui/skeletons/page-skeleton.js +4 -0
  101. package/dist/components/ui/skeletons/product-card-skeleton.d.ts +2 -0
  102. package/dist/components/ui/skeletons/product-card-skeleton.d.ts.map +1 -0
  103. package/dist/components/ui/skeletons/product-card-skeleton.js +4 -0
  104. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts +2 -0
  105. package/dist/components/ui/skeletons/product-detail-skeleton.d.ts.map +1 -0
  106. package/dist/components/ui/skeletons/product-detail-skeleton.js +4 -0
  107. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts +7 -0
  108. package/dist/components/ui/skeletons/product-grid-skeleton.d.ts.map +1 -0
  109. package/dist/components/ui/skeletons/product-grid-skeleton.js +12 -0
  110. package/dist/components/ui/store-logos.d.ts +43 -0
  111. package/dist/components/ui/store-logos.d.ts.map +1 -0
  112. package/dist/components/ui/store-logos.js +83 -0
  113. package/dist/components/ui/toast.d.ts +19 -0
  114. package/dist/components/ui/toast.d.ts.map +1 -0
  115. package/dist/components/ui/toast.js +33 -0
  116. package/dist/components/ui/video-player.d.ts +48 -0
  117. package/dist/components/ui/video-player.d.ts.map +1 -0
  118. package/dist/components/ui/video-player.js +96 -0
  119. package/dist/hooks/use-analytics.d.ts +14 -0
  120. package/dist/hooks/use-analytics.d.ts.map +1 -0
  121. package/dist/hooks/use-analytics.js +66 -0
  122. package/dist/hooks/use-api.d.ts +17 -0
  123. package/dist/hooks/use-api.d.ts.map +1 -0
  124. package/dist/hooks/use-api.js +53 -0
  125. package/dist/hooks/use-cart-api.d.ts +17 -0
  126. package/dist/hooks/use-cart-api.d.ts.map +1 -0
  127. package/dist/hooks/use-cart-api.js +134 -0
  128. package/dist/hooks/use-content-ready.d.ts +17 -0
  129. package/dist/hooks/use-content-ready.d.ts.map +1 -0
  130. package/dist/hooks/use-content-ready.js +197 -0
  131. package/dist/hooks/use-navigation-loading.d.ts +4 -0
  132. package/dist/hooks/use-navigation-loading.d.ts.map +1 -0
  133. package/dist/hooks/use-navigation-loading.js +14 -0
  134. package/dist/hooks/use-payaza-checkout.d.ts +14 -0
  135. package/dist/hooks/use-payaza-checkout.d.ts.map +1 -0
  136. package/dist/hooks/use-payaza-checkout.js +56 -0
  137. package/dist/hooks/use-products-api.d.ts +19 -0
  138. package/dist/hooks/use-products-api.d.ts.map +1 -0
  139. package/dist/hooks/use-products-api.js +84 -0
  140. package/dist/hooks/use-store-api.d.ts +12 -0
  141. package/dist/hooks/use-store-api.d.ts.map +1 -0
  142. package/dist/hooks/use-store-api.js +73 -0
  143. package/dist/index.d.ts +116 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +126 -0
  146. package/dist/json/booking-agenda.json +18 -0
  147. package/dist/json/booking.json +71 -0
  148. package/dist/json/clothing-minimal.json +26 -0
  149. package/dist/json/clothing.json +169 -0
  150. package/dist/json/electronics-grid.json +18 -0
  151. package/dist/json/electronics.json +50 -0
  152. package/dist/json/food-modern.json +38 -0
  153. package/dist/json/food.json +85 -0
  154. package/dist/json/json-map.d.ts +7 -0
  155. package/dist/json/json-map.d.ts.map +1 -0
  156. package/dist/json/json-map.js +36 -0
  157. package/dist/json/motivational-speaker.json +96 -0
  158. package/dist/layouts/booking/components/BookingHomePage.d.ts +7 -0
  159. package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -0
  160. package/dist/layouts/booking/components/BookingHomePage.js +49 -0
  161. package/dist/layouts/booking/index.d.ts +9 -0
  162. package/dist/layouts/booking/index.d.ts.map +1 -0
  163. package/dist/layouts/booking/index.js +9 -0
  164. package/dist/layouts/booking/pages/AboutPage.d.ts +7 -0
  165. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -0
  166. package/dist/layouts/booking/pages/AboutPage.js +45 -0
  167. package/dist/layouts/booking/pages/BookPage.d.ts +8 -0
  168. package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -0
  169. package/dist/layouts/booking/pages/BookPage.js +441 -0
  170. package/dist/layouts/booking/pages/CategoriesPage.d.ts +7 -0
  171. package/dist/layouts/booking/pages/CategoriesPage.d.ts.map +1 -0
  172. package/dist/layouts/booking/pages/CategoriesPage.js +162 -0
  173. package/dist/layouts/booking/pages/CategoryPage.d.ts +8 -0
  174. package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -0
  175. package/dist/layouts/booking/pages/CategoryPage.js +67 -0
  176. package/dist/layouts/booking/pages/ContactPage.d.ts +7 -0
  177. package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -0
  178. package/dist/layouts/booking/pages/ContactPage.js +20 -0
  179. package/dist/layouts/booking/pages/ProductDetailPage.d.ts +8 -0
  180. package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -0
  181. package/dist/layouts/booking/pages/ProductDetailPage.js +502 -0
  182. package/dist/layouts/booking/pages/ServicesPage.d.ts +9 -0
  183. package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -0
  184. package/dist/layouts/booking/pages/ServicesPage.js +31 -0
  185. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts +7 -0
  186. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -0
  187. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +186 -0
  188. package/dist/layouts/booking-agenda/index.d.ts +9 -0
  189. package/dist/layouts/booking-agenda/index.d.ts.map +1 -0
  190. package/dist/layouts/booking-agenda/index.js +9 -0
  191. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +7 -0
  192. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -0
  193. package/dist/layouts/booking-agenda/pages/AboutPage.js +45 -0
  194. package/dist/layouts/booking-agenda/pages/BookPage.d.ts +8 -0
  195. package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -0
  196. package/dist/layouts/booking-agenda/pages/BookPage.js +441 -0
  197. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts +7 -0
  198. package/dist/layouts/booking-agenda/pages/CategoriesPage.d.ts.map +1 -0
  199. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +162 -0
  200. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +8 -0
  201. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -0
  202. package/dist/layouts/booking-agenda/pages/CategoryPage.js +67 -0
  203. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +7 -0
  204. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -0
  205. package/dist/layouts/booking-agenda/pages/ContactPage.js +20 -0
  206. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +8 -0
  207. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -0
  208. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +502 -0
  209. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +9 -0
  210. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -0
  211. package/dist/layouts/booking-agenda/pages/ServicesPage.js +31 -0
  212. package/dist/layouts/clothing/components/ClothingHomePage.d.ts +7 -0
  213. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -0
  214. package/dist/layouts/clothing/components/ClothingHomePage.js +295 -0
  215. package/dist/layouts/clothing/index.d.ts +8 -0
  216. package/dist/layouts/clothing/index.d.ts.map +1 -0
  217. package/dist/layouts/clothing/index.js +8 -0
  218. package/dist/layouts/clothing/pages/AboutPage.d.ts +7 -0
  219. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -0
  220. package/dist/layouts/clothing/pages/AboutPage.js +45 -0
  221. package/dist/layouts/clothing/pages/CategoriesPage.d.ts +7 -0
  222. package/dist/layouts/clothing/pages/CategoriesPage.d.ts.map +1 -0
  223. package/dist/layouts/clothing/pages/CategoriesPage.js +162 -0
  224. package/dist/layouts/clothing/pages/CategoryPage.d.ts +8 -0
  225. package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -0
  226. package/dist/layouts/clothing/pages/CategoryPage.js +67 -0
  227. package/dist/layouts/clothing/pages/ContactPage.d.ts +7 -0
  228. package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -0
  229. package/dist/layouts/clothing/pages/ContactPage.js +20 -0
  230. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +8 -0
  231. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -0
  232. package/dist/layouts/clothing/pages/ProductDetailPage.js +502 -0
  233. package/dist/layouts/clothing/pages/ProductsPage.d.ts +7 -0
  234. package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -0
  235. package/dist/layouts/clothing/pages/ProductsPage.js +297 -0
  236. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts +7 -0
  237. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -0
  238. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +48 -0
  239. package/dist/layouts/clothing-minimal/index.d.ts +8 -0
  240. package/dist/layouts/clothing-minimal/index.d.ts.map +1 -0
  241. package/dist/layouts/clothing-minimal/index.js +8 -0
  242. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +7 -0
  243. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -0
  244. package/dist/layouts/clothing-minimal/pages/AboutPage.js +45 -0
  245. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts +7 -0
  246. package/dist/layouts/clothing-minimal/pages/CategoriesPage.d.ts.map +1 -0
  247. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +162 -0
  248. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +8 -0
  249. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -0
  250. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +67 -0
  251. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +7 -0
  252. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -0
  253. package/dist/layouts/clothing-minimal/pages/ContactPage.js +20 -0
  254. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +8 -0
  255. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -0
  256. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +502 -0
  257. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +7 -0
  258. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -0
  259. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +297 -0
  260. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts +7 -0
  261. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.d.ts.map +1 -0
  262. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +34 -0
  263. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts +10 -0
  264. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -0
  265. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +107 -0
  266. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts +7 -0
  267. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -0
  268. package/dist/layouts/electronics/components/ElectronicsHomePage.js +78 -0
  269. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts +8 -0
  270. package/dist/layouts/electronics/components/ElectronicsPageWrapper.d.ts.map +1 -0
  271. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +10 -0
  272. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts +7 -0
  273. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -0
  274. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +100 -0
  275. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts +7 -0
  276. package/dist/layouts/electronics/components/ElectronicsStoreFooter.d.ts.map +1 -0
  277. package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +10 -0
  278. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts +7 -0
  279. package/dist/layouts/electronics/components/ElectronicsStoreHeader.d.ts.map +1 -0
  280. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +27 -0
  281. package/dist/layouts/electronics/index.d.ts +19 -0
  282. package/dist/layouts/electronics/index.d.ts.map +1 -0
  283. package/dist/layouts/electronics/index.js +19 -0
  284. package/dist/layouts/electronics/pages/AboutPage.d.ts +7 -0
  285. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -0
  286. package/dist/layouts/electronics/pages/AboutPage.js +45 -0
  287. package/dist/layouts/electronics/pages/CategoriesPage.d.ts +7 -0
  288. package/dist/layouts/electronics/pages/CategoriesPage.d.ts.map +1 -0
  289. package/dist/layouts/electronics/pages/CategoriesPage.js +6 -0
  290. package/dist/layouts/electronics/pages/CategoryPage.d.ts +8 -0
  291. package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -0
  292. package/dist/layouts/electronics/pages/CategoryPage.js +67 -0
  293. package/dist/layouts/electronics/pages/ContactPage.d.ts +7 -0
  294. package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -0
  295. package/dist/layouts/electronics/pages/ContactPage.js +20 -0
  296. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts +7 -0
  297. package/dist/layouts/electronics/pages/HelpCenterPage.d.ts.map +1 -0
  298. package/dist/layouts/electronics/pages/HelpCenterPage.js +55 -0
  299. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts +7 -0
  300. package/dist/layouts/electronics/pages/PrivacyPolicyPage.d.ts.map +1 -0
  301. package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +8 -0
  302. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +8 -0
  303. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -0
  304. package/dist/layouts/electronics/pages/ProductDetailPage.js +502 -0
  305. package/dist/layouts/electronics/pages/ProductsPage.d.ts +7 -0
  306. package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -0
  307. package/dist/layouts/electronics/pages/ProductsPage.js +297 -0
  308. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts +7 -0
  309. package/dist/layouts/electronics/pages/ShippingReturnsPage.d.ts.map +1 -0
  310. package/dist/layouts/electronics/pages/ShippingReturnsPage.js +7 -0
  311. package/dist/layouts/electronics/pages/TermsPage.d.ts +7 -0
  312. package/dist/layouts/electronics/pages/TermsPage.d.ts.map +1 -0
  313. package/dist/layouts/electronics/pages/TermsPage.js +8 -0
  314. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts +7 -0
  315. package/dist/layouts/electronics/pages/TrackOrderPage.d.ts.map +1 -0
  316. package/dist/layouts/electronics/pages/TrackOrderPage.js +371 -0
  317. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts +10 -0
  318. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -0
  319. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +107 -0
  320. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts +7 -0
  321. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -0
  322. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +89 -0
  323. package/dist/layouts/electronics-grid/index.d.ts +15 -0
  324. package/dist/layouts/electronics-grid/index.d.ts.map +1 -0
  325. package/dist/layouts/electronics-grid/index.js +15 -0
  326. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +7 -0
  327. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -0
  328. package/dist/layouts/electronics-grid/pages/AboutPage.js +45 -0
  329. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts +7 -0
  330. package/dist/layouts/electronics-grid/pages/CategoriesPage.d.ts.map +1 -0
  331. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +6 -0
  332. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +8 -0
  333. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -0
  334. package/dist/layouts/electronics-grid/pages/CategoryPage.js +67 -0
  335. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +7 -0
  336. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -0
  337. package/dist/layouts/electronics-grid/pages/ContactPage.js +20 -0
  338. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts +7 -0
  339. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.d.ts.map +1 -0
  340. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +15 -0
  341. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts +7 -0
  342. package/dist/layouts/electronics-grid/pages/HelpCenterPage.d.ts.map +1 -0
  343. package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +55 -0
  344. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts +7 -0
  345. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.d.ts.map +1 -0
  346. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +8 -0
  347. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +8 -0
  348. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -0
  349. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +502 -0
  350. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +7 -0
  351. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -0
  352. package/dist/layouts/electronics-grid/pages/ProductsPage.js +297 -0
  353. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts +7 -0
  354. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.d.ts.map +1 -0
  355. package/dist/layouts/electronics-grid/pages/ShippingReturnsPage.js +7 -0
  356. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts +7 -0
  357. package/dist/layouts/electronics-grid/pages/TermsPage.d.ts.map +1 -0
  358. package/dist/layouts/electronics-grid/pages/TermsPage.js +8 -0
  359. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts +7 -0
  360. package/dist/layouts/electronics-grid/pages/TrackOrderPage.d.ts.map +1 -0
  361. package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +371 -0
  362. package/dist/layouts/food/components/FoodHomePage.d.ts +7 -0
  363. package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -0
  364. package/dist/layouts/food/components/FoodHomePage.js +304 -0
  365. package/dist/layouts/food/index.d.ts +9 -0
  366. package/dist/layouts/food/index.d.ts.map +1 -0
  367. package/dist/layouts/food/index.js +9 -0
  368. package/dist/layouts/food/pages/AboutPage.d.ts +7 -0
  369. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -0
  370. package/dist/layouts/food/pages/AboutPage.js +45 -0
  371. package/dist/layouts/food/pages/CategoriesPage.d.ts +7 -0
  372. package/dist/layouts/food/pages/CategoriesPage.d.ts.map +1 -0
  373. package/dist/layouts/food/pages/CategoriesPage.js +162 -0
  374. package/dist/layouts/food/pages/CategoryPage.d.ts +8 -0
  375. package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -0
  376. package/dist/layouts/food/pages/CategoryPage.js +67 -0
  377. package/dist/layouts/food/pages/ContactPage.d.ts +7 -0
  378. package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -0
  379. package/dist/layouts/food/pages/ContactPage.js +20 -0
  380. package/dist/layouts/food/pages/MenuPage.d.ts +8 -0
  381. package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -0
  382. package/dist/layouts/food/pages/MenuPage.js +75 -0
  383. package/dist/layouts/food/pages/ProductDetailPage.d.ts +8 -0
  384. package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -0
  385. package/dist/layouts/food/pages/ProductDetailPage.js +502 -0
  386. package/dist/layouts/food/pages/ProductsPage.d.ts +7 -0
  387. package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -0
  388. package/dist/layouts/food/pages/ProductsPage.js +297 -0
  389. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts +7 -0
  390. package/dist/layouts/food-modern/components/FoodHomePageModern.d.ts.map +1 -0
  391. package/dist/layouts/food-modern/components/FoodHomePageModern.js +118 -0
  392. package/dist/layouts/food-modern/index.d.ts +9 -0
  393. package/dist/layouts/food-modern/index.d.ts.map +1 -0
  394. package/dist/layouts/food-modern/index.js +9 -0
  395. package/dist/layouts/food-modern/pages/AboutPage.d.ts +7 -0
  396. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -0
  397. package/dist/layouts/food-modern/pages/AboutPage.js +45 -0
  398. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts +7 -0
  399. package/dist/layouts/food-modern/pages/CategoriesPage.d.ts.map +1 -0
  400. package/dist/layouts/food-modern/pages/CategoriesPage.js +162 -0
  401. package/dist/layouts/food-modern/pages/CategoryPage.d.ts +8 -0
  402. package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -0
  403. package/dist/layouts/food-modern/pages/CategoryPage.js +67 -0
  404. package/dist/layouts/food-modern/pages/ContactPage.d.ts +7 -0
  405. package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -0
  406. package/dist/layouts/food-modern/pages/ContactPage.js +20 -0
  407. package/dist/layouts/food-modern/pages/MenuPage.d.ts +8 -0
  408. package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -0
  409. package/dist/layouts/food-modern/pages/MenuPage.js +75 -0
  410. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +8 -0
  411. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -0
  412. package/dist/layouts/food-modern/pages/ProductDetailPage.js +502 -0
  413. package/dist/layouts/food-modern/pages/ProductsPage.d.ts +7 -0
  414. package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -0
  415. package/dist/layouts/food-modern/pages/ProductsPage.js +297 -0
  416. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts +7 -0
  417. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -0
  418. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +115 -0
  419. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts +8 -0
  420. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.d.ts.map +1 -0
  421. package/dist/layouts/motivational-speaker/components/MotivationalPageWrapper.js +10 -0
  422. package/dist/layouts/motivational-speaker/index.d.ts +10 -0
  423. package/dist/layouts/motivational-speaker/index.d.ts.map +1 -0
  424. package/dist/layouts/motivational-speaker/index.js +10 -0
  425. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts +7 -0
  426. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -0
  427. package/dist/layouts/motivational-speaker/pages/AboutPage.js +45 -0
  428. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +8 -0
  429. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -0
  430. package/dist/layouts/motivational-speaker/pages/CategoryPage.js +67 -0
  431. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +7 -0
  432. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -0
  433. package/dist/layouts/motivational-speaker/pages/ContactPage.js +20 -0
  434. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +7 -0
  435. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -0
  436. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +297 -0
  437. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +8 -0
  438. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -0
  439. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +144 -0
  440. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +9 -0
  441. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -0
  442. package/dist/layouts/motivational-speaker/pages/ServicesPage.js +31 -0
  443. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts +7 -0
  444. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.d.ts.map +1 -0
  445. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +136 -0
  446. package/dist/layouts/shared/components/BaseStoreLayout.d.ts +8 -0
  447. package/dist/layouts/shared/components/BaseStoreLayout.d.ts.map +1 -0
  448. package/dist/layouts/shared/components/BaseStoreLayout.js +59 -0
  449. package/dist/layouts/shared/components/GenericPageWrapper.d.ts +8 -0
  450. package/dist/layouts/shared/components/GenericPageWrapper.d.ts.map +1 -0
  451. package/dist/layouts/shared/components/GenericPageWrapper.js +19 -0
  452. package/dist/layouts/shared/components/PromoBanner.d.ts +9 -0
  453. package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -0
  454. package/dist/layouts/shared/components/PromoBanner.js +14 -0
  455. package/dist/layouts/shared/components/StoreFooter.d.ts +7 -0
  456. package/dist/layouts/shared/components/StoreFooter.d.ts.map +1 -0
  457. package/dist/layouts/shared/components/StoreFooter.js +147 -0
  458. package/dist/layouts/shared/components/StoreHeader.d.ts +8 -0
  459. package/dist/layouts/shared/components/StoreHeader.d.ts.map +1 -0
  460. package/dist/layouts/shared/components/StoreHeader.js +87 -0
  461. package/dist/layouts/shared/components/TestimonialCard.d.ts +8 -0
  462. package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -0
  463. package/dist/layouts/shared/components/TestimonialCard.js +10 -0
  464. package/dist/layouts/shared/index.d.ts +23 -0
  465. package/dist/layouts/shared/index.d.ts.map +1 -0
  466. package/dist/layouts/shared/index.js +23 -0
  467. package/dist/layouts/shared/pages/AccountPage.d.ts +7 -0
  468. package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -0
  469. package/dist/layouts/shared/pages/AccountPage.js +605 -0
  470. package/dist/layouts/shared/pages/CartPage.d.ts +7 -0
  471. package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -0
  472. package/dist/layouts/shared/pages/CartPage.js +83 -0
  473. package/dist/layouts/shared/pages/CheckoutPage.d.ts +7 -0
  474. package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -0
  475. package/dist/layouts/shared/pages/CheckoutPage.js +860 -0
  476. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts +7 -0
  477. package/dist/layouts/shared/pages/CookiePolicyPage.d.ts.map +1 -0
  478. package/dist/layouts/shared/pages/CookiePolicyPage.js +8 -0
  479. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts +9 -0
  480. package/dist/layouts/shared/pages/FeatureDisabledPage.d.ts.map +1 -0
  481. package/dist/layouts/shared/pages/FeatureDisabledPage.js +8 -0
  482. package/dist/layouts/shared/pages/HelpCenterPage.d.ts +7 -0
  483. package/dist/layouts/shared/pages/HelpCenterPage.d.ts.map +1 -0
  484. package/dist/layouts/shared/pages/HelpCenterPage.js +55 -0
  485. package/dist/layouts/shared/pages/MaintenancePage.d.ts +7 -0
  486. package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -0
  487. package/dist/layouts/shared/pages/MaintenancePage.js +44 -0
  488. package/dist/layouts/shared/pages/PortfolioPage.d.ts +7 -0
  489. package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -0
  490. package/dist/layouts/shared/pages/PortfolioPage.js +130 -0
  491. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts +7 -0
  492. package/dist/layouts/shared/pages/PrivacyPolicyPage.d.ts.map +1 -0
  493. package/dist/layouts/shared/pages/PrivacyPolicyPage.js +8 -0
  494. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts +7 -0
  495. package/dist/layouts/shared/pages/ShippingReturnsPage.d.ts.map +1 -0
  496. package/dist/layouts/shared/pages/ShippingReturnsPage.js +7 -0
  497. package/dist/layouts/shared/pages/SizeGuidePage.d.ts +7 -0
  498. package/dist/layouts/shared/pages/SizeGuidePage.d.ts.map +1 -0
  499. package/dist/layouts/shared/pages/SizeGuidePage.js +10 -0
  500. package/dist/layouts/shared/pages/StyleGuidePage.d.ts +7 -0
  501. package/dist/layouts/shared/pages/StyleGuidePage.d.ts.map +1 -0
  502. package/dist/layouts/shared/pages/StyleGuidePage.js +126 -0
  503. package/dist/layouts/shared/pages/TeamPage.d.ts +7 -0
  504. package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -0
  505. package/dist/layouts/shared/pages/TeamPage.js +39 -0
  506. package/dist/layouts/shared/pages/TermsPage.d.ts +7 -0
  507. package/dist/layouts/shared/pages/TermsPage.d.ts.map +1 -0
  508. package/dist/layouts/shared/pages/TermsPage.js +8 -0
  509. package/dist/layouts/shared/pages/TrackOrderPage.d.ts +7 -0
  510. package/dist/layouts/shared/pages/TrackOrderPage.d.ts.map +1 -0
  511. package/dist/layouts/shared/pages/TrackOrderPage.js +371 -0
  512. package/dist/layouts/shared/pages/WishlistPage.d.ts +7 -0
  513. package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -0
  514. package/dist/layouts/shared/pages/WishlistPage.js +162 -0
  515. package/dist/lib/api.d.ts +8 -0
  516. package/dist/lib/api.d.ts.map +1 -0
  517. package/dist/lib/api.js +109 -0
  518. package/dist/lib/auth-context.d.ts +30 -0
  519. package/dist/lib/auth-context.d.ts.map +1 -0
  520. package/dist/lib/auth-context.js +207 -0
  521. package/dist/lib/content-selectors.d.ts +21 -0
  522. package/dist/lib/content-selectors.d.ts.map +1 -0
  523. package/dist/lib/content-selectors.js +75 -0
  524. package/dist/lib/countries.d.ts +11 -0
  525. package/dist/lib/countries.d.ts.map +1 -0
  526. package/dist/lib/countries.js +252 -0
  527. package/dist/lib/currency-symbols.d.ts +36 -0
  528. package/dist/lib/currency-symbols.d.ts.map +1 -0
  529. package/dist/lib/currency-symbols.js +153 -0
  530. package/dist/lib/guest-user.d.ts +27 -0
  531. package/dist/lib/guest-user.d.ts.map +1 -0
  532. package/dist/lib/guest-user.js +71 -0
  533. package/dist/lib/loading-context.d.ts +19 -0
  534. package/dist/lib/loading-context.d.ts.map +1 -0
  535. package/dist/lib/loading-context.js +197 -0
  536. package/dist/lib/mock-stores.d.ts +22 -0
  537. package/dist/lib/mock-stores.d.ts.map +1 -0
  538. package/dist/lib/mock-stores.js +2099 -0
  539. package/dist/lib/payaza-checkout.d.ts +167 -0
  540. package/dist/lib/payaza-checkout.d.ts.map +1 -0
  541. package/dist/lib/payaza-checkout.js +455 -0
  542. package/dist/lib/services/analytics.service.d.ts +58 -0
  543. package/dist/lib/services/analytics.service.d.ts.map +1 -0
  544. package/dist/lib/services/analytics.service.js +182 -0
  545. package/dist/lib/services/auth.service.d.ts +63 -0
  546. package/dist/lib/services/auth.service.d.ts.map +1 -0
  547. package/dist/lib/services/auth.service.js +101 -0
  548. package/dist/lib/services/booking.service.d.ts +53 -0
  549. package/dist/lib/services/booking.service.d.ts.map +1 -0
  550. package/dist/lib/services/booking.service.js +52 -0
  551. package/dist/lib/services/cart.service.d.ts +37 -0
  552. package/dist/lib/services/cart.service.d.ts.map +1 -0
  553. package/dist/lib/services/cart.service.js +55 -0
  554. package/dist/lib/services/category.service.d.ts +21 -0
  555. package/dist/lib/services/category.service.d.ts.map +1 -0
  556. package/dist/lib/services/category.service.js +41 -0
  557. package/dist/lib/services/checkout.service.d.ts +79 -0
  558. package/dist/lib/services/checkout.service.d.ts.map +1 -0
  559. package/dist/lib/services/checkout.service.js +37 -0
  560. package/dist/lib/services/customer.service.d.ts +52 -0
  561. package/dist/lib/services/customer.service.d.ts.map +1 -0
  562. package/dist/lib/services/customer.service.js +64 -0
  563. package/dist/lib/services/fees.service.d.ts +23 -0
  564. package/dist/lib/services/fees.service.d.ts.map +1 -0
  565. package/dist/lib/services/fees.service.js +13 -0
  566. package/dist/lib/services/index.d.ts +19 -0
  567. package/dist/lib/services/index.d.ts.map +1 -0
  568. package/dist/lib/services/index.js +18 -0
  569. package/dist/lib/services/order.service.d.ts +107 -0
  570. package/dist/lib/services/order.service.d.ts.map +1 -0
  571. package/dist/lib/services/order.service.js +82 -0
  572. package/dist/lib/services/payment.service.d.ts +51 -0
  573. package/dist/lib/services/payment.service.d.ts.map +1 -0
  574. package/dist/lib/services/payment.service.js +105 -0
  575. package/dist/lib/services/product.service.d.ts +90 -0
  576. package/dist/lib/services/product.service.d.ts.map +1 -0
  577. package/dist/lib/services/product.service.js +86 -0
  578. package/dist/lib/services/promo.service.d.ts +31 -0
  579. package/dist/lib/services/promo.service.d.ts.map +1 -0
  580. package/dist/lib/services/promo.service.js +29 -0
  581. package/dist/lib/services/review.service.d.ts +47 -0
  582. package/dist/lib/services/review.service.d.ts.map +1 -0
  583. package/dist/lib/services/review.service.js +54 -0
  584. package/dist/lib/services/service.service.d.ts +55 -0
  585. package/dist/lib/services/service.service.d.ts.map +1 -0
  586. package/dist/lib/services/service.service.js +37 -0
  587. package/dist/lib/services/shipping.service.d.ts +44 -0
  588. package/dist/lib/services/shipping.service.d.ts.map +1 -0
  589. package/dist/lib/services/shipping.service.js +23 -0
  590. package/dist/lib/services/store.service.d.ts +87 -0
  591. package/dist/lib/services/store.service.d.ts.map +1 -0
  592. package/dist/lib/services/store.service.js +41 -0
  593. package/dist/lib/services/wishlist.service.d.ts +30 -0
  594. package/dist/lib/services/wishlist.service.d.ts.map +1 -0
  595. package/dist/lib/services/wishlist.service.js +53 -0
  596. package/dist/lib/store-config-utils.d.ts +41 -0
  597. package/dist/lib/store-config-utils.d.ts.map +1 -0
  598. package/dist/lib/store-config-utils.js +1535 -0
  599. package/dist/lib/store-config.d.ts +3 -0
  600. package/dist/lib/store-config.d.ts.map +1 -0
  601. package/dist/lib/store-config.js +2 -0
  602. package/dist/lib/store-context.d.ts +39 -0
  603. package/dist/lib/store-context.d.ts.map +1 -0
  604. package/dist/lib/store-context.js +803 -0
  605. package/dist/lib/store-types.d.ts +663 -0
  606. package/dist/lib/store-types.d.ts.map +1 -0
  607. package/dist/lib/store-types.js +1 -0
  608. package/dist/lib/utils/asset-helpers.d.ts +102 -0
  609. package/dist/lib/utils/asset-helpers.d.ts.map +1 -0
  610. package/dist/lib/utils/asset-helpers.js +395 -0
  611. package/dist/lib/utils/category-tree.d.ts +25 -0
  612. package/dist/lib/utils/category-tree.d.ts.map +1 -0
  613. package/dist/lib/utils/category-tree.js +85 -0
  614. package/dist/lib/utils/demo-detection.d.ts +23 -0
  615. package/dist/lib/utils/demo-detection.d.ts.map +1 -0
  616. package/dist/lib/utils/demo-detection.js +36 -0
  617. package/dist/lib/utils/fee-calculations.d.ts +35 -0
  618. package/dist/lib/utils/fee-calculations.d.ts.map +1 -0
  619. package/dist/lib/utils/fee-calculations.js +64 -0
  620. package/dist/lib/utils/index.d.ts +37 -0
  621. package/dist/lib/utils/index.d.ts.map +1 -0
  622. package/dist/lib/utils/index.js +160 -0
  623. package/dist/lib/utils/url-helpers.d.ts +30 -0
  624. package/dist/lib/utils/url-helpers.d.ts.map +1 -0
  625. package/dist/lib/utils/url-helpers.js +56 -0
  626. package/dist/lib/utils/video-helpers.d.ts +32 -0
  627. package/dist/lib/utils/video-helpers.d.ts.map +1 -0
  628. package/dist/lib/utils/video-helpers.js +210 -0
  629. package/package.json +92 -0
@@ -0,0 +1,203 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useEffect, useRef } from 'react';
4
+ import { cn } from '../../lib/utils';
5
+ import { ImageSkeleton } from './image-skeleton';
6
+ export function ImageWithFallback({ src, alt, className, fallbackSrc, fallbackText, skeletonAspectRatio = 'square', showSkeletonOnError = true, ...props }) {
7
+ // Initialize loading state based on whether we have a valid src
8
+ const initialSrc = typeof src === 'string' && src.trim() ? src : undefined;
9
+ const [isLoading, setIsLoading] = useState(!!initialSrc); // Only loading if we have a src
10
+ const [error, setError] = useState(false);
11
+ const [currentSrc, setCurrentSrc] = useState(initialSrc);
12
+ const prevSrcRef = useRef(src);
13
+ const prevFallbackRef = useRef(fallbackSrc);
14
+ const hasTriedFallback = useRef(false);
15
+ const imageRef = useRef(null);
16
+ const mountedRef = useRef(false);
17
+ // Set mounted flag
18
+ useEffect(() => {
19
+ mountedRef.current = true;
20
+ return () => {
21
+ mountedRef.current = false;
22
+ };
23
+ }, []);
24
+ // Reset when src or fallbackSrc changes
25
+ useEffect(() => {
26
+ const currentSrcValue = typeof src === 'string' && src.trim() ? src : undefined;
27
+ const hasChanged = currentSrcValue !== prevSrcRef.current || fallbackSrc !== prevFallbackRef.current;
28
+ if (hasChanged) {
29
+ const newSrc = currentSrcValue || (fallbackSrc && fallbackSrc.trim() ? fallbackSrc : undefined);
30
+ // Only set loading if we have a valid src to load
31
+ setIsLoading(!!newSrc);
32
+ setCurrentSrc(newSrc);
33
+ setError(false);
34
+ hasTriedFallback.current = false;
35
+ prevSrcRef.current = currentSrcValue;
36
+ prevFallbackRef.current = fallbackSrc;
37
+ // Reset image ref to force reload
38
+ if (imageRef.current) {
39
+ imageRef.current.src = '';
40
+ }
41
+ // Debug logging (only in development)
42
+ if (process.env.NODE_ENV === 'development') {
43
+ console.log('[ImageWithFallback] Source changed:', {
44
+ src: currentSrcValue,
45
+ fallbackSrc,
46
+ newSrc,
47
+ alt,
48
+ willLoad: !!newSrc
49
+ });
50
+ }
51
+ }
52
+ }, [src, fallbackSrc, alt]);
53
+ // Helper function to check if image is loaded and update state
54
+ const checkAndUpdateImageState = (img, forceCheck = false) => {
55
+ if (!mountedRef.current || !img)
56
+ return;
57
+ // Check if image is already loaded (cached images)
58
+ // naturalHeight > 0 means image has loaded successfully
59
+ if (img.complete && img.naturalHeight !== 0) {
60
+ if (forceCheck || isLoading) {
61
+ setIsLoading(false);
62
+ setError(false);
63
+ return true; // Image is loaded
64
+ }
65
+ }
66
+ return false; // Image not loaded yet
67
+ };
68
+ // Aggressive check after currentSrc changes to handle cached images
69
+ useEffect(() => {
70
+ if (!mountedRef.current || !currentSrc)
71
+ return;
72
+ // Multiple checks at different intervals to catch cached images
73
+ const checkImage = () => {
74
+ if (imageRef.current && isLoading) {
75
+ const isLoaded = checkAndUpdateImageState(imageRef.current, true);
76
+ return isLoaded;
77
+ }
78
+ return false;
79
+ };
80
+ // Immediate check
81
+ if (checkImage())
82
+ return;
83
+ let timeout1 = null;
84
+ let timeout2 = null;
85
+ // Check after DOM update (requestAnimationFrame)
86
+ const rafId = requestAnimationFrame(() => {
87
+ if (checkImage())
88
+ return;
89
+ // If still not loaded, check again after small delays (covers various timing scenarios)
90
+ timeout1 = setTimeout(() => {
91
+ if (checkImage())
92
+ return;
93
+ // Final check after a bit more time
94
+ timeout2 = setTimeout(() => {
95
+ checkImage();
96
+ }, 100);
97
+ }, 50);
98
+ });
99
+ return () => {
100
+ cancelAnimationFrame(rafId);
101
+ if (timeout1)
102
+ clearTimeout(timeout1);
103
+ if (timeout2)
104
+ clearTimeout(timeout2);
105
+ };
106
+ }, [currentSrc, isLoading]);
107
+ const handleLoad = () => {
108
+ if (mountedRef.current) {
109
+ setIsLoading(false);
110
+ setError(false);
111
+ }
112
+ };
113
+ const handleError = () => {
114
+ console.warn('[ImageWithFallback] Image failed to load:', {
115
+ currentSrc,
116
+ originalSrc: src,
117
+ fallbackSrc,
118
+ hasTriedFallback: hasTriedFallback.current,
119
+ alt
120
+ });
121
+ // Try fallback first if we haven't already and it's provided
122
+ if (fallbackSrc && fallbackSrc.trim() && !hasTriedFallback.current && currentSrc !== fallbackSrc) {
123
+ hasTriedFallback.current = true;
124
+ setCurrentSrc(fallbackSrc);
125
+ setError(false);
126
+ setIsLoading(true);
127
+ return;
128
+ }
129
+ // All fallbacks failed - stop loading and show error state
130
+ setError(true);
131
+ setIsLoading(false);
132
+ };
133
+ // Determine what to render based on state
134
+ // Priority: 1) No src -> skeleton, 2) Loading -> skeleton, 3) Error -> skeleton or error div, 4) Success -> image
135
+ // Case 1: No src at all
136
+ if (!currentSrc) {
137
+ if (process.env.NODE_ENV === 'development') {
138
+ console.log('[ImageWithFallback] No src - showing skeleton:', { src, fallbackSrc, alt });
139
+ }
140
+ return _jsx(ImageSkeleton, { className: className, aspectRatio: skeletonAspectRatio });
141
+ }
142
+ // Case 2: Currently loading (have src but image hasn't loaded yet)
143
+ // Render the image hidden so it can load, but show skeleton overlay
144
+ if (isLoading && currentSrc) {
145
+ if (process.env.NODE_ENV === 'development') {
146
+ console.log('[ImageWithFallback] Loading - showing skeleton with hidden image:', { currentSrc, alt });
147
+ }
148
+ return (_jsxs("div", { className: cn("relative", className), children: [_jsx("img", { ref: (node) => {
149
+ imageRef.current = node;
150
+ // Check if image is already loaded (cached images) - this handles instant loads
151
+ if (node) {
152
+ // Immediate check for cached images
153
+ if (node.complete && node.naturalHeight !== 0) {
154
+ // Image is already loaded, update state immediately
155
+ if (mountedRef.current) {
156
+ setIsLoading(false);
157
+ setError(false);
158
+ }
159
+ }
160
+ else {
161
+ // Use requestAnimationFrame for images that might load quickly
162
+ requestAnimationFrame(() => {
163
+ checkAndUpdateImageState(node, true);
164
+ });
165
+ }
166
+ }
167
+ }, src: currentSrc, alt: alt || 'Product image', className: "absolute inset-0 w-full h-full opacity-0", onLoad: handleLoad, onError: handleError, loading: "lazy", ...props }), _jsx(ImageSkeleton, { className: className, aspectRatio: skeletonAspectRatio })] }));
168
+ }
169
+ // Case 3: Error occurred
170
+ if (error) {
171
+ if (showSkeletonOnError && !fallbackText) {
172
+ if (process.env.NODE_ENV === 'development') {
173
+ console.log('[ImageWithFallback] Error - showing skeleton:', { currentSrc, alt });
174
+ }
175
+ return _jsx(ImageSkeleton, { className: className, aspectRatio: skeletonAspectRatio });
176
+ }
177
+ else {
178
+ // Show placeholder div instead of skeleton
179
+ return (_jsxs("div", { className: cn("flex flex-col items-center justify-center bg-gray-100 text-gray-400 border border-gray-200", className), style: { minHeight: '100px' }, children: [_jsx("svg", { className: "w-1/4 h-1/4 max-w-[48px] max-h-[48px] opacity-20", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) }), fallbackText && _jsx("span", { className: "text-[10px] uppercase tracking-widest font-bold mt-2 opacity-40", children: fallbackText })] }));
180
+ }
181
+ }
182
+ // Case 4: Image loaded successfully - show the image
183
+ return (_jsx("img", { ref: (node) => {
184
+ imageRef.current = node;
185
+ // Check if image is already loaded (cached images) - this handles instant loads
186
+ if (node) {
187
+ // Immediate check for cached images
188
+ if (node.complete && node.naturalHeight !== 0) {
189
+ // Image is already loaded, update state immediately
190
+ if (mountedRef.current) {
191
+ setIsLoading(false);
192
+ setError(false);
193
+ }
194
+ }
195
+ else {
196
+ // Use requestAnimationFrame for images that might load quickly
197
+ requestAnimationFrame(() => {
198
+ checkAndUpdateImageState(node, true);
199
+ });
200
+ }
201
+ }
202
+ }, src: currentSrc, alt: alt || 'Product image', className: className, onLoad: handleLoad, onError: handleError, loading: "lazy", ...props }));
203
+ }
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ }
4
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
5
+ export { Input };
6
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,UACb,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;CAAI;AAE3D,QAAA,MAAM,KAAK,qFAcV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../lib/utils";
4
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => {
5
+ return (_jsx("input", { type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref, ...props }));
6
+ });
7
+ Input.displayName = "Input";
8
+ export { Input };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Client component wrapper for Next.js loading.tsx files
3
+ * Uses pathname to determine which skeleton to show
4
+ */
5
+ export declare function LoadingSkeletonWrapper(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=loading-skeleton-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-skeleton-wrapper.d.ts","sourceRoot":"","sources":["../../../src/components/ui/loading-skeleton-wrapper.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,sBAAsB,4CAErC"}
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { RouteSkeletonLoader } from './route-skeleton-loader';
4
+ /**
5
+ * Client component wrapper for Next.js loading.tsx files
6
+ * Uses pathname to determine which skeleton to show
7
+ */
8
+ export function LoadingSkeletonWrapper() {
9
+ return _jsx(RouteSkeletonLoader, {});
10
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ interface ModalProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ title?: string;
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ }
9
+ export declare function Modal({ isOpen, onClose, title, children, className }: ModalProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/modal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,UAAU,2CAkDhF"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { X } from 'lucide-react';
5
+ import { cn } from '../../lib/utils';
6
+ import { Button } from './button';
7
+ export function Modal({ isOpen, onClose, title, children, className }) {
8
+ const overlayRef = React.useRef(null);
9
+ React.useEffect(() => {
10
+ const handleEscape = (e) => {
11
+ if (e.key === 'Escape')
12
+ onClose();
13
+ };
14
+ if (isOpen) {
15
+ document.addEventListener('keydown', handleEscape);
16
+ document.body.style.overflow = 'hidden';
17
+ }
18
+ return () => {
19
+ document.removeEventListener('keydown', handleEscape);
20
+ document.body.style.overflow = 'unset';
21
+ };
22
+ }, [isOpen, onClose]);
23
+ if (!isOpen)
24
+ return null;
25
+ return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", children: [_jsx("div", { ref: overlayRef, className: "absolute inset-0 bg-black/60 backdrop-blur-sm transition-opacity", onClick: onClose }), _jsxs("div", { className: cn("relative bg-white rounded-lg shadow-xl w-full max-w-lg overflow-hidden animate-in fade-in zoom-in-95 duration-200", className), children: [_jsxs("div", { className: "flex items-center justify-between p-4 border-b", children: [_jsx("h3", { className: "text-lg font-semibold", children: title }), _jsx(Button, { variant: "ghost", size: "icon", onClick: onClose, className: "rounded-full", children: _jsx(X, { className: "h-4 w-4" }) })] }), _jsx("div", { className: "p-4", children: children })] })] }));
26
+ }
@@ -0,0 +1,10 @@
1
+ interface OtpInputProps {
2
+ length?: number;
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ disabled?: boolean;
6
+ className?: string;
7
+ }
8
+ export declare function OtpInput({ length, value, onChange, disabled, className, }: OtpInputProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=otp-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/otp-input.tsx"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,EACvB,MAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,SAAS,GACV,EAAE,aAAa,2CAkFf"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../lib/utils";
4
+ export function OtpInput({ length = 6, value, onChange, disabled = false, className, }) {
5
+ const inputRefs = React.useRef([]);
6
+ const handleChange = (index, e) => {
7
+ const newValue = e.target.value;
8
+ if (isNaN(Number(newValue)))
9
+ return;
10
+ const newOtp = value.split('');
11
+ // Handle case where user types multiple characters (some browsers/mobile)
12
+ const lastChar = newValue.substring(newValue.length - 1);
13
+ newOtp[index] = lastChar;
14
+ const result = newOtp.join('').substring(0, length);
15
+ onChange(result);
16
+ // Move to next input if value is entered
17
+ if (newValue && index < length - 1) {
18
+ inputRefs.current[index + 1]?.focus();
19
+ }
20
+ };
21
+ const handleKeyDown = (index, e) => {
22
+ if (e.key === 'Backspace') {
23
+ if (!value[index] && index > 0) {
24
+ // If empty and backspace pressed, move to previous and delete
25
+ const newOtp = value.split('');
26
+ newOtp[index - 1] = '';
27
+ onChange(newOtp.join(''));
28
+ inputRefs.current[index - 1]?.focus();
29
+ }
30
+ else {
31
+ // Just delete current
32
+ const newOtp = value.split('');
33
+ newOtp[index] = '';
34
+ onChange(newOtp.join(''));
35
+ }
36
+ }
37
+ else if (e.key === 'ArrowLeft' && index > 0) {
38
+ inputRefs.current[index - 1]?.focus();
39
+ }
40
+ else if (e.key === 'ArrowRight' && index < length - 1) {
41
+ inputRefs.current[index + 1]?.focus();
42
+ }
43
+ };
44
+ const handlePaste = (e) => {
45
+ e.preventDefault();
46
+ const pastedData = e.clipboardData.getData('text/plain').replace(/\D/g, '').slice(0, length);
47
+ onChange(pastedData);
48
+ // Focus the last filled input or the first empty one
49
+ const nextIndex = Math.min(pastedData.length, length - 1);
50
+ inputRefs.current[nextIndex]?.focus();
51
+ };
52
+ return (_jsx("div", { className: cn("flex gap-2 sm:gap-4 justify-center", className), children: Array.from({ length }).map((_, index) => (_jsx("input", { ref: (el) => {
53
+ inputRefs.current[index] = el;
54
+ }, type: "text", inputMode: "numeric", maxLength: 1, value: value[index] || '', onChange: (e) => handleChange(index, e), onKeyDown: (e) => handleKeyDown(index, e), onPaste: handlePaste, disabled: disabled, className: cn("w-10 h-12 sm:w-12 sm:h-14 text-center text-2xl font-bold border-2 rounded-lg transition-all bg-background", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-primary focus:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-50", value[index]
55
+ ? "border-primary text-foreground"
56
+ : "border-gray-200 text-muted-foreground"), "aria-label": `Digit ${index + 1}`, autoComplete: "one-time-code" }, index))) }));
57
+ }
@@ -0,0 +1,8 @@
1
+ interface OutOfStockOverlayProps {
2
+ className?: string;
3
+ showBadge?: boolean;
4
+ badgePosition?: 'top-left' | 'top-right' | 'center' | 'bottom-center';
5
+ }
6
+ export declare function OutOfStockOverlay({ className, showBadge, badgePosition }: OutOfStockOverlayProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=out-of-stock-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"out-of-stock-overlay.d.ts","sourceRoot":"","sources":["../../../src/components/ui/out-of-stock-overlay.tsx"],"names":[],"mappings":"AAIA,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC;CACvE;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,SAAgB,EAChB,aAAwB,EACzB,EAAE,sBAAsB,2CA8BxB"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from '../../lib/utils';
4
+ export function OutOfStockOverlay({ className, showBadge = true, badgePosition = 'center' }) {
5
+ const badgePositions = {
6
+ 'top-left': 'top-4 left-4',
7
+ 'top-right': 'top-4 right-4',
8
+ 'center': 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',
9
+ 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',
10
+ };
11
+ return (_jsx("div", { className: cn("absolute inset-0 bg-black/40 backdrop-blur-[1px] z-10 flex items-center justify-center", className), "aria-label": "Out of stock", children: showBadge && (_jsx("div", { className: cn("absolute z-20", badgePositions[badgePosition]), children: _jsx("span", { className: "inline-flex items-center px-4 py-2 rounded-full text-sm font-bold bg-red-600 text-white shadow-lg border-2 border-white/50", children: "Out of Stock" }) })) }));
12
+ }
@@ -0,0 +1,7 @@
1
+ interface PageAnimateWrapperProps {
2
+ children: React.ReactNode;
3
+ className?: string;
4
+ }
5
+ export declare function PageAnimateWrapper({ children, className }: PageAnimateWrapperProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=page-animate-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-animate-wrapper.d.ts","sourceRoot":"","sources":["../../../src/components/ui/page-animate-wrapper.tsx"],"names":[],"mappings":"AAMA,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,uBAAuB,2CAsBlF"}
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { usePathname } from 'next/navigation';
4
+ import { useEffect, useState } from 'react';
5
+ import { cn } from '../../lib/utils';
6
+ export function PageAnimateWrapper({ children, className }) {
7
+ const pathname = usePathname();
8
+ const [shouldAnimate, setShouldAnimate] = useState(false);
9
+ useEffect(() => {
10
+ setShouldAnimate(false);
11
+ // Small timeout to reset animation state and trigger reflow
12
+ const timer = setTimeout(() => setShouldAnimate(true), 10);
13
+ return () => clearTimeout(timer);
14
+ }, [pathname]);
15
+ return (_jsx("div", { className: cn("animate-fade-in", className), children: children }, pathname));
16
+ }
@@ -0,0 +1,13 @@
1
+ interface PageContentLoaderProps {
2
+ className?: string;
3
+ minHeight?: number;
4
+ text?: string;
5
+ }
6
+ /**
7
+ * PageContentLoader component that displays a spinner loader
8
+ * with minimum height for proper user feedback during backend operations.
9
+ * Uses fixed positioning to center spinner on viewport regardless of scroll position.
10
+ */
11
+ export declare function PageContentLoader({ className, minHeight, text }: PageContentLoaderProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=page-content-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-content-loader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/page-content-loader.tsx"],"names":[],"mappings":"AAKA,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,SAAe,EACf,IAAI,EACL,EAAE,sBAAsB,2CAYxB"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from '../../lib/utils';
4
+ import { PageLoader } from './page-loader';
5
+ /**
6
+ * PageContentLoader component that displays a spinner loader
7
+ * with minimum height for proper user feedback during backend operations.
8
+ * Uses fixed positioning to center spinner on viewport regardless of scroll position.
9
+ */
10
+ export function PageContentLoader({ className, minHeight = 500, text }) {
11
+ return (_jsx("div", { className: cn('fixed inset-0 flex items-center justify-center w-full h-full bg-white/95 backdrop-blur-sm z-40', className), style: { minHeight: `${minHeight}px` }, children: _jsx(PageLoader, { size: "lg", text: text }) }));
12
+ }
@@ -0,0 +1,20 @@
1
+ interface PageLoaderProps {
2
+ fullPage?: boolean;
3
+ size?: 'sm' | 'md' | 'lg';
4
+ className?: string;
5
+ text?: string;
6
+ }
7
+ export declare function PageLoader({ fullPage, size, className, text }: PageLoaderProps): import("react/jsx-runtime").JSX.Element;
8
+ interface InlineLoaderProps {
9
+ size?: 'sm' | 'md' | 'lg';
10
+ className?: string;
11
+ color?: string;
12
+ }
13
+ export declare function InlineLoader({ size, className, color }: InlineLoaderProps): import("react/jsx-runtime").JSX.Element;
14
+ interface ButtonLoaderProps {
15
+ className?: string;
16
+ color?: string;
17
+ }
18
+ export declare function ButtonLoader({ className, color }: ButtonLoaderProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=page-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-loader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/page-loader.tsx"],"names":[],"mappings":"AAyCA,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAgB,EAChB,IAAW,EACX,SAAS,EACT,IAAI,EACL,EAAE,eAAe,2CAmBjB;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAQhF;AAED,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAQnE"}
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from '../../lib/utils';
4
+ function Spinner({ size = 'md', className, color = 'text-gray-900' }) {
5
+ const sizeClasses = {
6
+ sm: 'w-4 h-4',
7
+ md: 'w-8 h-8',
8
+ lg: 'w-12 h-12',
9
+ };
10
+ const borderClasses = {
11
+ sm: 'border-2',
12
+ md: 'border-[3px]',
13
+ lg: 'border-4',
14
+ };
15
+ return (_jsx("div", { className: cn('rounded-full border-solid border-t-transparent border-r-transparent', 'animate-spin', sizeClasses[size], borderClasses[size], color, 'border-l-current border-b-current', className), style: {
16
+ animationTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',
17
+ } }));
18
+ }
19
+ export function PageLoader({ fullPage = false, size = 'md', className, text }) {
20
+ const spinner = (_jsxs("div", { className: cn('flex flex-col items-center justify-center gap-3', className), children: [_jsx(Spinner, { size: size, color: "text-gray-900" }), text && (_jsx("p", { className: "text-sm text-gray-600 font-medium animate-pulse", children: text }))] }));
21
+ if (fullPage) {
22
+ return (_jsx("div", { className: "fixed inset-0 bg-white/90 backdrop-blur-sm z-50 flex items-center justify-center", children: spinner }));
23
+ }
24
+ return spinner;
25
+ }
26
+ export function InlineLoader({ size = 'sm', className, color }) {
27
+ return (_jsx(Spinner, { size: size, className: className, color: color || 'text-gray-600' }));
28
+ }
29
+ export function ButtonLoader({ className, color }) {
30
+ return (_jsx(Spinner, { size: "sm", className: className, color: color || 'text-current' }));
31
+ }
@@ -0,0 +1,11 @@
1
+ import { StoreProduct } from '../../lib/store-types';
2
+ interface ProductCardProps {
3
+ product: StoreProduct;
4
+ storeSlug: string;
5
+ onAddToCart: (product: StoreProduct) => void;
6
+ onQuickView: (product: StoreProduct) => void;
7
+ className?: string;
8
+ }
9
+ export declare function ProductCard({ product, storeSlug, onAddToCart, onQuickView, className }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=product-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/product-card.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,UAAU,gBAAgB;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAgNxG"}
@@ -0,0 +1,95 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { Button } from '../../components/ui/button';
5
+ import { ImageWithFallback } from '../../components/ui/image-with-fallback';
6
+ import { ProductRating } from '../../components/ui/product-rating';
7
+ import { ShoppingCart, Heart, Eye } from 'lucide-react';
8
+ import Link from 'next/link';
9
+ import { cn, formatCurrency } from '../../lib/utils';
10
+ import { useStore } from '../../lib/store-context';
11
+ import { useToast } from '../../components/ui/toast';
12
+ import { ButtonLoader } from '../../components/ui/page-loader';
13
+ import { useLoading } from '../../lib/loading-context';
14
+ import { OutOfStockOverlay } from '../../components/ui/out-of-stock-overlay';
15
+ export function ProductCard({ product, storeSlug, onAddToCart, onQuickView, className }) {
16
+ const [isHovered, setIsHovered] = useState(false);
17
+ const { toggleWishlist, isInWishlist, isWishlistLoading } = useStore();
18
+ const { addToast } = useToast();
19
+ const { startPageLoading } = useLoading();
20
+ const [localWishlistLoading, setLocalWishlistLoading] = useState(false);
21
+ const handleProductClick = () => {
22
+ startPageLoading();
23
+ };
24
+ const handleWishlistClick = async (e) => {
25
+ e.preventDefault();
26
+ e.stopPropagation();
27
+ // REMOVE IN PRODUCTION: Log wishlist click
28
+ console.log('[ProductCard] Wishlist button clicked:', {
29
+ productId: product.id,
30
+ productName: product.name,
31
+ isInWishlist: isInWishlist(product.id),
32
+ isLoading: localWishlistLoading || isWishlistLoading
33
+ });
34
+ if (localWishlistLoading || isWishlistLoading) {
35
+ console.warn('[ProductCard] Wishlist action already in progress, ignoring click');
36
+ return;
37
+ }
38
+ setLocalWishlistLoading(true);
39
+ try {
40
+ const wasInWishlist = isInWishlist(product.id);
41
+ console.log('[ProductCard] Toggling wishlist:', { productId: product.id, wasInWishlist });
42
+ await toggleWishlist(product.id);
43
+ console.log('[ProductCard] Wishlist toggled successfully');
44
+ addToast(wasInWishlist
45
+ ? `${product.name} removed from wishlist`
46
+ : `${product.name} added to wishlist`, 'success');
47
+ }
48
+ catch (error) {
49
+ console.error('[ProductCard] Failed to toggle wishlist:', error);
50
+ addToast('Failed to update wishlist', 'error');
51
+ }
52
+ finally {
53
+ setLocalWishlistLoading(false);
54
+ }
55
+ };
56
+ const inWishlist = isInWishlist(product.id);
57
+ const isLoading = localWishlistLoading || isWishlistLoading;
58
+ const isOutOfStock = !product.inStock;
59
+ // Validate and extract image URLs
60
+ // Ensure images is an array of valid string URLs
61
+ const validImages = Array.isArray(product.images)
62
+ ? product.images.filter((img) => typeof img === 'string' && img.trim().length > 0)
63
+ : [];
64
+ // Determine which image to show
65
+ const hasSecondImage = validImages.length > 1;
66
+ const currentImage = isHovered && hasSecondImage && validImages[1]
67
+ ? validImages[1]
68
+ : validImages[0] || undefined;
69
+ // Debug logging for images (can be removed in production)
70
+ if (process.env.NODE_ENV === 'development') {
71
+ if (validImages.length === 0) {
72
+ console.warn(`[ProductCard] Product "${product.name}" (${product.id}) has no valid images:`, {
73
+ productId: product.id,
74
+ productName: product.name,
75
+ originalImages: product.images,
76
+ validImagesCount: validImages.length
77
+ });
78
+ }
79
+ else {
80
+ console.log(`[ProductCard] Product "${product.name}" (${product.id}) images:`, {
81
+ productId: product.id,
82
+ validImagesCount: validImages.length,
83
+ firstImage: validImages[0],
84
+ currentImage: currentImage,
85
+ hasSecondImage: hasSecondImage
86
+ });
87
+ }
88
+ }
89
+ return (_jsxs("div", { "data-product-card": true, className: cn("group relative flex flex-col h-full bg-white rounded-lg overflow-hidden border border-gray-100 hover:border-gray-300 transition-all duration-300 hover:shadow-md", className), onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [_jsxs("div", { className: "relative aspect-[3/4] bg-gray-50 overflow-hidden", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, onClick: handleProductClick, className: "block w-full h-full", children: _jsx(ImageWithFallback, { src: currentImage, alt: product.name, className: cn("w-full h-full object-cover transition-all duration-700 ease-in-out", isHovered && !hasSecondImage ? "scale-110" : "scale-100", isOutOfStock && "grayscale"), skeletonAspectRatio: "3/4" }) }), isOutOfStock && (_jsx(OutOfStockOverlay, { badgePosition: "center" })), (product.compareAtPrice || (product.rating && product.rating >= 4.8)) && (_jsxs("div", { className: "absolute top-3 left-3 flex flex-col gap-2 z-10", children: [product.compareAtPrice && (_jsx("span", { className: "bg-red-500 text-white text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm", children: "Sale" })), !product.compareAtPrice && product.rating && product.rating >= 4.8 && (_jsx("span", { className: "bg-white/90 backdrop-blur-sm text-slate-900 text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm border border-gray-100", children: "Top Rated" }))] })), _jsx("button", { onClick: handleWishlistClick, disabled: isLoading, className: cn("absolute top-3 right-3 p-2 rounded-full bg-white/80 backdrop-blur-sm hover:bg-white transition-all duration-300 shadow-sm opacity-0 group-hover:opacity-100 transform translate-x-2 group-hover:translate-x-0 disabled:opacity-50 disabled:cursor-not-allowed z-30", inWishlist ? "text-red-500" : "text-slate-600 hover:text-red-500"), title: inWishlist ? "Remove from wishlist" : "Add to wishlist", children: isLoading ? (_jsx(ButtonLoader, { className: "text-red-500" })) : (_jsx(Heart, { className: cn("h-4 w-4", inWishlist && "fill-current") })) }), _jsxs("div", { className: "absolute bottom-4 inset-x-4 flex items-center gap-2 opacity-0 translate-y-4 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-300 ease-out z-20", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "h-10 w-10 flex items-center justify-center rounded-full bg-white text-slate-900 hover:bg-slate-900 hover:text-white border border-transparent shadow-lg transition-colors duration-200", title: "View Details", children: _jsx(Eye, { className: "h-4 w-4" }) }), _jsxs(Button, { onClick: async (e) => {
90
+ e.preventDefault();
91
+ if (!isOutOfStock) {
92
+ await onAddToCart(product);
93
+ }
94
+ }, disabled: isOutOfStock, className: cn("flex-1 h-10 bg-white text-slate-900 hover:bg-slate-900 hover:text-white font-bold border border-transparent shadow-lg rounded-full transition-colors duration-200", isOutOfStock && "opacity-50 cursor-not-allowed"), children: [_jsx(ShoppingCart, { className: "h-4 w-4 mr-2" }), " Add"] })] })] }), _jsxs("div", { className: "p-4 flex flex-col flex-1 space-y-2", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "group-hover:text-blue-600 transition-colors duration-300", onClick: () => startPageLoading(`/${storeSlug}/products/${product.slug}`), children: _jsx("h3", { className: "font-bold text-slate-900 text-base leading-tight line-clamp-1", children: product.name }) }), product.description && (_jsx("p", { className: "text-xs text-slate-500 line-clamp-1", children: product.description })), _jsxs("div", { className: "mt-auto pt-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-lg font-bold text-slate-900", children: formatCurrency(product.price, product.currency || 'USD') }), product.compareAtPrice && (_jsx("span", { className: "text-sm text-slate-400 line-through font-medium", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') }))] }), _jsx(ProductRating, { rating: product.rating, reviewCount: product.reviewCount, size: "sm", showReviewCount: false, className: "shrink-0" })] })] })] }));
95
+ }